Nástroje na sledování serverových statistik

Nástroje na sledování serverových statistik
« kdy: 01. 12. 2014, 15:42:51 »
Zdravím.

Hledám nějaké nástroje ideálně open source na reportování a grafování statistik ze serveru. Hlavně aby to mělo zdokumentovaný formát reportů, protože se nejedná o standardní server typu apache nebo nginx, takže report musí sestavovat server sám. Klidině  může pravidelně generovat nějaká XML, JSON, a podobné formáty o svém běhu, mě jde o to, abych si následné zpracování dat nemusel sám vyvíjet.

Chci sledovat: Počet requestů za sekundu, doba zpracován requestu, počet běžících vláken, atd.. v zásadě bych si tam mohl zadat cokoliv co by se dalo monitorovat.

A prosím neco jednoduchého, žádnou elektrárnu. Díky za tip.


gamer

Re:Nástroje na sledování serverových statistik
« Odpověď #1 kdy: 01. 12. 2014, 16:00:37 »

Re:Nástroje na sledování serverových statistik
« Odpověď #2 kdy: 01. 12. 2014, 17:58:40 »
Nějak ten dotaz nechápu. Monitorování spočívá v tomhle:

1. software A běží a poskytuje nějaké služby
2. software B ("sensor", "check" apod.) umí nějak změřit funkce softwaru A -> vznikají nějaká čísla
3. čísla se někam ukládají (software C)
4. software D čísla vyhodnocuje na stavy (ok, warning, critical...)
5. software E z uložených čísel vykresluje grafy a/nebo vyrábí nějaké reporty
6. software F ty reporty nějak prezentuje lidem (web, email apod.)

Z tvýho dotazu vůbec nechápu, kterou z těch věcí hledáš. Podle tebe "se nejedná o standardní server", z čehož bych si myslel, že si B budeš muset napsat sám. Nevím, jak myslíš "v zásadě bych si tam mohl zadat cokoliv co by se dalo monitorovat." - no když si na to napíšeš sensor, který to změří a vyprodukuje číslo, tak to samozřejmě můžeš s jakýmkoli monitorovacím systémem.

Stejně tak nechápu ten požadavek na "zdokumentovaný formát reportů". Generování reportů je až ta část E, která na samotný monitoring (B-C) nemá žádný vliv. Asi spíš chceš, aby bylo nějaké dobře zdokumentované API součásti B, ne? (Aby sis ji mohl napsat sám)

Vypadá to, že s monitorováním nemáš úplně zkušenosti, takže asi bude lepší, když řekneš, čeho chceš dosáhnout - naprosto polopaticky a konkrétně a nebudeš se snažit popisovat požadavky na komponenty, které neznáš.

Např.:
Citace
Běží mi na serveru nějaký můj soft, který měří, kolik zpracoval požadavků za sekundu - chtěl bych naměřená data někam ukládat a prohlížet si je ve formě grafů přes web. Grafy by měly být ... a ještě líp ... anebo ...

j

Re:Nástroje na sledování serverových statistik
« Odpověď #3 kdy: 01. 12. 2014, 18:50:44 »
Nevim co si predstavujes pod pojmem "takže report musí sestavovat server sám", protoze at uz pouzijes cokoli, vzdy ve 100% pripadu tomu musis rict, co ze to chces sledovat. A to prevazne nejakou sablonou, pro zname produkty integrovanou, pro mene zname stazitelnou, a pro zcela nezname jedine vlastnorucne vyrobitelnou.

Tohle splnuje cela rada produktu, za me trebas Nagios. Pochopitelne ta data nejdriv treba nekde vzit - snmp, cteni ze souboru, SQL dotaz ...

Priklad: mam tu nejake tiskarny, ty umi snmp. Tudiz jsem si nasel sablonu pro obecne snmp, zkouknul do kde treba nastavit, pak sem vyzkoumal, jake polozky jsou dostupne a co znamenaji a pak vytvoril vlastni sablonu, ktera mi umozni kdykoli pridat dalsi obdobne zarizeni a sledovat definovane parametry. Hotova sablona k nalezeni nebyla.

Re:Nástroje na sledování serverových statistik
« Odpověď #4 kdy: 01. 12. 2014, 22:57:33 »
Co takhle Munin? Akorat muze byt problemem prilis dlouha perioda.
Děkuji za možnost editace příspěvku.


Re:Nástroje na sledování serverových statistik
« Odpověď #5 kdy: 02. 12. 2014, 01:01:16 »
Nějak ten dotaz nechápu. Monitorování spočívá v tomhle:

