AN50 - Prometheus a Grafana pro analýzu a vizualizaci dat z NETIO zásuvek | Chytré zásuvky NETIO ovládané pomocí WiFi a LAN
Tagy: 
3rd party HW-SW

Tato aplikační poznámka popisuje, co je Prometheus, jak ho využít ke sběru dat ze zásuvek Netio, a jak sesbíraná data přehledně zobrazit v Grafaně. Může být použito v Linux / Windows / Dockeru. Použitý protokol je JSON.

Můžeme Vám nějak pomoci?

 

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 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)

 

  • přidejte prometheus datový zdroj
  • nastavte správnou adresu a port pro instalaci promethea 

 

 

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. 

 

 

 

 

Takto Dashboard vypadá poté, co jsou po nějakou dobu sbírána data ze tří NETIO zásuvek:

 

Zeptejte se na cenu nebo technické parametry

Pro otestování zařízení použijte jméno/heslo demo/demo