今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢?

很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行添加,这些items具有一些共同特性,

如果说某些特定的参数是变量,而其他设置都一样,例如:一个程序有多个端口,需要多端口进行监控并配置Itmes,还有磁盘分区,·网卡名称等等,

都是具有不确定性,如果我们配置固定的Items的话,会出现无法通用的问题,所以呢,我们需要来了解一下low level discovery这个功能

Low level discovery的key返回值是一个JSON格式(如果是自定义的话,可以通过网站验证获取的值是否为正确的JSON格式的数)

#自动发现特定的变量名称

#添加对变量的Itmes

下面我们来一个现实中的案例:

业务需求:

现在业务上用有打量的URL需要监控,形式如:http:www.xxx.com,要求URL状态不为200时发出报警

需求分析 :

具有打量的URL,且URL经常变化,需要增加URL即可完成监控

解决方案:上述提到,URL经常发生变化,但是其他状态不变,这个是够刚好可以用zabbix的low level discovery功能来实现这一需求

思路:

1)既然有大量的URL需要监控,我们可以将URL域名地址写入一个配置文件里,方便后续调用监控

2)zabbix上面没有监控URL的模板和监控项,因此只能自定义,写一个自动发现的脚本,该脚本是JSON格式:主要用于调用 URL并获取URL的状态码

3)通过 zabbix_get在server端测试能否正确获取key值(URL状态码)

4)WEB页面添加Low level discovery;创建监控模板,监控项,触发器类型以及图形等;实时监控状态码并做出相应的告警

【zabbix-agent配置文件】

# grep -vE "(#|^$)" /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
EnableRemoteCommands=0    #启用远程命令
Server=192.168.37.129
StartAgents=8
ServerActive=192.168.37.129
Hostname=192.168.37.130
Timeout=8             #超时时间改为8即可,如果server端zabbix_get测试获取键值时提示超时,可进行修改调整
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/web_site_discovery.conf     #子配置文件,还有一种方式就是直接在agent.conf配置文件中的“UserParameter=”写入对应的键值
UnsafeUserParameters=1

【自定义Low level discovery自动发现脚本】

mkdir -p /usr/local/zabbix/etc/scripts/

vim /usr/local/zabbix/etc/scripts/Web.txt   #网站URL存放文件,将我们需要的监控的域名写入该自定义配置文件中

www.hexun.com
www.baidu.com
www.weibo.com

vim /usr/local/zabbix/etc/scripts/web_site_code_status