1. software A běží a poskytuje nějaké služby
2. software B ("sensor", "check" apod.) umí nějak změřit funkce softwaru A -> vznikají nějaká čísla

Tak polopatě je to někde v této fázi - bod 1 a 2. Software A běží a poskytuje služby. Zároveň na nějaké URL (nebo to pravidelně dumpuje do souboru) poskytne nějaký aktuální stav nebo kumulovaný stav svých interních counterů. Countery jsou něco ve smyslu klíč=hodnota. Třeba requests = 253, req_latence_ms=15, threads_active=5, threads_max=7 - tím říká, že od posledního dotazu (nebo dumpu) přišlo 253 requestů, latence byla v průměru 15ms, aktivní počet threadů je 5 a maximální počet threadů od posledního dotazu bylo 7

1. existuje nějaký standardní formát jak tyhle raw data formátovat aby to přečetl nějaký analytický soft nebo grafovátko
2. a obecně - jaký soft na to použít

Re:Nástroje na sledování serverových statistik
« Odpověď #6 kdy: 02. 12. 2014, 01:09:20 »
A ještě drobnost. Nechci si s tím hrát. Chci to nasadit pokud možno s nejmenším množstvím práce a pak už jen sledovat. Je pro mě jednodušší do Software A doprogramovat libovolné countery které mohu pak exportovat ven, ale nechce se mi na to připravovat šablony programovat grafy, programovat různé výpočty, například průměry a buh ví co ještě, psát v nějakém obskurtním skriptovacím jazyky parsery dat a podobně. Nechce se mi ani vymýšlet nějaký nový formát, pokud existuje nějaký průmyslový standard

tdvorak

Re:Nástroje na sledování serverových statistik
« Odpověď #7 kdy: 02. 12. 2014, 06:26:59 »
A ještě drobnost. Nechci si s tím hrát. Chci to nasadit pokud možno s nejmenším množstvím práce a pak už jen sledovat. Je pro mě jednodušší do Software A doprogramovat libovolné countery které mohu pak exportovat ven, ale nechce se mi na to připravovat šablony programovat grafy, programovat různé výpočty, například průměry a buh ví co ještě, psát v nějakém obskurtním skriptovacím jazyky parsery dat a podobně. Nechce se mi ani vymýšlet nějaký nový formát, pokud existuje nějaký průmyslový standard

Pak použij standardní řešení - třeba Nagios. Poběží ti někde server, který se stará o získávání a ukládání dat. Ty jen musíš napsat jeden konkrétní script (v libovolném jazyce), který vrátí data v očekávaném formátu. Je jedno, kde je vezmeš, klidně tvůj script může udělat request na nějakou url, tam hodnoty přečíst a vrátit. Nebo to nemusí být ani script, jen curl co vrátí vhodně naformátovaný obsah stránky.

Výhoda nagiosu je, že k němu automaticky získáš možnost monitorovat kdeco, pro normální věci už jsou dávno připravené šablony. A grafy, výpočty, průměry, to všechno udělá nagios, případně nadstavba centreon.

Jednoduchá ukázka toho, jak vypadá na míru napsaný script pro sběr dat do nagios - primitivní načítání stavu inkoustu v tiskárně: http://www.tomas-dvorak.cz/clanky/monitorovani-stavu-inkoustu-v-hp-tiskarne-pomoci-nagios

V tvém případě místo hladin inkoustu budeš vracet requests, req_latence_ms, threads_active, threads_max. Nagios automaticky hodnoty zpracuje a uloží. Výstupem ve webovém rozhraní pak budou grafy, případně třeba varovné SMS, e-maily, když hodnoty překročí definovanou mez (moc requestů, moc velká latence...).

Pokud tě nezaujme Nagios + Centreon, můžeš se podívat na Zabbix, Munin nebo Cacti.


gamer

Re:Nástroje na sledování serverových statistik
« Odpověď #8 kdy: 02. 12. 2014, 07:42:29 »
Tady je potřeba rozlišit, co vlastně chci dosáhnout. Jestli monitorovat aktuální dostupnost nějaké služby, nebo shromažďovat data o službě pro pozdější analýzu. Pokud to první, je vhodnější nagios. Pokud to druhé, je vhodnější collectd. nagios i collectd umí obojí, ale jde o to, jak dobře. collectd je primárně postavený a optimalizovaný na ukládání velkého množství dat z mnoha různých zdrojů. Můžu mít stovky instancí serverů, ze kterých si budu s každým requestem ukládat nějaká data. Data budu ukládat třeba rok a potom si vzpomenu, že potřebuju porovnat aktuální stav a stav před pů rokem. S collectd to půjde a zvládne to mnohem líp než nagios.

collectd je postavený na pluginech, jádro collectd neumí v podstatě nic jiného, než ukládat data v RRD souborech (což lze považovat za průmyslový standard). Potřebuju data ze stovek serverů na jednom místě? Použiju network plugin:
https://collectd.org/wiki/index.php/Plugin:Network
Potřebuju agregovat data z více serverů? Použiju agregační plugin:
https://collectd.org/wiki/index.php/Plugin:Aggregation
Potřebuju vidět hezké grafy? Použiju nějaký front end plugin:
https://collectd.org/wiki/index.php/List_of_front-ends
Potřebuju něco úplně speciálního? Napíšu si vlastní plugin:
https://collectd.org/wiki/index.php/Plugin_architecture

Re:Nástroje na sledování serverových statistik
« Odpověď #9 kdy: 02. 12. 2014, 08:42:45 »
A ještě drobnost. Nechci si s tím hrát. Chci to nasadit pokud možno s nejmenším množstvím práce a pak už jen sledovat.
Dobře, ale ještě pořád jsi nenapsal, co od toho přesně chceš - jenom grafy? Nebo i nějaké eventy? (Když bude threadů víc jak 10, má ti to poslat email?) chceš opravdu sledovat statistiky jenom z tvého softu, nebo i z OS (využití paměti, disku atd.)?

Pokud chceš jenom grafy a stačí ti jednoduché, tak fakt ten collectd nebo třeba i jenom rrdtool. Pokud bys chtěl trochu hezčí a interaktivnější grafy, tak standardem se stává graphite (http://graphite.wikidot.com/screen-shots). Existují i nějaká hostovaná řešení, která si zaplatíš a jenom posíláš data přes nějaké api.

Pokud bys chtěl i ty eventy, tak nagios nebo spíš nějaký jeho klon (check_mk, icinga, shinken). Tady už ale očekávej, že to bude víc práce, zvlášť pokud to vidíš poprvé. Pokud se ti s tím opravdu nechce trápit, našel bych si být tebou někoho, kdo to zná a s počáteční konfigurací ti pomůže.

Re:Nástroje na sledování serverových statistik
« Odpověď #10 kdy: 02. 12. 2014, 10:48:35 »
A ještě drobnost. Nechci si s tím hrát. Chci to nasadit pokud možno s nejmenším množstvím práce a pak už jen sledovat.
Dobře, ale ještě pořád jsi nenapsal, co od toho přesně chceš - jenom grafy? Nebo i nějaké eventy? (Když bude threadů víc jak 10, má ti to poslat email?) chceš opravdu sledovat statistiky jenom z tvého softu, nebo i z OS (využití paměti, disku atd.)?
No to já právě ještě nevím. Všechno co půjde. Co možná nejvíc možností bez nutnosti každou speciálně programovat. Na začátek jsem ale chtěl upravit své serverové komponenty tak, aby vracely data v nějakém standarizovaném formátu, pro další zpracování, aby případné další zpracování bylo už o nasazení existujících nástrojů které jsou k dispozici třeba jak na open source, tak i třeba placené. Od jednoduchých grafovátek až po nějaké alarmy, notifikace, optimalizátory. Asi jsem se naivně domníval, že v tomhle směru existuje průmyslový standard.

Prostě na začátku mám hromadu dat, mohu je upravit do nějaké definované podoby a pak jsem si myslel, že už je to věc hotových nástrojů

Začnu tím Nagios, uvidíme. Dík

Re:Nástroje na sledování serverových statistik
« Odpověď #11 kdy: 02. 12. 2014, 11:14:24 »
V podstate tady mas nejaky 3-4 tipy a ted musis vyzkouset sam.
Děkuji za možnost editace příspěvku.

Re:Nástroje na sledování serverových statistik
« Odpověď #12 kdy: 02. 12. 2014, 11:33:31 »
Asi jsem se naivně domníval, že v tomhle směru existuje průmyslový standard.
To ses domníval správně. Průmyslový standard je SNMP. Podporuje ho prakticky každý rozumný hw a občas i sw (např. Erlang má přesně pro tyhle účely v sobě SNMP zabudované). Ale SNMP se ti implementovat nebude chtít, to je zbytečně moc práce.

Další de-facto standard je právě ten Nagios - důležité je pro tebe API pluginů: http://nagios.sourceforge.net/docs/3_0/pluginapi.html - server periodicky volá skript, který tímhle API vrací data. Pokud chceš data posílat ze strany svýho sw (push), tak hledej "passive check".

Ale nečekej, že to bude bez práce, Nagios je pro nováčka lehce hardcore, proto bych doporučoval konzultovat s někým, kdo v tom má zkušenosti.