粘贴下部署步骤,完整整理的文档和文档需要积分下载:
docker自动发现各容器的资源使用情况:
======================================第一种方式监控:使用zabbix-agent客户端,共八步======================================
1.编译文件
# 如有现成zabbix_module_docker.so 文件,可忽略第一步。注意zabbix-server版本
yum install -y wget autoconf automake gcc git pcre-devel
##4.2.1 为对应zabbix-server版本
git clone -b 4.2.1 --depth 1 https://github.com/zabbix/zabbix.git /usr/src/zabbix
cd /usr/src/zabbix
./bootstrap.sh
./configure --enable-agent
mkdir src/modules/zabbix_module_docker
cd src/modules/zabbix_module_docker
wget https://raw.githubusercontent.com/monitoringartist/zabbix-docker-monitoring/master/src/modules/zabbix_module_docker/zabbix_module_docker.c
wget https://raw.githubusercontent.com/monitoringartist/zabbix-docker-monitoring/master/src/modules/zabbix_module_docker/Makefile
make
##最后会生成文件:/usr/src/zabbix/src/modules/zabbix_module_docker/zabbix_module_docker.so
2.上传编译后文件:
mkdir -p /usr/src/zabbix/src/modules/zabbix_module_docker/
cd /usr/src/zabbix/src/modules/zabbix_module_docker/
rz zabbix_module_docker.so
chmod 777 /usr/src/zabbix/src/modules/zabbix_module_docker/zabbix_module_docker.so
3.zabbix用户赋权
usermod -aG docker zabbix
4.设置zabbix-agent
vi /etc/zabbix/zabbix_agentd.conf
##尾部添加
LoadModulePath=/usr/src/zabbix/src/modules/zabbix_module_docker
LoadModule=zabbix_module_docker.so
DebugLevel=4
5.重启zabbix-agent
service zabbix-agent restart
6.最后在zabbix-server上导入模板文件:Zabbix-Template-App-Docker.xml
7.最后在zabbix-server上为主机启用模板。
8.(可忽略)最后等五分钟后,在主页的最新数据中心查看Docker的监控数据。
======================================结束======================================
====================(废弃)第二种方式监控: 使用docker的zabbix-agent容器======================================
1.准备文件
最终文件:
mkdir -p /usr/src/zabbix/src/modules/zabbix_module_docker/
cd /usr/src/zabbix/src/modules/zabbix_module_docker/
rz ##上传文件zabbix_module_docker.so
chmod 777 /usr/src/zabbix/src/modules/zabbix_module_docker/zabbix_module_docker.so
2.zabbix用户赋权
usermod -aG docker zabbix
3.运行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>" \
-d monitoringartist/dockbix-agent-xxl-limited:latest
实例(需运行)
docker run --name=`hostname` --net=host --privileged -v /:/rootfs -v /var/run:/var/run --restart unless-stopped -e "ZA_Server=192.168.0.87" -e "ZA_ServerActive=192.168.0.87" -d monitoringartist/dockbix-agent-xxl-limited:latest
##官方资料https://github.com/monitoringartist/Zabbix-Docker-Monitoring
#ansible批回放
ansible docker-agents -m shell -a "mkdir -p /usr/src/zabbix/src/modules/zabbix_module_docker/ && usermod -aG docker zabbix && echo -e '\nLoadModulePath=/usr/src/zabbix/src/modules/zabbix_module_docker\nLoadModule=zabbix_module_docker.so' >> /etc/zabbix/zabbix_agentd.conf" -k
ansible docker-agents -m copy -a "src=/usr/src/zabbix/src/modules/zabbix_module_docker/zabbix_module_docker.so dest=/usr/src/zabbix/src/modules/zabbix_module_docker/zabbix_module_docker.so mode=777" -k
ansible docker-agents -m shell -a "service zabbix-agent restart" -k
REDIS
# Redis
#
# This content is licensed GNU GPL v2
# Author: Alexey Dubkov <alexey.dubkov@gmail.com>
#
# Discovery
#UserParameter=redis.discovery,/etc/zabbix/script/redis/zbx_redis_stats.js localhost list_key_space_db
# Return Redis statistics
#UserParameter=redis[*],/etc/zabbix/script/redis/zbx_redis_stats.js $1 $2 $3
## redis有密码: 添加: -a '修改成redis密码'
## redis无密码: 去掉: -a '修改成redis密码'
UserParameter=redis.discovery,python /etc/zabbix/script/redis/zbx_redis_stats.py localhost -p 7000 -a '****' list_key_space_db
UserParameter=redis[*],python /etc/zabbix/script/redis/zbx_redis_stats.py -a '***' $1 $2 $3 -p $4
##注意修改 -p 7004 -a '2UipouHJx23!Kxs%' 为redis实际端口、密码
##注意修改 192.168.0.87 修改成zabbix-server的内网ip地址
第一步:redis机器上安装基础软件环境
yum -y install python-pip
pip install redis
第二步:redis机器上创建目录、上传文件
mkdir -p /etc/zabbix/script/redis
上传文件到:/etc/zabbix/script/redis/zbx_redis_stats.py
上传文件到:/etc/zabbix/zabbix_agentd.d/zbx_redis.conf
为python脚本赋权:chmod a+x /etc/zabbix/script/redis/zbx_redis_stats.py
第三步:redis机器上检查配置
#作用:检查 /etc/zabbix/zabbix_agentd.conf是否引入 配置文件/etc/zabbix/zabbix_agentd.d/zbx_redis.conf的父目录。
grep "Include=/etc/zabbix/zabbix_agentd.d/" /etc/zabbix/zabbix_agentd.conf || echo "/etc/zabbix/zabbix_agentd.d/ !!!!!!!!config error!!!!!!!!"
#修改zabbix-server的ip地址
vi /etc/zabbix/script/redis/zbx_redis_stats.py
zabbix_host = '192.168.0.87' # 修改为Zabbix Server 内网 IP
zabbix_port = 10051 # 修改为Zabbix Server Port,默认10050
第四步:redis服务器上做本地调试(可忽略不做)
##检查Redis已连接的客户端数量
python /etc/zabbix/script/redis/zbx_redis_stats.py -a '4h1vlf30CWml24XxNS9Q1VnvP' 127.0.0.1 connected_clients none -p 7004
##示例说明
# 7000 == 要检查的端口号
# 2UipouHJx23!Kxs% == redis密码
# 127.0.0.1 == redis机器ip,如果脚本所在就是redis机器那就写127.0.0.1
# connected_clients == 要监控的字段connected_clients,取值范围redis-cli中info里面的信息。
# none == 要监控的redis的数据库名,系统级别的信息不需要数据库名所以为none。
第五步:重启redis上的zabbix-agent,使配置生效。
service zabbix-agent restart
最后:zabbix-server的页面上导入模板文件:zbx_redis_templates.xml,为redis主机添加模板。
也可自行添加:监控项、触发器
1.监控项示例: 以6379端口,检查gcc_version为例
名称:redisclu$2:$1-$3
类型:Zabbix 客户端
键值:redisclu[{HOSTNAME}, gcc_version,none,7000]
信息类型: 字符
更新间隔: 60s
2.触发器示例: 以服务端口7000,是否转变为例。状态转变标识服务启停。
名称:Redis is down on {HOSTNAME}
表达式:{Template Redis Modified:net.tcp.port[{HOST.IP},7000].last(0)}=0
NGINX
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginxs.sh $1
# service zabbix_agentd restart
#!/bin/bash
# Description:zabbix监控nginx性能以及进程状态
# Note:此脚本需要配置在被监控端,否则ping检测将会得到不符合预期的结果
HOST="127.0.0.1"
PORT="443"
# 检测nginx进程是否存在
function check {
/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "https://$HOST:$PORT/nginx_status/" -k 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1
1.nginx服务配置文件中开启桩
server {
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.30.0/24;
## 加上容器ip,如 allow 172.10.0.1;
deny all;
}
}
nginx重载配置文件指令: nginx -t && nginx -s reload
2.nginx服务器上添加zabbix-agent nginx配置文件
/etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
3.nginx服务器上准备脚本
mkdir -p /etc/zabbix/scripts
#复制脚本文件到 /etc/zabbix/scripts/nginxs.sh
#脚本赋权
chmod a+x /etc/zabbix/scripts/nginx.sh
#重启zabbix-agent
service zabbix-agent restart
4.zabbix-server服务器上调试
yum install -y zabbix-get
zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]' ##agent_ip_address 修改成nginx的实际内网ip
5.最后在zabbix-server上导入模板文件。zbx_export_templates.xml
6.最后在zabbix-server上为nginx主机启用Nginx模板。
文件积分下载地址:https://download.csdn.net/download/t694728793/11453797