#!/bin/bash
#Monitoring website domain name URL change script
#mail:m18810455501@163.com
#QQ:1261813048
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/
Web_SITE_discovery(){
Web_SITE=($(cat /usr/local/zabbix/etc/scripts/Web.txt | grep -v "^#"))
printf '{\n'
printf '\t"data":[\n'
for((i=0;i<${#Web_SITE[@]};++i))
{
num=$(echo $((${#Web_SITE[@]}-1)))
if [ "$i" != ${num} ];
then
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${Web_SITE[$i]}\"},\n"
else
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${Web_SITE[$num]}\"}]}\n"
fi
}
}
web_site_code (){
# /usr/bin/curl -o /dev/null -s -w %{http_code} http://$1
/usr/bin/curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" http://$1
}

case "$1" in
web_site_discovery)
Web_SITE_discovery
;;
web_site_code)
web_site_code $2
;;
*)
echo "Usage:$0 {web_site_discovery |web_site_code [URL]}"
;;
esac

# chmod 755 /usr/local/zabbix/etc/scripts/web_site_code_status    #脚本权限给予755

【自定义Key值配置文件】

# vim  /usr/local/zabbix/etc/zabbix_agentd.conf.d/web_site_discovery.conf     #子配置文件,已在agent.conf配置文件中Include中引用

UserParameter=web.site.discovery,/usr/local/zabbix/etc/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/usr/local/zabbix/etc/scripts/web_site_code_status web_site_code $1

【测试】

在server端·测试agent端自定的key值能否获取到?ok~从截图看出,都能获取到url域名状态码

【Web页面添加Low level discory】

1)创建自定义模板

Configuration(配置)-----Templates(模板)----Create templates(创建模板)

创建自动发现规则

【创建应用集】

【基于自动发现规则基础创建监控项原型】

Ps:这里的键值一定要与之对应

【创建监控项原型】

创建触发器类型,设置多梯度告警检测,我们触发类型除了URL状态为200和301正常之外,其他不为200和301的状态码的都告警

配置图像原型

【验证】

ok~下面大家所看到的的呢?我是在Web.txt配置文件中新增的URL,很明显该站点是不存在的,所以返回值是302,在触发器类型中符合报警出发条件,由此触发~

触发类型我们设置的是梯度告警,由信息——》一般严重——》严重三个等级且是不同周期性告警:3分钟,10分钟,15分钟不同的告警级别

Zabbix监控Low level discovery实时监控网站URL状态的更多相关文章

  1. zabbix监控redis多实例(low level discovery)

    对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作.  注:Zabbix版本: Zabbix 3.0.2 一.服务 ...

  2. zabbix(10)自动发现规则(low level discovery)

    1.概念 在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些Iterms具有共同的特征,表现为某些特定的参数是变量,而其他设置都是一样的,例如:一个程序有多个端口,而需要对端口配 ...

  3. SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储

    前言 阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必需的组件,比如持久化的后端数据库.可靠的配置中心等.目前 Sentinel 采用内存态的方式存储 ...

  4. 监控(1)-企业常用服务监控shell

    -----------------企业监控------------------------主动探测监控(“监控机”主动探测“被监控机”)HTTP服务器监控#!/bin/shLANG=C#被监控服务器. ...

  5. Zabbix与ELK整合实现对日志数据的实时监控

    4.2.zabbix平台配置日志告警 一. ELK与zabbix有什么关系? ELK大家应该比较熟悉了,zabbix应该也不陌生,那么将ELK和zabbix放到一起的话,可能大家就有疑问了?这两个放到 ...

  6. zabbix应用之Low-level discovery监控磁盘IO

    参考文章: http://qicheng0211.blog.51cto.com/3958621/1599776/ zabbix自带的"Template OS Linux"模板支持监 ...

  7. Check Host:实时监控网站或者服务器是否可以访问

    如果你拥有一个网站,那么最重要的事情就是要保证它24小时都能够访问.不过国内的虚拟主机服务非常糟糕,经常会出现各种状况,所以我们需要一个软件,可以让我们第一时间知道网站出现了无法访问的情况,从而通知售 ...

  8. zabbix中文配置指南(转)-服务器监控

    一.Zabbix简介 1.1 Zabbix简介 Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利.官方网站:htt ...

  9. zabbix的安装部署及自定义监控的实现

    此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...

随机推荐

  1. Linux自动人机交互expect

    exp_test.sh文件 #!/bin/bash/expect ## exp_test.sh set timeout -; spawn ssh localhost; expect { "( ...

  2. Python-面向对象(组合、封装与多态)

    一.组合 什么是组合? 就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象. 通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式 ...

  3. 搭建 RabbitMQ Server 高可用集群【转】

    阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 ...

  4. swift 学习- 17 -- 析构器

    // 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会 ...

  5. VM_Centos7.3_X64_安装Oracle12C 总结笔记

    声明:本文居多内容参考原文来之网络: 一:安装Centos7.3 虚拟机 1:操作系统下载 CentOS 7官方下载地址:https://www.centos.org/download/ 说明:本案例 ...

  6. 自执行匿名函数: (function() { /* code */ })();

    1,常见格式:(function() { /* code */ })(); 2,解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括 ...

  7. sticky footer 模板

    http://www.w3cplus.com/blog/tags/136.html http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-th ...

  8. U盘权限不足,只读文件系统

    https://blog.csdn.net/baocheng_521/article/details/77161791 用第一种方式成功

  9. netstat常见基本用法(转)

    netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字. ...

  10. day10 函数

    函数基础 函数概念 为什么用函数 什么是函数 定义函数 调用函数 返回值详解上节回顾 文件处理 修改文件 1.读取要修改文件内容 read可能导致内存溢出 赋值给变量 修改 将修改后的内容重新写入文件 ...