Maison  >  Article  >  développement back-end  >  Comment implémenter la surveillance Zabbix-API en Python (avec code)

Comment implémenter la surveillance Zabbix-API en Python (avec code)

不言
不言original
2018-09-17 16:33:432187parcourir

Le contenu de cet article explique comment implémenter la surveillance Zabbix-API en Python (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Les amis qui effectuent l'exploitation et la maintenance doivent savoir que la salle informatique IDC de l'entreprise dispose souvent de serveurs qui sont mis sur étagère, retirés des étagères, signalés pour réparation et mis au rebut. . S’il existe un grand nombre de serveurs, il est facile de manquer la surveillance.
Les grandes entreprises Internet intègrent des systèmes de surveillance et CMDB (système de gestion des actifs | système de base de données de gestion de configuration). Lorsqu'une nouvelle machine est lancée, les informations pertinentes seront enregistrées dans la CMDB qui reliera automatiquement les informations associées en fonction des informations contenues dans la CMDB. Module CMDB, ajouter/supprimer la surveillance. De nombreuses petites entreprises ne disposent pas de système de gestion des actifs, mais en tant que responsable de la surveillance, elles doivent savoir quelles nouvelles machines ont été lancées chaque jour et s'assurer qu'elles peuvent être ajoutées à la surveillance Zabbix.
Tout d'abord, laissez-moi vous expliquer l'idée du script :
1) Utilisez l'outil Nmap pour analyser le segment de réseau et analyser les adresses IP qui ont été utilisées.
2) Utilisez Nmap pour vérifier si le port 3389 ou 22 de l'adresse IP analysée est ouvert. Vous pouvez déterminer quelles sont des machines Windows et lesquelles sont des machines Linux.
3) Recherchez le nom d'hôte Linux via la commande ssh + hostname sous Linux.
4) Sous Windows, utilisez la commande nmblookup -A pour connaître le nom d'hôte Windows.
5) Utilisez un script Python pour lire le fichier de résultats de l'analyse et écrivez le nom d'hôte dans la liste.
6) Utilisez l'API python Zabbix pour appeler le nom d'hôte surveillé et l'écrire dans la liste.
7) Prenez l'intersection des deux listes et utilisez une boucle for pour déterminer quels noms d'hôtes ne sont pas surveillés.
8) Envoyer un email pour prévenir la personne en charge du suivi.

Ci-dessous, je partagerai le script Python que j'ai écrit. Scan_machine.sh est le script que j'ai appelé en utilisant Shell pour écrire sur l'analyse Nmap. scan_hostname.log est le résultat de l'analyse Nmap, et le contenu à l'intérieur est l'hôte IP. . nom.

#!/usr/bin/env python#create by:sfzhang 20140820#coding=utf-8import os,sysimport jsonimport urllib2import datetime,timefrom urllib2 import URLError
nmap_cmd = "/shell/machine/scan_machine.sh"def runCmd(command):
    global mail_cmd
    mail_cmd = &#39;&#39;&#39;mail -s "Report on not monitor Hosts of Zabbix" shifeng_zhang88 < /shell/machine/result/result.txt&#39;&#39;&#39;
    return os.system(command)runCmd(nmap_cmd)def nmap_host():
    hostiplst = []
    hostnamelst = []
    f = file(&#39;/shell/machine/result/scan_hostname.log&#39;)
    for line in f.readlines():
        hostip = line.split()[0]
        hostname = line.split()[1]
        hostiplst.append(hostip)
        hostnamelst.append(hostname)
    hostnamelst.sort()
    #print hostiplst
    return hostnamelst
    f.close()def zabbix_host():
    zabbixhostlst= []
    #based url and required header
    url = "http://192.168.161.128/api_jsonrpc.php"
    header = {"Content-Type": "application/json"}
    #request json
    data = json.dumps(
    {  
    "jsonrpc": "2.0",
      "method": "host.get",
      "params":{
          "output":["hostid","name"],
         "filter":{"host":""}
    },    
    #auth id
    "auth":"Zabbix Auth ID",
    "id": 1,
    })
    #create request object
    request = urllib2.Request(url,data)
    for key in header:    
    request.add_header(key,header[key])
    #get host list
    try:
    result = urllib2.urlopen(request)
    except URLError as e:
    print "The server could not fulfill the request.",e.reason    else:
        reponse = json.loads(result.read())
    result.close()
    #print "Number of Hosts:",len(reponse[&#39;result&#39;])
    for host in reponse[&#39;result&#39;]:
            #print "Host ID:",host[&#39;hostid&#39;],"Host Name:",host[&#39;name&#39;]
            zbxhosts=host[&#39;name&#39;]
            zabbixhostlst.append(zbxhosts)
        zabbixhostlst.sort()
        return zabbixhostlst    def main():
    nmaphostlst = nmap_host()  
    zbxhostlst = zabbix_host()  
    diff = list(set(nmaphostlst) ^ set(zbxhostlst))  
    content = "\n"
    nomonitorlst = [] 
    if len(diff) != 0:  
        for host in diff:  
            if host in nmaphostlst:  
                nomonitorlst.append(host)
                
    else:  
        sys.exit()
    #print zbxhostlst
    string = &#39;\n&#39;.join(nomonitorlst)
    f = file(&#39;/shell/machine/result/result.txt&#39;,&#39;w&#39;)
    f.write(string)
    f.flush()
    f.close()
    runCmd(mail_cmd)if __name__ == "__main__":  
    main()

Ajoutez le script à crontab et chaque hôte recevra des informations sur les hôtes qui n'ont pas été surveillés.

Résumé :

1) Pour les informations relatives à l'API Zabbix, veuillez vérifier les détails officiels.

2) Grâce à ce script, vous pouvez savoir quels hôtes n'ont pas été surveillés. J'espère que cela sera utile à tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn