zabbix模板化监控


1. 实验简述

在zabbix监控中,有很多组的概念,具体有以下几种:

1. 主机和主机组,相同类型/应用的主机,可以归属于同一个主机组
2. item和application,对于同一个application,可以有多个item对该application进行监控,同时获取这些值
3. template和application,对于不同的application,可以如果存在通用性,可以将这些application关联到template中

对于各个对象之间的映射关系,我觉得最简单的描述如下:

1. item表示一个监控对象
2. 一个host可以直接关联多个item
3. 一个host可以属于一个或多个host group
4. 一个hosts group可以关联一个或多个template
5. 一个template可以关联一个或多个application
6. 一个application可以关联一个或多个item

总之,这种对应关系很多, 可以根据不同的监控场景进行实施。

2. 实验内容

在本次实验中,计划将nginx的4个状态值都同时监控出来,通过模板化的方式来进行监控,同时以脚本的形式,来进行获取item的值。和之前的直接监控不一样了,这次是通过shell脚本的形式,通过传入参数,来对nginx的状态进行监控。

3.实验步骤

1. 环境准备

启用本地环境中的nginx服务器,然后通过curl方式,获取nginx的状态,主要是4个状态值,分别是active、reading、writing和waiting。至于其他的3个值,暂时不做考虑。获取值的方式如下:

    [root@localhost zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|head -n 1|awk '{print $NF}'
1
[root@localhost zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Reading|cut -d ' ' -f 2
0
[root@localhost zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Writing|cut -d ' ' -f 4
1
[root@localhost zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Waiting|cut -d ' ' -f 6
0
[root@localhost zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status
Active connections: 1
server accepts handled requests
581067 581067 581077
Reading: 0 Writing: 1 Waiting: 0 通过命令获取到这些对象的值之后,下面就是开始编写shell脚本了,以脚本传参的方式,来获取这些值,在脚本中,我们主要使用两个参数,其他的都是通用的,只有ngxin的服务端口和相关nginx的状态这两个参数是可变的,所以接下来的脚本就是通过传入这两个参数,来获取对应的值。

2. 脚本准备

通过SHELL变成的方式,以case来进行编写,不同的case,对应不同的操作函数和方法。具体如下:

    #/bin/bash
# monitor the nginx status ,get the item
function nginx_state(){
NGINX_PORT=$1
NGINX_STATE=$2
nginx_active(){
/usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "Active connections"|awk '{print $NF}'
}
nginx_reading(){
/usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "Reading"|cut -d -f 2
}
nginx_writing(){
/usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "writing"|cut -d -f 4
}
nginx_waiting(){
/usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "waiting"|cut -d -f 6
}
case $NGINX_STATE in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
*)
echo "Usage $0 [nginx_port] {active|reading|writing|waiting}"
esac
} main(){
nginx_state $1 $2
}
main $1 $2 测试一下脚本的运行状态,是否可以获取到值。 [root@localhost zabbix_agentd.d]# ./nginx_status.sh 8080 active
1
[root@localhost zabbix_agentd.d]# ./nginx_status.sh 8080 reading
0
[root@localhost zabbix_agentd.d]# ./nginx_status.sh 8080 writing
1
[root@localhost zabbix_agentd.d]# ./nginx_status.sh 8080 waiting
0 能获取到对应的值之后,开始创建监控item

3. 修改zabbix agent的配置文件

默认的zabbix agent是直接获取zabbix_agentd.d目录下的所有文件,为了方便使用,建议也将脚本放置在该目录下,然后通过修改配置文件,只获取该目录下的conf文件作为item的监控对象,其他的文件类型不予获取,就可以了。

    Include=/etc/zabbix/zabbix_agentd.d/*.conf

编写一个item,名称为nginx_status,以数组的形式,对item传参,参数用与脚本的运行。

    UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1 $2

4. 本地获取item值

配置完成后,重启zabbix-agent,然后本地通过zabbix_get命令来获取item的值。

    [root@localhost zabbix_agentd.d]# zabbix_get -s 192.168.64.131 -k nginx.status[8080,active]
1
[root@localhost zabbix_agentd.d]# zabbix_get -s 192.168.64.131 -k nginx.status[8080,reading]
0
有了返回值之后,就可以在web页面上进行配置了。

5. web页面配置

  • 在web页面上,首先是创建一个模板,明明为nginx_status;
  • 然后在模板中,创建一个应用,名称为nginx,application;
  • 在该模板中,创建一个item,关联到nginx这个application中,然后输入监控item的key;
  • 克隆该item,生成其他的三个item;
  • 创建一个graph,关联该application下的所有item
  • 将主机,和新创建的nginx模板进行关联,然后通过monitor中的last data中查询该应用的所有item监控返回值,同时也就能通过graph进行查看图形。

4. 总结

通过以上实验的操作,可以简单的了解到zabbix通过模板化的监控思想,其实模板化、实例化的操作,是很多方法论的基础,通过一对一、一对多、多对多的关系组合,然后将同一个应用的不同监控对象,以参数化的形式总结归纳,将不同的监控对象,用同一个监控item、application、template来实现,在后续的很多生成中都能体现。

- tips

创建的模板是可以导出的,在生产中可以直接进行导入,修改相关的参数后,就能直接使用,所以模板是一个很实用的技术手段。

zabbix模板化监控的更多相关文章

  1. zabbix容器化安装及监控docker应用

    一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...

  2. zabbix 自定义 nginx 监控模板

    打开zabbix首页→配置→模板→创建模板模板名称:Template App NGINXagent 需添加自定义监控项:UserParameter=nginx.status[*],/bin/bash ...

  3. 给zabbix添加percona监控模板

    简单说明一下给zabbix添加的percona的监控模板. 在percona官方网站有说明怎么安装,这里记录下步骤.首先搭建好的zabbix环境. 监控插件连接 : 链接:https://pan.ba ...

  4. zabbix之 zabbix模板监控mysql

    zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中.模板名称:Template App MySQL.如果没有则要去zabbix官方下载 url:https://zab ...

  5. zabbix模板的自动发现规则(ldd)实现被监控项自动发现

    zabbix模板的自动发现规则(ldd)实现被监控项自动发现 自动发现规则(ldd)用途说明 在zabbix自带的linux模板的自动发现规则中,有一个Mounted filesystem disco ...

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

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

  7. zabbix自动发现监控url

    1.在监控客户机上 web_site_code_status.sh: #!/bin/bash UrlFile="/opt/scripts/WEB.txt" IFS=$'\n' we ...

  8. zabbix通过jmx监控tomcat

    Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功.   2. ...

  9. Zabbix通过SNMP监控多核CPU使用率时, 计算CPU平均使用率

    环境:没有Agent,只能通过SNMP监控时,需要获取多核CPU的平均使用率. ZABBIX的使用SNMP监控CPU使用率时,由于设备都是多核CPU,监控的都是单独某一核心的使用率,但单独某一核使用率 ...

随机推荐

  1. 安装centos5.x的基本优化配置

    1.添加账号

  2. 超级有爱的五款APP共享 可以让你神操作

    随着科技的不断发展,手机功能的不断完善,让我们更加依赖手机,不得不说手机给我们带来很多的乐趣和方便. 今天就主要给大家分享五款超级有爱的APP软件,感兴趣的小伙伴已经迫不及待了吧! 荔枝 荔枝是一款声 ...

  3. Python-函数小结

    原文出处,如有侵权,请联系删除. 用户自定义.py文件 如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abs ...

  4. 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总

    Oracle的产品非常丰富,各类学习资源也五花八门,本文将介绍Oracle官方的免费教程与风哥整理的Oracle视频教程: 1.Oracle帮助中心 Oracle帮助中心也称为Oracle文档中心,这 ...

  5. Redmine入门-安装

    Redmine提供了两种方式安装,如果仅仅只是使用Redmine,建议采用一键安装的方式,快捷方便.如果需要做二次开发或者更多的个性化处理,可以采用源码安装方式,下面分别介绍两种安装方式. ----- ...

  6. 自定义AXI总线形式SPI接口IP核,点亮OLED

    一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...

  7. 解决CSDN需要登录才能看全文

    本来今天学习遇到一些问题,在网上翻着博客,突然在csdn里就提示要登录才能看全文. 看了下页面源码博客内容已经拿到本地了,只是加了一层罩,也是挺无语的,暂时先用这种方法解决吧: (function() ...

  8. ProxyChains 的坑, 需要关闭 sip

    之前 10.12.6 还可以的,现在升级下系统就用不了了. search下发生时sip问题. 解决方案就时要关闭这个东西; 关闭SIP reboot # 按住 option 键 # 到系统选择页面后, ...

  9. Thymeleaf入门(一)——入门与基本概述

    一.概述 1.是什么 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP . 2.feature 1.Thymeleaf 在有网络和 ...

  10. Γ(a) 的两种方差与均值

    所以 这里是满足 Be(x+1,n-x+1),如果是要服从Be(a,b) 相应的后验概率