Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Сохторсозии маълумоти сохторнашуда бо GROK

Агар шумо стеки Elastic (ELK) -ро истифода баред ва ба харитасозии гузоришҳои фармоишии Logstash ба Elasticsearch таваҷҷӯҳ дошта бошед, пас ин паём барои шумост.

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Стеки ELK мухтасари се лоиҳаи кушодаасос аст: Elasticsearch, Logstash ва Kibana. Якҷоя онҳо платформаи идоракунии гузоришро ташкил медиҳанд.

  • Ҷустуҷӯи Elastics системаи ҷустуҷӯӣ ва таҳлилӣ мебошад.
  • Logstash як лӯлаи коркарди додаҳо дар сервер мебошад, ки маълумотро аз якчанд манбаъҳо ҳамзамон ворид мекунад, онро табдил медиҳад ва сипас ба "нигоҳдорӣ" ба монанди Elasticsearch мефиристад.
  • Кибана ба корбарон имкон медиҳад, ки маълумотро бо истифода аз диаграммаҳо ва графикҳо дар Elasticsearch тасаввур кунанд.

Beats дертар омад ва интиқолдиҳандаи маълумоти сабук аст. Ҷорисозии Beats Elk Stack-ро ба Stack Elastic табдил дод, аммо ин гап нест.

Ин мақола дар бораи Grok аст, ки хусусияти Logstash аст, ки метавонад гузоришҳои шуморо пеш аз фиристодан ба анбор табдил диҳад. Барои мақсадҳои мо, ман танҳо дар бораи коркарди маълумот аз Logstash ба Elasticsearch сӯҳбат мекунам.

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Grok як филтр дар дохили Logstash аст, ки барои таҳлили додаҳои сохторнашуда ба чизи сохторӣ ва дархостшаванда истифода мешавад. Он дар болои ифодаи муқаррарӣ (regex) ҷойгир аст ва намунаҳои матниро барои мувофиқ кардани сатрҳо дар файлҳои журнал истифода мебарад.

Тавре ки мо дар бахшҳои зерин мебинем, истифодаи Grok дар мавриди идоракунии самараноки гузоришҳо фарқияти калон меорад.

Бе Grok маълумоти сабти шумо сохторӣ нест

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Бе Grok, вақте ки гузоришҳо аз Logstash ба Elasticsearch фиристода мешаванд ва дар Кибана намоиш дода мешаванд, онҳо танҳо дар арзиши паём пайдо мешаванд.

Дар ин вазъият пурсиш кардани иттилооти пурмазмун душвор аст, зеро тамоми маълумотҳои сабт дар як калид нигоҳ дошта мешаванд. Бехтар мебуд, ки хабархои журнал бехтар ташкил карда мешуданд.

Маълумоти сохторнашуда аз гузоришҳо

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

Агар шумо ба маълумоти хом бодиққат назар кунед, шумо хоҳед дид, ки он воқеан аз қисмҳои гуногун иборат аст, ки ҳар яки онҳо бо фосила ҷудо карда шудаанд.

Барои таҳиягарони ботаҷриба, шумо эҳтимол метавонед тахмин кунед, ки ҳар як қисм чӣ маъно дорад ва ин паёми гузориш аз занги API чӣ аст. Муаррифии ҳар як ашё дар поён оварда шудааст.

Намоиши сохтории маълумоти мо

  • localhost == муҳити зист
  • GET == усули
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == ҳолати ҷавоб
  • 46ms == вақти ҷавоб
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Тавре ки мо дар маълумоти сохторӣ мебинем, фармоиш барои сабтҳои сохторнашуда вуҷуд дорад. Қадами навбатӣ коркарди нармафзори маълумоти хом мебошад. Дар ин чо Грок медурахшад.

Шаблонҳои Grok

Шаблонҳои дарунсохташудаи Grok

Logstash бо зиёда аз 100 қолабҳои дарунсохт барои сохтори додаҳои сохторнашуда меояд. Шумо бояд ҳатман аз ин то ҳадди имкон барои системаҳои умумӣ ба монанди apache, linux, haproxy, aws ва ғайра истифода баред.

Аммо, вақте ки шумо дар мисоли дар боло овардашуда гузоришҳои фармоишӣ доред, чӣ мешавад? Шумо бояд қолаби Grok-и худро созед.

Шаблонҳои фармоишии Grok

Шумо бояд кӯшиш кунед, ки қолаби Grok-и худро созед. истифода кардам Debugger Grok и Шаблонҳои Grok.

Дар хотир доред, ки синтаксиси қолаби Grok чунин аст: %{SYNTAX:SEMANTIC}

Аввалин чизе, ки ман кӯшиш кардам, ки ба ҷадвал равам кашф дар debugger Grok. Ман фикр мекардам, ки агар ин асбоб ба таври худкор як намунаи Grok тавлид кунад, хуб мебуд, аммо он чандон муфид набуд, зеро он танҳо ду мувофиқат ёфт.

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Бо истифода аз ин кашф, ман сохтани қолаби худро дар debugger Grok бо истифода аз синтаксиси дар саҳифаи Elastic Github пайдошуда оғоз кардам.

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Пас аз бозӣ кардан бо синтаксисҳои гуногун, ман ниҳоят тавонистам маълумотҳои гузоришро тавре сохтам, ки ман мехостам.

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Пайванди Debugger Grok https://grokdebug.herokuapp.com/

Матни аслӣ:

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

намунаи:

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

Дар охир чй шуд

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

Бо қолаби Grok ва маълумоти хариташуда дар даст, қадами охирин илова кардани он ба Logstash аст.

Навсозии файли конфигуратсияи Logstash.conf

Дар сервере, ки шумо стеки ELK-ро насб кардаед, ба конфигуратсияи Logstash гузаред:

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

Тағиротро гузоред.

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" ]
  }
}

Пас аз захира кардани тағиротҳо, Logstash-ро аз нав оғоз кунед ва ҳолати онро тафтиш кунед, то боварӣ ҳосил кунед, ки он ҳоло ҳам кор мекунад.

sudo service logstash restart
sudo service logstash status

Ниҳоят, барои боварӣ ҳосил кардани тағиротҳо, Боварӣ ҳосил кунед, ки индекси Elasticsearch-и худро барои Logstash дар Кибана навсозӣ кунед!

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Бо Grok, маълумоти сабти шумо сохтор шудааст!

Маслиҳатҳо ва ҳилаҳо барои табдил додани маълумоти сохторнашуда аз гузоришҳо ба ELK Stack бо истифода аз GROK дар LogStash

Тавре ки мо дар тасвири боло мебинем, Grok қодир аст ба таври худкор маълумоти сабтро бо Elasticsearch мувофиқ созад. Ин идоракунии гузоришҳо ва зуд дархост кардани маълумотро осон мекунад. Ба ҷои кофтани файлҳои гузориш барои ислоҳ кардан, шумо метавонед танҳо аз рӯи он чизе, ки ҷустуҷӯ мекунед, ба монанди муҳити зист ё URL филтр кунед.

Ифодаҳои Grok-ро санҷед! Агар шумо роҳи дигари ин корро дошта бошед ё бо мисолҳои дар боло овардашуда мушкилот дошта бошед, танҳо дар зер шарҳ нависед, то ба ман хабар диҳед.

Ташаккур барои хондан ва лутфан маро дар Medium барои мақолаҳои ҷолибтар оид ба муҳандисии нармафзор пайравӣ кунед!

Манбаъҳо

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 Истинод ба манбаъ

Канали телеграм аз ҷониби Ҷустуҷӯи Elastics

Манбаъ: will.com

Илова Эзоҳ