欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

zabbix:使用自定义模板监控服务器中的多个节点

程序员文章站 2022-07-11 11:58:58
...

1.模板是什么,其有什么作用?
模板就是将某一类事情的结构规律予以固定化、标准化的成果。
作用:
例如:你需要给一百台服务器添加CPU、内存、硬盘、网络的item,如果没有模板你就需要一台服务器一台服务器的来,这样就导致很浪费时间,模板就是拟建立一个针对这些服务器的模板,模板的内容就是添加CPU、内存、硬盘、网络的item。这样我们就只需要将这一百个服务器链接这个模板即使用这个模板,这样就可以实现上面的所有操作了。
是不是很省事啊。
2.创建一个模板
首先创建一个模板:
zabbix:使用自定义模板监控服务器中的多个节点
在模板中进行自定义lld的建立
创建lld
zabbix:使用自定义模板监控服务器中的多个节点
lld中创建item
zabbix:使用自定义模板监控服务器中的多个节点
lld中创建triggers并关联到item上
zabbix:使用自定义模板监控服务器中的多个节点
这样一个模板就创建好了。
3.将模板链接到服务器上
zabbix:使用自定义模板监控服务器中的多个节点
zabbix:使用自定义模板监控服务器中的多个节点
这样就将模板链接到指定的服务器上了

4.将自定义的lld中需要的脚本传入服务器中
zabbix:使用自定义模板监控服务器中的多个节点

zabbix:使用自定义模板监控服务器中的多个节点
上面就是对服务器的一些设置,这样能让zabbixserver采集到数据
我遇到的一个小问题:
就是显示unsupported item key
经过查看发现是自己的10050端口被防火墙堵住了,所以导致不行,这里就需要开启这个端口就好了
命令如下:

iptables -I INPUT -p tcp -s 10.10.30.232 -m tcp --dport 10050 -m comment --comment "zabbix_agentd listen 10050" -j ACCEPT

这样就显示正常了

zabbix:使用自定义模板监控服务器中的多个节点

这样我们一个简单自定义模板就搞定了。
zabbix:使用自定义模板监控服务器中的多个节点

这里我的是监控服务器中bond网卡是否开启,脚本如下;

item的脚本

#!/usr/bin/env python
# -*-coding:utf-8 -*-
import os 
import sys
def get_bond_name(file_name):
    bond_txt = file_name.split('/')
    len_bond_txt = len(bond_txt)
    last_bond_txt = bond_txt[len_bond_txt-1]

    bond_name = last_bond_txt.split('.')

    return bond_name[0]



def detect(file_name):#提取出网卡错误的信息

    file = open( file_name , 'r')

    line = file.readline()
    detect_str = 'Slave Interface:'

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

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

    if flag==0:
        print( 'All networks are up' )

def main():
    dic = sys.argv[1]
    dic = '/root/test/' + dic + '.txt'
    detect( dic )

if __name__ == '__main__':
    main()

lld的脚本:

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

def get_bond_name(file_name):

    bond_txt = file_name.split('/')
    len_bond_txt = len(bond_txt)
    last_bond_txt = bond_txt[len_bond_txt-1]
    bond_name = last_bond_txt.split('.')
    return bond_name[0]



def  bond_lld():
    dic = '/root/test'
    file_adr = []
    for file in os.listdir(dic):
        string = dic + '/' + file
        file_adr.append( string )
        #print(string)

    print ('{')
    print ('\t\"data\":[')

    for each in file_adr:
        if each ==file_adr[len(file_adr)-1]:
            print ('\t\t{\n' +'\t\t\t\"{#BONDNAME}\":' + '\"' + get_bond_name(each) +'\"' + '}')
        else:
            print ('\t\t{\n' +'\t\t\t\"{#BONDNAME}\":' + '\"' + get_bond_name(each) +'\"\n' + '\t\t},')

    print ('\t]')
    print ('}')


def main():
    bond_lld()


if __name__ == '__main__':
    main()

如果这个对你有用的话,请点个赞,谢谢啦。

相关标签: zabbix template