LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

GROK bilan tuzilmagan ma'lumotlarni tuzilish

Agar siz Elastic (ELK) stekidan foydalanayotgan bo'lsangiz va maxsus Logstash jurnallarini Elasticsearch-ga solishtirmoqchi bo'lsangiz, bu post siz uchun.

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

ELK stek uchta ochiq manbali loyihalarning qisqartmasi: Elasticsearch, Logstash va Kibana. Ular birgalikda jurnallarni boshqarish platformasini tashkil qiladi.

  • Elasticsearch qidiruv va tahliliy tizimdir.
  • logstash bir vaqtning o'zida bir nechta manbalardan ma'lumotlarni qabul qiladigan, uni o'zgartiradigan va keyin uni Elasticsearch kabi "stash" ga yuboradigan server tomonidagi ma'lumotlarni qayta ishlash quvur liniyasi.
  • kibana foydalanuvchilarga Elasticsearch-da diagrammalar va grafiklar yordamida ma'lumotlarni vizualizatsiya qilish imkonini beradi.

Jang keyinroq keldi va engil ma'lumotlarni jo'natuvchi hisoblanadi. Beats-ning kiritilishi Elk Stack-ni Elastik stekga aylantirdi, ammo gap bu emas.

Ushbu maqola Grok haqida, bu Logstash-dagi xususiyat bo'lib, u sizning jurnallaringizni saqlashga yuborilishidan oldin o'zgartira oladi. Bizning maqsadlarimiz uchun men faqat Logstash-dan Elasticsearch-ga ma'lumotlarni qayta ishlash haqida gapiraman.

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Grok - bu Logstash ichidagi filtr bo'lib, u tuzilmagan ma'lumotlarni tuzilgan va so'raladigan narsaga ajratish uchun ishlatiladi. U muntazam ifodaning (regex) tepasida joylashgan va jurnal fayllaridagi satrlarni moslashtirish uchun matn naqshlaridan foydalanadi.

Keyingi bo'limlarda ko'rib turganimizdek, Grok-dan foydalanish jurnallarni samarali boshqarishda katta farq qiladi.

Groksiz sizning jurnal ma'lumotlaringiz tuzilmagan

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Groksiz, jurnallar Logstash-dan Elasticsearch-ga yuborilganda va Kibana-da ko'rsatilganda, ular faqat xabar qiymatida ko'rinadi.

Bunday vaziyatda mazmunli ma'lumotlarni so'rash qiyin, chunki barcha jurnal ma'lumotlari bitta kalitda saqlanadi. Jurnal xabarlari yaxshiroq tartibga solinsa yaxshi bo'lardi.

Jurnallardan tuzilmagan ma'lumotlar

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

Agar siz dastlabki ma'lumotlarga diqqat bilan qarasangiz, u aslida har biri bo'sh joy bilan ajratilgan turli qismlardan iborat ekanligini ko'rasiz.

Tajribali ishlab chiquvchilar uchun, ehtimol, har bir qism nimani anglatishini va bu jurnal xabari API chaqiruvidan nimani anglatishini taxmin qilishingiz mumkin. Har bir elementning taqdimoti quyida keltirilgan.

Ma'lumotlarimizning tuzilgan ko'rinishi

  • localhost == muhit
  • GET == usuli
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == javob_holati
  • 46ms == javob vaqti
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Strukturaviy ma'lumotlarda ko'rib turganimizdek, tuzilmagan jurnallar uchun buyurtma mavjud. Keyingi qadam xom ma'lumotlarni dasturiy ta'minot bilan qayta ishlashdir. Bu erda Grok porlaydi.

Grok shablonlar

O'rnatilgan Grok shablonlari

Logstash tuzilmagan ma'lumotlarni tuzish uchun 100 dan ortiq o'rnatilgan andozalar bilan birga keladi. Apache, linux, haproxy, aws va boshqalar kabi umumiy tizimlar uchun imkon qadar bundan albatta foydalanishingiz kerak.

Biroq, yuqoridagi misoldagi kabi maxsus jurnallarga ega bo'lsangiz nima bo'ladi? Siz o'zingizning Grok shabloningizni yaratishingiz kerak.

Maxsus Grok shablonlari

O'zingizning Grok shabloningizni yaratishga harakat qilishingiz kerak. foydalandim Grok tuzatuvchisi ΠΈ Grok naqshlari.

Grok shablonining sintaksisi quyidagicha ekanligini unutmang: %{SYNTAX:SEMANTIC}

Men qilmoqchi bo'lgan birinchi narsa tabga o'tish edi Discover Grok tuzatuvchisida. Agar ushbu vosita avtomatik ravishda Grok naqshini yaratsa, ajoyib bo'lardi, deb o'yladim, lekin u juda foydali emas edi, chunki u faqat ikkita moslikni topdi.

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Ushbu kashfiyotdan foydalanib, Elastic Github sahifasida topilgan sintaksisdan foydalanib, Grok tuzatuvchisida o'z shablonimni yaratishni boshladim.

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Turli xil sintaksislar bilan o'ynaganimdan so'ng, men nihoyat jurnal ma'lumotlarini o'zim xohlagan tarzda tuza oldim.

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Grok tuzatuvchisi havolasi https://grokdebug.herokuapp.com/

Asl matn:

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

Chizma:

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

Oxiri nima bo'ldi

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

Grok shabloni va qo'lda xaritalangan ma'lumotlar bilan oxirgi qadam uni Logstash-ga qo'shishdir.

Logstash.conf konfiguratsiya fayli yangilanmoqda

ELK stekini o'rnatgan serverda Logstash konfiguratsiyasiga o'ting:

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

O'zgarishlarni joylashtiring.

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

O'zgarishlarni saqlaganingizdan so'ng, Logstash-ni qayta ishga tushiring va u ishlayotganiga ishonch hosil qilish uchun uning holatini tekshiring.

sudo service logstash restart
sudo service logstash status

Nihoyat, o'zgarishlar kuchga kirganligiga ishonch hosil qilish uchun, Kibanadagi Logstash uchun Elasticsearch indeksingizni yangilaganingizga ishonch hosil qiling!

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Grok bilan jurnal ma'lumotlaringiz tuzilgan!

LogStash-dagi GROK-dan foydalanib, tizimlashtirilmagan ma'lumotlarni jurnallardan ELK Stack-ga o'tkazish bo'yicha maslahatlar va fokuslar

Yuqoridagi rasmda ko'rib turganimizdek, Grok jurnal ma'lumotlarini Elasticsearch bilan avtomatik ravishda moslashtirishga qodir. Bu jurnallarni boshqarishni osonlashtiradi va ma'lumotlarni tezda so'raydi. Nosozliklarni tuzatish uchun jurnal fayllarini qazish o'rniga, siz shunchaki atrof-muhit yoki url kabi qidirayotgan narsangiz bo'yicha filtrlashingiz mumkin.

Grok ifodalarini sinab ko'ring! Agar buni qilishning boshqa usuli bo'lsa yoki yuqoridagi misollar bilan bog'liq muammolar bo'lsa, menga xabar berish uchun pastga sharh yozing.

O'qiganingiz uchun tashakkur va dasturiy ta'minot muhandisligi bo'yicha yanada qiziqarli maqolalar uchun Medium-da meni kuzatib boring!

Resurslar

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 Manbaga havola

Telegram kanali tomonidan Elasticsearch

Manba: www.habr.com

a Izoh qo'shish