Zabbix常用监控项

Zabbix的大用处

Zabbix从3.0之后就多了许多自带的监控项,比较常用的主要是CPU、内存、网卡这几方面的监控,但是作为一个合格的运维这远远的不够的,比如一些进程的状态,Nginx的会话情况,PHP的进程服务状态,Redis的键值,数据库的查询情况,服务器的温度等等这些都是我们应该时刻关注的,以为这些都对开发有一定的帮助,假如MySQL的查询过大多慢,那么开发看对应的监控找出问题所在,然后进行优化处理,还有就是可以对监控项设定一定的触发器完成自动化的操作,比如说,nginx无缘无故的挂掉了,那么可以设置一个动作,先发一封邮件警告,然后尝试帮你重启服务,如果尝试重启不行,那么就再发邮件通知你问题严重了。

Zabbix自带的常用项

agent.ping --- 检测客户端可达性。返回nothing表示不可达,1表示可达
system.cpu.load[] --- 检测CPU 负载。返回浮点数
system.cpu.util[] --- 检测CPU 使用率。返回浮点数
vfs.dev.read[] --- 检测磁盘读取数据。返回是 sps, ops, bps浮点类型,需要定义1024倍
vfs.dev.write[] --- 检测磁盘写入数据。返回是 sps, ops, bps浮点类型,需要定义1024倍

...还有很多很多,但是我这里就不一一列举了,因为从3.0开始Zabbix支持中文还不错,小伙伴们可以看描述即可

Zabbix的自定义常用项

内存相关的自定义项

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/catram.conf
UserParameter=ram.info[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}'

ram.info[Cached] --- 检测内存的缓存使用量,返回整数,需要定义1024倍
ram.info[MemFree] --- 检测内存的空余量,返回整数,需要定义1024倍
ram.info[Buffers] --- 检测内存的使用量,返回整数,需要定义1024倍

TCP相关的自定义项

vim /usr/local/zabbix/share/zabbix/alertscripts/tcp_connection.sh
#!/bin/bash
function ESTAB {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'
}
function TIMEWAIT {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'
}
function LISTEN {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
}
$1

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/cattcp.conf
UserParameter=tcp[*],/usr/local/zabbix/share/zabbix/alertscripts/tcp_connection.sh $1

tcp[TIMEWAIT] --- 检测TCP的驻留数,返回整数
tcp[ESTAB] --- 检测TCP的连接数,返回整数
tcp[LISTEN] --- 检测TCP的监听数,返回整数

Nginx相关的自定义项

vim /etc/nginx/conf.d/default.conf
    location /nginx-status
    {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
 
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx.conf
UserParameter=Nginx.status,[[ `service nginx status` =~ 'running' ]] && echo 1 || echo 0
UserParameter=Nginx.active,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/Active/ {print $NF}'
UserParameter=Nginx.read,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Reading' | cut -d" " -f2
UserParameter=Nginx.wrie,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Writing' | cut -d" " -f4
UserParameter=Nginx.wait,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $1}'
UserParameter=Nginx.handled,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $2}'
UserParameter=Nginx.requests,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $3}'

Nginx.status --- Nginx 服务状态,返回0表示异常,1表示正常
Nginx.active --- 检测Nginx正处理连接数,返回整数
Nginx.read --- 检测Nginx读取信息数,返回整数
Nginx.wrie --- 检测Nginx返回信息数,返回整数
Nginx.wait --- 检测Nginx驻留连接数,返回整数
Nginx.accepted --- 检测Nginx已处理连接数,返回整数
Nginx.handled --- 检测Nginx成功握手数,返回整数
Nginx.requests --- 检测Nginx成功请求数,返回整数 

PHP相关的自定义项

vim /etc/nginx/conf.d/default.conf
 location /status {
      allow 127.0.0.1;
      deny all;
      fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
      include        fastcgi_params;
      fastcgi_pass unix:/dev/shm/php5-fpm.sock;
    }
vi /etc/php-fpm.d/www.conf
pm.status_path = /status


vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/php.conf
UserParameter=PHP.status,[[ `service php-fpm status` =~ 'running' ]] && echo 1 || echo 0
UserParameter=PHP.listenqueue,/usr/bin/wget --quiet -O - http://127.0.0.1:80/status?auto | grep "listen queue:" | grep -vE "len|max" | awk '{print $3}'
UserParameter=PHP.idle,wget --quiet -O - http://127.0.0.1:80/status?auto | grep "idle processes" | awk '{print $3}'
UserParameter=PHP.active,wget --quiet -O - http://127.0.0.1:80/status?auto | grep "active" | awk '{print $3}'| grep -v "process"
UserParameter=PHP.conn,wget --quiet -O - http://127.0.0.1:80/status?auto | grep "accepted conn" | awk '{print $3}'
UserParameter=PHP.reached,wget --quiet -O - http://127.0.0.1:80/status?auto | grep "max children reached" | awk '{print $4}'
UserParameter=PHP.requests,wget --quiet -O - http://127.0.0.1:80/status?auto | grep "slow requests" | awk '{print $3}'

