Coder Social home page Coder Social logo

peckadesign / monitoring Goto Github PK

View Code? Open in Web Editor NEW
40.0 23.0 8.0 3.37 MB

Monitoring na dostupnost webů, generování feedů, DNS, HTTPS atd.

PHP 81.61% HTML 0.29% Shell 0.64% JavaScript 7.08% Makefile 0.53% Latte 9.51% Dockerfile 0.35%
nextras php monitoring

monitoring's Introduction

Monitoring

Aplikace umožňuje snadné sledování funkčnosti webových projektů - jejich dostupnosti, fungování různých podsystémů a závislostí (HTTPS, DNS, RabbitMQ, aktuálnost souborů atd.). Další informace, prezentace a video z představení aplikace na Posobotě jsou k dispozici na Peckovním blogu.

Pro přihlášení je vyžadováno mít aplikaci na GitHubu a uživatelé se přihlašují výhradně přes tuto aplikaci. Vhodné je tak mít aplikaci v rámci účtu organizace a tím externě spravovat přístupy do aplikace.

Systémové a softwarové požadavky

Závislosti aplikace jsou zamknuty v composer.json, případně jsou popsány v instalačním skriptu Vagrantu (/vagrant/server/bootstrap.sh). Tam jsou také popsány požadavky na software na serveru.

Hardwarové požadavky se odvíjí od počtu kontrol a přístupu uživatelů. Při použití kolem cca 20 projektů, kdy každý ma do 50 kontrol je experimentálně ověřeno, že stačí server s 1 GB RAM a 1 CPU.

Spuštění aplikace z Dockeru

Z repozitáře se překopírují soubory docker-compose.full.yml, .env a monitoring-start.sh do nového adresáře na počítači, na kterém má běžet Monitoring. Do souboru .env se doplní do klíče MONITORING_URL URL, na které má běžet Monitoring v prohlížeči ve tvaru https://monitoring.example.com. V tomto adresáři po spuštění budou uložená data Monitoringu.

Celý Monitoring se poté spustí příkazem:

bash monitoring-start.sh

Po doběhnutí všech výstupů je k dipozici na URL http://localhost:8080 (port je možné si změnit v docker-compose.full.yml).

Vlastní hezkou URL je nutné vyřešit pomocí proxy serveru (např. pomocí Apache nebo nginx), stejně tak zabezpečení přístupu pro/proti veřejnosti a HTTPS certifikát.

Výchozí přihlašovací e-mailová adresa a heslo administrátorského účtu je: [email protected] a admin.

Spuštění aplikace z repozitáře

Po naklonování repozitáře je potřeba zkopírovat lokální nastavení neonu a vyplnit údaje:

cp config/config.local.example.neon app/config/config.local.neon 

Příklad konfigurace démona supervisord pro běh RabbitMQ consumerů je v /config/supervisor.conf.

Vzorový crontab pro plnění front RabbitMQ je v /config/crontab.

Rabbit consumers

Url a API

Url je přímo adresa API rabbitu nebo skriptu (viz remote/rabbitConsumer.php), který přepošle informace z API, pokud není možný vzdálený přístup.

V obou případech je očekáván stejný výstup a to json s informacemi o frontách - /api/queues[/vhost] Viz http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html

Pro volání API je možné doplnit heslo a login.

Fronty a minimálni počet

K jedné kontrole je možnost zadat víc front, které se mají kontrolovat. Počet front musí odpovídat počty kontrolovaných consumerů. Jako odělovač slouží čárka. Př. aliveCheck,dnsCheck a 1,2.

Kontrola

Pokud je mezi posledními hodnotami -1, znamená to, že je problém v komunikací s api nebo fronta neexistuje.

monitoring's People

Contributors

aloisjasa avatar jakubenglicky avatar kristynam avatar landsman avatar michalhlavka avatar mikulas avatar milanpala avatar milous avatar tomasfoltyn avatar vojtechbuba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monitoring's Issues

Pořadí výpisu sledovaných webů

