Heim > Artikel > Backend-Entwicklung > So implementieren Sie die Zabbix-API-Überwachung in Python (mit Code)
Der Inhalt dieses Artikels befasst sich mit der Implementierung der Zabbix-API-Überwachung (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
Freunde, die sich mit Betrieb und Wartung befassen, sollten wissen, dass im IDC-Computerraum des Unternehmens häufig Server stehen, die ins Regal gestellt, aus dem Regal genommen, zur Reparatur gemeldet und verschrottet werden . Bei einer großen Anzahl von Servern kann es leicht zu Überwachungsausfällen kommen.
Große Internetunternehmen integrieren Überwachungssysteme und CMDB (Asset-Management-System | Konfigurationsmanagement-Datenbanksystem). Wenn eine neue Maschine gestartet wird, werden relevante Informationen automatisch in der CMDB aufgezeichnet CMDB. Modul, Überwachung hinzufügen/entfernen. Viele kleine Unternehmen verfügen nicht über ein Asset-Management-System, aber als Verantwortliche für die Überwachung sollten sie wissen, welche neuen Maschinen jeden Tag auf den Markt kommen und sicherstellen, dass diese zur Zabbix-Überwachung hinzugefügt werden können.
Lassen Sie mich zunächst die Skriptidee erläutern:
1) Scannen Sie mit dem Nmap-Tool das Netzwerksegment und scannen Sie die verwendeten IP-Adressen.
2) Überprüfen Sie mit Nmap, ob der 3389- oder 22-Port der gescannten IP geöffnet ist. Sie können feststellen, welche Windows-Maschinen und welche Linux-Maschinen sind.
3) Finden Sie den Linux-Hostnamen über den Befehl ssh + hostname unter Linux.
4) Unter Windows verwenden Sie den Befehl nmblookup -A, um den Windows-Hostnamen herauszufinden.
5) Verwenden Sie ein Python-Skript, um die Scan-Ergebnisdatei zu lesen und den Hostnamen in die Liste zu schreiben.
6) Verwenden Sie die Zabbix-Python-API, um den überwachten Hostnamen aufzurufen und ihn in die Liste zu schreiben.
7) Nehmen Sie den Schnittpunkt der beiden Listen und verwenden Sie eine for-Schleife, um zu bestimmen, welche Hostnamen nicht überwacht werden.
8) Senden Sie eine E-Mail, um die für die Überwachung zuständige Person zu benachrichtigen.
Im Folgenden werde ich das Python-Skript teilen, das ich mit Shell geschrieben habe, um über das Nmap-Scannen zu schreiben, und der darin enthaltene Inhalt ist der IP-Host . Name.
#!/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 = '''mail -s "Report on not monitor Hosts of Zabbix" shifeng_zhang88 < /shell/machine/result/result.txt''' return os.system(command)runCmd(nmap_cmd)def nmap_host(): hostiplst = [] hostnamelst = [] f = file('/shell/machine/result/scan_hostname.log') 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['result']) for host in reponse['result']: #print "Host ID:",host['hostid'],"Host Name:",host['name'] zbxhosts=host['name'] 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 = '\n'.join(nomonitorlst) f = file('/shell/machine/result/result.txt','w') f.write(string) f.flush() f.close() runCmd(mail_cmd)if __name__ == "__main__": main()
Fügen Sie das Skript zu crontab hinzu, und jeder Host erhält Informationen über die Hosts, die nicht überwacht wurden.
Zusammenfassung:
1) Informationen zur Zabbix-API finden Sie in den offiziellen Details.
2) Mithilfe dieses Skripts können Sie feststellen, welche Hosts nicht überwacht wurden. Ich hoffe, dass es für alle hilfreich ist.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Zabbix-API-Überwachung in Python (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!