Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Strwythuro data anstrwythuredig gyda GROK

Os ydych chi'n defnyddio'r stac Elastic (ELK) a bod gennych ddiddordeb mewn mapio logiau Logstash wedi'u teilwra i Elasticsearch, yna mae'r swydd hon ar eich cyfer chi.

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Mae stac ELK yn acronym ar gyfer tri phrosiect ffynhonnell agored: Elasticsearch, Logstash a Kibana. Gyda'i gilydd maent yn ffurfio llwyfan rheoli logiau.

  • Elastig yn system chwilio a dadansoddi.
  • Logstash yn biblinell prosesu data ochr y gweinydd sy'n amlyncu data o ffynonellau lluosog ar yr un pryd, yn ei drawsnewid, ac yna'n ei anfon i β€œstash” fel Elasticsearch.
  • Kibana yn galluogi defnyddwyr i ddelweddu data gan ddefnyddio siartiau a graffiau yn Elasticsearch.

Beats Daeth yn ddiweddarach ac mae'n gludwr data ysgafn. Trawsnewidiodd cyflwyniad Beats yr Elk Stack yn Stac Elastig, ond nid dyna'r pwynt.

Mae'r erthygl hon yn ymwneud Γ’ Grok, sy'n nodwedd yn Logstash a all drawsnewid eich logiau cyn iddynt gael eu hanfon i'r stash. At ein dibenion ni, dim ond am brosesu data o Logstash i Elasticsearch y byddaf yn siarad.

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Hidlydd y tu mewn i Logstash yw Grok a ddefnyddir i ddosrannu data anstrwythuredig yn rhywbeth strwythuredig y gellir ei ymholi. Mae'n eistedd ar ben mynegiant rheolaidd (regex) ac yn defnyddio patrymau testun i gyd-fynd Γ’ llinynnau mewn ffeiliau log.

Fel y gwelwn yn yr adrannau canlynol, mae defnyddio Grok yn gwneud gwahaniaeth mawr o ran rheoli logiau yn effeithlon.

Heb Grok mae eich data log yn anstrwythuredig

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Heb Grok, pan anfonir logiau o Logstash i Elasticsearch a'u rendro yn Kibana, dim ond yng ngwerth y neges y maent yn ymddangos.

Mae cwestiynu gwybodaeth ystyrlon yn y sefyllfa hon yn anodd oherwydd bod yr holl ddata log yn cael ei storio mewn un allwedd. Byddai'n well pe bai'r negeseuon log wedi'u trefnu'n well.

Data distrwythur o logiau

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

Os edrychwch yn ofalus ar y data crai, fe welwch ei fod mewn gwirionedd yn cynnwys gwahanol rannau, pob un wedi'i wahanu gan ofod.

Ar gyfer datblygwyr mwy profiadol, mae'n debyg y gallwch chi ddyfalu beth mae pob un o'r rhannau yn ei olygu a beth yw'r neges log honno o'r alwad API. Amlinellir cyflwyniad pob eitem isod.

Golwg strwythuredig ar ein data

  • localhost == amgylchedd
  • GET == dull
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == statws_ymateb
  • 46ms == amser ymateb
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Fel y gwelwn mewn data strwythuredig, mae yna drefn ar gyfer logiau distrwythur. Y cam nesaf yw prosesu meddalwedd data crai. Dyma lle mae Grok yn disgleirio.

Templedi Grok

Templedi Grok adeiledig

Daw Logstash gyda dros 100 o dempledi adeiledig ar gyfer strwythuro data anstrwythuredig. Dylech bendant fanteisio ar hyn pryd bynnag y bo modd ar gyfer syslogs cyffredinol fel apache, linux, haproxy, aws ac yn y blaen.

Fodd bynnag, beth sy'n digwydd pan fydd gennych logiau arfer fel yn yr enghraifft uchod? Rhaid i chi adeiladu eich templed Grok eich hun.

Templedi Grok Custom

Mae'n rhaid i chi geisio adeiladu eich templed Grok eich hun. Defnyddiais i Grok Dadfygiwr ΠΈ Patrymau Grok.

