Z-Blog

Good Luck To You!

群晖docker部署zabbix

坑比较多,写一些大概的,慢慢补充


1. 组件:mysql    zabbix-server    zabbix-nginx    这三个是基本的,然后还有两个zabbix-agent    zabbix-snmptrap


数据库mysql要求比较多,选zabbix6.4的话要8.0.30以上的版本,下载镜像可以在群晖图形界面操作,但是首次创建容器时候一定要用命令行,图形界面貌似只能加环境变量不能加参数,运行参数那一行填了就会启动失败不知道什么鬼,因为之后的zabbix-server初次启动会创建zabbix数据库,很多时候会报错比如需要utf8格式,比如需要权限,所以用命令行加上参数就能解决,相当于改容器里的my.conf文件

容器名mysql,版本8.0.36,数据库名zabbix,密码123456,每个\相当于换行,全部打完到最后一行没有\的时候才会运行,最后两行和mysql版本有关系,版本不对log会报错,正常应该是不用加

docker run --name mysql --hostname mysql \

-e MYSQL_ROOT_PASSWORD="123456" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="123456" \

-e MYSQL_DATABASE="zabbix" \

-v /var/lib/docker/volumes/mysql/db:/var/lib/mysql \

-d mysql:8.0.36 \

--character-set-server=utf8 \

--collation-server=utf8_bin


--default-authentication-plugin=mysql_native_password \

--disable-log-bin


2. zabbix-server

除数据库外的容器创建都可以用图形界面了,我都用了最新版,注意要和前面的mysql容器链接,环境变量是数据库主机、名字、用户和密码,几个文件夹映射要做一下否则日志里会报无法写入文件什么的,群晖上的docker路径是/volume1/docker,如果分区不一样可以在文件管理器里查看属性,对外端口也用10051这样其他局域网设备安装agent的时候连接群晖的10051端口就可以了

注意第一次启动非常慢,要观察日志是否正常启动,如果有报错一般容器也会停掉,环境变量里加入了对虚拟机的支持和缓存调整,不是必须的,正常只需主机名和数据库用户密码

如果用宝塔面板,挂载localtime会有问题,不能挂载文件只能挂载目录,可以用环境变量TZ=Asia/Shanghai来修改容器时区,否则发报警邮件的时间不会+8


docker run  --name zabbix-server --hostname zabbix-server \

-e DB_SERVER_HOST=172.17.0.2 \

-e MYSQL_USER="zabbix" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_PASSWORD="123456" \

-e ZBX_STARTVMWARECOLLECTORS=3 \

-e ZBX_VMWARECACHESIZE=50M \

-e ZBX_VMWAREFREQUENCY=10 \

-e ZBX_VMWAREPERFFREQUENCY=60 \

-e ZBX_VMWARETIMEOUT=300 \

-e ZBX_STARTPINGERS=10 \

-e ZBX_CACHESIZE=100M \

-e ZBX_VALUECACHESIZE=100M \

-e ZBX_STARTDISCOVERERS=5 \

-e TZ=Asia/Shanghai \

-v /var/lib/docker/volumes/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts \

-v /var/lib/docker/volumes/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts \

-v /var/lib/docker/volumes/zabbix-server/snmptraps:/var/lib/zabbix/snmptraps \

-v /var/lib/docker/volumes/zabbix-server/export:/var/lib/zabbix/export \

-p 10051:10051 \

-d zabbix/zabbix-server-mysql:latest

 

3. zabbix-web

创建web服务,注意链接前两个容器,外网端口设为8080,到这里就能进入网页了,用户Admin密码zabbix


docker run --name zabbix-web --hostname zabbix-web \

--link mysql:mysql \

--link zabbix-server:zabbix-server \

-e DB_SERVER_HOST="mysql" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="123456" \

-e MYSQL_DATABASE="zabbix" \

-e ZBX_SERVER_HOST="zabbix-server" \

-e PHP_TZ="Asia/Shanghai" \

-p 8080:8080 \

-d zabbix/zabbix-web-nginx-mysql:latest


4. zabbix-agent

