Utilizare Grafana ca interfata pentru Graphite

Postat la Tue 25 September 2018 in proiecte

In ultimii ani Graphite a fost utilizat cu success de multe firme pentru stocarea si vizualiza metricilor culese de la echipamente sau aplicatii.

Utilizatorii si-au dorit o interfata mai moderna, mai usor de utilizat si navigat in comparatie cu interfata standard Graphite scrisa in Django.

Ca raspuns la aceste cerinte exprimate in comuninate a aparut proiectul Grafana care: - pemite o mai usoara generare a graficelor in mai multe moduri, - creare de dashboard-uri facil folosind sabloane si variabile, - alertarea in functie de reguli prestabilite a utilizatorilor pe o multime de cai: Email, Slack, Webhook - permite distribuirea lor facila

Pe langa Graphite , Grafana permite preluarea datelor din peste 30 de surse de date ca InfluxDB, Prometheus, Elasticsearch, AWS nativ sau prin plugin-uri (pe care le gasiti pe pe site-ul aplicatiei)

Instalarea pe CentOS/Fedora

Creem fisierul de repo /etc/yum.repos.d/grafana.repo:

[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Instalam pachetul

yum install grafana

Instalarea pe Ubuntu

Creem un fisier pentru configurarea repo-ului in /etc/apt/sources.list.d/grafana

deb https://packagecloud.io/grafana/stable/debian/ stretch main

Adaugam cheia pentru verificarea semnaturii pachetelor:

curl https://packagecloud.io/gpg.key | sudo apt-key add -

Instalam aplicatia:

sudo apt update
sudo apt install grafana

Configurare

Implicit Grafana foloseste pe Sqlite3 pentru stocarea informatiilor intr-un fisier, dar eu va recomand sa utilizati salvarea datelor intr-o baza de date (MySQL, Postgress). Pentru MySQL parcurgem pasii:

In MySQL creem un utilzator si o baza de date dedicata:

create database grafana;
create user grafana;
grant all on grafana.* to 'graphite'@'localhost' identified by 'grafanasecret';
flush privileges;

In fisierul /etc/grafana/grafana.ini facem modificarile:

[database]
# Either "mysql", "postgres" or "sqlite3", it's your choice
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password = grafanasecret

Alte setari legate de adresa, portul pe care va rula aplicatia (implicit 3000) cat si legate de securitate le puteti seta in acelasi fisier.

Pornim serviciul grafana-server:

systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server

Pentru prima logare ca administrator utilizati userul si parola admin (ori ce ati configurat in fisierul de setari).

Configuram in setari Graphite ca sursa de date:

Crearea graficelor

Creem un nou dashboard si selectam Graph

Tinand cont de structura dub care sunt salvate metricele in Graphite, selectam metricele dorite la care putem aplica functii de transforma: alias, sum, max. (mai multe gasiti in documentatia de la Graphite aici)

Putem creea alerte pentru metricile din graficelor. Alertele pot fi trimise pe email, Slack (nu uitati sa configurati aceste servicii).

Grafic cu grafic putem construi dashboard-uri ce pot oferi informatii live asupra uni server sau mai multe servere.

Alternativ puteti importa o varietate mare de dashboard-uri create de comunitate direct de pe site