zabbix低级发现

一、(low level discover)概述

什么是lld ?即低水平自动发现,使用它可以自动创建项目、触发器及被监控主机上的实体图。如zabbix 可以自动监控主机上的文件系统和网络拉口,而不需要为每个监控项创建items 。此处,其也可以实现被监控项目的自动删除 。上面的话不是我的总结,是我从官方文档上翻译过来的话。

二、创建模版

由于创建模板不是本篇的重点,就不提创建模板的过程了 。这里重点提下如何在模板中创建自动发现规则。

1. 创建自动发现规则

步骤为:配置 –> 模版 –> 选中之前创建好的模版(这里我用 app discover) –> 自动发现规则 –> 创建发现规则

2. 选择监控项原型并创建监控项

  • 名称:{#DISCOVER} 自定义的宏变量(后续脚本会提到);
  • 类型:根据自身主动/被动模式选择;
  • 键值:后续监控的自定义Key会提到。

3. 触发器类型

可根据自身情况做定义

三、客户端配置脚本(在配置发现的主机上配置,比如zabbix-server的agentd)

配置发现规则

这里发现规则是找的/app目录下的所有目录名(公司的所有项目都创建在/app目录下)

cat check_app.py


#!/usr/bin/env python
#-*- coding:utf-8 -*-
#@author: sundsinerj
#@date: 2017/9/28
import os
import json
import getopt
import sys

#list app name
app_list = os.listdir(os.path.expanduser("/app"))
if 'lost+found' in app_list:
    del app_list[app_list.index('lost+found')]
elif 'zabbix' in app_list:
    del app_list[app_list.index('lost+found')]
elif 'tomcat-6.0.48_wp' in app_list:
    del app_list[app_list.index('lost+found')]
opts, arge = getopt.getopt(sys.argv[1:],[])
#print appname for json
pool_list = []
for appname in app_list:
    #def json data
    pool_list += [{'{#DISCOVER}': appname}]
print json.dumps({'data': pool_list},sort_keys=True,indent=4,separators=(',',':'))
 

配置监控项规则

cat check_app.sh

 #! /bin/bash
 help() {
         echo "USAGE:`basename $0` [-n] the name of app"
         exit -1
 }
 while getopts ":n" opt
 do
         case $opt in
                 n)      appname=$OPTARG
                         ;;
                 h)      help
                         ;;
                 *)      unkown=$OPTARG
                         echo "error,plase check for help,USAGE:./`basename $0` -h"
                         exit $STAT_UNKNOWN
                         ;;
         esac
 done
 apppid=`ps aux | grep "$appname" | grep -v grep | wc -c`
 if [ $apppid -eq 0 ]
     then
         echo 0
         exit 0
     else
         echo 1
         exit 1
 fi

  • 发现规则必需是json格式的

*{#DISCOVER}

就是zabbix创建的模版的宏变量
  • check_app.sh脚本就是定义的监控项

四、自定义key

cat userparameter_app.conf

 
 UserParameter=app.status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/libexec/check_app.sh -n $1
 UserParameter=app.discover,python /etc/zabbix/zabbix_agentd.d/libexec/check_app.py
 

五、验证

在被发现的主机上关联app discover 模版就可以了。过会,就能看到相关的低级发现项目。