在配置Items时,有时需要对类似的Items进行添加,这些Items具有一些共同的特性,表现为某些特定的参数是变量,而其他设置都是一样的。
low level discovery 的key可以对网卡、文件系统、SNMP OIDS进行自动发现,除此之外,还支持自定义功能。
low level discovery 的使用过程分为下面两步:
- 自动发现特定变量的名称
- 添加对变量的Items.
zabbix中low level discovery 的 key返回值是一个JSON格式。可以打开一个模板的自动发现来观察。
用zabbix-get不能获取到snmp的值,只能在web页面进行配置使用。
**举个例子:
当有大量URL需要监控时,形如http://www.baidu.com,要求URL状态不为200时发出告警。因为URL经常变化,但其他状态不发生变化,那么它刚好可以用zabbix的low level discovery 功能轻松解决此问题。**
1、编写low level discovery 自动发现脚本,low level discovery 的脚本是一个JSON格式。
[root@minion-122 scripts]# cat web_site_code_status
#!/bin/bash
source /etc/bashrc > /dev/null 2>&1
source /etc/profile > /dev/null 2>&1
Web_SITE_discovery () {
Web_SITE=($(cat /etc/zabbix/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
}
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
Web.txt
[root@minion-122 scripts]# cat Web.txt
www.taobao.com
www.baidu.com
www.weibo.com
测试脚本输出:
自定义key配置文件
[root@minion-122 zabbix_agentd.conf.d]# cat web_site_discovery.conf
UserParameter=web.site.discovery,/etc/zabbix/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/etc/zabbix/scripts/web_site_code_status web_site_code $1
重启zabbix-agent。服务端测试:
[root@localhost ~]# zabbix_get -s web1 -k web.site.discovery
{
"data":[
{
"{#SITENAME}":"www.taobao.com"},
{
"{#SITENAME}":"www.baidu.com"},
{
"{#SITENAME}":"www.weibo.com"}]}
Web下创建模板。
“配置”->“模板”->“创建模板”
点击“添加”便会出现下图。
点击“应用集”->“创建新应用集”
点击“添加”。点击“自动发现”
单击“创建发现规则”
该宏{#SITENAME}来自自动发现脚本中的变量{#SITENAME}。
添加完成后:
进一步添加Items等项。
创建原型Item,单击“监控项原型”
$1代表我们检测出来的URL,web.site.code[{#SITENAME}]中的变量会一次检测这几个URL。
单击“添加”,创建触发器原型,单击“ 创建触发器原型”
可以设置不同梯度的告警。
添加图形。单击“创建图形原型 ”。
单击“添加”,模板创建成功。
添加模板到主机,选择web1主机。数据如下。