Zabbix监控
部署
1.1 说明
- 通过Zabbix、cadvisor、prometheus监控服务器、Docker的性能并通过grafana做展示
- 部署方式:Docker-compose。
- Docker版本:Server Version: 19.03.12
1.2 部署Zabbix、prometheus、grafana、cadvisor容器
1.2.1 创建本地挂载目录
mkdir /opt/docker_volume/zabbix/mysql
1.2.2 创建Zabbix所需的MySQL容器
docker run -d --name mysql-server \--restart=always \--privileged=true \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="zabbix" \-v /opt/docker_volume/zabbix/mysql/data:/var/lib/mysql \-v /etc/localtime:/etc/localtime:ro \-p 127.0.0.1:3306:3306 \-d mysql:5.7 \--character-set-server=utf8 \--collation-server=utf8_bin
1.2.3 创建Zabbix主服务容器
docker run -d \--name zabbix-server-mysql \--link mysql-server:mysql \--restart=always \--privileged=true \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="zabbix" \-v /etc/localtime:/etc/localtime:ro \-v /opt/docker_volume/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \-v /opt/docker_volume/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \-p 10051:10051 \zabbix/zabbix-server-mysql
1.2.4 创建Zabbix的Nginx容器
docker run -d \--name zabbix-web-nginx-mysql -t \--link mysql-server:mysql \--link zabbix-server-mysql:zabbix-server \--restart=always \--privileged=true \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="zabbix" \-e PHP_TZ="Asia/Shanghai" \-p 80:8080 -d \zabbix/zabbix-web-nginx-mysql
1.2.5 创建promethues容器
docker run -d \--name prometheus \--restart=always \-p 9090:9090 \-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus
1.2.6 创建 node-exporter容器
docker run -d \--name node-exporter \--restart=always \ -v "/proc:/host/proc:ro" \-v "/sys:/host/sys:ro" \-v "/:/rootfs:ro" \-p 9100:9100 \prom/node-exporter
1.2.7 创建 cadvisor 收集Docker容器性能
docker run -d \--name cadvisor \--restart=always \-v /:/rootfs:ro \-v /var/run:/var/run:ro \-v /sys:/sys:ro \-v /var/lib/docker/:/var/lib/docker:ro \-v /dev/disk/:/dev/disk:ro \-p 8080:8080 \google/cadvisor:latest
1.2.8 创建grafana 容器,用于图形展现
docker run -d \--name=grafana \--restart=always \--privileged=true \-v /opt/docker_volume/grafana/plugins:/var/lib/grafana/plugins \-p 3000:3000 \grafana/grafana
2 配置
2.1 prometheus配置文件
cat <<EOF>> /etc/prometheus/prometheus.ymlglobal: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: \# - alertmanager:9093rule_files:scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['192.168.0.241:9100','192.168.0.234:9100'] - job_name: 'container' static_configs: - targets: ['192.168.0.241:8080','192.168.0.234:8080']EOF
targets: [‘192.168.0.241:9100’,’192.168.0.234:9100’] 此项配置为监控0.241、0.234服务器上node-export收集的系统数据
targets: [‘192.168.0.241:8080’,’192.168.0.234:8080’] 此项配置为监控0.241、0.234服务器上cadviso收集的docker数据
2.2 grafana添加支持Zabbix数据源的插件
通过容器命令方式添加插件
docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app
如果上述方法未能安装成功,直接从官网下载插件后解压到grafana挂载的插件目录
wget https://codeload.github.com/alexanderzobnin/grafana-zabbix/legacy.zip/309146fa6b001dc776acb250b8668eeac2db4f92 -P /tmpcd /tmp && unzip 309146fa6b001dc776acb250b8668eeac2db4f92cp -R alexanderzobnin-grafana-zabbix-309146f/ /opt/docker_volume/grafana/plugins
2.3 放行端口
firewall-cmd --zone=public --add-port=80 --permanentfirewall-cmd --zone=public --add-port=8080 --permanentfirewall-cmd --zone=public --add-port=10000 --permanentfirewall-cmd --zone=public --add-port=10050 --permanentfirewall-cmd --zone=public --add-port=3000 --permanentfirewall-cmd --zone=public --add-port=9200 --permanentfirewall-cmd --zone=public --add-port=5601 --permanentfirewall-cmd --zone=public --add-port=9090 --permanentfirewall-cmd --zone=public --add-port=9100 --permanent
2.4 被监控端安装zabbix_agent并配置参数
Hostname=Windows-0.2 #zabbix显示主机名ServerActive=192.168.0.241 #zabbix服务器Server=0.0.0.0/0 #允许Zabbix主动连接访问
3 配置grafana显示图形
3.1 添加prometheus、zabbix数据源
登录http://192.168.0.241:3000/login 默认密码为admin:admin