如果不装agent网页里显示Zabbix server是离线的,新建个容器安装agent,注意链接zabbix-server,环境变量主机名填Zabbix server,注意大小写,要和网页中填的完全一致,IP要用docker内部地址,默认的是那个bridge,我填zabbix-agent的172.17.0.5就变绿了,观察agent和server的日志没有报错即可


docker run --name zabbix-agent --link zabbix-server:zabbix-server -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server" --init -d zabbix/zabbix-agent:latest


5. zabbix-snmptrap

这个没有环境变量,但是有三个文件夹要映射一下,也是根据日志判断,直到启动不报错为止

mibs

net-snmp

snmptraps


6. 容器命令

docker exec -it mysql /bin/bash    进入mysql容器命令行

docker inspect mysql | grep IPAddress    查看mysql容器的内部ip地址

docker ps    查看运行的容器

docker inspect --format='{{.LogPath}}' 6c4137bbbbe9    最后的6c4137bbbbe9代表容器ID,查看这个容器的log文件位置,日志太长了可以删除log文件


7. 容器里修改配置文件

不能直接进入容器修改里面的配置文件,比如zabbix-server.conf,容器里的文件必须保持最初始的模板,要修改配置,比如加入对VMware实体机的支持,则需要在环境变量里添加对应的值,格式和原版略有区别,这个在docker镜像的官网上有说明,在群晖图形界面里查看下载好的镜像文件,每个文件的右上角有链接点鼠标就能进官网查,其实就是每次启动容器时候,相当于都在重新运行脚本,会根据容器里设置的环境变量去重新修改容器里的文件


8. zabbix-proxy

proxy也比较有用,可以在server没法直接通讯的网络里建一个,相当于是个弱化版的server,也必须是linux主机,也需要Mysql数据库,但这个数据库里的数据只是临时存放供proxy传递数据用的,不用备份,容器也不用过多配置,只要能连上server端就行,所以容器只需要开放端口10051出来,有主被动两个模式,一般是用主动由proxy去连接server


docker run --name mysql --hostname mysql \

-e MYSQL_ROOT_PASSWORD="123456" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="123456" \

-e MYSQL_DATABASE="zabbix" \

-v /var/lib/docker/volumes/mysql/_data/lib:/var/lib/mysql \

-p 3306:3306 \

-d mysql:8.0.35 \

--character-set-server=utf8 \

--collation-server=utf8_bin \

--disable-log-bin


docker run  --name zabbix-proxy --hostname zabbix-proxy \

--link mysql:mysql \

-e DB_SERVER_HOST="mysql" \

-e MYSQL_USER="zabbix" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_PASSWORD="123456" \

-e ZBX_HOSTNAME=zabbix-proxy \ #这个是proxy自己的名字,在server端添加时要一致

-e ZBX_SERVER_HOST=xxx \ #这个是server地址,可以用域名

-e ZBX_TIMEOUT=30 \

-e ZBX_PROXYMODE=0 \ #0是主动模式,1是被动模式

-e ZBX_CACHESIZE=500M \

-e TZ="Asia/Shanghai" \

-p 10051:10051 \

-d zabbix/zabbix-proxy-mysql:latest


9. 监控Esxi实体机,模板官方社区里有下载,要将Esxi高级设置里的Config.HostAgent.plugins.solo.enableMob改为True

查看uuid地址:https://esxi-ip/mob/?moid=ha-host&doPath=hardware.systemInfo

然后宏里填写好UUID、IP、用户、密码

{$VMWARE.HV.UUID}=

{$VMWARE.URL}=https://IP地址/sdk

{$VMWARE.USERNAME}=root

{$VMWARE.PASSWORD}=Esxi登陆密码


zabbix-server或者proxy配置文件里要修改监控VMware的选项,在docker里用环境变量的方式添加,否则默认配置是不启动的

ZBX_STARTVMWARECOLLECTORS=6

ZBX_VMWAREFREQUENCY=10

ZBX_VMWAREPERFFREQUENCY=60

ZBX_VMWARECACHESIZE=50M

ZBX_VMWARETIMEOUT=300


10. 华为交换机snmp设置


<S>snmp-agent

<S>snmp-agent sys-info version v2c

<S>snmp-agent community complexity-check disable

<S> snmp-agent community read cipher public

<S>snmp-agent trap enable

<S>snmp-agent protocol source-status all-interface

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.