Prosím, zda by šly tyhle dvě věci (ideálně, kdyby obě fungovali funkcí drag&drop, která se dá vzít z košíku na korálcích):

  • individuálně pro každého uživatele mít možnost si změnit pořadí vypsaných sledovaných webů. Teď když chci sledovat Nay a Korálky, tak je mám pod přehybem a po každém reloadu se mi stránka posune nahoru

  • na detailu webu si mít možnost seřadit sledované kontroly. Zde si myslím, že už to může být společné pro všechny uživatele

Nevím, co je potřebné nachystat od programátora (@milaPala ?) a co je už na kodérovi   

Možnost sledovat jen určitý projekt

Nyní chodí alerty do společného kanálu na Slacku. Chtělo by to, aby si uživatel mohl označit projekt a byl notifikován pouze na něj. Nyní máme uděláno napojení na Slack, ale mohly by přibýt třeba e-maily, nebo jiný kanál. Úkol bude tedy řešit dvě věci - přihlášení uživatele k odběru a duplicitní notifikaci.

Prosím tedy o:

  • Na kartičku projektu (podobně jako mají kartičky kontrol dole ty malé ikonky) nebo na jeho detail někam do společné části (např. dolu k již existujícím tlačítkům) přidat možnost přihlásit/odhlásit si odběr projektu. Vznikne tak vazební entita mezi uživatelem a projektem. (Určitě to vidím na nějakou komponentu.)
  • Rozšířit notifikaci o to, že se nepošle alert jen do společného kanálu na Slacku, ale i do kanálu člověka jako PM. Tam stačí ve volání API Slacku zaměnit název kanálu. Notifikace by využívala stejný zámek, který tam už je. V podstatě by se tedy duplicitně odeslaly notifikace do společného kanálu a do invidiálních kanálů.
  • Do administrace uživatele přidat možnost nadefinovat si název účtu (neboli svého individuálního kanálu) na Slacku. Jako úplně nejvíc super by bylo, kdyby tam bylo tlačítko, které by si to ze Slacku přes API samo natáhlo. Ale to je spíš finta navíc. Nevím, jestli to Slack umožňuje, navíc by uživatel musel být přihlášený ve stejném prohlížeči.

Historie kontrol

Kontroly si nyní pamatují jen poslední dva stavy. Bylo by dobré, aby ke každé kontrole existovala historie. Je potřeba data ukládat efektivně a dlouhodobě vhodně. Zároveň je potřeba to vymyslet tak, aby bylo možné vykreslit data do grafů nebo vypsat do tabulek.

K jednotlivým kontrolám je navíc vhodné si ukládat zajímavé údaje. K dostupnosti odezvu, k feedu jeho velikost atd.

Název front pro kontrolu počtu zpráv umí názvy přes regulární výrazy

Např. pro potřebu DLX front je vhodné, aby kontrola uměla hledat fronty podle regulárního výrazu. Jinak je potřeba vyjmenovávat všechny fronty. Ve skutečnosti stačí uvést .*\.dlx s hodnotou 0. Jen je potřeba, aby se při uvedení konkrétního názvu fronty s výjimkou oproti zbytku respektovalo pořadí.

Navazuje na #78.

Přidat ajaxový reload na hlavní dashboard

rozšíření

Prosím o přidání automatického reloadu (asi ajaxového) na hlavní stranu - dasboard tak, abych měl stálý real-time přehled nad statusem a nemusel jsem ručně provádět reload. Prosím podobně jako to má NewRelic.

Dlouhá URL v boxu

Je to jen takový detail, některé URL feedů jsou moc dlouhé a "vytečou" z boxu ven. Buď by to chtělo zalomit nebo udělat nějaký overflow: hidden

U hodnoty `timeout` definovat jednotku

rozšíření

Ve formuláři, kde si zadávám novou kontrolu (např. /dash-board/project/add-check/1?type=0) nebo edituji již existující prosím vedle labelu timeout definovat jednotku. Buď přímo za název do hranatých závorek, nebo jako placeholder do inputu před napsáním hodnoty. Primárně jsem pro tu první možnost a do inputu specifikovat text, že se jedná o hodnotu, kterou očekávám jako dobu odpovědi a ne čas, jak často se má systém na danou URL dotazovat.

