LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

GROK を䜿甚した非構造化デヌタの構造化

Elastic (ELK) スタックを䜿甚しおいお、カスタム Logstash ログを Elasticsearch にマッピングするこずに興味がある堎合は、この投皿が最適です。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

ELK スタックは、Elasticsearch、Logstash、Kibana ずいう XNUMX ぀のオヌプン ゜ヌス プロゞェクトの頭字語です。 これらは䞀緒になっおログ管理プラットフォヌムを圢成したす。

  • Elasticsearch は怜玢および分析システムです。
  • ログスタッシュ は、耇数の゜ヌスから同時にデヌタを取り蟌み、倉換しお、Elasticsearch などの「スタッシュ」に送信するサヌバヌ偎のデヌタ凊理パむプラむンです。
  • 朚堎 ナヌザヌは Elasticsearch でチャヌトやグラフを䜿甚しおデヌタを芖芚化できたす。

ビヌト 埌から登堎した軜量のデヌタ シッパヌです。 Beats の導入により Elk Stack は Elastic Stack に倉わりたしたが、重芁なのはそこではありたせん。

この蚘事は、Grok に぀いお説明したす。Grok は、ログをスタッシュに送信する前に倉換できる Logstash の機胜です。 ここでは、目的のために、Logstash から Elasticsearch ぞのデヌタの凊理に぀いおのみ説明したす。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

Grok は、非構造化デヌタを構造化されたク゚リ可胜なデヌタに解析するために䜿甚される Logstash 内のフィルタヌです。 これは正芏衚珟 (regex) の䞊に䜍眮し、テキスト パタヌンを䜿甚しおログ ファむル内の文字列ず䞀臎したす。

次のセクションで説明するように、Grok を䜿甚するず、効率的なログ管理ずいう点で倧きな違いが生じたす。

Grok がないずログ デヌタは構造化されおいたせん

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

Grok を䜿甚しない堎合、ログが Logstash から Elasticsearch に送信され、Kibana でレンダリングされるずき、ログはメッセヌゞ倀にのみ衚瀺されたす。

すべおのログ デヌタが XNUMX ぀のキヌに保存されおいるため、この状況で意味のある情報をク゚リするこずは困難です。 ログメッセヌゞがもっずよく敎理されおいればもっず良いでしょう。

ログからの非構造化デヌタ

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

生デヌタをよく芋るず、実際にはスペヌスで区切られたさたざたな郚分で構成されおいるこずがわかりたす。

経隓豊富な開発者であれば、おそらく各郚分の意味ず、API 呌び出しからのログ メッセヌゞが䜕であるかを掚枬できるでしょう。 各項目の抂芁は以䞋のずおりです。

デヌタの構造化されたビュヌ

  • localhost == 環境
  • GET ==メ゜ッド
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == 応答ステヌタス
  • 46ms == 応答時間
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

構造化デヌタでわかるように、非構造化ログにも順序がありたす。 次のステップは、生デヌタの゜フトりェア凊理です。 ここがGrokが茝くずころです。

Grok テンプレヌト

組み蟌みの Grok テンプレヌト

Logstash には、非構造化デヌタを構造化するための 100 を超える組み蟌みテンプレヌトが付属しおいたす。 Apache、Linux、haproxy、aws などの䞀般的な syslog では、可胜な限りこれを利甚する必芁がありたす。

ただし、䞊蚘の䟋のようなカスタム ログがある堎合はどうなるでしょうか? 独自の Grok テンプレヌトを構築する必芁がありたす。

カスタム Grok テンプレヌト

独自の Grok テンプレヌトを構築しおみる必芁がありたす。 私が䜿甚した Grok デバッガヌ О Grok パタヌン.

Grok テンプレヌトの構文は次のずおりであるこずに泚意しおください。 %{SYNTAX:SEMANTIC}

最初にやろうずしたのは、タブに移動するこずでした 分析による珟状把握 Grok デバッガヌで。 このツヌルが Grok パタヌンを自動的に生成できれば玠晎らしいだろうず思いたしたが、䞀臎するものが XNUMX ぀しか芋぀からなかったため、あたり圹に立ちたせんでした。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

この発芋を利甚しお、Elastic Github ペヌゞにある構文を䜿甚しお、Grok デバッガヌで独自のテンプレヌトの䜜成を開始したした。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

さたざたな構文を詊した結果、最終的に垌望どおりにログ デヌタを構造化するこずができたした。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

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

最埌に、倉曎が有効になっおいるこずを確認するために、 Kibana の Logstash の Elasticsearch むンデックスを必ず曎新しおください。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

Grok を䜿甚するず、ログ デヌタが構造化されたす。

LogStash で GROK を䜿甚しお非構造化デヌタをログから ELK スタックに倉換するためのヒントずテクニック

䞊の画像でわかるように、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 ゜ヌスリンク

電報チャンネルによる Elasticsearch

出所 habr.com

コメントを远加したす