zabbix自定义监控,自定义图表。

zabbix server:
hostname=Zabbix server

ip:192.168.100.7

zabbix agent:

hostname=host3

ip:192.168.100.3

目前状态如下,使用的全是zabbix自带的监控插件,在某些情况下,我们自己的一些应用,或者系统上的一些值无法被zabbix监控,这时,需要自定义一些监控项,监控项可以直接使用shell命令,bash脚本,开发语言来生成,最终结果是需要返回一个值,交给zabbix进行监控,然后进行一系列操作,下面,跟随本文开始配置。

自定义监控:

#在zabbix agent端通过某种手段取得值,然后zabbix_agent把值传给server端,或者server端自己来取,server端通过这个值,进行分析判断,建立图表,根据值的变化做报警等。

情况1:服务器上存在nginx服务(如下),监听端口8219,zabbix不提供此端口监控,需要自定义一个监控项来监控此端口的可用性。

[[email protected] [17:49:02]~]#netstat -antp |grep nginx
tcp        0      0 0.0.0.0:8219                0.0.0.0:*                   LISTEN      15246/nginx         

新建如下脚本

#echo $?    必须存在,显示的结果就是这个脚本返回的结果。

[[email protected] [17:52:29]~]#cat /shell/nginx_status.sh
curl \-‘I‘ localhost:8219/abc \--connect-timeout 2 &>/dev/null
echo $?

执行此脚本测试

#返回的值是0代表本地的8219端口是可以正常连接的。

[[email protected] [17:52:31]~]#bash /shell/nginx_status.sh
0

编辑zabbix_agentd.conf 配置文件,增加下方配置。

#关键词 UserParameter 定义一个key=nginx_status ,values=(key后方命令的结果`echo  $?`)

#key

#定义完毕后,重启zabbix_agentd 服务,才可生效

[[email protected] [17:58:08]~]#cat /usr/local/zabbix/etc/zabbix_agentd.conf |grep nginx
UserParameter=nginx_status,bash /shell/nginx_status.sh

Server端可用命令连接Agent端来获取这个值,看是否可以正常获取到数据,这个步骤正常进行后,再添加到网页端上,进行监控。

#-s 指定agent端地址,-k指定key

[[email protected] bin]# ./zabbix_get  -s 192.168.100.3  -k nginx_status
0

server端可以正常获取值后,在网页端上添加针对这个值的监控。

根据监控项查看是否获取到了对应的结果。

情况2 : 记录mysql的连接数信息,后根据此图做图表。

编辑agent配置文件,并重启agentd端

#Threads 代表连接数

[[email protected] [20:55:12]~]#mysqladmin -uroot -pnihao123! status
Uptime: 86 Threads: 1 Questions: 12 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.139

[[email protected] [20:57:08]~]#cat /usr/local/zabbix/etc/zabbix_agentd.conf  | grep mysql
UserParameter=mysql_Threads,mysqladmin -uroot -pnihao123! status |awk ‘{print $4}‘

#使用zabbix_get命令来检查key是否设置成功,看是否有values,这一步建议是必须做的,且这个例子下,你可以自己完成,熟悉下命令。

添加监控项

情况3 : 监控系统的tcp连接条数,记录TIME_WAIT ,ESTABLISHED等连接状态的连接数。

编辑获取连接数脚本

#  2>/dev/null 默认启动zabbix agentd进程的不是root用户,导致执行netstat命令时,是看不到进程名称的,会报一个权限不足,但是还是会把我们有权限看的给打印出来,我们只需要看状态码,所以把权限不足错误给关闭。

#根据$1 传入的位置变量来过滤连接状态,总结并返回行数,代表有多少条这样的连接

#如果$1为空,就返回0,不执行查询操作

[[email protected] [20:16:17]/shell]#cat /shell/tcp.sh
#!/bin/bash
if [ ! $1 ];
then
echo 0
exit
fi
netstat -‘antp‘ 2>/dev/null   |awk ‘{print $6}‘| grep $1 |wc -l

编辑agentd端配置文件,并重启agentd端。

#  key[*]      获取key时可附带参数,将作为获取values时传入的位置参数,从而被脚本读取

[[email protected] [19:58:21]/usr/local/zabbix/etc]#cat zabbix_agentd.conf |grep tcp
UserParameter=tcp_status[*],bash /shell/tcp.sh  $1

server端,获取key 测试.

[[email protected] bin]# ./zabbix_get  -s 192.168.100.3 -k "tcp_status[ESTABLISHED]"
3
[[email protected] bin]# ./zabbix_get  -s 192.168.100.3 -k "tcp_status[TIME_WAIT]"
33

在网页端添加监控项

查看获取到的values

#values 是0因为我们没有传入任何位置参数给脚本,脚本判断没有位置参数就返回一个0,那么怎么定义位置参数传入脚本呢-在看完此例子后接着阅读下方的自定义图表。

 自定义图表:

1.通过mysql连接数来制作第一个图表。

查看图表

2.创建监控多种连接状态的图表。

#调整之前的connect_status(tcp_status) 监控

原有:

现有:

#传入位置参数:ESTABLISHED ,代表,查询ESTABLISHED的连接数。

#ESTABLISHED是一种连接状态,如果要获取更多的连接状态的条数,再创建一个一样的监控项,只需要改传入的参数。

添加监控项:

#同时添加2个监控

查看监控

这里还有一些个小知识点:

1.你可以看到上图中的connect_status[ESTABLISHED] 现在的值是9,代表有9个ESTABLISHED(已建立的)连接,但是系统中,实际看一下已建立连接,一直是少一个的。

