zabbix容器化安裝及監控docker應用

頂級飲水機管理員發表於2021-04-30

一、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中的應用列表如下

image-20210426134409255

可以看到docker模板已經自動發現了docker中的應用,如下所示

image-20210426134529748

以監控mysql應用為例,其部分監控項如下

5. 新增docker 儀表盤

在儀表盤中新增圖形,選擇需要展示的監控項

image-20210426153844151

多個圖形構成的mysql docker應用的儀表盤


後續可新增告警相關內容,本文不做展開,小夥伴們可自行探索哈。 有不理解的地方可在評論區指出。


歡迎收藏、點贊、提問。關注頂級飲水機管理員,除了管燒熱水,有時還做點別的。

相關文章