Serverių ir sistemų monitoringas – Grafana

Grafana kompiuterio stebėjimas

Tekstas buvo atnaujintas: 2020-05-01.

Kadangi esu statistikos mini fanas ir senokai girdėjau apie tokią programą: Grafana, kuri gali kaupti įvairias statistikas viename lange.

Reddit’e esu matęs labai įdomių variantų, kai viskas yra apjungiama.

Kaip pavyzdys, taip atrodo sistemų monitoringas:

sistemų monitoringas naudojant grafana ir kitas programas
Autorius

Apjungiama daug duomenų iš įvairių įrenginių.

Duomenis nuo UPS, ar servisai pasiekiami, NAS duomenys, pFsense.

Realiai galimybių yra daug, bet viską pakurti gali užtrukti.

Kaip atrodo Grafana pas mane

Grafana mikrotik snmp exporter

Tai langas kuris rodo statistiką iš Mikrotik routerio.

Rodo interneto srautą kuris praeina pro kiekvieną portą.

Grafana kompiuterio stebėjimas

Šitas langas rodo NUC statistiką.

Dar reiktų susijungti kitus likusius savo serverius ir pagrindinius langus susimesti į vieną.

Įrašome Grafana į sistemą

Debian sistemoje:

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - 
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" 
sudo apt update 
sudo apt install grafana 

Startuojam:

sudo systemctl start grafana-server

Norint jeigu startuotų su sistema:

 sudo systemctl enable grafana-server

Tikriname ar startavo:

sudo systemctl status grafana-server

Turime gauti:

● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
   Active: active (running)
     Docs: http://docs.grafana.org
 Main PID: 13630 (grafana-server)
    Tasks: 7 (limit: 1152)
...

Jeigu naudojama kitos sistemos, tai galima rasti visas instrukcijas pasinaudojus Google.

Kaip veikia Grafana

Iš pradžių reiktų prisijungti prie Grafanos:

ip_adresas:3000

Grafana po defualt naudoja 3000 prievadą.

Atsidarius puslapi reikės prisijungti.

Standartinis vartotojas ir kodas: admin

Prisijungus reiktų pasikeisti.

Norint pradėti reikia pridėti data source

Serverių ir sistemų monitoringas - Grafana 1

Tada reikia spausit: Add Data Source

Ir va prasideda įdomioji dalis, reikia nurodyti DB bazę, mano naudojami ir dažnai sutinkami:

InfluxDB ir Prometheus.

Reikės šių programų taip pat.

NUC duomenis renku su InfluxDB ir Telegraf, dashboard kurį naudoju galime rasti Grafana puslapyje.

Dashboard – sudėti jau langai, tai palengvina darbą, kai pačios Grafanos dar neina perprasti.

Dešiniajame kampe rašo:

Serverių ir sistemų monitoringas - Grafana 2

Svarbiausi Data Sources ir Collector.

Tai dar dvi programos kurių reikės.

InfluxDB dokumentacijoje instrukcijos, kaip reikia įrašyti, taip pat Telegraf instrukcijos.

Principas toks: Telegraf renka duomenis iš sistemos > InfluxDB sudeda į DB > Grafana atvaizduoja.

Reikės pakoreguoti Telegraf conf failą:

sudo nano /etc/telegraf/telegraf.conf

Mano naudojamas conf failas:

[global_tags]
 [agent]
   interval = "10s"
   round_interval = true
   metric_batch_size = 1000
   metric_buffer_limit = 10000
   collection_jitter = "0s"
   flush_interval = "10s"
   flush_jitter = "0s"
   precision = ""
   hostname = ""
   omit_hostname = false
 [[outputs.influxdb]]
   urls = ["http://localhost:8086"]
   database = "telegraf_metrics"
   retention_policy = ""
   write_consistency = "any"
 [[inputs.cpu]]
   percpu = true
   totalcpu = true
   collect_cpu_time = false
   report_active = false
 [[inputs.disk]]
   ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
 [[inputs.diskio]]
 [[inputs.kernel]]
 [[inputs.mem]]
 [[inputs.processes]]
 [[inputs.swap]]
 [[inputs.system]]
 [[inputs.net]]
 interfaces = ["eth", "enp0s[0-1]", "lo", "wg"]
 [[inputs.conntrack]]
   files = ["ip_conntrack_count","ip_conntrack_max",
            "nf_conntrack_count","nf_conntrack_max"]
   dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"]
 [[inputs.ethtool]]
 interface_include = ["enp2s0"]
 [[inputs.netstat]]
 [[inputs.nstat]]
 [[inputs.internal]]
 [[inputs.interrupts]]
 [[inputs.linux_sysctl_fs]]
 [[inputs.sensors]]
 [[inputs.smart]]
 use_sudo = true
 attributes = true

Gali reikėti pakoreguoti output ip adresą, dabar palikau localhost.

Tada reikės startuoti/perkrauti Telegraf.

sudosystemctl start telegraf 

Taip pat InfluxDB:

sudo systemctl start influxdb 

Grafanoje paspaudžiame Add Data Source ir pasirenkame InfluxDB

Tada prašo suvesti kelis duomenis:

Reikia įvesti URL, tai bus tas adresas kuris nurodytas Telegraf output conf faile, conf faile prievadas yra nurodytas kuriame dirba InfluxDB.

Taip pat riekia nurodyti DB:

Serverių ir sistemų monitoringas - Grafana 3

DB apsirašo telegraf conf faile.

Tada spaudžiame Save & Test ir turi parodyti pranešimą:
Data source is working.

Tada lieka kopijuoti Dashboard id:

Serverių ir sistemų monitoringas - Grafana 4

Ir Grafanoje einame į:

Serverių ir sistemų monitoringas - Grafana 5

Atsidarius Import langui pirmame lange įkeliam tą ID ir tada automatiškai įkelia viską:

Serverių ir sistemų monitoringas - Grafana 6

Tereikia nurodyti InfluxDB telegraf.

Spaudžiame Import ir turi atsirasti statistikos kurios bus pradedamos rinkt nuo šio momento.

Grafanos galimybės

Ką galima nuveikti.

Realiai galimybių yra labai daug, duomenis galima rinkti iš bet ko beveik, dažnai įvairiuose puslapiuose prijungia prie MySQL (prie bet kokios DB ant kuris sukasi puslapis) ir gaunama įvairūs duomenys ką veikia lankytojai, koks srautas ir panašiai.

Galima pasidaryti visų namų dashboard, jog rodytų kur atidarytos durys, ar dega lempos, signalizacija veikia ir panašiai, kitaip sakant smarthouse monitoringas.

Trumpai, ką dar seku

Dėl Mikrotik, naudoju šį Dasboard. Pajungimas gan ilgokas, reikės: Exporter, Prometheus SNMP Exporter, bei Prometheus ir Mikrotik routeryje įjungti SNMP.

Yra ir kitų variantų, bet šis kažkaip geriau startavo pas mane.

Taip pat dar naudoju Haproxy sekimui.

Dar iki galo visko nesusidėjau, bet dar patiko jog įmanoma pasidaryti jog gautum pranešimą jeigu kažkas įvyksta.

Tarkime namie koks sensorius sureaguoja ir tada duodamas pranešimas jog kažkas įvyko.

Įdomi programa, susidėlioti viską gali ir užtrukti, bet finalinis vaizdas labai gražus.


Siūlau prenumeruoti, kaip tai padaryti aprašiau čia (el. paštu, telegram ir discord kanalai, facebook, twitter).



Gal patiks ir kiti įrašai