坑比较多,写一些大概的,慢慢补充
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