一、准備工作
1、mysql數據庫:192.168.1.5 2、nginx服務:192.168.1.10 3、docker服務器:192.168.1.20 4、zabbix客戶端若干
二、docker搭建zabbix
1、部署zabbix-server
先部署測試zabbix-server:
mkdir -p /home/docker/server/zabbix
docker pull zabbix/zabbix-server-mysql
docker run --name zabbix-server -p 10051:10051 \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -itd zabbix/zabbix-server-mysql
docker cp zabbix-server:/etc/zabbix /home/docker/server/zabbix/zabbix-server #將zabbix配置文件放到服務器,為的是修改方便 docker rm -f zabbix-server
啟動正式docker-server:
docker run --name zabbix-server -p 10051:10051 \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="1234565" \ -v /home/docker/server/zabbix/server/zabbix_server.conf:/etc/zabbix/ zabbix_server.conf \ -v /home/docker/server/zabbix/server/alertscripts:/usr/lib/zabbix/alertscripts \ -v /home/docker/server/zabbix/server/externalscripts:/usr/lib/zabbix/externalscripts \ -v /home/docker/server/zabbix/server/modules:/var/lib/zabbix/modules \ -v /home/docker/server/zabbix/server/enc:/var/lib/zabbix/enc \ -v /home/docker/server/zabbix/server/ssh_keys:/var/lib/zabbix/ssh_keys \ -v /home/docker/server/zabbix/server/ssl/certs:/var/lib/zabbix/ssl/certs \ -v /home/docker/server/zabbix/server/ssl/keys:/var/lib/zabbix/ssl/keys \ -v /home/docker/server/zabbix/server/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \ -v /home/docker/server/zabbix/server/snmptraps:/var/lib/zabbix/snmptraps \ -v /home/docker/server/zabbix/server/mibs:/var/lib/zabbix/mibs \ -itd zabbix/zabbix-server-mysql
注:-v 參數將容器文件映射到服務器,也是方便修改
2、部署zabbix-web
先部署測試zabbix-web:
docker pull zabbix/zabbix-web-nginx-mysql
docker run --name zabbix-web -p 8080:8080 -p 8443:8443 \ --link zabbix-server:zabbix-server \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -e ZBX_SERVER_HOST="zabbix-server" \ -e PHP_TZ="Asia/Shanghai" \ -itd zabbix/zabbix-web-nginx-mysql
docker cp zabbix-web:/usr/share/zabbix /home/docker/server/zabbix/zabbix-web
注:--link 鏈接容器,可以互相通信,接收容器可以獲取源容器的環境變量。 -e 設置環境變量。
啟動正式zabbix-web:
docker run --name zabbix-web -p 8080:8080 -p 8443:8443 \ --link zabbix-server:zabbix-server \ -v /home/docker/server/zabbix/zabbix-web:/usr/share/zabbix \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -e ZBX_SERVER_HOST="zabbix-server" \ -e PHP_TZ="Asia/Shanghai" \ -itd zabbix/zabbix-web-nginx-mysql
3、部署zabbix-agent
先部署測試zabbix-agent:
docker pull zabbix/zabbix-agent
docker run --name zabbix-agent -p 10050:10050 \ --link zabbix-server:zabbix-server \ -itd zabbix/zabbix-agent
docker cp zabbix-agent:/etc/zabbix /home/docker/server/zabbix/zabbix-agent
docker rm -f zabbix-agent
修改zabbix_agentd.conf配置文件:(有2種情況)
(1)zabbix-server和zabbix-agent在同一台服務器部署
Server=172.17.0.1 #docker容器的網關地址
(2)zabbix-server和zabbix-agent不在一台服務器
Server=192.168.1.20 ServerActive=192.168.1.20:10051 Hostname=主機名
啟動正式zabbix-agent:
docker run --name zabbix-agent -p 10050:10050 \ --link zabbix-server:zabbix-server \ -v /home/docker/server/zabbix/zabbix-agent/zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf \ -itd zabbix/zabbix-agent
在nginx配置域名訪問:
server { server_name zabbix.aa.com; listen 80; location /zabbix/ { proxy_pass http://192.168.1.20:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_next_upstream error timeout invalid_header; } }
訪問url:http://zabbix.aa.com/zabbix 默認用戶名密碼:admin/zabbix
注:如果想在沒有裝docker環境的服務器安裝zabbix客戶端,直接下載zabbix-agent安裝包就可以了。(總結來說docker部署的zabbix-agent不太好用,可以用zabbix+grafana實現所有監控功能:zabbix監控Linux服務,grafana監控容器服務)
三、zabbix頁面配置
要配合Grafana做監控系統,所以下面選項中有創建觸發器的操作就可以免除了。
1、提前准備
創建模板:
創建應用集:
添加主機:
2、監控端口
添加監控項:
創建觸發器:
點完添加會出現下面這個條件選項:
3、url監控(不需要安裝zabbix-agent)
創建web場景:
四、zabbix結合Grafana頁面展示並郵件警報
因為之前寫過docker部署Prometheus+Grafana,這里搭建grafana就可以了,還需要為grafana安裝一個zabbix插件:
docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app #進入容器執行命令
docker restart grafana #重啟grafana
1、提前准備
訪問Grafana:http://grafana.aa.com 用戶名密碼:admin/grafana123 在頁面配置zabbix插件並添加數據源:
保存並測試,如果成功說明和zabbix已經連接成功。
創建報警信息:(grafana自帶的警報)
2、導入json儀表盤模板
根據自己需求下載:https://grafana.com/grafana/dashboards,下載完導入到grafana:
3、手動創建儀表板:
(1)監控端口並報警:
監控端口並報警配置完成。
(2)監控url並報警:
監控URL並報警配置完成。
報警郵件展示:
功能以及操作方面可能有所不足,還在研究,持續更新中!!!
人生確實沒有意義,但人生有美。