CentOS7 下用 Docker 安装和启动 Zabbix 企业级服务器监控系统

又购置了一批 VPS 后,大大小小的 Linux 服务器数量来到了 40 多台,自己写的服务器探针开始感受到压力了,专业性先不提,服务器一多前端那么多 Echarts 图标就够 Chrome 受的了……
本来想着咬咬牙花时间研究下 Zabbix 的配置上企业级监控,结果发现官方的 Docker 镜像从 server 端到面板前端到 agent 端居然全都有,因为自用的数据库就是 PostgreSQL,还省了安装,Docker pull 完直接使用即可(数据库的安装可以参考我的这篇文章:PostgreSQL 学习笔记 (一) 数据库的安装与环境配置)。


我的安装顺序是:
server 端 –> 前端面板 –> agent 端
请结合你自己的情况选择。

1、server 端。
官方 Docker 镜像:zabbix-server-pgsql
注意:使用 MySQL 和 PostgreSQL 时 Docker 镜像是不同的,且在启动 Docker 镜像之前就先创建好名为 zabbix 的数据库。

# pull
docker pull zabbix/zabbix-server-pgsql:4.0-centos-latest
# 启动,自行更改 host、port、username 和 password 数据库连接参数(ZBX_STARTPOLLERS 参数可以保证你在监听大量高延迟服务器下不产生 zabbix poller process more than 75% busy 的错误,如果出错之后再去修改 config.v2.json 会比较麻烦)
docker run --name some-zabbix-server-pgsql -p 10051:10051 --net=host -e DB_SERVER_HOST="$pgsql_host" -e DB_SERVER_PORT=$pgsql_port -e POSTGRES_USER="$pgsql_username" -e POSTGRES_PASSWORD="$pgsql_password" -e ZBX_STARTPOLLERS=15 -d docker.io/zabbix/zabbix-server-pgsql:4.0-centos-latest
# 查看 log
docker logs some-zabbix-server-pgsql
# 没有报错的话将其设为开机启动
docker update --restart=always some-zabbix-server-pgsql

2、面板前端。 官方 Docker 镜像:zabbix-web-nginx-pgsql
注意:一般情况下都和 server 端安装在同一个服务器上。

# pull
docker pull zabbix/zabbix-web-nginx-pgsql:4.0-centos-latest
# 启动,自行替换数据库连接参数,并将容器的 8080 端口映射到本机 10052 端口(注意该容易已经内置 Nginx,因此如果你准备在宿主机中安装 Nginx 并解析域名反代该容器,请使用 8080 端口,如果只准备用端口访问服务,则映射 80 端口也无妨)
docker run --name some-zabbix-web-nginx-pgsql -p 10052:8080 -e DB_SERVER_HOST="$pgsql_host" -e DB_SERVER_PORT=$pgsql_port -e POSTGRES_USER="$pgsql_username" -e POSTGRES_PASSWORD="$pgsql_password" -e PHP_TZ="Asia/Shanghai" -d docker.io/zabbix/zabbix-web-nginx-pgsql:4.0-centos-latest
# 查看 log
docker logs some-zabbix-web-nginx-pgsql

在防火墙和安全组 10052 端口开放之后,通过外网访问 http://服务器 IP:10052 检查面板是否启动成功,默认登录用户名为:Admin,密码为:zabbix。

# 没有报错的话将其设为开机启动
docker update --restart=always some-zabbix-web-nginx-pgsql

中文界面开启方式: 中文界面

3、agent 端。
官方 Docker 镜像:zabbix-agent
注意:这里虽然还是安装 server 所在的“本机”作为案例,但是因为 Docker 之间走的是虚拟网络,IP 并非 127.0.0.1,因此配置和在外网被监控机的一样:IP 需填外网 IP 并开放 10050(agent 默认)端口。

# pull
docker pull zabbix/zabbix-agent:4.0-centos-latest
# 启动,server_ip 填写 server 端所在服务器的外网 IP,端口默认为 10051,而 hostname 则需要在前端面板上配置好,参考下方步骤。
docker run --name some-zabbix-agent -p 10050:10050 -e ZBX_HOSTNAME="$hostname" -e ZBX_SERVER_HOST="$server_ip" -e ZBX_SERVER_PORT=$server_port -d docker.io/zabbix/zabbix-agent:4.0-centos-latest

选择创建主机, 选择创建主机
主机名称就是 hostname,需要注意的是不能有汉字。
主机配置
主机群组选 Zabbix servers 即可,后续自行更改。
主机群组

# 查看 log
docker logs some-zabbix-agent
# 开机自启动
docker update --restart=always some-zabbix-agent

没有问题的话去前端检查一下 ZBX 是否可用,

如果可用的话,再去看下监控图形, 图形
如果都没问题的话,Zabbix 的安装就结束了,以上。