使用Docker搭建Zabbix运维监控系统
Zabbix项目地址
- https://www.zabbix.com/download
- https://github.com/zabbix/zabbix-docker
- https://www.zabbix.com/documentation/current/manual/introduction
官方文档
Docker容器地址
- https://hub.docker.com/r/mysql/mysql-server
- https://hub.docker.com/r/zabbix/zabbix-server-mysql
- https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql
启动MySQL
$ docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
变量 | 说明 |
MYSQL_DATABASE | MySQL用户名 |
MYSQL_USER | MySQL 数据库名 |
MYSQL_PASSWORD | MySQL 数据库密码 |
MYSQL_ROOT_PASSWORD | MySQL ROOT密码 |

启动Zabbix Java gateway实例
这个实例主要用来监控Java,不监控Java的话可以不安装这个,同时,下方的Zabbix server实例中删除-e ZBX_JAVAGATEWAY="zabbix-java-gateway" 和--link zabbix-java-gateway:zabbix-java-gateway,这边案例正常安装此实例
$ docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest

启动Zabbix server实例
- 且关联这个实例到已创建的MySQL服务器实例
$ docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
--network host \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
变量 | 说明 |
DB_SERVER_HOST | 数据库名称 |
MYSQL_DATABASE | MySQL 用户名 |
MYSQL_USER | MySQL 数据库名 |
MYSQL_PASSWORD | MySQL 数据库密码 |
MYSQL_ROOT_PASSWORD | MySQL ROOT密码 |
ZBX_JAVAGATEWAY | 配置Zabbix Java gateway ,默认不启动 |

启动Zabbix web 接口
$ docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
变量 | 说明 |
DB_SERVER_HOST | 数据库名称 |
MYSQL_DATABASE | MySQL 用户名 |
MYSQL_USER | MySQL 数据库名 |
MYSQL_PASSWORD | MySQL 数据库密码 |
MYSQL_ROOT_PASSWORD | MySQL ROOT密码 |

