两台主机
一台作为server
一台作为agent
安装好docker 并保证服务正常运行,镜像正常pull
分析:
部署 Zabbix 容器环境,通常会涉及几个主要组件:
MySQL(或 MariaDB 数据库)、Zabbix Server 和 Zabbix Web Interface。
在Server 机器上部署 Zabbix Server 和 MySQL,Zabbix Web
在 Agent 机器上部署 Zabbix Agent
zabbix-mysql:
[root@server docker]# docker run --name zabbix-mysql \
> -e MYSQL_DATABASE=zabbix \
> -e MYSQL_USER=zabbix \
> -e MYSQL_PASSWORD=123456 \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -d mysql:8.0 \
> --character-set-server=utf8 --collation-server=utf8_bin
Unable to find image 'mysql:8.0' locally
8.0: Pulling from library/mysql
eba3c26198b7: Pull complete
b6c54a7f9fe8: Pull complete
972686f20d79: Pull complete
48f5f58971f7: Pull complete
1c3daf5de485: Pull complete
eba13b8088fe: Pull complete
514ee5d23bc9: Pull complete
e91f47674d25: Pull complete
077dbde9e2f6: Pull complete
466b47b075c4: Pull complete
d145be117b98: Pull complete
Digest: sha256:ccb8f749bb5e59f9f8f03bf7282c7ef27a93a1814a24f0a8a926fb4e19b7fb97
Status: Downloaded newer image for mysql:8.0
66047a0bbafd032dbbe7ac61cde84e0e702dc228a645148a9a3f67dc73d502ea
[root@server docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66047a0bbafd mysql:8.0 "docker-entrypoint.s…" 10 seconds ago Up 4 seconds 3306/tcp, 33060/tcp zabbix-mysql
zabbix-server:
[root@server docker]# docker run --name zabbix-server \
> -e DB_SERVER_HOST="zabbix-mysql" \
> -e MYSQL_DATABASE="zabbix" \
> -e MYSQL_USER="zabbix" \
> -e MYSQL_PASSWORD="123456" \
> -e MYSQL_ROOT_PASSWORD="123456" \
> --link zabbix-mysql:mysql \
> -p 10051:10051 \
> -d zabbix/zabbix-server-mysql:latest
d75255b4debda26fa3e1edc9285a9353c99e53aa76d439cd5ae8b09dad96ab6b
[root@server docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d75255b4debd zabbix/zabbix-server-mysql:latest "/usr/bin/docker-ent…" 13 seconds ago Up 9 seconds 0.0.0.0:10051->10051/tcp zabbix-server
66047a0bbafd mysql:8.0 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp zabbix-mysql
zabbix-web
[root@server docker]# docker run --name zabbix-web \
> -e DB_SERVER_HOST="zabbix-mysql" \
> -e MYSQL_DATABASE="zabbix" \
> -e MYSQL_USER="zabbix" \
> -e MYSQL_PASSWORD="123456" \
> -e MYSQL_ROOT_PASSWORD="123456" \
> --link zabbix-mysql:mysql \
> -p 80:8080 \
> -d zabbix/zabbix-web-nginx-mysql:latest
4b2263809be50803bbb376e293ec38fe9ca53d90444b07b256d4d0994e18d807
[root@server docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b2263809be5 zabbix/zabbix-web-nginx-mysql:latest "docker-entrypoint.sh" 10 seconds ago Up 5 seconds 8443/tcp, 0.0.0.0:80->8080/tcp zabbix-web
d75255b4debd zabbix/zabbix-server-mysql:latest "/usr/bin/docker-ent…" About a minute ago Up About a minute 0.0.0.0:10051->10051/tcp zabbix-server
66047a0bbafd mysql:8.0 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 3306/tcp, 33060/tcp zabbix-mysql
zabbix-agent:
[root@localhost yum.repos.d]# docker run --name zabbix-agent \
> -e ZBX_SERVER_HOST="192.168.29.210" \
> -e ZBX_SERVER_PORT=10051 \
> -e ZBX_HOSTNAME="my-agent" \
> -p 10050:10050 \
> -d zabbix/zabbix-agent:latest
Unable to find image 'zabbix/zabbix-agent:latest' locally
latest: Pulling from zabbix/zabbix-agent
43c4264eed91: Pull complete
1a4383dc4aec: Pull complete
bb02b1df93d2: Pull complete
ffc55a4b41fc: Pull complete
50ae151a0dd6: Pull complete
4f4fb700ef54: Pull complete
78a2a688f29f: Pull complete
Digest: sha256:3332e5b31a06a4a522e42ad859107f824d7233eafd5a1cd4f5ad9c053472313a
Status: Downloaded newer image for zabbix/zabbix-agent:latest
7111a088ba9f717e81e0e977e2ec23d6bdf48983528971a17a241fb530583599
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7111a088ba9f zabbix/zabbix-agent:latest "/usr/bin/docker-ent…" 24 seconds ago Up 16 seconds 0.0.0.0:10050->10050/tcp, :::10050->10050/tcp zabbix-agent
确保容器都能正常运行
检查容器内zabbix_server.conf 和zabbix_agent.conf 内配置正确
有几个关键点
zabbix_agent.conf
Server=192.168.29.210 #配置指定了 Zabbix Agent 可以连接的 Zabbix Server 的 IP 地址。
ServerActive=192.168.29.210:10051 #此行配置用于指定 Zabbix Server 的 IP 地址和端口
ListenIP=0.0.0.0 #表示 Zabbix Agent 会在所有网络接口上监听
ListenPort=10050 #Zabbix Agent 将在该端口上接收来自 Zabbix Server 的请求
zabbix_server.conf
ListenPort=10051
ListenIP=0.0.0.0
注意:
10050 端口:用于 Zabbix Agent 的监听端口。
当 Zabbix Server 或 Proxy 以被动模式查询 Agent 数据时,会通过此端口连接到 Agent。Zabbix Server 向 Agent 发送请求,Agent 通过 10050 端口监听并返回数据。
被动模式:Zabbix Server 主动连接到 Agent 的监听端口(10050)获取监控数据。
10051 端口:用于 Zabbix Server 或 Proxy 接收数据的端口。
在 主动模式 下,Zabbix Agent 会主动将监控数据发送到 Zabbix Server 或 Proxy 的 10051 端口。
主动模式:Zabbix Agent 主动向 Zabbix Server 的 10051 端口推送数据,而不是等待 Zabbix Server 发起请求
配置完成后 浏览器访问zabbix-server IP地址 可在左下角user setting 中修改默认为中文
新增主机
这里的主机名需要跟你的docker 创建zabbix-agent的主机名一致