linux系统zabbix监控自定义监控

自定义监控

用户自定义监控也就是自定义键值,系统自带的键值无法满足需求的情况下,可以根须需求自定义键值,只有在agent端设置键值,server才能使用键值

格式

ini 复制代码
在zabbix的子配置文件中编写

UserParameter=<key>,<command>

key:键值名称
command:执行的命令或脚本路径

无数据传递自定义键值

ini 复制代码
无数据传递
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 "参数文件名"

有数据传递自定义键值

ini 复制代码
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状态

ini 复制代码
agent端安装php-fpm,nginx,设置关联

yum -y install php-fpm

vim /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    #响应内容pong

systemctl start php-fpm          //重启php-fpm


yum -y install nginx

vim /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 
ini 复制代码
//自定义用户监控
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服务
ini 复制代码
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主从状态

获取主从状态脚本
ini 复制代码
#!/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" ]];then
   echo 1
else
   echo 0
fi
编写自定义监控文件
ini 复制代码
vim /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql_status,/etc/zabbix/zabbix_agentd.d/my.sh

systemctl restart zabbix-agent       //重启agent服务
服务端访问
ini 复制代码
zabbix_get -s 客户端ip -p 10050 -k "mysql_status"

监控nginx状态

nginx设置监控页面
复制代码
vim /etc/nginx/nginx.conf

location /nginx-status { 
      stub_status on; 
      access_log    /var/log/nginx/nginxstatus.log;    //设置日志文件的位置 
      }

nginx -s reload
编写自定义监控文件
ini 复制代码
vim /etc/zabbix/zabbix_agentd.d/nginx.conf

UserParameter=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服务
服务端访问
ini 复制代码
zabbix_get -s 客户端ip -p 10050 -k "mysql_status"
相关推荐
AlfredZhao8 小时前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐1 天前
Linux内存扩容指南
linux
zylyehuo2 天前
Linux 彻底且安全地删除文件
linux
用户805533698032 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297912 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
SRETalk3 天前
Zabbix、Prometheus、Grafana、Nightingale,四个监控如何选型?
zabbix·grafana·prometheus·nightingale
Web3探索者4 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo4 天前
Linux系统中网线与USB网络共享冲突
linux
荣--4 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
Sokach10155 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux