Znáte zdraví svých aplikací? Několik námětů k předcházení problémům v běhu systémů
Co budeme rozumět pod pojmem „zdravá aplikace“ To, že všechny subsystémy fungují Že všechny subsystémy fungují pokud možno optimálně Že jsme schopni včas detekovat případnou blížící se pohromu
O čem budeme hovořit? Základní pojmy Nástroje Když selže prevence
Varování: Následující přednáška bude vysoce odborná a bude klást extrémní nároky na posluchače. Slabším povahám se může udělat špatně nebo alespoň nevolno, ne-li přímo zle. Je však ve Vašem zájmu vydržet do konce!!!
Základní pojmy
Vymezení tématu Hardware Operační Systém Databáze/Aplikační Server Caché, Ensemble Aplikace Vaše aplikace
Operační schéma Aplikační metrika… Žurnály CPU Paměť Disky Buffery Datasety
Co všechno se může pokazit A tedy co vše je potřeba hlídat Hardware: Teplota serveru Místo na discích Propustnost sítě
Operační systém Dostupná velikost paměti Četnost přístupů do odkládacího souboru ?
AS/DS Systémové zdroje (buffery) Stav síťových protokolů (ECP / shadow) Systémové soubory (datasety, žurnály) License (využití licenčních jednotek) Systémové úlohy Protokoly chyb
Aplikace Dávkové procesy Pravidelné úlohy Různé uživatelsky definované metriky
Nástroje
Caché System Monitor Rutina %MONAPPMGR Základní API pro monitorování Caché Registruje třídy metrik Poplachy Třídy v balíčku %Monitor Definují třídy metrik
Definování vlastních metrik Odvodit od %Monitor.Adaptor Definovat sledované veličiny – metriky Musí být datové typy z balíčku %Monitor Z nich vzniknou persistentní třídy vzorků dat v balíčku .Sample Implementovat metody GetSample Volitelně Initialize,Startup,Shutdown POZOR: Třídy sbírající data pro SNMP musí být vytvořeny v %SYS (pokud nepoužijete SNMP můžete je vytvořit v aplikačním jmenném prostoru)
Caché System Monitor K metrikám registrovaným pomocí %MONAPPMGR lze přistupovat pomocí API Set agent=##class(%Monitor.SampleAgent).%New(<trida_s_datovymi_vzorky>) agent.Collect() Zobrazení CSP stránky: každá třída vzorků je persistentní a CSP Terminál: w ##class(%Monitor.View).Display(agent)
SNMP Protokol Simple Network Management Protocol Protokol pro sběr informací ze síťových zařízení Umí také konfigurovat zařízení na dálku 2 varianty komunikace Periodický sběr dat Asynchronní depeše V Caché od verze 5.1
Princip SNMP Klienti GUI klienti Stavové informace, depeše, události Agent Snmp démon Sub agenti (agentX) Sledovaná zařízení / aplikace Metriky Vzorky dat
Implementace v Caché Dokumentace: Monitoring Caché using SNMP http://192.168.77.130:57772/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp#GCM_snmp_use
Implementace v Caché Prvky %Monitor_Service Povolit službu Monitor Settings [Home][Configuration][Monitor Settings] Start SNMP Agent at System Startup -> Yes %MONAPPMGR Registruje vlastní třídy metrik Caché / Ensemble MIB soubor se strukturami sledovaných veličin
Sestavení vlastního MIB souboru API třída MonitorTools.SNMP – %SYS namespace Metoda CreateMIB() Viz online dokumentace (Monitoring Caché Using SNMP) a dokumentace třídy MonitorTools.SNMP POZOR: CreateMIB() ve verzích nižších než 2009.1 obsahuje chybu. Vygenerovaný MIB soubor je nutno ručně upravit, přidat čárku na konce řádek se seznamem metrik Sem patří čárka
Konfigurace SNMP na Windows Na Windows musíte mít nainstalovánu a spuštěnu službu SNMP Service Je součástí nástrojů pro sledování a správu sítě Musíte mít povoleny porty 161 (UDP) a 705 (TCP) POZOR: v instalaci Caché pro Windows je chyba, která způsobí, že některé potřebné knihovny se správně nezaregistrují, takže registraci je potřeba provést ručně:
Registrace iscsnmp.dll Varianta a) Z terminálu provést >w $ZU(190,5,1) Varianta b) Regedit Ke klíči HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents Přidat nový uzel s hodnotou SOFTWARE\InterSystems\Cache\SNMP\CurrentVersion
Konfigurace SNMP na Unixu Pokud Váš Linux/Unix podporuje v rámci net-snmp i agentx pak máte vyhráno, jinak máte problém a musíte se zanořit hluboko do konfigurace net-snmp Naštěstí nové verze těchto OS agentx podporují
Ukázka pro SUSE ES 10 /etc/init.d obsahuje soubor snmpd Skript pro start/stop démona Čte konfiguraci z /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf Přidat řádek: master agentx /etc/init.d/snmpd skript: Změnit tak, aby při startu použil navíc tento parametr: -x TCP:localhost:705
Konfigurace SNMP – společná část Nastartovat (pokud již neběží) snmp démon W $$start^SNMP(port,timeout) Musí vrátit 1 Na Windows se neposílá data přímo, ale posílá ve skutečnosti Windows objekt typu událost Démon se dá zastavit takto: W $$stop^SNMP()
Pozor na firewal SNMP Data: UDP 161 Události: UDP 162 AgentX TCP: 705
Ukázky
SNMP klienti Paessler Traffic Grapher http://www.paessler.com/prtg IReasoning MIB browser http://www.ireasoning.com/mibbrowser.shtml NetMechanica http://www.netmechanica.com/products/
Depeše (Traps) Asynchronní zprávy ze serveru Sada předdefinovaných událostí v Caché / Ensemble ##class(%Monitor.Alert).External(“SNMP”,aplikace,úroveň,textová zpráva)
Jiné možnosti WMI (Windows Management Instrumentation) Pouze Windows Caché Task Manager Vlastní úlohy, poděděné od %SYS.Task Email Webové služby
Když selže prevence
Když už se něco přihodí Diagnostic report (neboli Buttons) Performance Buttons (pButtons) –pro získání nutno kontaktovat WRC