Podporovaná zařízení:
Co je Prometheus
Prometheus je populární open-source nástroj využívaný pro monitorování a zasílání upozornění (alerting). Prometheus vznikl v roce 2012, je stále populárnější a mnoho společností ho používá jako klíčovou komponentu svých systémů. Prometheus zaznamenává aktuální metriky do databáze časových řad (time-series database). V těcho datech je možné snadno vyhledávát a vytvářet na jejich základě alerty a posílat upozornění.
Ekosystém Promethea se skládá z mnoha komponent:
- centrální server Prometheus - shromažďuje a ukládá data
- knihovny pro použití v klientských aplikacích
- "push gateway" pro krátkodobá měření
- exportery dat pro nástroje a aplikace, které nedokáží poskytnout data ve formátu vhodném pro Prométheus
- správce notifikací (alertmanager)
Více se o Prometheu dočtete ZDE
NETIO exporter
Některé modely Netio zásuvek jsou vybaveny měřením spotřeby. Tato data jsou dostupná přes API. V aplikacích je někdy důležíté mít vhled do těchto dat a být schopen tato data analyzovat a případně si nechat zaslat notifikaci v případě problému. Prometheus je vhodný nástroj pro ukládání těchto dat a s Netiem se hezky doplňuje.
Prometheus pracuje na tzv. stahovacím "pull" režimu, kdy si v pravidelných intervalech žádá cílová zařízení o data. Vyžaduje specifický formát odpovědi. Vypadá zhruba takto:
<metric name>{<label name>=<label value>, ...} <value>
api_http_requests_total{method="POST", handler="/messages"} 103
Pokud bychom chtěli stahovat data z aplikace či zařízení, které nepodporuje formát Promethea, musí být mezi zařízení a Prométheus vložen tzv. exportér. Ten slouží jako můstek mezi zařízením a Prometheem a překládá data do formátu srozumitelného pro Prometheus
Protože NETIO nezná datový formát Promethea, je potřeba pro něj použít exportér. Pro NETIO existuje open-source NETIO Exporter, který využívá JSON API pro získání potřebných dat o spotřebě.
Grafana
Prometheus je skvělý nástroj pro sběr dat, dokonce umí i nějaké základní vizualizace a jednoduché vyhledávání. Ale pro lepší přehledy dat existuje specializovaný nástroj - Grafana.
Grafana je mocný open source software pro vizualizaci dat a jejich analýzu. Nabízí snadné propojení s databází Promethea a přehledné grafické rozhraní pro zobrazení dat.
Jak to všechno propojit?
Instalace Promethea
Nejdříve potřebujeme nainstalovat Promethea.
Prometheus se dá nainstalovat mnoha způsoby.
Nejsnazší způsob je využít dostupných balíčků v rámci Vaší linuxové distribuce.
Například na distribucích založených na Debianu stačí zavolat apt install prometheus
Univerzálnější způsob je použít Docker. Pro instalaci pomocí Dockeru prosím následujte návod.
Ať už nainstalujete Prometheus jakýmkoliv způsobem, je potřeba ho po instalaci nakonfigurovat tak, aby dokázal stahovat data z NETIO zásuvky pomocí NETIO Exporteru. Níže je co nejjednodušší funkční konfigurace pro stahování dat ze tří expoterů.
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Netio Exporter.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'netio'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets:
- 172.18.0.120:9595
- 172.18.0.121:9595
- 172.18.0.122:9595
Před použitím je potřeba aktualizovat sekci targets tak, aby mířily na skutečné addresy a porty běžících NETIO Exporterů.
Jakmile Prometheus spustíte, měl by být dostupný na portu 9090. Ve většině případů to bude na http://localhost:9090
Mělo by to vypadat následovně:
NETIO zásuvka
Předtím, než spustíme NETIO Exporter, je potřeba povolit JSON API na zásuvce. NETIO Exporter potřebuje pouze přístup pro čtení, přihlašovací údaje username a password jsou volitelné.
NETIO Exporter
NETIO Exporter může být spuštěn buď přímo jako nativní aplikace, anebo pomocí Dockeru.
Existuje zde několik konfiguračních parametrů. Nejdůležitější jsou následující:
- NETIO_URL parametr. Tento parametr je vyžadován. Říká to Exporteru, na jaké adrese je dostupné JSON API. Například http://192.168.0.1/netio.json. Tato hodnota vždy záleží na síťové konfiguraci vaší NETIO zásuvky.
- NETIO_USERNAME - Dobrovolný parametr - uživatelské jméno
- NETIO_PASSWORD - Dobrovolný parametr - heslo
Pro více detailů navštivte: https://github.com/tomsajan/netio-exporter#configuration
Jako nativní aplikace
Pro spuštění aplikace nativně, stáhněte zdrojový kód:
git clone https://github.com/tomsajan/netio-exporter.git
a následujte návod
Přes Docker
Spustit aplikaci v Dockeru je ještě jednodušší, odpadá spousta nutných mezikroků (např. pro instalaci závislostí). Na Dockerhubu již existuje předpřipravený NETIO Exporter Docker image.
Spuštění je snadné:
docker run -tid -p 9595:9595 -e NETIO_URL=http://192.168.0.242/netio.json -e NETIO_USERNAME=netio -e NETIO_PASSWORD=netio --name netio-exporter tomsajan/netio-exporter:latest
Je nutné opět upravit příkaz podle Vašeho konkrétního nastavení (jméno, heslo, IP adresa).
Nyní by měl být NETIO Exporter dostupný na portu 9595.
Monitorování více NETIO zásuvek
Pokud potřebujete sbírat data z více zásuvek, je potřeba nastartovat NETIO Exporter pro každou zásuvku zvlášť. Je také potřeba upravit konfigurační soubor prometheus.yml pro Prometheus tak, aby obsahoval adresy a porty všech spuštěných NETIO Exporterů.
Data uložená v Prometheu
Pokud je vše správně nastaveno, Prometheus začne stahovat data z NETIO. V prohlížeči můžete otevřít uživatelské rozhraní Promethea (např. http://localhost:9090). Metriky z NETIO Exporteru mají předponu netio_ (více o metrikách zde).
Začněte psát netio a Prometheus by měl nabídnout některé příklady NETIO metrik. Například netio_agent_info vypíše aktuální obecné informace o monitorovaných zásuvkách NETIO.
Nyní se můžete vrhnout do prozkoumávání všech metrik.
Grafana
Ačkoliv Prometheus umí zobrazit jednoduché grafy, není určen pro vizualizaci dat. Lepší pohled na věc získáme v Grafaně. Ta také může být instalována několika způsoby. Návod najdete zde.
V Dockeru je instalace jednodušší:
docker run -d -p 3000:3000 grafana/grafana
Než se pustíme do přehledů, musíme Grafanu nakonfigurovat tak, aby mohla číst data z Promethea
- V prohlížeči otevřete stránku Grafany na portu 3000
- admin/admin jsou výchozí přihlašovací údaje username/password
- otevřete stránku /datasources (datové zdroje)
Nyní je Grafana připravena vyčítat data o NETIO zásuvkách z Promethea. Autor NETIO Exporteru připravil i hotový Dashboard pro Grafanu, který umí přehledně vizualizovat data z NETIO Exporteru.
Nahrání dashboardu do Grafany je velice snadné. Stačí kliknout na značku + (plus) vlevo nahoře na hlavní stránce a v následujícím dialogu vložit ID dashboardu 12022 a kliknout na tlačítko "load". V dalším kroku vybereme datový zdroj Prometheus (ten, co jsme předtím přidali do Grafany) a klikneme na "import". Během pár okamžiků se načte Dashboard pro NETIO.