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不提供此端口监控,需要自定义一个监控项来监控此端口的可用性。

[root@host3 [::]~]#netstat -antp |grep nginx
tcp 0.0.0.0: 0.0.0.0:* LISTEN /nginx

新建如下脚本

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

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

执行此脚本测试

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

[root@host3 [::]~]#bash /shell/nginx_status.sh

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

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

#key

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

[root@host3 [::]~]#cat /usr/local/zabbix/etc/zabbix_agentd.conf |grep nginx
UserParameter=nginx_status,bash /shell/nginx_status.sh

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

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

[root@Centos7 bin]# ./zabbix_get  -s 192.168.100.3  -k nginx_status

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

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

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

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

#Threads 代表连接数

[root@host3 [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

[root@host3 [::]~]#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,不执行查询操作

[root@host3 [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时传入的位置参数,从而被脚本读取

[root@host3 [::]/usr/local/zabbix/etc]#cat zabbix_agentd.conf |grep tcp
UserParameter=tcp_status[*],bash /shell/tcp.sh $1

server端,获取key 测试.

[root@Centos7 bin]# ./zabbix_get  -s 192.168.100.3 -k "tcp_status[ESTABLISHED]"

[root@Centos7 bin]# ./zabbix_get  -s 192.168.100.3 -k "tcp_status[TIME_WAIT]"

在网页端添加监控项

查看获取到的values

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

 自定义图表:

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

查看图表

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

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

原有:

现有:

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

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

添加监控项:

#同时添加2个监控

查看监控

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

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

[root@host3 [:51:]/shell]#netstat -antp |grep ESTABLISHED |wc -l

因为目前已建立的连接是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占用的连接
[root@host3 [::]/shell]#tail - /etc/sysctl.conf
net.ipv4.tcp_keepalive_time =
net.ipv4.tcp_tw_recycle =
[root@host3 [::]/shell]#sysctl -p
net.ipv4.ip_forward =
net.ipv4.conf.default.rp_filter =
net.ipv4.conf.default.accept_source_route =
kernel.sysrq =
kernel.core_uses_pid =
net.ipv4.tcp_syncookies =
kernel.msgmnb =
kernel.msgmax =
kernel.shmmax =
kernel.shmall =
net.ipv4.tcp_keepalive_time =
net.ipv4.tcp_tw_recycle =
 

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

  1. zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)

    zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...

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

    阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :c ...

  3. Zabbix自定义监控8080端口的连接数

    Zabbix自定义监控8080端口的连接数 一 zabbix自定义监控实现思路 实际上我们要想使用zabbix来监控一些服务的原理很简单,步骤分别是:1.写一个脚本用于获取待监控服务的一些状态信息2. ...

  4. Zabbix自定义监控项(模板)

    虽然Zabbix提供了很多的模板(简单理解为监控项的集合),在zabbix界面点击share按钮就可以直接跳到模板大全的官方网站,但是由于模板内的监控项数量太多不好梳理且各种模板质量参差不齐,还是建议 ...

  5. Zabbix设置自定义监控项之——监控tcp连接状态

    目录 一.用户自定义参数 二.配置 监控 TCP 连接状态 在实际监控中,除了官方自带的一些监控项,我们很多时候有一些定制化监控,比如特定的服务.TCP 连接状态等等,这时候就需要自定义监控项.自定义 ...

  6. Zabbix分布式监控系统实践 自定义配置

    https://www.zabbix.com/wiki/templates/start 环境介绍OS: Ubuntu 10.10 Server 64-bitServers:zabbix-server: ...

  7. zabbix自定义监控项、添加图形、设置触发器、远程执行命令

    监控项是在zabbix中手机数据的基础,没有监控项就没有数据,系统自带模板带有大量默认item,自定义item可以定义在模板中,在应用模板即可使用对应item:也可直接在host中定义 目标:自定义监 ...

  8. zabbix实现自定义监控

    实现自定义监控项实例 .创建主机组 .创建主机 .创建监控项 .到需要监控的主机的agent中添加自定义的监控项目 cd /etc/zabbix/zabbix_agentd.d vi userpara ...

  9. 分布式系统监视zabbix讲解六之自定义监控项--技术流ken

    宏 概述 Zabbix支持许多在多种情况下使用宏.宏是一个变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 宏解析为一个特殊的值. 有效地使用宏可以节省时间,并使Zabbix变地更加高效. ...

随机推荐

  1. react portals 插槽 实现简易弹窗

    Portal 提供了一种将子节点渲染到存在于父节点以外的DOM节点的优秀方案: 尽管 portal 可以被放置在 DOM 树中的任何地方,但在任何其他方面,其行为和普通的 React 子节点行为一致. ...

  2. Java秒杀实战 (六) 服务级高并发秒杀优化(RabbitMQ+接口优化)

    转自:https://blog.csdn.net/qq_41305266/article/details/81146716 一.思路:减少数据库访问 1.系统初始化,把商品库存数量加载到Redis 2 ...

  3. Python学习记录2-函数与字符串

    函数 函数是代码的一种组织形式 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的叫函数,无返回结果的叫过程,python不加以区分 ...

  4. 3. Dictionaries and Sets

    1. Generic Mapping Types The collections.abc module provides the Mapping and MutableMapping ABCs to ...

  5. 2. An Array of Sequences

    1. Overview of Built-In Sequences Container sequences: list, tuple, and collections.deque can hold i ...

  6. 记一次idea后台日志乱码解决办法

  7. switch结构

    switch结构介绍 switch也属于条件判断的语句 支持多种写法,和if .. else if ...else 结构的功能类似,但是里面的细节需要注意的地方更多 switch基本语法 switch ...

  8. fsLayuiPlugin单页面操作

    概述 单页面处理新增.修改.查看详情 共用同一个弹出的页面.在线demo数据表格2 使用 提供2种处理方式(主要区别区弹出窗口的html配置),根据实际情况选择使用那种方式. 新增.修改功能共用一个按 ...

  9. (四)关于java.lang.IllegalMonitorStateException异常说明

    1.异常原因及解释 首先你要了解这个异常为什么会抛出,这个异常会在三种情况下抛出:1>当前线程不含有当前对象的锁资源的时候,调用obj.wait()方法;2>当前线程不含有当前对象的锁资源 ...

  10. git 解决 error: failed to push some refs to 'https://github.com/xxxx.git'

    在github远程创建仓库后, 利用gitbash进行提交本地文件的时候出现如下错误 [root@foundation38 demo]# git push -u origin master Usern ...