一、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应用的仪表盘
后续可添加告警相关内容,本文不做展开,小伙伴们可自行探索哈。 有不理解的地方可在评论区指出。
发表评论 取消回复