码迷,mamicode.com
首页 > 其他好文 > 详细

Docker 安装zabbix 4.0

时间:2020-12-19 12:13:27      阅读:1      评论:0      收藏:0      [点我收藏+]

标签:crontab   开源   char   link   升级   解决   DBName   repo   download   

前言

Zabbix 是目前最为主流的开源监控方案之一,前面的文章主要介绍了传统的安装方式,在 Docker 容器出现后我们也拥有更高效的安装方式,这里就主要分享基于 Docker 安装和配置 Zabbix 的相关心得

 

扩展阅读

Zabbix - https://www.zabbix.com/

 

官方文档

https://www.zabbix.com/download

https://www.zabbix.com/documentation

 

zabbix-server

从容器安装 Zabbix Server 最简单的方式之一,关于数据卷是否需要映射,看实际需求吧

 

https://hub.docker.com/r/zabbix/zabbix-server-mysql/tags/

https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/tags/

 

1.安装docker-ce

# install docker-ce

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install -y docker-ce

sudo systemctl start docker

或者脚本安装

#$ curl -fsSL https://get.docker.com -o get-docker.sh

#$ sh get-docker.sh

 

2.# Install mysql, zabbix, nginx in docker

docker run --name mysql-server -t \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="zabbix" \

-e MYSQL_ROOT_PASSWORD="zabbix" \

-p 0.0.0.0:3306:3306 \

-d mysql:5.7 \

--character-set-server=utf8 --collation-server=utf8_bin

 

docker run --name zabbix-server-mysql -t \

--link mysql-server:mysql \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="zabbix" \

-e MYSQL_ROOT_PASSWORD="zabbix" \

-p 10051:10051 \

-d \

zabbix/zabbix-server-mysql:centos-4.0-latest

 

docker run --name zabbix-web-nginx-mysql -t \

--link mysql-server:mysql \

--link zabbix-server-mysql:zabbix-server \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="zabbix" \

-e MYSQL_ROOT_PASSWORD="zabbix" \

-e PHP_TZ="Asia/Singapore" \

-p 80:80 \

-d \

zabbix/zabbix-web-nginx-mysql:centos-4.0-latest

 

3 .# 做数据映射后的方案

 

mkdir -p /data/docker/mysql/zabbix/data

mkdir -p /data/docker/zabbix/alertscripts

mkdir -p /data/docker/zabbix/externalscripts

mkdir -p /data/docker/zabbix/etc/zabbix

mkdir -p /data/docker/mysql/etc/mysql/

 

安装myusql5.7 需要先拷贝myslq配置文件到指定目录下

docker cp mysql-server:/etc/mysql /data/docker/mysql/etc/

docker run --privileged --name mysql-server -t \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="Ooteib2B" \

-e MYSQL_ROOT_PASSWORD="Ooteib2B" \

-v /data/docker/mysql/zabbix/data:/var/lib/mysql \

-v /data/docker/mysql/etc/mysql/:/etc/mysql \

-p 0.0.0.0:3306:3306 \

-d mysql:5.7 \

--character-set-server=utf8 --collation-server=utf8_bin

 

安装zabbix-server需要先拷贝配置文件到映射目录下

docker cp zabbix-server-mysql:/etc/zabbix /data/docker/zabbix/etc/

docker run --privileged --name zabbix-server-mysql -t \

--link mysql-server:mysql \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="Ooteib2B" \

-e MYSQL_ROOT_PASSWORD="Ooteib2B" \

-v /etc/localtime:/etc/localtime:ro \

-v /data/docker/zabbix/etc/zabbix:/etc/zabbix \

-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \

-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \

-p 10051:10051 \

-d \

zabbix/zabbix-server-mysql:centos-4.0-latest

 

#chown  zabbix.zabbix /data/docker/zabbix/ -R

* 这里为了让容器中支持pytoh脚本运行,启动容器后需要在容器中安装python模块

yum -y install epel-release && yum install -y  python-pip

pip install requests && useradd zabbix

 

 

docker run --privileged --name zabbix-web-nginx-mysql -t \

--link mysql-server:mysql \

--link zabbix-server-mysql:zabbix-server \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="Ooteib2B" \

