de Ritvik Khanna

Cum se utilizează Elasticsearch, Logstash și Kibana pentru a vizualiza jurnalele în Python în timp real

Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza
sursă

Ce este logarea?

Să presupunem că dezvoltați un produs software. Funcționează de la distanță, interacționează cu diferite dispozitive, colectează date de la senzori și oferă un serviciu utilizatorului. Într-o zi, ceva nu merge bine și sistemul nu funcționează așa cum era de așteptat. Este posibil să nu identifice dispozitivele sau să nu primească date de la senzori sau s-ar putea să fi obținut o eroare de rulare din cauza unei erori în cod. Cum poți ști sigur?

Acum, imaginați-vă dacă există puncte de control în codul de sistem în care, dacă sistemul returnează un rezultat neașteptat, îl semnalizează pur și simplu și anunță dezvoltatorul. Acesta este conceptul de exploatare forestieră.

Logarea permite dezvoltatorilor să înțeleagă ce face codul și cum este fluxul de lucru. O mare parte din viața dezvoltatorilor de software este monitorizarea, depanarea și depanarea. Înregistrarea face acest lucru un proces mult mai ușor și mai ușor.

Vizualizarea jurnalelor

Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza
sursă

Acum, dacă sunteți un dezvoltator expert care dezvoltă și creează software de ceva vreme, atunci ați crede că înregistrarea în jurnal nu este o problemă importantă, iar majoritatea codului nostru este inclus în Debug.Log('____') afirmație. Ei bine, este minunat, dar există și alte aspecte ale jurnalizării pe care le putem folosi.

Vizualizarea datelor specifice înregistrate are următoarele avantaje:

  • Monitorizați operațiunile sistemului de la distanță.
  • Comunicați informațiile în mod clar și eficient prin intermediul graficelor statistice, graficelor și graficelor informaționale.
  • Extrageți cunoștințe din datele vizualizate sub formă de grafice diferite.
  • Luați măsurile necesare pentru a îmbunătăți sistemul.

Există mai multe moduri în care putem vizualiza datele brute. Există un număr de biblioteci în limbajele de programare Python și R care pot ajuta la trasarea graficelor. Puteți afla mai multe despre asta Aici. Dar în această postare, nu voi discuta despre metodele menționate mai sus. Ai auzit vreodată despre Stiva ELK?

Stiva ELK

E – Elasticsearch, L – Logstash, K – Kibana

Permiteți-mi să vă fac o scurtă introducere. Stiva ELK este o colecție de trei programe open source care vă ajută să oferiți informații în timp real despre date care pot fi structurate sau nestructurate. Se poate căuta și analiza date folosind instrumentele sale cu o ușurință extremă și eficient.

Elasticsearch este un motor de căutare și analiză distribuit, RESTful capabil să rezolve un număr tot mai mare de cazuri de utilizare. Fiind inima Elastic Stack, vă stochează în mod centralizat datele, astfel încât să puteți descoperi ceea ce așteptați și să descoperiți neașteptatul. Elasticsearch vă permite să efectuați și să combinați mai multe tipuri de căutări – structurate, nestructurate, geo, metrice etc. Este construit pe un limbaj de programare Java, care permite Elasticsearch să ruleze pe diferite platforme. Permite utilizatorilor să exploreze cantități foarte mari de date la viteză foarte mare.

Logstash este o conductă open source, de prelucrare a datelor de la server, care ingeră date dintr-o multitudine de surse simultan, le transformă și apoi le trimite către „stash-ul” dvs. preferat (cum ar fi Elasticsearch). Datele sunt adesea împrăștiate sau închise în mai multe sisteme în mai multe formate. Logstash acceptă o varietate de intrări care atrag evenimente dintr-o multitudine de surse comune, toate în același timp. Ingerează cu ușurință din jurnalele, valorile, aplicațiile web, magazinele de date și diverse servicii AWS, totul în mod continuu, în flux. Logstash are un cadru conectabil care conține peste 200 de pluginuri. Se amestecă, se potrivește și se orchestrează diferite intrări, filtre și ieșiri pentru a funcționa în armonie.

