今天我们来聊一聊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. 是armhf,还是armel?

    本文译至:https://blogs.oracle.com/jtc/entry/is_it_armhf_or_armel ARM处理器有各种品牌和规格,其中一部分的原因涉及到市场问题,成本,大小和功耗 ...

  2. Laravel 5.2服务----用户验证Auth相关问题

    关于laravel的auth()用户认证这一块,面前我也是,有用到,有碰到什么问题我就记录下来. 手动认证用户 <?php namespace App\Http\Controllers; use ...

  3. python-面向对象(绑定方法与非绑定方法)

    一.绑定方法: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的,自动将对象当作第一个参数传入,类也可以调用,但是不会自动传值 2 ...

  4. JsonResponse

    1.JsonResponse class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None ...

  5. Codeforces 576E Painting Edges [分治,并查集]

    洛谷 Codeforces 建议阅读这篇博客作为预备.无耻地打广告 思路 与bzoj4025很相似,思路也差不多,可以看上面那篇博客. 仍然是用二分图的充要条件:没有奇环. 然而这题难在每条边的存在时 ...

  6. mybatis 按in 函数参数顺序排序

    使用 FIELD()函数 SELECT *  FROM   user  WHERE id IN (72, 80, 69)  ORDER BY FIELD(id, 72, 80, 69)

  7. kernel_size

    kernel_size=(1,3)[flag] if flag==True:kernel_size=3 else: kernel_size=1

  8. nginx(一)之默认配置文件

    首先是nginx.conf vim /etc/nginx/nginx.conf user nginx; // 设置nginx服务的系统使用用户 worker_processes 1; // 工作进程数 ...

  9. 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件

    目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...

  10. TypeError: $(…).tooltip is not a function

    问题描述:改了一个页面,发现进入这个页面的时候就一直在load···,F12看了一下,发现报了这个错误TypeError: $(…).tooltip is not a function,然后我就百度了 ...