
Što je prijava?
Recimo da razvijate softverski proizvod. Radi na daljinu, komunicira s različitim uređajima, prikuplja podatke od senzora i pruža uslugu korisniku. Jednog dana nešto pođe po zlu i sustav ne radi kako se očekivalo. Možda ne identificira uređaje ili ne prima nikakve podatke od senzora ili je možda upravo dobio pogrešku u izvođenju zbog pogreške u kodu. Kako možete sa sigurnošću znati?
Sad, zamislite postoje li kontrolne točke u kodu sustava, ako ih sustav vrati neočekivani rezultat, jednostavno ga označi i obavijesti programera. Ovo je koncept sječe.
Zapisivanje omogućuje programerima da razumiju što kod zapravo radi i kakav je tijek rada. Veliki dio života programera prati nadgledanje, rješavanje problema i uklanjanje pogrešaka. Zapisivanje podataka čini ovaj postupak mnogo lakšim i glatkim.
Vizualizacija dnevnika

Ako ste stručni programer koji već duže vrijeme razvija i izrađuje softver, pomislili biste da prijava nije velika stvar i većina našeg koda uključena je u Debug.Log('____')
izjavu. Pa, to je sjajno, ali postoje neki drugi aspekti bilježenja koje možemo iskoristiti.
Vizualizacija određenih evidentiranih podataka ima sljedeće prednosti:
- Daljinski nadgledajte rad sustava.
- Jasno i učinkovito komunicirajte informacijama putem statističkih grafika, grafikona i grafičkih podataka.
- Izvucite znanje iz podataka vizualiziranih u obliku različitih grafikona.
- Poduzmite potrebne radnje za poboljšanje sustava.
Postoji nekoliko načina na koje možemo vizualizirati sirove podatke. Postoji niz knjižnica u programskim jezicima Python i R koje mogu pomoći u crtanju grafova. Više o tome možete saznati ovdje . Ali u ovom postu neću raspravljati o gore spomenutim metodama. Jeste li ikada čuli za ELK stog ?
ELK stog
E - Elasticsearch , L - Logstash , K - Kibana
Dopustite mi da dam kratki uvod u to. Skup ELK zbirka je od tri softvera s otvorenim kodom koji pomažu u pružanju uvida u stvarnom vremenu o podacima koji mogu biti strukturirani ili nestrukturirani. Podaci se mogu pretraživati i analizirati pomoću njegovih alata s iznimnom lakoćom i učinkovito.
Elasticsearch je distribuirani RESTful motor za pretraživanje i analitiku sposoban riješiti sve veći broj slučajeva korištenja. Kao srce Elastičnog stoga, on centralno pohranjuje vaše podatke kako biste mogli otkriti očekivano i otkriti neočekivano. Elasticsearch omogućuje vam izvođenje i kombiniranje mnogih vrsta pretraživanja - strukturiranih, nestrukturiranih, geo, metričkih itd. Izgrađen je na programskom jeziku Java, što omogućava Elasticsearchu da radi na različitim platformama. Omogućuje korisnicima istraživanje vrlo velike količine podataka vrlo velikom brzinom.
Logstash je cjevovod za obradu podataka otvorenog koda na strani poslužitelja koji istovremeno unosi podatke iz mnoštva izvora, transformira ih, a zatim šalje na vašu omiljenu "zalihu" (poput Elasticsearch). Podaci se često rasipaju ili preklapaju po mnogim sustavima u mnogim formatima. Logstash podržava razne ulaze koji istodobno povlače događaje iz mnoštva zajedničkih izvora. Jednostavno unesite podatke iz svojih dnevnika, mjernih podataka, web aplikacija, pohrane podataka i raznih AWS usluga, sve u kontinuiranom, streaming načinu. Logstash ima okvir koji se može priključiti i sadrži preko 200 dodataka. Pomiješajte, uskladite i orkestrirajte različite ulaze, filtre i izlaze kako biste radili u harmoniji cjevovoda.
Kibana je platforma za analitiku i vizualizaciju otvorenog koda dizajnirana za rad s Elasticsearchom. Koristite Kibana za pretraživanje, pregled i interakciju s podacima pohranjenim u indeksima Elasticsearch. Možete jednostavno izvršiti naprednu analizu podataka i vizualizirati svoje podatke na raznim grafikonima, tablicama i kartama. Kibana olakšava razumijevanje velikih količina podataka. Jednostavno sučelje temeljeno na pregledniku omogućuje vam brzo stvaranje i dijeljenje dinamičkih nadzornih ploča koje u stvarnom vremenu prikazuju promjene u upitima Elasticsearch.
Da biste dobili bolju sliku tijeka rada o tome kako tri softvera međusobno djeluju, pogledajte sljedeći dijagram:

