Instalare Graphite sub CentOS Linux 7

Postat la Wed 05 September 2018 in proiecte

Graphite este un adevarat supererou in lume a monitorizarii efectuand doua lucruri doar extarordinar de bine:

  • stocheaza date numerice in serie temporala (numeric time-series data)
  • genereaza grafice din datele stocate

Graphite este format din 3 componente software:

  • carbon - un daemon ce ingereaza metrica primita
  • whisper - librarie pentru stocarea metricii
  • graphite-web - o aplicatie web bazata pe Django ce genereaza graficele utilizand Cairo

In baze de date in serie temporala se stocheaza valori culese in timp. Acestea pot fi de la parametrii de functionare a serverelor, echipamentelor de productie, date meteo, numar de evenimente pe un site - pe care le numim mai simplu metrica.

Metrica poate fi culeasa de diverse aplicatii instalate pe servere dintre care amintesc Collectd , Telegraf, Sensu, Diamond.

Cateva lucruri de luat in seama cand dorim sa realizam un sever intern de Graphite:

  • daemon-ul carbon lucreaza intensiv cu discul, e recomandat ca discul folosit pentru stocare sa nu fie folosit de aplicatii la fel de agresive cu discul. Putem lua in considerare ca acest serviciu sa aibe alocat in intreg server de la un anumit nivel
  • baza de date ocupa spatiu, mult depinzand de numarul de metrici si perioada de stocare (poate fi stocata si ani de zile pentru referinta), deci nu fiti zgarciti cu discurile

O alternativa usoara de a instala Graphite este pe CentOS 7 din repo-ul EPEL (chiar daca nu este ultima versiune). Alternativ il putem instala din surse, via pip sau rula ca container.

Instalarea pachetelor

Instalarea repo-ului EPEL:

yum install -y epel-release

Pachetele necesar de instalat sunt:

yum install -y graphite-web python-carbon httpd mod_wsgi

Configurarea Carbon

Un pas important este configurarea daemon-ului carbon prin stabilirea duratei de retentie a datelor, aflata in /etc/carbon/storage-schemas.conf

[default]
priority = 100
pattern = .*
retentions = 10s:6h,1m:30d,5m:1y

adica se vor stoca in primele 6h valori la fiecare 10 secunde, apoi se face o medie a valorilor la minut pntru urmatoarele 30 zile si la final o medie de 5 minute.

Valorile se stabilesc functie de necesitati si/sau functie metrica pe care o culegem:

[collectd]
priority = 100
pattern = ^collectd\.
retentions = 10s:12h,1m:60d

E importanta stabilirea schemei de stocare inainte de primirea metricilor pentru ca modificarea ulterioara a fisierelor whisper e mai laboriasa fara stergerea lor.

Pornim serviciul carbon:

systemctl start carbon
systemctl enable carbon

Spatiu ocupat de date il puteti estima folosind acest calculator estimand ca puteti avea si peste 300 de metrici pe un server.

Configurarea Graphite

Interfata web foloseste o baza de date pentru stocarea setari, utilizatori, grafice si a dashboard-urilor create. Implicit foloseste Sqlite care in anumite momente cand se salveaza evenimente simultan poate bloca efectiv aplicatia. Reacomand sa luati in considerare utilizarea unei baza de date mai puternice (MySQL/Mariadb/Postgres).

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

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

Modificam in fisierul /etc/graphite-web/settings.py:

SECRET_KEY = 'ceamaisecretacheiedinlume'
....
TIME_ZONE = 'Europe/Bucharest'
....
DATABASES = {
  'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'graphite',
      'USER': 'graphite',
      'PASSWORD': 'graph123',
      'HOST': '127.0.0.1',
      'PORT': '3306',
  }
}

Populam baza de date:

PYTHONPATH=/usr/share/graphite/webapp django-admin syncdb --settings=graphite.settings

Configurarea Apache pentru Graphite

Pentru a putea accesa aplicatia Graphite si din retea trebuie modificata politica de access in fisierul de configurare al serverului web /etc/httpd/conf.d/graphite-web.conf:

<Directory "/usr/share/graphite">
    Require all granted
</Directory>

Repornim serverul web

systemctl restart httpd
systemctl enable httpd

Acum putem accesa interfa la adresa http://ip_server/ iar userul initial este admin/admin

Combinand mai multe grafice puteti crea dashboard-uri care sa va indice sanatatea serviciilor dv.

Documentia oficiala a aplicatiei o puteti consulta aici