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"
相关推荐
小陈phd13 分钟前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!17 分钟前
【Linux】进程状态
linux·运维
明明跟你说过1 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
内核程序员kevin5 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
朝九晚五ฺ9 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream9 小时前
Linux的桌面
linux
xiaozhiwise10 小时前
Makefile 之 自动化变量
linux