linux系统zabbix监控自定义监控

自定义监控

      • 格式
      • 无数据传递自定义键值
      • 有数据传递自定义键值
    • 例如监控程序的状态
      • 监控php-fpm状态
      • 监控mysql主从状态
        • 获取主从状态脚本
        • 编写自定义监控文件
        • 服务端访问
      • 监控nginx状态
        • nginx设置监控页面
        • 编写自定义监控文件
        • 服务端访问

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

格式

在zabbix的子配置文件中编写

UserParameter=,

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-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 
//自定义用户监控
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" ]];then
   echo 1
else
   echo 0
fi
编写自定义监控文件
vim /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql_status,/etc/zabbix/zabbix_agentd.d/my.sh

systemctl restart zabbix-agent       //重启agent服务
服务端访问
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
编写自定义监控文件
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服务
服务端访问
zabbix_get -s 客户端ip -p 10050 -k "mysql_status"

你可能感兴趣的:(linux,linux,zabbix)