Editace uživatelů

Chybí nyní administrace uživatelů. Je potřeba:

  • do hlavičky doplnit tlačítko s editací
    • pro uživatele bez admin oprávnění to povede na editaci jeho profilu
    • pro adminy to povede na výpis všech uživatelů
  • připravit stránku s výpisem uživatelů (https://ublaboo.org/datagrid/)
  • připravit editaci uživatele (použít automatický render formulářů)
  • nezapomenout vyřešit oprávnění na editaci cizího uživatele, pokud nejsem admin
  • ne-admin si nemůže nastavit admin oprávnění

Systém se nepravidelně odhlašuje

bug

Mám dnes (1.12.2016) odpozorováno, že se systém sám od sebe nepravidelně odhlašuje, i když jsem stále připojen na internetu.

V Tracy vidím tuhle chybu:
snimek obrazovky 2016-12-01 v 13 21 33

Docker

Neuvažovali jste o použítí aplikace v rámci docker containeru?
Říkám si, že by mohlo odpadnout prvotní nastavování, propojování services.

Nápad: toggle na maintenance mode

  • button na "toggle" maintenance módu pro celý jeden projekt
  • měl by vypnout "spamování" na slack a poslat jednu notifikaci "tenhle uživatel dělá maintenance"
  • nástroj půjde stále využít na kontrolu že maintenance probíhá dle očekávání, ale nebude to spamovat slack
  • následně možnost přepnout se zpátky do normálu

Přidání kontroly na vytváření objednávek

Stálo by promyslet, zda není možné kontrolu zobecnit na nějakou metriku, kterou bude ověřovat sonda v projektu, která bude měřit specifická data. Kontrola bude jen vyhodnocovat metriky.

Kontrola na libovolný DNS záznam

Nyní kontrolujeme A záznam v rámci kontroly "Nastavení DNS". Bylo by lepší kontrolu převést na A záznam a rozšířit na možnost dalších typů záznamů (MX, TXT atd.)

Zapauzování alertování podle času

Bohužel se stává, že některé projekty přes noc jedou z provozních důvodů hůře než přes den. Uděláme tedy možnost zapauzování podle času na celý projekt. Zadá se hodina od a do během které nebude projekt posílat chyby do Slacku.

Kontrola funkcnosti mail serveru

Ahoj,

teď mi klient přesouval domény a vypadli mu na chvíli MX záznamy, tak si říkám, zda by šly kontrolovat i zadané záznamy pro mail server a nějakým způsobem testnout třeba jednou za hodinu funkčnost IMAP/SMTP? Advanced levl by byla pak kapacita schránky.

Upravit chování odezvy url adresy

Upravit kontrolu odezvy url adresy, pokud první ping selže, tak než se ta entita uloží, tak udělat ještě jednu kontrolu.
Občas může vyhnít na timeoutu třeba. Tak se to pro jistotu zopakuje.

Tlačítka projektu do záhlaví

Tlačítka na stránce projektu jsou v patičce a nejsou tak po ruce. Navíc se rozbalovací menu rozbalí pod konec stránky.

megapixel pecka monitoring 2017-03-27 12-10-47

Prosím tedy o přesunutí tlačítek někam do záhlaví. Vedle nadpisu je celkem hodně místa.

megapixel pecka monitoring 2017-03-27 12-11-36

Pro ilustraci přikládám printscreen z Testomata, kde mají takovou +- standardní adminovskou šablonu.

testomato megapixel cz project

Statická šablona se všemi CSS je připravená v souboru www/html/project.html.

Favicona webu

Prosím o implementaci favicony pro web. Zatím bych udělal jednu obecnouz bootstrapu

Mít možnost si jednotlivou kontrolu při zakládání/editování pojmenovat

rozšíření

Ve formuláři, kde si zadávám novou kontrolu (např. /dash-board/project/add-check/1?type=0) nebo edituji již existující, tak kromě zadání URL mít zde políčko o na zadání názvu. Např. kontrola dostupnosti hlavní stránky.

Tenhle název pak zobrazovat na přehledu všech kontrol v záhlaví daného widgetu. Do budoucna pak také na dashboardu, pokud by se daná kontrola objevila v chybě, tak v seznamu chyb.

pridani noveho kontroly pecka monitoring 2016-11-28 09-17-37

Hlídat počet výskytů hledaného slova ve feedech a porovnat s hodnotou předchozí kontroly

Prosím, vytvořit kontrolu, kde:

  • zadám URL feedu (nebo nějakého textového souboru - csv, txt, xml)
  • zadám hledanou frázi (např. IN_STOCK)
  • zadám číselnou hodnotu, který určuje hlídaný rozdíl výskytu fráze pro vyvolání upozornění
  • čas, kdy se má kontrola provést

Princip dané monitorovací úlohy by měl být ten, že si danou frázi v daný čas vygrepuji, zjistím počet a porovnám s hodnotou, kterou mám naposledy uloženou. Pokud ten rozdíl bude vyšší/menší než je definovaná hranice, tak pošli upozornění/chybu.

Konkrétní příklad: budu chtít v heuréka feedu kontrolovat počet produktů skladem. Zadám tedy vyhledávací frázi <DELIVERY_DATE>0</DELIVERY_DATE>, kontrolu budu chtít provádět např. v 7 hodin ráno (vím, že generování feedu končí většinou v 06:00, tak si tam dám nějakou rezervu) a budu chtít poslat upozornění, pokud se počet produktů skladem bude oproti minulé kontrole liší o více než 100 produktů nahoru nebo dolů.

Jinak by měla tahle funkce fungovat obecně nejen na feedy

Nápad na rozšíření do budoucna: pro tenhle typ monitoringu by stálo za to ukládat ty zjištěné počty nějak historicky do DB např. mít údaje za poslední měsíc a mít tak možnost se podívat na historii počtů

Prosím @MilanPala Milana a @tomasfoltyn Tomáše o programátorskou analýzu náročnosti, případně technických zádrhelů

cc @karelrujzl @JakubRejnus @peckadesign/projektaci

Mít možnost hlásit jen chyby, ne varování

U některých projektů se stává, že často selžou kontroly jen na úroveň varování. Bude tak možné nastavit u konkrétních kontrol nastavit, že se mají hlásit jen chyby, ne varování.

Doba odezvy

Docela rád bych si ukládal dobu odezvy v čase, z toho pak třeba tvořit grafy.
Neměli jste takovou potřebu?

Kontrola na počet zpráv ve frontě

Je potřeba dodělat novou kontrolu, která bude hlídat i počet zpráv ve frontě. Vhodné to je na fronty, kde by neměly být žádné zprávy nikdy, typicky DLX fronty.

Nezabezpečené přihlášení

Ahoj,

teď jsem zjistil, že se do monitoringu může kdokoliv přihlásit, přes github. Nerespektuje se, zda je v github group. Víte o tom? Děje se to i u vás?

Rád bych tam měl přístup odkudkoliv. Na githubu máme 2 faktorové přihlášení atd, takže nechci zabezpečení na IP.

Výpadek konektivity hlásit samostatně a nehlásit výpadek všech kontrol

Když vypadne konektivita (což se u lokálních instalací občas stane), všechny kontroly spadnou, v případě delších problémů je potom kanál s alerty přeplněný.

Jedna kontrola na něco, co funguje spolehlivě (např. HP Seznamu, DNS Google atd.) by se mohla označit za referenční. Ta by se na začátku alertů ověřila jako první a v případě jejího výpadku by se jen ohlásil problém s referenční kontrolou a zbytek alertů by se zahodil. Předešlo by se tím přeplnění informačního kanálu. Pro případ lepší referenční kontroly by mohlo být nastaveno více kontrol a všechny by musely být shozené.

Vlastní user agent

Aby se provoz z Monitoringu dal sledovat, navrhuji udělat vlastní user agent pro všechny requesty. Něco ve stylu PeckaMonitoringBot/1.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.