Docker 安装Zabbix

王哥哥 zabbix 622 次浏览 1条评论

说明

机房空调坏了,导致存储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

目前一切正常了

 

一条评论

  1. Pingback: Docker Zabbix 6.4升级到zabbix 7.0 - 王哥哥

发表回复

Go