说明
机房空调坏了,导致存储GG,上面虚拟机都没了,存储也太老了VNX的上面有脏数据,重新起来,storage pool起不来,找人修太贵了,算了只能重新部署机器了,共享存储是没了,就单机搞,zabbix重新弄不高兴,就搞个Docker版的zabbix用用吧。
怎么装docker 只有的博客有写过,大家照着参考下就行。
部署docker-zabbix
创建专用于 Zabbix 组件容器的网络
不指定IP:
docker network create zabbix-network
创建mysql 容器
创建本地目录/usr/local/mysql/data和conf中持久化保存mysql容器运行中的数据
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql /conf
参数说明
启动一个单独的数据库mysql用于保存zabbix数据。
定义了数据库名zabbix
数据库用户zabbix
密码zabbix
最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题。
注:之前踩了个坑搞了一个多小时,创建好的mysql一直自己重启,然后发现/mysql/data和/mysql/conf 这2个目录必须分开,否则会报data里已经有文件了,然后就无限重启。
docker run -d –name zabbix-mysql -p 3306:3306 –restart=always –privileged=true -e MYSQL_DATABASE=zabbix -e MYSQL_USER=zabbix -e MYSQL_PASSWORD=zabbix -e MYSQL_ROOT_PASSWORD=zabbix -e TZ=Asia/Shanghai –network=zabbix-network -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/my.cnf -d mysql:8.0 –character-set-server=utf8 –collation-server=utf8_bin –default-authentication-plugin=mysql_native_password
创建防火墙规则
firewall-cmd –zone=public –add-port=3306/tcp –permanent
firewall-cmd –reload
创建zabbix-java-gateway容器
docker run -dit -p 10052:10052 –restart=always –name=zabbix-java-gateway \
-e TZ=Asia/Shanghai \
–network=zabbix-network \
-d zabbix/zabbix-java-gateway:latest
创建zabbix-server-mysql容器
创建下列文件夹
mkdir -p /usr/local/zabbix/alertscripts
mkdir -p /usr/local/zabbix/externalscripts
mkdir -p /usr/local/zabbix/modules
mkdir -p /usr/local/zabbix/enc
mkdir -p /usr/local/zabbix/ssh_keys
mkdir -p /usr/local/zabbix/ssl/certs
mkdir -p /usr/local/zabbix/ssl/keys
mkdir -p /usr/local/zabbix/ssl/ssl_ca
mkdir -p /usr/local/zabbix/snmptraps
mkdir -p /usr/local/zabbix/mibs
参数说明
-
/usr/lib/zabbix/alertscripts该卷用于保存自定义警报脚本,它是AlertScriptsPath参数conf
-
/usr/lib/zabbix/externalscripts外部检查(项目类型)使用该卷,它是ExternalScripts参数conf
-
/var/lib/zabbix/modules该卷允许加载其他模块并使用LoadModule功能扩展Zabbix服务器。
-
/var/lib/zabbix/enc该卷用于存储TLS相关文件。这些文件的名称使用规定ZBX_TLSCAFILE,ZBX_TLSCRLFILE,ZBX_TLSKEY_FILE和ZBX_TLSPSKFILE变量。
-
/var/lib/zabbix/ssh_keys该卷用作SSH检查和操作的公钥和私钥的位置。它是SSHKeyLocation参数zabbix_server.conf。
-
/var/lib/zabbix/ssl/certs该卷用作客户端身份验证的SSL客户端证书文件的位置。它是SSLCertLocation参数zabbix_server.conf。
-
/var/lib/zabbix/ssl/keys该卷用作客户端身份验证的SSL私钥文件的位置。它是SSLKeyLocation参数zabbix_server.conf。
-
/var/lib/zabbix/ssl/ssl_ca该卷用作SSL服务器证书验证的证书颁发机构(CA)文件的位置。它是SSLCALocation参数zabbix_server.conf。
-
/var/lib/zabbix/snmptraps该卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在创建Zabbix服务器的新实例时使用Docker选项继承。可以使用共享卷和交换ZBX_ENABLE_SNMP_TRAPS环境变量来启用SNMP陷阱处理功能true。
-
/var/lib/zabbix/mibs该卷允许添加新的MIB文件。它不支持子目录,必须放置所有MIB /var/lib/zabbix/mibs
启动zabbix server服务,并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中。
docker run -d –name=zabbix-server-mysql –restart=always -e DB_SERVER_HOST=”zabbix-mysql” -e MYSQL_DATABASE=”zabbix” -e MYSQL_USER=”zabbix” -e MYSQL_PASSWORD=”zabbix” -e MYSQL_ROOT_PASSWORD=”zabbix” -e ZBX_JAVAGATEWAY=”zabbix-java-gateway” -e TZ=Asia/Shanghai –network=zabbix-network -p 10051:10051 -v /usr/local/zabbix/alertscripts:/usr/lib/zabbix/alertscripts -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /usr/local/zabbix/externalscripts:/usr/lib/zabbix/externalscripts -v /usr/local/zabbix/modules:/var/lib/zabbix/modules -v /usr/local/zabbix/enc:/var/lib/zabbix/enc -v /usr/local/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys -v /usr/local/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs -v /usr/local/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys -v /usr/local/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca -v /usr/local/zabbix/snmptraps:/var/lib/zabbix/snmptraps -v /usr/local/zabbix/mibs:/var/lib/zabbix/mibs -d zabbix/zabbix-server-mysql:latest
添加防火墙端口
firewall-cmd –zone=public –add-port=10051/tcp –permanent
firewall-cmd –reload
运行zabbix-web-nginx-mysql镜像
创建zabbix-web-nginx-mysql容器,启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例
docker run -dit –name zabbix-web-nginx-mysql –restart=always -e ZBX_SERVER_HOST=”zabbix-server-mysql” -e DB_SERVER_HOST=”zabbix-mysql” -e MYSQL_DATABASE=”zabbix” -e MYSQL_USER=”zabbix” -e MYSQL_PASSWORD=”zabbix” -e MYSQL_ROOT_PASSWORD=”zabbix” -e PHP_TZ=Asia/Shanghai -e TZ=Asia/Shanghai –network=zabbix-network -p 80:8080 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -d zabbix/zabbix-web-nginx-mysql:latest
参数说明
–link zabbix-mysql:mysql 连接数据库实例,zabbix-mysql必须要与第一步的–name zabbix-mysql完全一致
–link zabbix-server-mysql:zabbix-server 连接zabbix服务器实例,zabbix-server-mysql必须要与第二步的–name zabbix-server-mysql完全一致
DB_SERVER_HOST变量的值要与第二步指定的-e DB_SERVER_HOST=”zabbix-mysql”一致
添加防火墙端口
firewall-cmd –zone=public –add-port=80/tcp –permanent
firewall-cmd –reload
安装完成
这时候直接访问这台机器的IP 就可以打开下面网页
用户名Admin
密码 zabbix
下面有个zabbix agent not available 这个就是本机没装zabbix agent 自己装下就好。
安装zabbix agent
yum install -y zabbix-agent
配置agent,设置服务端地址
我安装了Portainer 可以看到容器的地址
vi /etc/zabbix_agentd.conf
如果在zabbix-server上安装agent,需要配置zabbix-server的docker地址:
Server= 172.18.0.4
ServerActive= 172.18.0.4
然后管理界面里
我把地址改成了他的ip
# 如果在被监控服务器上安装agent,需要配置zabbix-server的宿主机地址:
Server= 10.85.2.240
ServerActive= 10.85.2.240
防火墙规则
firewall-cmd –zone=public –add-port=10050/tcp –permanent
firewall-cmd –reload
启动 Zabbix agent
设置开机zabbix-agent开机启动
systemctl enable zabbix-agent
systemctl restart zabbix-agent
目前一切正常了
一条评论
Pingback: Docker Zabbix 6.4升级到zabbix 7.0 - 王哥哥