Zabbix在Docker中的應用和監控
一.如何使Zabbix跑在Docker里
Zabbix官方很早之前就提供里Zabbix的Docker鏡像,而且提供里具體的配置及文件。具體地址:https://github.com/zabbix/zabbix-docker 官方提供三種Docker基礎鏡像的版本,分別為:
- alpine
- centos
- ubuntu
基礎鏡像在使用上沒有太大區別,這里推薦大家使用alpine,這是一個簡化的linux版本,最小體積只有30MB多,建議大家使用。官方提供提供了docker-compose的編排文件,可以使用docker-compose編排工具,”一鍵”啟動一套Zabbix系統。其中包括以下組件:
- zabbix-server
- zabbix-agent
- zabbix-proxy
- zabbix-web
- zabbix-java-gateway
- zabbix-snmptraps
1.Docker基礎環境配置
環境
OS:CentOS 7 x86_64
Docker: docker-ce-18.09.0
1.1 安裝必要的一些系統工具
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 添加軟件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 更新並安裝 Docker-CE
yum makecache fast
yum -y install docker-ce
1.4 開啟Docker服務
systemctl start docker
1.5 設置開機啟動
systemctl enable docker
1.6 配置docker鏡像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://72idtxd8.mirror.aliyuncs.com"]
}
1.7 重啟docker
systemctl restart docker
2.Docker-compose安裝配置
環境
OS:CentOS 7 x86_64
Docker: docker-ce-18.09.0
Docker-compose:docker-compose version 1.23.1
docker-compose是docker推出的一款編排工具,由於zabbix有很多組件,zabbix server,zabbix-web,zabbix-proxy,db等組件,通過docker-compose的配置文件,可以統一編排,做到一鍵啟動一套Zabbix 組件。
2.1 安裝Docker-compose
curl "https://dl.cactifans.com/zabbix_docker/docker-compose" -o /usr/bin/docker-compose
chmod a+x /usr/bin/docker-compose
2.2 查看docker-compose版本
docker-compose version
2.3 安裝git等工具
yum install git wget telnet net-tools -y
2.4 下載zabbix docker倉庫文件並切換到4.0分支
cd /opt
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker/
git checkout 4.0
由於github訪問較慢,我已git一份到我服務器,大家可以使用以下命令下載使用,只是下載地址變化,其他么有大的變化。
cd /opt
wget https://dl.cactifans.com/zabbix_docker/zabbix-docker.tar.gz
tar zxvf zabbix-docker.tar.gz
cd zabbix-docker/
git checkout 4.0
3.啟動zabbix server
- zabbix官方提供的docker-compose文件有很多,導致大家感到困惑,下面為大家解釋一下:
docker-compose_v3_alpine_mysql_latest.yaml
v3為docker-compose版本,分v3,v2,與docker-compose版本和docker版本有關系,具體對應關系在這里查看https://docs.docker.com/compose/compose-file/compose-versioning/
alpine為基礎鏡像類型,三種類型alpine/centos/ubuntu可選,三種鏡像在Zabbix使用上沒有任何區別,區別的的只有鏡像大小及操作系統區別,推薦使用alpine
myql為zabbix server所使用的數據庫類型,目前有MySQL/PostgreSQL二種,推薦使用mysql
latest表示為使用官方的最新鏡像,local是下載本地進行build鏡像,如網絡不好,建議不要嘗試,時間較長,很容易失敗
本次使用docker-compose_v3_alpine_mysql_latest.yaml配置文件啟動Zabbix
3.1 啟動zabbix server組件
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
3.2 查看運行狀態
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml ps
啟動之后即可使用http://ip 直接訪問zabbix server,默認賬號密碼為
賬號:Admin 密碼:zabbix
4.基本配置
安裝好之后,部分配置可根據實際需求修改
4.1 修改web端口
1 修改docker-compose_v3_alpine_mysql_latest.yaml文件
vi docker-compose_v3_alpine_mysql_latest.yaml
修改端口為8812
zabbix-web-apache-mysql:
image: zabbix/zabbix-web-apache-mysql:alpine-4.0-latest
ports:
- “80:80" //修改為8812:80
- “443:443”
2 停止zabbix server
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml down
3 啟動zabbix server
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
即可使用http://ip:8812 訪問應用
4.2 修改時區
1 修改.env_web
vi .env_web
修改為Asia/Shanghai
PHP_TZ=Europe/Riga
修改為 PHP_TZ=Asia/Shanghai
2 停止zabbix server
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml down
3 啟動zabbix server
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
4.3 修改字體為中文
由於默認鏡像中文字體亂碼,需要添加中文字體,重新build鏡像,此過程較長,需要網絡良好。
1 修改配置文件
vi zabbix-docker/web-apache-mysql/alpine/Dockerfile
修改成如下內容
ADD conf/etc/zabbix/web/msty.ttf /usr/share/fonts/ttf-dejavu/msty.ttf
ln -s /usr/share/fonts/ttf-dejavu/msty.ttf /usr/share/zabbix/fonts/graphfont.ttf
2 下載字體文件到conf/etc/zabbix/web/目錄
wget https://dl.cactifans.com/zabbix_docker/msty.ttf
3 生成鏡像
zabbix-docker/web-apache-mysql/alpine/build.sh
4 修改docker-compose文件,並啟動
vi docker-compose_v3_alpine_mysql_latest.yaml
鏡像地址修改為剛才build的
image: zabbix-web-apache-mysql:alpine-latest
5 啟動zabbix server
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
二.使用Zabbix監控Docker
隨着Docker的流行,監控Docker已勢在必行,使用Zabbix可以利用LLD(自動發現)自動監控宿主機上所運行的所有Docker狀態。具體地址可查看https://github.com/monitoringartist/zabbix-docker-monitoring/
1.部署方式
提供了二種部署方式
1.使用已有Zabbix Agent加載Docker監控模塊方式.如已在Docker宿主機上安裝Agent,可直接修改配置文件,加載對應的Docker監控模塊,重新啟動Agent即可。
2.使用加載了Zabbix Agent的Docker鏡像方式.如未安裝Zabbix Agent,可直接使用包含了Zabbix Agent的鏡像即可。
2.模塊方式
Zabbix 模塊插件是很好用的,可使用C語言編寫一個模塊,直接加載模塊即可使用,個人認為使用模塊有以下好處:
- 避免手動添加UserParameter帶來的繁瑣。模塊自動添加UserParameter,無需手動添加
- 避免腳本泄漏,保存重要信息。如部分腳本里保存數據庫賬號密碼,普通用戶可直接查看內容,加密之后,腳本執行又需要解密,比較繁瑣,使用模塊可避免此類問題。
- 統一管理自定義監控項。監控某類指標,只需加載對應的模塊即可,按需加載
在Zabbix Agent里添加模塊只需修改以下二項即可
LoadModulePath=/usr/local/modules
LoadModule=docker.so
第一項為模塊路徑,第二項為模塊文件。修改之后重啟Zabbix Agent即可。
監控Docker模塊可在https://github.com/monitoringartist/zabbix-docker-monitoring 下載,注意對應的版本。網站提供的模塊有些有錯誤,需要自行編譯。
3.使用Docker Agent方式
使用以下命令即可啟動一個Agent,即可監控宿主機器上所有運行的Docker容器
docker run \
--name=dockbix-agent-xxl \
--net=host \
--privileged \
-v /:/rootfs \
-v /var/run:/var/run \
--restart unless-stopped \
-e "ZA_Server=<ZABBIX SERVER IP/DNS NAME/IP_RANGE>" \
-e "ZA_ServerActive=<ZABBIX SERVER IP/DNS NAME>" \
-e "ZA_StartAgents=10" \
-e "ZA_Timeout=30" \
-d monitoringartist/dockbix-agent-xxl-limited:latest
- ZA_Server修改為你的Zabbix ServerIP
- ZA_ServerActive修改為你的Zabbix ServerIP
即可完成Agent部署
4.關聯模版
在Zabbix主機上導入模版,並關聯主機。模版下載地址:
https://dl.cactifans.com/zabbix_docker/Zabbix-Template-App-Docker.tar.gz
下載之后解壓導入模版,添加主機即可。主要使用2個模版,一個為主動,一個為被動
Zabbix-Template-App-Docker-active.xml 主動模版
Zabbix-Template-App-Docker.xml 被動模式
添加主機的主機名為宿主機名稱,也可以通過docker日志查看。
轉載文檔
https://blog.cactifans.com/2018/12/28/Zabbix%E5%9C%A8Docker%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E5%92%8C%E7%9B%91%E6%8E%A7/