一、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應用的儀表盤
後續可新增告警相關內容,本文不做展開,小夥伴們可自行探索哈。 有不理解的地方可在評論區指出。
歡迎收藏、點贊、提問。關注頂級飲水機管理員,除了管燒熱水,有時還做點別的。