Bojan.Schmidt@CARNet.hr 14.11.2012. ZenOSS u CARNetu Bojan.Schmidt@CARNet.hr 14.11.2012. naslovna02
Sadržaj Uvod NMS u CARNetu Zenoss u CARNetu Prilagodbe Zenoss-a Savjeti Zaključci unutrasnja01
Uvod Zenoss SNMP – Simple Network Management Protocol kombinacija vlastito razvijenih i postojećih programskih rješenja (open source) Zope (ZODB), Python, MySQL, RRDtool, Twisted, NetSnmp ZenModel ZODB // ZenRRD fajle // ZenEvents MySQL SNMP – Simple Network Management Protocol NMS (master) <---> UREĐAJ (slave + agent) Opcije: POLL / GET "Pass-through" MIB extension command // snmpd.conf (parsing output) TRAP SSH – Secure Shell Remote Command / Script + Parsing output unutrasnja01
NMS u CARNetu unutrasnja01
Zenoss u CARNetu Osnovni alat podrške CARNet NOC-a (od 2009.) Nadziranje mrežnih uređaja, mrežne povezanosti i mrežnih servisa Primarne funkcije: nadzor pogreški - Fault mgmt nadzor performansi - Performance mgmt Nadzor oko 1k uređaja, 2k fizičkih sučelja (topologija), 60k data points Distribuirana okolina (2 kolektora – Jezgra / Pristup) Iznimno važna kategorizacija elemenata mreže koji se nadziru – “GRUPE”: jezgra i distribucija agregacija i pristup Hijerarhijska modularnost i nasljeđivanje – “event/device KLASE” Konvencija imena sučelja (Parsing) unutrasnja01
Event Console unutrasnja01
Prilagodbe Zenoss-a (1) Modifikacije koda – brzina i skalabilnost Modifikacije zen.*[daemon].conf (# Config file written out from GUI) Modifikacije kroz “event transform” (manipulacija event atributa) Modifikacije performance predložaka u “device klasama” Modifikacije kroz “event manager” komande – NOC bljeskalica/zvuk Podešavanje alarming pravila – mail / sms Integracija u oba smjera sa bazama podatka (podaci o ustanovama članicama i kontakt osobama) Integracija sa autentikacijsko-autorizacijskim sustavom (OpenLDAP) Integracija sa vlastito razvijenim alatima za vizualizaciju topologije Integracija – Rancid, Syslog-ng ... unutrasnja01
Device unutrasnja01
Prilagodbe Zenoss-a (2) »|« RT 3.8.8 Copyright 1996-2009 Best Practical Solutions, LLC. Integracija sa trouble ticketing alatima (RT: Request Tracker): Root Cause Deduplikacija incidenata (1 uređaj, 1 incident, povezani zadaci) Umjetni delay za (ne)automatsko zatvaranje ticketa i identifikaciju tzv. flapanja Post-event komanda + PostgreSQL baza + PERL skripta (Crontab) Fri Nov 09 10:18:02 2012 Zenoss - Ticket created Subject:1912 - Osnovna Waldorfska skola Rijeka - Zametska 6, 51000 Rijeka - OS-Waldorfska.skola.RI-ES ID: 1912 Naziv ustanove: Osnovna Waldorfska škola Rijeka Adresa ustanove: Zametska 6, 51000 Rijeka Summary: ip 172.28.0.46 is down SZC baza URL: http:// ... Zenoss URL: http:// ... Syslog URL: https:// ... Rancid URL: https:// ... Ime i prezime: Funkcija: administrator resursa E-mail: Fiksni: Fax: unutrasnja01
Prilagodbe Zenoss-a (3) Integracija sa vlastito razvijenim modulom za izvještavanje (korištenjem svih dostupnih podataka iz različitih informacijskih sustava): Raspoloživost uređaja, Iskorištenost linkova, Greške / Odbačeni paketi na linkovima, Iskorištenost procesora, Raspoloživost memorije, Broj VPDN sesija/tunela Python / Perl manipulacije za TOPN Alarming PHP frontend + mail Grafički prikaz opterećenja uređaja, veza, servisa – Network Weathermap unutrasnja01
unutrasnja01
unutrasnja01
Prilagodbe Zenoss-a (4) Modul za deterministički nadzor ključnih portova u jezgri (Poll) import re from transaction import commit devname = evt.device intname = evt.component descr = '' for iface in device.os.interfaces.objectItems(): if iface[1].name() == intname: descr = iface[1].description if evt.summary.startswith('threshold of operstatus'): if evt.severity > 0: iface[1].operStatus=2 else: iface[1].operStatus=1 summary = '%s\t%s\t(%s)' % (devname, intname, descr) if re.search("^(Core_|Cp3Core_)", descr): m=re.search("^(Core_|Cp3Core_)[^_]+_([^_]+)", descr) if m is not None: dev2str=m.groups()[1] for d in dmd.Devices.getSubDevices(): if d.id == dev2str and d.getDeviceGroupNames() and 'ACCESS' in d.getDeviceGroupNames()[0]: evt.severity=3 evt.summary = 'DOWN: %s' % (summary) evt.summary = "UP: %s" % (summary) evt.severity=2 commit() unutrasnja01
Prilagodbe Zenoss-a (5) Device:Cp3-NSK1-ES-R11 Component:GigabitEthernet3/3 Event Class:/Status/IpInterface Start Time:2012/11/07 11:36:31.000 Stop Time:2012/11/13 18:52:09.000 Count:1731 prodState1000 stateChange2012/11/13 18:52:10.000 agent zenperfsnmp dedupid Cp3-NSK1-ES-R11|GigabitEthernet3/3|/Status/IpInterface|ifOperStatus_ ... unutrasnja01
Savjeti Nadzor samih nadzornih komponenti NMS-a (kolektori, ostali alati): SSH Remote Command / Script + Parsing output SNMP Poll + "Pass-through" MIB extension command + Parsing output nadzor iskorištenosti memorije, diska, cpu, periodična “čišćenja” zeopack.py “Performance tuning”: Zope, MySQL, File System BACKUP! Zenbackup – Events MySQL, ZODB, Perf RRD, Configuration Zaštita dediciranog nadzornog mrežnog segmenta + firewall (iptables) Kompletna (detaljna) dokumentacija (Getting started guide, Administration guide, Extended monitoring guide, Community forums): http://community.zenoss.org/index.jspa unutrasnja01
Zaključci Cjelovito rješenje za nadzor dostupnosti i performansi mreže Visoka razina integrabilnosti sa postojećim informacijskim sustavima i ostalim komponentama NMS-a Web bazirani alat Prilagodljivost (.conf kroz GUI, .py izvorni kod, predlošci, transformi, ...) Pouzdanost Intuitivnost frontend-a Modularna (objektna) arhitektura Jednostavna administracija nakon podešavanja (dodavanje/micanje uređaja, servisa, pravila ... sve kroz GUI) unutrasnja01
Q / A PITANJA / RASPRAVA Bojan.Schmidt@CARNet.hr Hvala na pažnji! unutrasnja01