340 likes | 455 Views
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.
E N D
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
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!!!
Vymezení tématu • Hardware • Operační Systém • Databáze/Aplikační Server • Caché, Ensemble • Aplikace • Vaše aplikace
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
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 • Definovatsledované 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
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 • Povolitsluž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-snmpi 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.dobsahujesouborsnmpd • 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
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ž už se něco přihodí • Diagnostic report (neboli Buttons) • Performance Buttons (pButtons) –pro získání nutno kontaktovat WRC