[[email protected] [21:51:15]/shell]#netstat -antp |grep ESTABLISHED |wc -l
8

因为目前已建立的连接是8个,当zabbix-server请求获取数据时,会向agent建立连接,建立连接后,server端执行此命令后会看到9个已建立连接(把自己跟agent端建立的连接也计算在内),计算机计算速度很快,当你去agent上去手动查看有多少连接时,这个连接已经是TIME_OUT状态了。

2.上图中的connect_status[TIME_WAIT]值最大的时候是12,但是突然一下就降为2以下。

在主动模式中,server端会频繁的向agent端请求数据,每次都是开启一个新的连接,而且是一直在请求,那么这种情况,你可能会想到通过设置长连接来保持连接就行了,但是,很抱歉,zabbix不支持长连接~

无奈,软件不支持长连接,只能让我们的系统来延长连接时间了。

net.ipv4.tcp_keepalive_time = 1800  #tcp连接时间保持1800秒
net.ipv4.tcp_tw_recycle = 1         #回收TIME_WAIT占用的连接
[[email protected] [22:06:14]/shell]#tail -2 /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_tw_recycle = 1
[[email protected] [21:40:57]/shell]#sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_tw_recycle = 1
 

原文地址:https://www.cnblogs.com/xiaodai12138/p/10159217.html

时间: 2024-11-05 18:38:27

zabbix自定义监控,自定义图表。的相关文章

zabbix自定义监控实现思路以及自定义监控某个端口的连接数

一 zabbix自定义监控实现思路 我在前面有写到: zabbix3.x服务端安装和配置 zabbix3.x客户端安装和配置 zabbix监控memcached 实际上我们要想使用zabbix来监控一些服务的原理很简单,步骤分别是: 写一个脚本用于获取待监控服务的一些状态信息 在zabbix客户端的配置文件zabbix_agentd.conf中添加上自定义的"UserParameter",目的是方便zabbix调用我们上面写的那个脚本去获取待监控服务的信息 在zabbix服务端使用za

阿里云自定义监控tomcat进程数

阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :cms_post.py自定义监控SDK(bash版) :cms_post.sh下载地址:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974901 本文使用shell版本做演示       这里说下我的简单需求,我们需要监控ECS服务

shell编程之【zabbix自定义监控网卡流量脚本】

之前写了一篇文章主要介绍zabbix的搭建使用http://msiyuetian.blog.51cto.com/8637744/1705396 下面这篇文章主要介绍zabbix自定义监控网卡流量的脚本实现 前期准备 1.说明 server ip :192.168.0.115 client ip :192.168.0.114 2.开启服务 因为之前搭建过zabbix环境,这里就不重复了,直接开启服务端的所需服务: [[email protected] ~]# /etc/init.d/httpd s

自定义监控(阿里云&zabbix)

自定义监控(阿里云&zabbix) 目前阿里云对25端口有限制,无法在阿里云上搭建邮件服务器发送告警邮件,如果需要邮件通知,可以采取下面方法: 1.开同阿里云企业邮箱 2.使用阿里云监控告警 3.第三方zabbix自定义脚本监控 一.阿里云自定义监控 阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口: 自定义监控SDK(python版) :cms_post.py 自定义监控SDK(bas

zabbix服务器添加监控主机,使用监控模板及自定义监控项

上一篇博文记录了<Ubuntu系统LNMP环境下安装配置zabbix3.04>,这里我记录了添加监控主机,添加监控模板和自定义监控CPU 添加监控主机 1.监控主机安装zabbix-agent $ sudo apt-get install zabbix-agent 2.修改zabbix_agent.conf配置文件 $ sudo vi /etc/zabbix/zabbix_agentd.conf - Server=120.40.*.* #zabbix-server端IP - ServerAct

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警 监控端配置:(192.168.4.5) 1基础环境:(实验环境可以关闭防火墙,但生产环境不能关闭,否则不安全,要设置相应规则) [[email protected]桌面]# /etc/init.d/iptables stop [[email protected]桌面]# setenforce 0 2搭建lamp平台,(它运行在lamp平台上) [[email protected]桌面]# yum -y install htt

zabbix监控之自定义监控项目

zabbix搭建好后,除了调用默认的模板,还要监控其它常用的进程,有redis,rsync,nginx,gunicorn,mysql等等都要进行监控. 自定义监控的配置过程如下: 1.编写进程监控脚本,获取监控项的具体值 2.在zabbix_agentd.conf文件中定义UserParameter 3.在界面配置item,通过键值来控制传参 4.查看监控数据情况 5.配置触发器,用来报警 6.宕服务测试 对于zabbix的安装与邮件报警设置,可参考两篇文章. http://yangrong.b

关于zabbix自定义监控项,用户权限不够的问题

zabbix中需要自定义添加对rabbitmq的监控,以及时响应rabbitmq出现的问题,所以在zabbix_agented.conf中添加了一项 #UserParameter=rabbitmq,rabbitmqctl status &> /dev/null && echo '0' || echo '1' 之后重启agent测试 #/usr/local/zabbix/sbin/zabbix_agentd -t rabbitmq 显示结果为 rabbitmq      [t|

基于zabbix的Mysql自定义监控

Mysql自定义监控 需求:公司需要做mysql的数据监控,对mysql的状态,流量进行监控. 分析:zabbix自动就有Template App MySQL模版,我们只要添加mysql监控脚本就可以实现自定义监控. 配置如下: zabbix的服务端搭建,这里不再演示,我这里的zabbixserver已经配置好的了,直接进入mysql监控构建. 1.建立mysql host groups组 mysql模板是 zabbix系统提供的,进入 zabbix web 后台,配置-->主机群组-->点击