4、自定义监控项

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin

7.1.什么是监控项

监控项:就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状态等等。
每一个监控项,都有一个唯一的key,简洁明了(相当于shell脚本的变量名)。 
只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没有使用所有监控项。Template OS Linux by Zabbix agent主要监控了cpu,内存,磁盘,网卡,安全,它们都属于通用监控。
应用集:是监控项的分组

监控项的类型

Zabbix客户端模式(被动) 通用,常用,配合模板或自定义监控使用
Zabbix客户端(主动模式) zabbix客户端默认是被动模式, 主动模式 zabbix 客户端主动把数据发送给服务端.
简单检查 不需要客户端,功能少,只能检查网络情况(ping,tcp,udp)
SNMP Simple Network Management Protocal 简单网络管理协议 zabbix监控网络设备使用.
内存检查 内部检查可以监控Zabbix的内部进程。未来优化可以用用.
HTTP代理 此模式 由zabbix server发出http请求给客户端,根据响应进行二次处理加工.
JMX 监控java程序
IPMI 监控硬件

#查看zabbix-agent2都支持哪些监控项,可以再命令行里看到

[root@web01 ~]# zabbix_agent2 -p
agent.hostname                                [s|Zabbix server]
agent.ping                                    [s|1]
agent.version                                 [s|5.0.8]
system.localtime[utc]                         [s|1626186266]
system.run[echo test]                         [m|ZBX_NOTSUPPORTED] [Unknown metric system.run]
web.page.get[localhost,,80]                   [s|HTTP/1.1 200 OK
Connection: close
Content-Length: 4833
Accept-Ranges: bytes
Content-Type: text/html
Date: Tue, 13 Jul 2021 14:24:26 GMT
Etag: "53762af0-12e1"
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Server: nginx/1.20.1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Welcome to CentOS</title>
  <style rel="stylesheet" type="text/css"> 

	html {
………………

7.2.使用内置key监控nginx的状态



#注意:添加监控项之前最好使用zabbix-get测试取值
[root@zabbix-server ~]# yum install zabbix-get -y
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k proc.num[nginx]

#注释
-s 被监控主机的ip地址
-p 端口
-k 指定监控项的key


#需要填写的参数
监控项名称:nginx运行状态
键值:proc.num[nginx]   ##根据取值结果,选择数据类型
主机以及接口:10.0.0.7:10051
信息类型:数字(无正负)
更新时间:30s  ##监控的频率
历史数据保留时长:暂时不修改、默认
趋势存储时间:暂时不修改、默认
新的应用集:填填写为nginx群组
最后一步点击:添加


#添加成功后,应用集那一行会多出一个nginx,是因为我们上一步添加的,点击nginx继续下一步




#通过以上方法还可以监测很多服务,例如SSHD、Mysql等

7.3 使用自定义的监控项来监控nginx

修改agent配置文件
#如果是zabbix-agent则修改如下文件
vim /etc/zabbix/zabbix_agentd.conf

#如果使用的是zabbix-agent2则修改如下文件
vim /etc/zabbix/zabbix_agent2.conf

#搜索【# UserParameter】在文件里增加一行,其实对配置文件没要求,加在哪一行都行
UserParameter=nginx_status,netstat -lntp|grep -c nginx 
#改完以后重启agent生效
[root@web01 ~]#  systemctl restart zabbix-agent2.service

#使用zabbix-get测试取值
#只能在zabbix-server上执行
[root@zabbix-server ~]#  zabbix_get -s 10.0.0.7 -k nginx_status

#注意 zabbix-agent 取值的时候权限不足解决方法:

1:使用sudo来执行(配置麻烦,不推荐)
2:使用suid来执行 (推荐使用)
[root@web01 ~]# chmod u+s /usr/bin/netstat 


3:使用root用户来运行zabbix-agent (不推荐使用、权限太大)

[root@web01 ~]# ll /usr/bin/netstat 
-rwxr-xr-x. 1 root root 155008 Aug  9  2019 /usr/bin/netstat
[root@web01 ~]# chmod u+s /usr/bin/netstat
[root@web01 ~]# ll /usr/bin/netstat 
-rwsr-xr-x. 1 root root 155008 Aug  9  2019 /usr/bin/netstat
[root@web01 ~]# chmod u-s /usr/bin/netstat
[root@web01 ~]# vim /usr/lib/systemd/system/zabbix-agent2.service 
[root@web01 ~]# cat /usr/lib/systemd/system/zabbix-agent2.service|grep root
User=root
Group=root
[root@web01 ~]# systemctl daemon-reload
[root@web01 ~]# systemctl restart zabbix-agent2.service 
[root@web01 ~]# ps -ef|grep nginx
root       1447      1  0 Jul14 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx      1448   1447  0 Jul14 ?        00:00:00 nginx: worker process
root       2502   1661  0 01:17 pts/0    00:00:00 grep --color=auto nginx


[root@zabbix-server ~]#  zabbix_get -s 10.0.0.7 -k nginx_status
1

接下来去web界面添加监控项







PS:如果没有最新数据就重启下zabbix-server

7.4 自定义带参数的监控项

说明:

agent配置文件中有一个Include,这个Include语法与Nginx的Include是一样的。

那么我们什么时候用到Include呢?我们需要的监控的指标有很多,不能把所有指标都写到一个配置文件中,建议把agent自定义监控项独立成一个配置文件、方便复用、管理也更方便。后期甚至可以用ansible推送。

#所以我们需要做文件拆分

#注意:配置文件里的内容不能与Include文件内容相同!否则冲突,服务起不来!

#把配置文件中的nginx监控指标注释
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.conf 
#UserParameter=nginx_status,netstat -lntp|grep -c nginx
[root@web01 ~]# egrep -v '^$|#' /etc/zabbix/zabbix_agent2.conf|cat -A
PidFile=/var/run/zabbix/zabbix_agent2.pid$
LogFile=/var/log/zabbix/zabbix_agent2.log$
LogFileSize=0$
Server=10.0.0.71$
ServerActive=127.0.0.1$
Hostname=Zabbix server$
Include=/etc/zabbix/zabbix_agent2.d/*.conf$
ControlSocket=/tmp/agent.sock$

#新建文件写入
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
UserParameter=nginx_status,netstat -lntp|grep -c nginx

#接下来监控web-10.0.0.7主机的数据库
#下载安装数据库并且启动、加入开启自启
[root@web01 ~]# yum install -y mariadb-server
[root@web01 ~]# systemctl start mariadb.service 
[root@web01 ~]# systemctl enable mariadb.service 

#查看mysql的指标
[root@web01 ~]# echo 'show status;'|mysql
[root@web01 ~]# echo 'show status;'|mysql|wc -l
414   ##四百多行。随便挑几个

#编辑配置文件(对应有规律的监控项,适合使用带参数的自定义监控项)
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/zbx_mysql.conf 
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/zbx_mysql.conf
#监控数据库启动时间,单位:s
#UserParameter=mysql_Uptime,echo 'show status;'|mysql -uroot|grep -w 'Uptime'|awk '{print $2}'
#监控数据库被查询了多少次,单位:每秒
#UserParameter=mysql_Com_select,echo 'show status;'|mysql -uroot|grep -w 'Com_select'|awk '{print $2}'
#监控数据库删除的次数
#UserParameter=mysql_Com_delete,echo 'show status;'|mysql -uroot|grep -w 'Com_delete'|awk '{print $2}'

#以上写法可以精简为一行,使用传参的方式
UserParameter=mysql_define[*],echo 'show status;'|mysql -uroot|grep -w "$1"|awk '{print $$2}'

#重启服务
[root@web01 ~]# systemctl restart zabbix-agent2.service 

#服务端测试取值
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Uptime]
1985
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Com_select]
1
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Com_insert]
posted @ 2022-06-05 14:31  kirin(麒麟)  阅读(615)  评论(0编辑  收藏  举报
Δ