o tranzacție este orice grup de evenimente legate de conceptual care se întinde pe timp, cum ar fi o serie de evenimente legate de rezervarea online a unei camere de hotel de către un singur client sau un set de evenimente legate de un incident de intruziune firewall. Un tip de tranzacție este o tranzacție configurată, salvată ca câmp și utilizată împreună cu comanda transaction
. Orice număr de surse de date pot genera tranzacții pe mai multe intrări de jurnal.
căutare tranzacție
o căutare tranzacție este utilă pentru o singură observație a oricărui eveniment fizic care se întinde pe mai multe evenimente înregistrate. Utilizați comanda tranzacție pentru a defini o tranzacție sau pentru a suprascrie opțiunile de tranzacție specificate în transactiontypes.conf
.
o utilizare obișnuită a unei căutări de tranzacții este gruparea mai multor evenimente într-un singur meta-eveniment care reprezintă un singur eveniment fizic. De exemplu, o problemă în afara memoriei ar putea declanșa mai multe evenimente din Baza de date care trebuie înregistrate și toate pot fi grupate împreună într-o tranzacție.
pentru a afla mai multe, consultați identificarea și gruparea evenimentelor în tranzacții din acest manual.
Transaction Search example
acest exemplu utilizează datele eșantion din tutorialul de căutare, dar ar trebui să funcționeze cu orice format de Apache Web access log. Pentru a încerca acest exemplu pe propria instanță Splunk, trebuie să descărcați datele eșantion și să urmați instrucțiunile pentru a obține datele tutorial în Splunk. Utilizați intervalul de timp tot timpul când executați căutarea.
acest exemplu caută tranzacții cu același ID de sesiune și aceeași adresă IP. Acest exemplu definește o tranzacție ca un grup de evenimente care au același ID de sesiune, JSESSIONID
și provin de la aceeași adresă IP, clientip
și unde primul eveniment conține șirul, “vizualizare”, iar ultimul eveniment conține șirul, “cumpărare”.
sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | where duration>0
căutarea definește primul eveniment din tranzacție ca evenimente care includ șirul, “vizualizare”, folosind argumentul startswith="view"
. Argumentul endswith="purchase"
face același lucru pentru ultimul eveniment din tranzacție.
acest exemplu apoi conducte tranzacțiile în where
comanda și duration
câmpul pentru a filtra toate tranzacțiile care au luat mai puțin de o secundă pentru a finaliza. Filtrul where
nu poate fi aplicat înainte de comanda transaction
deoarece câmpul duration
este adăugat de comanda transaction
. Valorile din câmpul duration
arată diferența, în secunde, între marcajele de timp pentru primul și ultimul eveniment din tranzacție.
s-ar putea să fiți curioși de ce tranzacțiile au durat mult timp, astfel încât vizualizarea acestor evenimente vă poate ajuta să depanați. Nu veți vedea acest lucru în aceste date, dar unele tranzacții pot dura mult timp, deoarece utilizatorul actualizează și elimină articole din coșul de cumpărături înainte de a finaliza achiziția. În plus, această căutare este rulată peste toate evenimentele. Nu există filtrare înainte de comanda transaction
. Oricând puteți filtra căutarea înainte de prima conductă, cu atât mai repede se execută de căutare.
pentru mai multe exemple, consultați comanda tranzacție.
folosind statistici în loc de tranzacție
atât comanda statistici, cât și comanda tranzacție sunt similare prin faptul că vă permit să agregați evenimente individuale împreună pe baza valorilor câmpului.
comanda stats
este menită să calculeze statistici privind evenimentele grupate pe unul sau mai multe câmpuri și să elimine evenimentele (cu excepția cazului în care utilizați eventstats sau streamstats). Pe de altă parte, cu excepția duratei dintre primul și ultimul eveniment și numărul de evenimente, comanda transaction
nu calculează statistici asupra evenimentelor grupate. În plus, Reține evenimentul brut și alte valori de câmp din evenimentul original și vă permite să grupați evenimente folosind criterii mult mai complexe, cum ar fi limitarea grupării în funcție de intervalul de timp sau întârzieri și solicitarea Termenilor pentru a defini începutul sau sfârșitul unui grup.
comanda transaction
este cea mai utilă în două cazuri specifice:
1. Atunci când un ID unic (din unul sau mai multe câmpuri) singur nu este suficient pentru a discrimina între două tranzacții. Acesta este cazul când identificatorul este reutilizat, de exemplu sesiuni web identificate prin cookie sau IP client. În acest caz, intervalele de timp sau pauzele sunt, de asemenea, utilizate pentru a segmenta datele în tranzacții. În alte cazuri, atunci când un identificator este reutilizat, de exemplu în jurnalele DHCP, un anumit mesaj poate identifica începutul sau sfârșitul unei tranzacții.
2. Când este de dorit să se vadă textul brut al evenimentelor combinate, mai degrabă decât o analiză a câmpurilor constitutive ale evenimentelor.
în alte cazuri, este de obicei mai bine să folosiți comanda stats
, care funcționează mai eficient, în special într-un mediu distribuit. Adesea există un ID unic în evenimente și stats
poate fi utilizat.
de exemplu, pentru a calcula statisticile privind durata tranzacțiilor identificate prin ID-ul unic trade_id
, următoarele căutări vor da același răspuns:
... | transaction trade_id | chart count by duration span=log2
și
... | stats range(_time) as duration by trade_id | chart count by duration span=log2
dacă totuși, valorile trade_id
sunt refolosite, dar fiecare tranzacție se termină cu un text, cum ar fi “END”, singura soluție este să folosiți această căutare transaction
:
... | transaction trade_id endswith=END | chart count by duration span=log2
pe de altă parte, dacă valorile trade_id
sunt refolosite, dar nu într – o durată de 10 minute, soluția este să folosiți următoarea căutare transaction
:
... | transaction trade_id maxpause=10m | chart count by duration span=log2
citiți mai multe despre “despre gruparea și corelarea evenimentelor” într-un capitol anterior din acest manual.
tranzacții și căutare macro
tranzacțiile și căutările macro sunt o combinație puternică care permite substituirea în căutările dvs. de tranzacții. Efectuați o căutare tranzacție și apoi salvați-l cu $field$
pentru a permite substituirea.
pentru un exemplu de utilizare a căutărilor și tranzacțiilor macro, consultați Definirea și utilizarea macrocomenzilor de căutare în manualul Knowledge Manager.