Provedba
Prijava u Python
Ovdje sam odlučio objasniti implementaciju zapisivanja u Python jer je to najčešće korišteni jezik za projekte koji uključuju komunikaciju između više računala i interneta stvari. Pomoći će vam da dobijete opću ideju o tome kako to funkcionira.
Python nudi sustav evidentiranja kao dio svoje standardne knjižnice, tako da možete brzo dodati prijavu u svoju aplikaciju.
import logging
U Pythonu se zapisivanje može izvršiti na 5 različitih razina koje svaka označavaju vrstu događaja. Postoje sljedeće:
- Informacije - Označava informativne poruke koje ističu napredak aplikacije na gruboj razini.
- Otklanjanje pogrešaka - Označava sitnozrnate informativne događaje koji su najkorisniji za uklanjanje pogrešaka u aplikaciji.
- Upozorenje - Označava potencijalno štetne situacije.
- Pogreška - Označava događaje pogreške koji još uvijek mogu omogućiti aplikaciji da se izvodi.
- Kritično - Označava vrlo ozbiljne događaje pogreške zbog kojih će aplikacija vjerojatno prekinuti.
Stoga, ovisno o problemu koji treba zabilježiti, koristimo definiranu razinu u skladu s tim.
Napomena : Informacije i otklanjanje pogrešaka ne zadaju se prema zadanim postavkama, jer se zapisuju samo zapisi upozorenja i više.Da bih dao primjer i stvorio skup izjava dnevnika za vizualizaciju, stvorio sam Python skriptu koja bilježi izjave određenog formata i poruke.
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')
Ovdje će se izrazi dnevnika dodati datoteci pod nazivom logFile.txt u navedenom formatu. Izvodio sam skriptu tri dana u različitim vremenskim intervalima stvarajući datoteku koja je nasumično sadržavala zapisnike kao dolje:
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
Postavljanje Elasticsearch-a, Logstasha i Kibane
Prvo preuzmimo tri softvera s otvorenim kodom s njihovih veza [elasticsearch], [logstash] i [kibana]. Raspakirajte datoteke i stavite sve tri u mapu projekta.
Započnimo.
Korak 1 - Postavite Kibana i Elasticsearch na lokalni sustav. Kibanu pokrećemo slijedećom naredbom u bin mapi Kibane.
bin\kibana
Slično tome, Elasticsearch je postavljen ovako:
bin\elasticsearch
Sada u dva odvojena terminala možemo vidjeti kako rade oba modula. Da bi se provjerilo rade li usluge otvoreni localhost: 5621 i localhost: 9600 .
Nakon što su obje usluge uspješno pokrenute, koristimo programe Logstash i Python za raščlanjivanje sirovih podataka dnevnika i njihovo usmjeravanje u Elasticsearch od kojeg Kibana traži podatke.
Step 2— Now let’s get on with Logstash. Before starting Logstash, a Logstash configuration file is created in which the details of input file, output location, and filter methods are specified.
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} }
This configuration file plays a major role in the ELK stack. Take a look at filter{grok{…}} line. This is a Grok filter plugin. Grok is a great way to parse unstructured log data into something structured and queryable. This tool is perfect for syslog logs, apache and other webserver logs, mysql logs, and in general, any log format that is generally written for humans and not computer consumption. This grok pattern mentioned in the code tells Logstash how to parse each line entry in our log file.
Now save the file in Logstash folder and start the Logstash service.
bin\logstash –f logstash-simple.conf
Da biste saznali više o konfiguriranju logstasha, kliknite [
ovdje ].
Korak 3 - Nakon toga raščlanjeni podaci iz datoteka dnevnika bit će dostupni u Kibana managementu na localhost: 5621 za izradu različitih vizuala i nadzornih ploča. Da biste provjerili prima li Kibana podatke, na kartici za upravljanje Kibane pokrenite sljedeću naredbu:
localhost:9200/_cat/indices?v
Ovo će prikazati sve indekse. Za svaku vizualizaciju, novi indeksni obrazac mora se odabrati iz alata za razvoj, nakon čega se koriste razne tehnike vizualizacije za stvaranje nadzorne ploče.
Nadzorna ploča pomoću Kibane
Nakon što ste sve postavili, sada je vrijeme za stvaranje grafikona kako biste vizualizirali podatke dnevnika.
After opening the Kibana management homepage, we will be asked to create a new index pattern. Enter index_name*
in the Index pattern field and select @timestamp in the Time Filter field name dropdown menu.

Now to create graphs, we go to the Visualize tab.
Select a new visualisation, choose a type of graph and index name, and depending on your axis requirements, create a graph. We can create a histogram with y-axis as the count and x-axis with the log-level keyword or the timestamp.

After creating a few graphs, we can add all the required visualisations and create a Dashboard, like below:

Završavati
Zapisivanje može biti pomoć u borbi protiv pogrešaka i programima za uklanjanje pogrešaka umjesto korištenja ispisa. Modul zapisivanja dijeli poruke prema različitim razinama. To rezultira boljim razumijevanjem koda i kako tijek poziva prolazi bez prekida programa.
Vizualizacija podataka nužan je korak u situacijama kada se svaki trenutak generira ogromna količina podataka. Alati i tehnike za vizualizaciju podataka nude rukovoditeljima i ostalim radnicima znanja nove pristupe kojima se dramatično poboljšava sposobnost shvaćanja podataka koji se kriju u njihovim podacima. Brza identifikacija dnevnika pogrešaka, lako razumijevanje podataka i visoko prilagodljivi vizuali podataka neke su od prednosti. To je jedan od najkonstruktivnijih načina organiziranja sirovih podataka.
Za daljnje reference možete se pozvati na službenu ELK dokumentaciju odavde - //www.elastic.co/learn i na prijavu u python - //docs.python.org/2/library/logging.html