transaktio on mikä tahansa ryhmä käsitteellisesti liittyviä tapahtumia, jotka ulottuvat ajalle, kuten sarja tapahtumia, jotka liittyvät hotellihuoneen online-varaukseen yksittäisen asiakkaan toimesta, tai joukko tapahtumia, jotka liittyvät palomuurimurtotapaukseen. Tapahtumatyyppi on määritetty tapahtuma, joka tallennetaan kenttänä ja jota käytetään transaction
– komennon yhteydessä. Mikä tahansa määrä tietolähteitä voi luoda tapahtumia useiden lokimerkintöjen kautta.
Tapahtumahaku
tapahtumahaku on hyödyllinen yksittäisessä havainnoinnissa mistä tahansa fyysisestä tapahtumasta, joka ulottuu useiden kirjattujen tapahtumien yli. Käytä transaction-komentoa määrittääksesi transaktion tai ohittaaksesi transaktion asetukset, jotka on määritelty kohdassa transactiontypes.conf
.
yksi yleinen tapahtumahaun käyttö on ryhmitellä useita tapahtumia yhdeksi metatapahtumaksi, joka edustaa yhtä fysikaalista tapahtumaa. Esimerkiksi muistiongelma voi laukaista useita tietokantatapahtumia kirjattavaksi, ja ne kaikki voidaan ryhmitellä yhteen tapahtumaksi.
lisätietoja on ohjeaiheessa tapahtumien tunnistaminen ja ryhmittely tapahtumiksi tässä käsikirjassa.
Tapahtumahakuesimerkki
tässä esimerkissä käytetään hakuohjelman näytetietoja, mutta sen tulisi toimia missä tahansa Apachen web access-lokin muodossa. Jos haluat kokeilla tätä esimerkkiä omalla Splunk-instanssillasi, sinun on ladattava näytetiedot ja noudatettava ohjeita saadaksesi opetusohjelman tiedot Splunkiin. Käytä aikahaarukkaa koko ajan, kun suoritat haun.
tässä esimerkissä haetaan tapahtumia samalla istuntotunnuksella ja IP-osoitteella. Tässä esimerkissä tapahtuma määritellään ryhmäksi tapahtumia, joilla on sama istuntotunnus, JSESSIONID
, ja jotka tulevat samasta IP-osoitteesta, clientip
, ja joissa ensimmäinen tapahtuma sisältää merkkijonon, “view”, ja viimeinen tapahtuma sisältää merkkijonon,”purchase”.
sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | where duration>0
haku määrittelee tapahtuman ensimmäisen tapahtuman tapahtumiksi, jotka sisältävät merkkijonon, “view”, käyttäen startswith="view"
– argumenttia. endswith="purchase"
argumentti tekee saman tapahtuman viimeiselle tapahtumalle.
tässä esimerkissä tapahtumat liitetään sitten where
– komentoon ja duration
– kenttään, jotta kaikki tapahtumat, joiden suorittaminen kesti alle sekunnin, voidaan suodattaa pois. where
– suodatinta ei voi käyttää ennen transaction
– komentoa, koska duration
– kenttä lisätään transaction
– komennolla. duration
– kentän arvot osoittavat tapahtuman ensimmäisen ja viimeisen tapahtuman aikaleimojen välisen eron sekunteina.
saatat olla utelias tietämään, miksi tapahtumat kestivät kauan, joten näiden tapahtumien katselu voi auttaa sinua vianmäärityksessä. Et näe sitä näissä tiedoissa, mutta jotkut tapahtumat voivat kestää kauan, koska käyttäjä päivittää ja poistaa tuotteita ostoskoristaan ennen kuin hän suorittaa ostoksen. Lisäksi etsinnät käydään läpi kaikissa tapahtumissa. Komentoa transaction
edeltävää suodatusta ei ole. Aina kun voit suodattaa haun ennen ensimmäistä putkea, sitä nopeammin haku suoritetaan.
lisää esimerkkejä on kohdassa transaction-komento.
käyttämällä tilastoja tapahtuman sijaan
sekä stats-komento että transaction-komento ovat samankaltaisia, koska niiden avulla voidaan aggregoida yksittäisiä tapahtumia yhteen kentän arvojen perusteella.
stats
komennolla on tarkoitus laskea tilastot tapahtumista yhden tai useamman kentän mukaan ja hylätä tapahtumat (ellet käytä eventstatsia tai streamstatsia). Toisaalta lukuun ottamatta ensimmäisen ja viimeisen tapahtuman välistä kestoa ja tapahtumien lukumäärää, komennossa transaction
ei lasketa tilastoja ryhmitellyistä tapahtumista. Lisäksi se säilyttää raa ‘ an tapahtuman ja muut kentän arvot alkuperäisestä tapahtumasta ja mahdollistaa tapahtumien ryhmittelyn paljon monimutkaisemmilla kriteereillä, kuten rajoittamalla ryhmittelyä aikajänteellä tai viiveillä ja vaatimalla ehtoja määrittelemään ryhmän alun tai lopun.
transaction
– komento on hyödyllisin kahdessa erityistapauksessa:
1. Kun yksilöllinen tunniste (yhdestä tai useammasta kentästä) ei yksin riitä erottamaan kahta tapahtumaa toisistaan. Näin on silloin, kun tunnistetta käytetään uudelleen, esimerkiksi evästeen tai asiakkaan IP: n tunnistamat web-istunnot. Tässä tapauksessa aikajänteitä tai taukoja käytetään myös datan jakamiseen transaktioihin. Muissa tapauksissa, kun tunnistetta käytetään uudelleen, esimerkiksi DHCP-lokeissa, tietty viesti voi tunnistaa tapahtuman alun tai lopun.
2. Kun on toivottavaa nähdä raakatekstin tapahtumien yhdistetty pikemminkin kuin analyysi, joka koostuu aloilla tapahtumia.
muissa tapauksissa on yleensä parempi käyttää stats
– komentoa, joka toimii tehokkaammin etenkin hajautetussa ympäristössä. Usein tapahtumissa on yksilöivä tunnus ja stats
voidaan käyttää.
esimerkiksi yksilöidyllä tunnisteella trade_id
yksilöityjen kauppojen kestoa koskevien tilastojen laskemiseen saadaan sama vastaus seuraavista hauista:
... | transaction trade_id | chart count by duration span=log2
ja
... | stats range(_time) as duration by trade_id | chart count by duration span=log2
Jos kuitenkin trade_id
arvot käytetään uudelleen, mutta jokainen kauppa päättyy johonkin tekstiin, kuten “loppuun”, ainoa ratkaisu on käyttää tätä transaction
hakua:
... | transaction trade_id endswith=END | chart count by duration span=log2
toisaalta, jos trade_id
arvoja käytetään uudelleen, mutta ei 10 minuutin kuluessa, ratkaisu on käyttää seuraavaa transaction
hakua:
... | transaction trade_id maxpause=10m | chart count by duration span=log2
Lue lisää “tietoja tapahtuma ryhmittely ja korrelaatio” aiemmassa luvussa tämän oppaan.
transaktiot ja makrohaku
transaktiot ja makrohaut ovat tehokas yhdistelmä, joka mahdollistaa korvaamisen tapahtumahauissa. Tee tapahtumahaku ja tallenna se sitten koodilla $field$
, jotta se voidaan korvata.
esimerkki makrohakujen ja tapahtumien käytöstä on Knowledge managerin Käsikirjassa Hakumakrojen määrittely ja käyttö.