-e MYSQL_ROOT_PASSWORD="Ooteib2B" \

-e PHP_TZ="Asia/Singapore" \

-p 8080:80 \

-d \

zabbix/zabbix-web-nginx-mysql:centos-4.0-latest

 

注意问题

1 阿里 腾讯云主机安装直接可以运行,但是在其它国外云平台有时发现会出现连接数据库报错,解决方法如下修改数据库root zabbix 用户登陆权限

 

mysql> update mysql.user set authentication_string=password(‘newpassword‘) where user=‘root‘ and host=‘127.0.0.1‘ or host=‘localhost‘;

mysql> update mysql.user set authentication_string=password(‘Ooteib2B‘) where user=‘root‘ and host=‘127.0.0.1‘ or host=‘localhost‘ or host=‘%‘;

mysql> update mysql.user set authentication_string=password(‘Ooteib2B‘) where user=‘zabbix‘ and host=‘127.0.0.1‘ or host=‘localhost‘ or host=‘%‘;

myslq> grant all privileges on *.* to ‘root‘@‘172.17.0.%‘ identified by ‘Ooteib2B‘ with grant option;

 

grafanf 安装

下载地址:

https://grafana.com/grafana/download?platform=linux

Ubuntu和Debian (64位)SHA256:58588c88193a8bdcb932ab2035550f062fa6f2f37b3f68055138bdb9bf1b331b

# wget https://dl.grafana.com/oss/release/grafana_6.2.2_amd64.deb

# sudo dpkg -i grafana_6.2.2_amd64.deb

 

Linux二进制文件(64位)SHA256:bf2a1ffab417e54a1c31e421077b9c5278e423d5fa9b7b98d418c4f85602838b

# wget https://dl.grafana.com/oss/release/grafana-6.2.2.linux-amd64.tar.gz

# tar -zxvf grafana-6.2.2.linux-amd64.tar.gz

 

Redhat&Centos (64位)SHA256:82e6023870551e8969522b66176e0211a6978317b83e1372c0b1ed9f11dda811

# wget https://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm

# sudo yum localinstall grafana-6.2.2-1.x86_64.rpm

 

zabbix-proxy 和 zabbix-agent 也可以用容器安装,不过 agent 就不推荐容器化了,针对容器本身的监控可以使用 zabbix-docker-monitoring,当然 Prometheus 才是监控容器的利刃。

https://github.com/monitoringartist/zabbix-docker-monitoring

 

zabbix-docker 官方的 GitHub 站点还包含更详细的 docker compose 配置

https://github.com/zabbix/zabbix-docker

 

关于 Docker 常用命令可以参考 Docker 从入门到实践

https://wsgzao.github.io/post/docker/

 

Zabbix 容器化后的配置

容器化的配置和传统方式略有不同,尤其是网络防火墙策略

 

# 根据 zabbix_server.conf 配置文件内容创建对应的目录和权限

LogFile=/var/log/zabbix/zabbix_server.log

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_server.pid

SocketDir=/var/run/zabbix

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

StartPollers=500

StartPingers=50

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

CacheSize=8G

TrendCacheSize=1G

Timeout=15

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

LogSlowQueries=3000

 

# Zabbix 容器默认的配置

LogType=console

DBHost=mysql-server

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

DBPort=3306

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

FpingLocation=/usr/sbin/fping

Fping6Location=/usr/sbin/fping6

SSHKeyLocation=/var/lib/zabbix/ssh_keys

SSLCertLocation=/var/lib/zabbix/ssl/certs/

SSLKeyLocation=/var/lib/zabbix/ssl/keys/

SSLCALocation=/var/lib/zabbix/ssl/ssl_ca/

LoadModulePath=/var/lib/zabbix/modules/

 

# 按照规范映射指定卷并做好脚本权限设置

-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \

-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \

 

# Zabbix partition optimization

1. disable Housekeeping

2. mysql_partition

 

https://www.zabbix.org/wiki/Docs/howto/mysql_partition

 

# 容器内部的调整 (可选)

apt-get update

apt-get install lrzsz vim cron -y

 

mysql -uzabbix -pzabbix zabbix < partition.sql

 

# 设置定时任务

vim /etc/crontab

