zabbix:使用自定义脚本模拟监控网卡并使用zabbix agent被动模式

1.首先编写脚本,我的是模拟监控网卡开启状况,首先是读取制定目录下的所有文件,并将对每一个文件进行监控,监控其是否出现网卡关闭的情况,如果监控到网卡关闭,则将具体网卡信息输出。
具体代码如下:

#!/usr/bin/env python
# -*-coding:utf-8 -*-
import os 

def getfilelist(dic,file_list):#读取文件夹下的所有文件,并将其保存到file_list中
    f = open( file_list, 'w')
    for file_name in os.listdir(dic):

        #print( file_name )
        string = dic + '/' + file_name + '\n' #获取文件的完整地址并写入文件中
        #print( string )
        f.write( string )
    f.close()
    return file_list


def clearBlankLine(file_name1,file_name2):#去除txt文件中的空行
    file_name1 = file_name1.strip('\n')
    file1 = open(file_name1, 'r') # 要去掉空行的文件 
    file2 = open(file_name2, 'w') # 生成没有空行的文件
    try:
        for line in file1.readlines():
            if line == '\n':
                line = line.strip("\n")
            file2.write(line)
    finally:
        file1.close()
        file2.close()


def detect(file_name1 , file_name):#提取出网卡错误的信息
    file_name1 = file_name1.strip('\n')
    bond_txt = file_name1.split('/')

    file = open( file_name , 'r')
    line = file.readline()
    detect_str = 'Slave Interface:'

    while( line ):
        #print ( line )
        if detect_str in line:
            second_line = file.readline() 
            detect_down = 'down'
            if detect_down in second_line :
                list_first = line.split()
                #print ( len(list_first) )
                print ( 'in the ' + bond_txt[len(bond_txt)-1] + ', network ' + list_first[ len( list_first ) -1] + ' is down')

            #print(  '++++++++++++++++++++++++++++++++++' )    
            line = file.readline()



def main():
    dic = '/home/ubuntu/test_for_bonding'
    filelist = '/home/ubuntu/store_for_bonding/file_list.txt'
    list_f = open(filelist,'r+')
    list_f.truncate()

    file_list = getfilelist(dic,filelist)

    file = open(file_list,'r')
    line = file.readline()
    while( line ):
        file_name1 = line
        file_name2 = '/home/ubuntu/store_for_bonding/bonding_back.txt'
        f2 = open(file_name2,'r+')
        f2.truncate()
        #print( file_name1 )
        clearBlankLine( file_name1 , file_name2 )
        detect( file_name1 , file_name2 )
        line = file.readline()

if __name__ == '__main__':
    main()

由于我们使用的是自定义脚本,所以我们需要在使用userparameter这个,其存在于/usr/local/etc/zabbix_agentd.conf中。
打开该文件对其进行设置:
设置如下图:
这里写图片描述

2.就是建立item
具体操作为:configuration—》host—》item
下面就是对item的具体配置信息:
这里写图片描述

3.关联告警器trigger
根据上面的item,我们可以得到一个字符串,其是关于监控结果的,这里我们使用findV模板,只要我们发现字符串中包含‘down’这个关键字,我们就可以发出警告了。
具体操作如下:
模板信息:
这里写图片描述
trigger信息:
这里写图片描述
这样一个简易的告警设置就完成了。

猜你喜欢

转载自blog.csdn.net/qq_34355232/article/details/81563454