Sylwch fod cystrawen templed Grok fel a ganlyn: %{SYNTAX:SEMANTIC}

Y peth cyntaf wnes i geisio ei wneud oedd mynd i'r tab Darganfod yn y dadfygiwr Grok. Roeddwn i'n meddwl y byddai'n cΕ΅l pe gallai'r offeryn hwn gynhyrchu patrwm Grok yn awtomatig, ond nid oedd yn rhy ddefnyddiol gan mai dim ond dwy gΓͺm y daeth o hyd iddynt.

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Gan ddefnyddio'r darganfyddiad hwn, dechreuais greu fy nhempled fy hun yn y dadfygiwr Grok gan ddefnyddio'r gystrawen a geir ar dudalen Elastic Github.

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Ar Γ΄l chwarae o gwmpas gyda gwahanol gystrawenau, roeddwn o'r diwedd yn gallu strwythuro'r data log y ffordd roeddwn i eisiau.

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Cyswllt Dadfygiwr Grok https://grokdebug.herokuapp.com/

Testun gwreiddiol:

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

patrwm:

%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}

Beth ddigwyddodd yn y diwedd

{
  "environment": [
    [
      "localhost"
    ]
  ],
  "method": [
    [
      "GET"
    ]
  ],
  "url": [
    [
      "/v2/applink/5c2f4bb3e9fda1234edc64d"
    ]
  ],
  "response_status": [
    [
      "400"
    ]
  ],
  "BASE10NUM": [
    [
      "400"
    ]
  ],
  "response_time": [
    [
      "46ms"
    ]
  ],
  "user_id": [
    [
      "5bc6e716b5d6cb35fc9687c0"
    ]
  ]
}

Gyda thempled Grok a data wedi'i fapio mewn llaw, y cam olaf yw ei ychwanegu at Logstash.

Yn diweddaru'r ffeil ffurfweddu Logstash.conf

Ar y gweinydd lle gosodoch chi'r pentwr ELK, ewch i'r ffurfweddiad Logstash:

sudo vi /etc/logstash/conf.d/logstash.conf

Gludwch y newidiadau.

input { 
  file {
    path => "/your_logs/*.log"
  }
}
filter{
  grok {
    match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
  }
}
output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
  }
}

Ar Γ΄l arbed eich newidiadau, ailgychwynwch Logstash a gwiriwch ei statws i sicrhau ei fod yn dal i weithio.

sudo service logstash restart
sudo service logstash status

Yn olaf, er mwyn sicrhau bod y newidiadau wedi dod i rym, Gwnewch yn siΕ΅r eich bod chi'n diweddaru'ch mynegai Elasticsearch ar gyfer Logstash yn Kibana!

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Gyda Grok, mae eich data log wedi'i strwythuro!

Awgrymiadau a thriciau ar gyfer trosi data distrwythur o logiau i ELK Stack gan ddefnyddio GROK yn LogStash

Fel y gallwn weld yn y ddelwedd uchod, mae Grok yn gallu paru data log yn awtomatig ag Elasticsearch. Mae hyn yn ei gwneud hi'n haws rheoli logiau a chwestiynu gwybodaeth yn gyflym. Yn lle cloddio trwy ffeiliau log i ddadfygio, gallwch chi hidlo yn Γ΄l yr hyn rydych chi'n edrych amdano, fel amgylchedd neu url.

Rhowch gynnig ar ymadroddion Grok! Os oes gennych ffordd arall o wneud hyn neu os oes gennych unrhyw broblemau gyda'r enghreifftiau uchod, ysgrifennwch sylw isod i roi gwybod i mi.

Diolch am ddarllen - a dilynwch fi yma ar Canolig i gael erthyglau peirianneg meddalwedd mwy diddorol!

Adnoddau

https://www.elastic.co/blog/do-you-grok-grok
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
https://grokdebug.herokuapp.com/

PS Dolen ffynhonnell

Telegram sianel gan Elastig

Ffynhonnell: hab.com

Ychwanegu sylw