01 01 * * * root mysql -uzabbix -pzabbix zabbix -e"CALL partition_maintenance_all(‘zabbix‘)"

 

service cron restart

 

# 在宿主机上配置定时任务的方法

docker exec $(docker ps -aqf "name=mysql-server") mysql -uzabbix -pzabbix zabbix -e"CALL partition_maintenance_all(‘zabbix‘)"

 

升级更新容器

1.拉取最新镜像

2.停止并删除当前运行容器

3.用最新镜像重新创建容器

# 查找当前系统中使用的镜像

docker images

# 拉取最新镜像

docker pull zabbix/zabbix-web-nginx-mysql

docker pull zabbix/zabbix-server-mysql

# 查找容器 ID

docker ps

# 导出之前的容器配置信息

docker inspect 14fd67405076

# 停止容器

docker stop 14fd67405076

docker kill 14fd67405076

# 删除容器

docker rm 14fd67405076

# 用最新镜像重新创建容器

docker run --privileged --name zabbix-server-mysql -t \

--link mysql-server:mysql \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="zabbix" \

-e MYSQL_ROOT_PASSWORD="zabbix" \

-v /etc/localtime:/etc/localtime:ro \

-v /data/docker/zabbix/etc/zabbix:/etc/zabbix \

-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \

-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \

-p 10051:10051 \

-d \

zabbix/zabbix-server-mysql:centos-4.0-latest

 

docker run --name zabbix-web-nginx-mysql -t \

--link mysql-server:mysql \

--link zabbix-server-mysql:zabbix-server \

-e DB_SERVER_HOST="mysql-server" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="zabbix" \

-e MYSQL_ROOT_PASSWORD="zabbix" \

-e PHP_TZ="Asia/Singapore" \

-p 80:80 \

-d \

zabbix/zabbix-web-nginx-mysql

 

说明:

由于zabbix的web前端默认没有中文字库,因此zabbix图形化显示时下面的中文都是方框。解决方法就是拷贝中文字体到zabbix前端

具体:

1. 拷贝字体,进入docker 容器中

# cd /usr/share/zabbix/fonts/ //zabbix前端位置,可以看到只有DejaVuSans一种字体

# ls

DejaVuSans.ttf

拷贝已经上传好的字体文件

# docker cp msyh.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/assets/fonts/

或者下载个

# wget dl.gaingreat.com/SIMHEI.TTF //SIMHEI.TTF为黑体

# mv SIMHEI.TTF SIMHEI.ttf

 

2. 修改zabbix的web前端加载的字体

 

# vi /usr/share/zabbix/include/defines.inc.php

找到define(‘ZBX_FONT_NAME‘, ‘DejaVuSans‘);

define(‘ZBX_GRAPH_FONT_NAME‘, ‘DejaVuSans‘);

 

将这2行修改为以下,其中SIMHEI为字库名字,不用写ttf后缀

define(‘ZBX_FONT_NAME‘, ‘msyh‘);

define(‘ZBX_GRAPH_FONT_NAME‘, ‘msyh‘);

 

 

grafanf 安装

下载地址:

https://grafana.com/grafana/download?platform=linux

Ubuntu和Debian (64位)SHA256:58588c88193a8bdcb932ab2035550f062fa6f2f37b3f68055138bdb9bf1b331b

# wget https://dl.grafana.com/oss/release/grafana_6.2.2_amd64.deb

# sudo dpkg -i grafana_6.2.2_amd64.deb

 

Linux二进制文件(64位)SHA256:bf2a1ffab417e54a1c31e421077b9c5278e423d5fa9b7b98d418c4f85602838b

# wget https://dl.grafana.com/oss/release/grafana-6.2.2.linux-amd64.tar.gz

# tar -zxvf grafana-6.2.2.linux-amd64.tar.gz

 

Redhat&Centos (64位)SHA256:82e6023870551e8969522b66176e0211a6978317b83e1372c0b1ed9f11dda811

# wget https://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm

# sudo yum localinstall grafana-6.2.2-1.x86_64.rpm

 

Docker 安装zabbix 4.0

标签:crontab   开源   char   link   升级   解决   DBName   repo   download   

原文地址:https://www.cnblogs.com/luoxijun/p/14133764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!