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"
相关推荐
TeYiToKu38 分钟前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws40 分钟前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
yeyuningzi1 小时前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
上辈子杀猪这辈子学IT1 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei1 小时前
linux centos 安装redis
linux·redis·centos
lldhsds2 小时前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp3 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君3 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维3 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源3 小时前
Elasticsearch-linux环境部署
linux·elasticsearch