PHP.status --- PHP 服务状态,返回0表示异常,1表示正常
PHP.listenqueue --- 检测PHP队列数,返回整数
PHP.idle --- 检测PHP空闲进程数,返回整数
PHP.active --- 检测PHP活动进程数,返回整数
PHP.conn --- 检测PHP请求数,返回整数
PHP.reached --- 检测PHP达到限制次数,返回整数
PHP.requests --- 检测PHP慢请求数,返回整数 

Redis相关的自定义项

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/redis.conf
UserParameter=Redis.Status,/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 ping |grep -c PONG
UserParameter=Redis_conn[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "connected_clients" | awk -F':' '{print $2}'
UserParameter=Redis_rss_mem[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_memory_rss" | awk -F':' '{print $2}'
UserParameter=Redis_lua_mem[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_memory_lua" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_sys[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_user[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_user" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_sys_cline[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_user_cline[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'
UserParameter=Redis_keys_num[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "$1" | grep -w "keys" | grep db$3 | awk -F'=' '{print $2}' | awk -F',' '{print $1}'
UserParameter=Redis_loading[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep loading | awk -F':' '{print $2}'

 Redis.Status --- 检测Redis运行状态,返回整数
Redis_conn --- 检测Redis成功连接数,返回整数
Redis_rss_mem --- 检测Redis系统分配内存,返回整数
Redis_lua_mem --- 检测Redis引擎消耗内存,返回整数
Redis_cpu_sys --- 检测Redis主程序核心CPU消耗率,返回整数
Redis_cpu_user --- 检测Redis主程序用户CPU消耗率,返回整数
Redis_cpu_sys_cline --- 检测Redis后台核心CPU消耗率,返回整数
Redis_cpu_user_cline --- 检测Redis后台用户CPU消耗率,返回整数
Redis_keys_num --- 检测库键值数,返回整数
Redis_loading --- 检测Redis持久化文件状态,返回整数

MySQL相关的自定义项

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql.conf
UserParameter=mysql.status,[[ `service mysqld status` =~ 'running' ]] && echo 1 || echo 0
UserParameter=mysql.Slave_IO_Running,[[ `mysql -uroot -p'123456'  -h127.0.0.1 3 -e 'show slave status\G;' | grep Slave_IO_Running` =~ 'Yes' ]] && echo 1 || echo 0
UserParameter=mysql.Slave_SQL_Running,[[ `mysql -uroot -p'123456'  -h127.0.0.1 -e 'show slave status\G;' | grep Slave_SQL_Running` =~ 'Yes' ]] && echo 1 || echo 0
UserParameter=mysql.Threads_connected,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $4}'
UserParameter=mysql.Questions,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $6}'
UserParameter=mysql.Slow_queries,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $9}'
UserParameter=mysql.Opens,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $11}'
UserParameter=mysql.Flush_tables,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $14}'
UserParameter=mysql.Open_tables,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $17}'
UserParameter=mysql.Queries_per_second_avg,mysqladmin -uroot -p'123456' -h127.0.0.1 status | awk -F' ' '{print $22}'

 mysql.status --- MySQL 服务状态,返回0表示异常,1表示正常
mysql.Slave_IO_Running --- Slave IO 状态,返回0表示异常,1表示正常
mysql.Slave_SQL_Running --- Slave SQL 状态,返回0表示异常,1表示正常
mysql.Threads_connected --- 指开启的会话数,返回整数
mysql.Questions --- 服务器启动以来客户的问题查询查询数目,返回整数
mysql.Slow_queries --- 按字面意思是慢查询的意思,返回整数
mysql.Opens --- 服务器已经打开的数据库表的数量,返回整数
mysql.Flush_tables --- 服务器已经执行的flush ...、refresh和reload命令的数量,返回整数
mysql.Open_tables --- 通过命令是用的数据库的表的数量,以服务器启动开始,返回整数
mysql.Queries_per_second_avg --- select语句平均查询时间,返回浮点数

欢迎提出需求

后续如果遇到新的监控项需求,这篇博客也会更新上去,假如你有什么想要监控的,但有不知道该怎么监控可以在下方的评论区留言我看到后将第一时间为你解答,就算我不会,也会有其他的小伙伴和你一起思考当然,如果你非常关注监控运维的话,可以收藏这篇博客

待续。。。 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340