自定义监控
- 格式
- 无数据传递自定义键值
- 有数据传递自定义键值
- 例如监控程序的状态
- 监控php-fpm状态
- 监控mysql主从状态
- 获取主从状态脚本
- 编写自定义监控文件
- 服务端访问
- 监控nginx状态
- nginx设置监控页面
- 编写自定义监控文件
- 服务端访问
用户自定义监控也就是自定义键值,系统自带的键值无法满足需求的情况下,可以根须需求自定义键值,只有在agent端设置键值,server才能使用键值
格式
在zabbix的子配置文件中编写UserParameter=<key>,<command>key:键值名称
command:执行的命令或脚本路径
无数据传递自定义键值
无数据传递
cd /etc/zabbix/zabbix_agentd.d
vim free_mem.conf
UserParameter= free_mem,free -m| awk '/^Mem/{print $3}'
UserParameter= 键值名,执行的命令,或者脚本的路径systemctl restart zabbix-agent //重启服务server端测试
yum -y install zabbix-get
zabbix_get -s 10.12.153.172 -p 10050 -k "free_mem"
zabbix_get -s ip -p 端口 -k "参数文件名"
有数据传递自定义键值
cd /etc/zabbix/zabbix_agentd.d
vim memory.stats.conf
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'
UserParameter=键值名[*], 命令 | 裁剪 '/第一列为变量/需要裁剪的数据'分析:$$2:表示awk的参数$2
注意:$1是调用前边的[*],位置参数,第一个参数systemctl restart zabbix-agent //重启服务server端测试
zabbix_get -s 10.12.153.172 -p 10050 -k "memory.stats[MemTotal]"
zabbix_get -s ip -p 端口 -k "参数文件名[参数]"
例如监控程序的状态
监控php-fpm状态
agent端安装php-fpm,nginx,设置关联yum -y install php-fpmvim /etc/php-fpm.d/www.conf //更改php-fpm配置文件user = nginx
group = nginx
pm.status_path = /php-fpm-status #php-fpm 的状态监测页面
ping.path = /ping #ping 接口,存活状态是否ok
ping.response = pong #响应内容pongsystemctl start php-fpm //重启php-fpmyum -y install nginxvim /etc/nginx/nginx.conf //更改nginx配置文件location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;
}
location ~* /(php-fpm-status|ping) {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;include fastcgi_params;allow 127.0.0.1; #因为这个页面很重要,所有需加访问控制deny all;access_log off; #访问这个页面就不用记录日志了
}systemctl start nginx
//自定义用户监控
cd /etc/zabbix/zabbix_agentd.d/vim php_status.conf //自定义键值监控UserParameter=php-fpm.stats[*],curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'systemctl restart zabbix-agent //重启agent服务
server访问
zabbix_get -s 客户端ip -p 10050 -k "php-fpm.stats[pool]"
php-fpm显示内容 | |
---|---|
参数 | 说明 |
pool | FPM 进程池的名称 |
proccess manager | 进程管理器类型——static、dynamic 或 ondemand。 |
start time | 进程池最后一次启动的日期/时间。 |
start since | 进程自启动以来的秒数。 |
accepted conn | 服务的请求总数 |
listen queue | 当前等待空闲进程的请求(backlog)总数。 |
max listen queue | 监听队列在任一时间看到的最大请求数。 |
listen queue len | 监听队列的最大允许数量。 |
idle processes | 当前空闲(等待请求)的进程数。 |
active processes | 当前正在处理请求的进程数。 |
total processes | 当前进程总数。 |
max active processes | 并发活动进程的最大数量。 |
max children reached | 是否达到了最大进程数?如果是,则值显示为 1 ,否则为 0 。 |
slow requests | 达到配置 request_slowlog_timeout的请求总数。 |
监控mysql主从状态
获取主从状态脚本
#!/bin/bash
SQL=$(mysql -uroot -p'0' -e 'show slave status\G' 2>/dev/null |grep "Slave_SQL_Running"|awk 'NR==1{print $2}')
IO=$(mysql -uroot -p'0' -e 'show slave status\G' 2>/dev/null |grep "Slave_IO_Running"|awk 'NR==1{print $2}')
if [[ ${SQL} = "Yes" && ${IO} = "Yes" ]];thenecho 1
elseecho 0
fi
编写自定义监控文件
vim /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql_status,/etc/zabbix/zabbix_agentd.d/my.shsystemctl restart zabbix-agent //重启agent服务
服务端访问
zabbix_get -s 客户端ip -p 10050 -k "mysql_status"
监控nginx状态
nginx设置监控页面
vim /etc/nginx/nginx.conflocation /nginx-status { stub_status on; access_log /var/log/nginx/nginxstatus.log; //设置日志文件的位置 }nginx -s reload
编写自定义监控文件
vim /etc/zabbix/zabbix_agentd.d/nginx.confUserParameter=nginx.Active.connections,curl -s 127.0.0.1/nginx-status |awk 'NR==1{print $NF}'
UserParameter=nginx.accepts.requests,curl -s 127.0.0.1/nginx-status |awk 'NR==3{print $1}'
UserParameter=nginx.handled.requests,curl -s 127.0.0.1/nginx-status |awk 'NR==3{print $2}'
UserParameter=nginx.requests,curl -s 127.0.0.1/nginx-status |awk 'NR==3{print $3}'
UserParameter=nginx.reading,curl -s 127.0.0.1/nginx-status |awk 'NR==4{print $2}'
UserParameter=nginx.writing,curl -s 127.0.0.1/nginx-status |awk 'NR==4{print $4}'
UserParameter=nginx.waiting,curl -s 127.0.0.1/nginx-status |awk 'NR==4{print $6}'
UserParameter=nginx.uv,sudo awk '{print $1}' /var/log/nginx/access.log|sort | uniq -c |wc -l
UserParameter=nginx.pv,sudo awk '{print $7}' /var/log/nginx/access.log|wc -l
UserParameter=nginx.busy.url,sudo awk '{print $7}' /var/log/nginx/access.log|sort | uniq -c |sort -n -k 1 -r|head -1 |awk '{print $2}'
UserParameter=nginx.most.ip,sudo awk '{print $1}' /var/log/nginx/access.log|sort | uniq -c |sort -n -k 1 -r|head -1 |awk '{print $2}'systemctl restart zabbix-agent //重启agent服务
服务端访问
zabbix_get -s 客户端ip -p 10050 -k "mysql_status"