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. LEANGOO用户设置

    转自:https://www.leangoo.com/leangoo_guide/leangoo_guide_kanban_user.html#toggle-id-7 1. 点击屏幕右上角头像或用户名 ...

  2. Linux下创建NFS来实现共享文件

    简介说明: 在项目生产环境我们经常需要实现文件共享,传统的常见方案是通过NFS,实现服务器之间共享某一块磁盘,通过网络传输将分散的文件集中存储在一块指定的共享磁盘,实现基本的文件共享.实现这种方案,分 ...

  3. 【uoj#94】【集训队互测2015】胡策的统计(集合幂级数)

    题目传送门:http://uoj.ac/problem/94 这是一道集合幂级数的入门题目.我们先考虑求出每个点集的连通生成子图个数,记为$g_S$,再记$h_S$为点集$S$的生成子图个数,容易发现 ...

  4. 手写走通HTTP server 第二版本

    HTTP server 2.0 1 接收客户请求 2 解析客户端请求 3 组合数据,形成HTTP response 4 将数据发送给客户端 升级 : 1 多线程接收客户端请求 2 基本的请求解析,根据 ...

  5. sed原理及sed命令格式 ,缓存区,模式空间

    4.1            Sed工作原理 sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从 ...

  6. PPP协议解析一

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526475 在网上搜集了一些有关PPP的资料,整理了一下,不能说是原创,仅供大家学习研究. ...

  7. 【Java 基础实例—Bank 项目1】

    (上图Wie任务要求的UML结构) Account.java 文件: package Banking_1; public class Account { private double balance; ...

  8. c#使用 StackExchange.Redis 封装 RedisHelper

    公司一直在用.net自带的缓存,大家都知道.net自带缓存的缺点,就不多说了,不知道的可以查一查,领导最近在说分布式缓存,我们选的是redis,领导让我不忙的时候封装一下,搜索了两天,选了选第三方的插 ...

  9. UVa1048 Low Cost Air Travel——最短路

    很好的一道题呀 思路 状态\(d(i,j)\)表示已经经过了行程单中的\(i\)个城市,目前在城市\(j\)的最小代价,直接建边跑最短路就行了 比如机票为\(ACBD\),行程单为\(CD\),那么对 ...

  10. linear 工作流

    最近把 最后一张画ui的rt 从float换成srgb 并没有引起我预计会有的 alpha混合结果发生变化的事情 我想是因为 1.artists在ps里的工作流是线性空间 2.onchip memor ...