Kibana este o platformă de analiză și vizualizare open source concepută pentru a lucra cu Elasticsearch. Folosiți Kibana pentru a căuta, vizualiza și interacționa cu datele stocate în indicii Elasticsearch. Puteți efectua cu ușurință o analiză avansată a datelor și vă puteți vizualiza datele într-o varietate de diagrame, tabele și hărți. Kibana facilitează înțelegerea volumelor mari de date. Interfața sa simplă, bazată pe browser, vă permite să creați și să partajați rapid tablouri de bord dinamice care afișează modificările la interogările Elasticsearch în timp real.

Pentru a obține o imagine mai bună a fluxului de lucru al modului în care cele trei software interacționează între ele, consultați următoarea diagramă:

Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza
sursă

Implementare

Conectare în Python

Aici, am ales să explic implementarea înregistrării în Python, deoarece este cel mai utilizat limbaj pentru proiectele care implică comunicarea între mai multe mașini și internetul obiectelor. Vă va ajuta să vă faceți o idee generală despre cum funcționează.

Python oferă un sistem de înregistrare ca parte a bibliotecii sale standard, astfel încât să puteți adăuga rapid înregistrarea în aplicație.

import logging

În Python, înregistrarea se poate face la 5 niveluri diferite, fiecare indicând respectiv tipul de eveniment. Există următoarele:

  • Informații – Desemnează mesaje informative care evidențiază progresul aplicației la nivel de grosime.
  • Depanare – Desemnează evenimente informaționale cu granulație fină, care sunt cele mai utile pentru depanarea unei aplicații.
  • Avertizare – Desemnează situații potențial dăunătoare.
  • Eroare – Desemnează evenimente de eroare care ar putea permite aplicației să ruleze în continuare.
  • Critic – Desemnează evenimente de eroare foarte severe care probabil vor duce aplicația la avort.

Prin urmare, în funcție de problema care trebuie înregistrată, vom utiliza nivelul definit în consecință.

Notă: Informațiile și Depanarea nu sunt înregistrate în mod implicit, deoarece sunt înregistrate jurnalele de numai nivel Avertisment și mai sus.

Acum, pentru a da un exemplu și a crea un set de instrucțiuni de jurnal pentru a le vizualiza, am creat un script Python care înregistrează instrucțiuni de format specific și un mesaj.

import logging
import random

logging.basicConfig(filename="logFile.txt",
                    filemode="a",
                    format="%(asctime)s %(levelname)s-%(message)s",
                    datefmt="%Y-%m-%d %H:%M:%S")
for i in xrange(0,15):
    x=random.randint(0,2)
    if(x==0):
        logging.warning('Log Message')
    elif(x==1):
        logging.critical('Log Message')
    else:
        logging.error('Log Message')
log_gen.py

Aici, declarațiile jurnal vor fi atașate la un fișier numit logFile.txt în formatul specificat. Am rulat scriptul timp de trei zile la intervale de timp diferite, creând un fișier care conține jurnale la întâmplare, cum ar fi mai jos:

2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
logFile.txt

Configurarea Elasticsearch, Logstash și Kibana

La început, să descărcăm cele trei programe open source de pe linkurile lor respective [elasticsearch],[logstash]și[kibana]. Dezarhivați fișierele și puneți-le pe toate trei în folderul proiectului.

Să începem.

Pasul 1 – Configurați Kibana și Elasticsearch pe sistemul local. Rulăm Kibana cu următoarea comandă în folderul bin al Kibana.

binkibana

În mod similar, Elasticsearch este configurat astfel:

binelasticsearch

Acum, în cele două terminale separate putem vedea ambele module care rulează. Pentru a verifica dacă serviciile rulează deschise localhost: 5621 și localhost: 9600.

După ce ambele servicii rulează cu succes, folosim programele Logstash și Python pentru a analiza datele brute ale jurnalului și a le canaliza către Elasticsearch din care Kibana interogă date.

Pasul 2– Acum să începem cu Logstash. Înainte de a porni Logstash, este creat un fișier de configurare Logstash în care sunt specificate detaliile fișierului de intrare, locația de ieșire și metodele de filtrare.

input{
 file{
 path => "full/path/to/log_file/location/logFile.txt"
 start_position => "beginning"
 }
}
filter
{
 grok{
 match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level}-%{GREEDYDATA:message}"}
 }
    date {
    match => ["timestamp", "ISO8601"]
  }
}
output{
 elasticsearch{
 hosts => ["localhost:9200"]
 index => "index_name"}
stdout{codec => rubydebug}
}
logstash-simple.conf

Acest fișier de configurare joacă un rol major în stiva ELK. Aruncăm o privire la filtru {grok {…}} linia. Acesta este un plugin pentru filtru Grok. Grok este o modalitate excelentă de a analiza datele de jurnal nestructurate în ceva structurat și interogabil. Acest instrument este perfect pentru jurnalele syslog, apache și alte jurnale de server web, jurnalele mysql și, în general, orice format de jurnal care este scris în general pentru oameni și nu pentru consumul computerului. Acest model grok menționat în cod îi spune Logstash cum să analizeze fiecare intrare de linie din fișierul nostru jurnal.

Acum salvați fișierul în folderul Logstash și porniți serviciul Logstash.

binlogstash –f logstash-simple.conf

Pentru a afla mai multe despre configurarea logstash-ului, faceți clic pe [here].

Pasul 3 – După aceasta, datele analizate din fișierele jurnal vor fi disponibile în managementul Kibana la localhost: 5621 pentru a crea diferite imagini și tablouri de bord. Pentru a verifica dacă Kibana primește date, în fila de gestionare a Kibana executați următoarea comandă:

localhost:9200/_cat/indices?v

Aceasta va afișa toți indexurile. Pentru fiecare vizualizare, trebuie selectat un nou model de index din instrumentele de dezvoltare, după care sunt utilizate diverse tehnici de vizualizare pentru a crea un tablou de bord.

Tablou de bord folosind Kibana

După ce ați configurat totul, acum este timpul să creați grafice pentru a vizualiza datele jurnalului.

După deschiderea paginii de start a managementului Kibana, ni se va cere să creăm un nou model de index. introduce index_name* în Câmpul modelului indexului și selectați @timestamp-ul în Câmpul Filtru de timp meniul derulant nume.

1612104791 331 Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza

Acum, pentru a crea grafice, mergem la Vizualizați filă.

Selectați o vizualizare nouă, alegeți un tip de grafic și numele indexului și, în funcție de cerințele axei, creați un grafic. Putem crea o histogramă cu axa y dupa cum numara și axa x cu cuvânt cheie la nivel de jurnal sau timestamp-ul.

Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza
Crearea unui grafic

După crearea câtorva grafice, putem adăuga toate vizualizările necesare și putem crea un Bord, ca mai jos:

1612104793 550 Cum se utilizeaza Elasticsearch Logstash si Kibana pentru a vizualiza

Notă – Ori de câte ori jurnalele din fișierul jurnal sunt actualizate sau adăugate la jurnalele anterioare, atâta timp cât cele trei servicii rulează datele din elasticsearch și graficele din kibana se vor actualiza automat în funcție de noile date.

Înfășurându-se

Înregistrarea poate fi un ajutor în combaterea erorilor și a programelor de depanare în loc să utilizați o declarație de tipărire. Modulul de înregistrare împarte mesajele în funcție de niveluri diferite. Acest lucru are ca rezultat o mai bună înțelegere a codului și a modului în care fluxul de apeluri merge fără a întrerupe programul.

Vizualizarea datelor este un pas necesar în situațiile în care se generează o cantitate imensă de date în fiecare moment. Instrumentele și tehnicile de vizualizare a datelor oferă directorilor și altor angajați ai cunoștințelor noi abordări pentru a-și îmbunătăți dramatic capacitatea de a înțelege informațiile ascunse în datele lor. Identificarea rapidă a jurnalelor de erori, înțelegerea ușoară a datelor și vizualizarea datelor foarte personalizabile sunt unele dintre avantaje. Este unul dintre cele mai constructive modalități de organizare a datelor brute.

Pentru referințe suplimentare, puteți consulta documentația oficială ELK de aici – https://www.elastic.co/learn și la conectarea în python – https://docs.python.org/2/library/logging.html