查询容器状态
[centos@localhost ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a1f287deff3 zabbix/zabbix-web-nginx-mysql:latest "docker-entrypoint.sh" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 443/tcp zabbix-web-nginx-mysql
0a7691d48275 zabbix/zabbix-server-mysql:latest "/sbin/tini -- /usr/…" 4 minutes ago Up 4 minutes 0.0.0.0:10051->10051/tcp zabbix-server-mysql
4bc59e83d8c7 zabbix/zabbix-java-gateway:latest "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 10052/tcp zabbix-java-gateway
3b1d33a26031 mysql:5.7 "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 3306/tcp, 33060/tcp mysql-server
b6483f3cac6a portainer/portainer "/portainer" 59 minutes ago Up 59 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp portainer

访问ZabbZix
- 在浏览器输入宿主机IP:80进入WEB页面
- 默认用户名:Admin
- 默认密码: zabbix

- 成功进去Zabbix首页

语言修改
- 默认为英文,点击右下角的用户图标,然后找到 Language -Chinese(zh_cn),然后点击下方的更新按钮


启动Docker-Agent(可选)
监控Docker容器,可以使用zabbix-docker-monitoring项目,使用此项目可以监控宿主机上运行的所有Docker状态
https://github.com/monitoringartist/zabbix-docker-monitoring/
$ docker run \
--name=dockbix-agent-xxl \
--net=host \
--privileged \
-v /:/rootfs \
-v /var/run:/var/run \
--restart unless-stopped \
-e "ZA_Server=<ZABBIX SERVER IP/DNS NAME/IP RANGE>" \
-e "ZA_ServerActive=<ZABBIX SERVER IP/DNS NAME>" \
-d monitoringartist/dockbix-agent-xxl-limited:latest
变量 | 说明 |
ZA_Server | zabbix-server 容器的IP ( 非宿主机IP )/域名 |
ZA_ServerActive | zabbix-server 容器的IP ( 非宿主机IP )/域名 |
安装 Zabbix-Agent (Docker环境)
查询 zabbix-server 容器的IP
- 每次重启Docker,IP都会发生变化
方式一:
宿主机终端输入如下命令查询,将返回IPAddress
docker inspect zabbix-server-mysql|grep IPAddress

方式二:
使用Portainer,访问IP:9000,找到 Containers - zabbix-server-mysql,网页底部会有个 Connected networks,即可看到桥接的IP

运行 Zabbix-Agent
- 以监控Zabbix服务器为例,Zabbix-Server和Zabbix-Agent安装在同一台主机的Docker上,运行不同的容器
$ docker run \
--name zabbix-agent \
-p 10050:10050 \
-e ZBX_HOSTNAME="HostName" \
-e ZBX_SERVER_HOST="Zabbix 服务器IP" \
-e ZBX_SERVER_PORT=10051 \
-d zabbix/zabbix-agent
变量 | 说明 |
ZBX_HOSTNAME | Zabbix 主机名称,服务器本机默认为Zabbix server |
ZBX_SERVER_HOST | zabbix-server 容器的IP( 非宿主机IP ) |


- 如果无法上线,需配置防火墙,需要root权限
$ firewall-cmd --zone=public --add-port=10050/tcp --permanent
$ systemctl restart firewalld.service

Zabbix 错误警告
- 出现错误 Zabbix agent is not available (for 3m)
- Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
- 主要原因就是我们是将Zabbix服务器和Zabbix客户端都安装到了Docker上

- 打开配置-主机,接口那的ip为127.0.0.1,这个IP是宿主机的IP,需要修改为 zabbix-agent 容器的IP

- 点击名称那的 Zabbix server , 修改为zabbix-agent 容器的IP( 非 zabbix-server容器的IP )
查询zabbix-agent 容器的IP
方式一:
宿主机终端输入如下命令查询,将返回IPAddress
docker inspect zabbix-agent|grep IPAddress

方式二:
使用Portainer,访问IP:9000,找到 Containers - zabbix-agent,网页底部会有个 Connected networks,即可看到桥接的IP

- 在 agent代理程序的接口 的IP地址处,填入刚刚查询到的 zabbix-agent 的IP

- 等待几分钟,主机选项卡右侧的可用性中的ZBX将由红色变成绿色

- 打开监测-仪表盘,可以看到错误已经消失,可用数量为1

Debain 安装 Zabbix-Agent (非Docker环境)
- 在其他机器上安装监控,非服务器本机安装
- 举例在Deabin平台下直接安装Zabbix-agent,本文以Kali为演示,Kali是基于Deabian开发的
下载 Zabbix-Agent
- 进入Zabbix官网下载区域,非中文的话右下角可以切换语言
- https://www.zabbix.com/cn/download
- 选择合适的Zabbix平台和对应的系统版本,这边选择Zabbix 4.4,Debian 10,基于MySQL+Nginx

添加软件源
- 下方会有命令提供

- 下载软件源
$ sudo wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
- 安装软件源
$ sudo dpkg -i zabbix-release_4.4-1+buster_all.deb
- 更新软件源
$ sudo apt update

安装Zabbix-Agent
$ sudo apt install zabbix-agent

修改配置文件
$ sudo vim /etc/zabbix/zabbix_agentd.conf
变量 | 说明 |
Server | zabbix-server 宿主机IP( 非容器IP ) |
ServerActive | zabbix-server 宿主机IP( 非容器IP ) |
Hostname | 主机名称,自定义(这边我取名为Kali Linux) |


开机启动Zabbix-Agent
$ sudo systemctl enable zabbix-agent
$ sudo systemctl start zabbix-agent
查询Debain主机IP
$ ip addr

添加主机
打开Zabbix-Server的WEB网页端,然后找到配置-主机-创建主机,添加刚刚的主机名称和IP地址
变量 | 说明 |
主机名称 | 刚刚自定义的名称(这边自定义叫Kali Linux) |
群组 | 监控的群组(这边是Linux系统,选择Linux servers) |
agent代理程序的接口 | 安装Agent的机器的IP地址 |

- 先不要点击下方的更新按钮
添加模板
- 切换到模板选项卡,点击 Link new templates 右侧的选择
- 找到Templates/Operating systems 中的 Template OS Linux by Zabbix agent 并勾选


- 点击添加按钮,然后稍等片刻
Zabbix-Agent运行检查
- 可以看到下方的ZBX已经变成绿色上线了

共有 0 条评论