自定义监控
- 格式
- 无数据传递自定义键值
- 有数据传递自定义键值
 
- 例如监控程序的状态
- 监控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"