LogStashでGROKを使用して、非構造化データをログからELKスタックに変換するためのヒントとコツ

GROKを使用した非構造化データの構造化



Elasticスタック(ELK)を使用していて、カスタムLogstashログをElasticsearchにマッピングすることに関心がある場合は、この投稿が役立ちます。





ELKスタックは、Elasticsearch、Logstash、Kibanaの3つのオープンソースプロジェクトの略語です。一緒にログ管理プラットフォームを形成します。



  • Elasticsearchは、検索および分析エンジンです。
  • Logstashはサーバー側のデータ処理パイプラインであり、複数のソースから同時にデータを取得して変換し、Elasticsearchなどのキャッシュに送信します。
  • Kibanaを使用すると、Elasticsearchのチャートとグラフを使用してデータを視覚化できます。


Beatsは後で登場し、軽量のデータシッパーです。Beatsの導入によりElk StackがElastic Stackに変わりましたが、それが目的ではありません。



Grok, Logstash, , . Logstash Elasticsearch.





Grok- Logstash, - . (regex) .



, Grok , .



Grok





Grok, Logstash Elasticsearch Kibana, .



, . , .





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


, , , .



, , , API. .





  • ​ localhost == environment
  • ​ GET == method
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == response_status
  • ​ 46ms == response_time
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id


, . – . .



Grok



Grok



Logstash 100 . , , apache, linux, haproxy, aws .



, , ? Grok.



Grok



, Grok. Grok Debugger Grok Patterns.



, Grok : %{SYNTAX:SEMANTIC}



, , Discover Grok. , , Grok, , .





, Grok, , Github Elastic.





, - , .





Grok https://grokdebug.herokuapp.com/



:



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


Pattern:



%{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 Kibana!





Grok !





, , 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 Telegramチャネル




All Articles