zabbix容器化安装及监控docker应用
一、zabbix agent2 介绍
从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监控各类应用及微服务。
以下为官方对zabbix agent2的介绍:
Zabbix agent2是新一代Zabbix代理,可以代替Zabbix代理使用。Zabbix agent2已开发为:
- 减少TCP连接数
- 具有更大的支票并发
- 易于通过插件扩展。插件应该能够:
- 提供仅由几行简单代码组成的琐碎检查
- 提供由长期运行的脚本和独立的数据收集组成的复杂检查,并定期发送回数据
- 替代Zabbix代理(因为它支持所有以前的功能)
- agent2用Go编写(重用了Zabbix代理的一些C代码)。构建Zabbix agent2需要配置的Go版本1.13+环境。
本文主要介绍如何通过zabbix agent2 来监控你的docker应用。
二、zabbix 5.x 安装
1.安装docker 版本不限制,过程参考网络不再赘述。
2.容器化方式安装 zabbix server
- 安装华为zabbix 5.2 yum源
rpm -ivh https://repo.huaweicloud.com/zabbix/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm
- 创建容器网络
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
- 创建数据库容器
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-d mysql:8.0 \
--restart unless-stopped \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
- 创建 zabbix-java-getway 容器
docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.2-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_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-5.2-latest
# 暴露 10051/TCP端口
- 创建web前端容器
docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.2-latest
#暴露 80端口
3. 登录server ip地址验证安装
# docker ps 四个容器已正常启动
[root@VM-0-5-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5dc24c3d05e5 mysql:8.0 "docker-entrypoint..." 3 weeks ago Up 3 weeks 3306/tcp, 33060/tcp mysql-server
12aa15d78de2 zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest "docker-entrypoint.sh" 3 weeks ago Up 3 weeks 8443/tcp, 0.0.0.0:80->8080/tcp zabbix-web-nginx-mysql
0deae5fc6fc0 zabbix/zabbix-server-mysql:alpine-5.0-latest "/sbin/tini -- /us..." 3 weeks ago Up 3 weeks 0.0.0.0:10051->10051/tcp zabbix-server-mysql
a417d9958ad2 zabbix/zabbix-java-gateway:alpine-5.0-latest "docker-entrypoint..." 3 weeks ago Up 3 weeks 10052/tcp zabbix-java-gateway
安装方式可参考官方文档:容器化方式安装zabbix server
三、zabbix监控docker应用
1.安装zabbix-agent2
yum install zabbix-aget2
#启动agent2
[root@VM-0-5-centos ~]# ps -ef|grep agent2
zabbix 23184 1 0 Mar30 ? 00:12:40 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
root 30458 30414 0 14:33 pts/6 00:00:00 grep --color=auto agent2
2.将docker模板链接到zabbix-server主机,并更新。
docker模板监控项如下
3.给/var/run/docker.sock 所有用户可读权限(zabbix用户)
chmod 666 /var/run/docker.sock
4.docker中的应用列表如下
可以看到docker模板已经自动发现了docker中的应用,如下所示
以监控mysql应用为例,其部分监控项如下
5. 添加docker 仪表盘
在仪表盘中添加图形,选择需要展示的监控项
多个图形构成的mysql docker应用的仪表盘
后续可添加告警相关内容,本文不做展开,小伙伴们可自行探索哈。 有不理解的地方可在评论区指出。
欢迎收藏、点赞、提问。关注顶级饮水机管理员,除了管烧热水,有时还做点别的。