「ログ分析におけるElasticStackの勘所」メモ

時系列データ

  • どんどん時間ともに蓄積されていくもの

ElasticSearchにおける時系列データ

  • log stashのbeatsから取り込まれた時系列データは自動的にローテートしてしてくれる
  • log stashのbeatsが自動的にindexを切り替えてくれる
    • ただしUTC時間なので、日本だと朝9時にINDEXが切り替わるので注意

セキュリティ運用におけるログ

  • 同じログでも、用途に応じて、以下のような分類ができる
    • フォレンジック業務
    • ハンティング業務
    • 監査業務

ESは、シームの監視業務に向いている

SlasticStackとは?

ESのオープンソースのプロダクト群

  • beats
  • elastic search
  • log stash
  • kibana
    をひとまとめに「SlasticStack」という。

ElasticStackのコンポーネント

  • ElasticSearchにログを貯め込む
  • kibanaでみる
  • beats
    • metric beatなど、複数のプロダクト群があり、ログデータを此奴等が作成
  • log stash:データの加工

logstashとbeats

  • logstash
    • Java。メモリ食う
    • 多種多様なソースからのデータ取り込み
    • 多種多様なフィルタによるデータ加工
    • 多種多様な保存作にデータ出力
  • beats
    • Go。メモリ食わない
    • 特定ソースに特化したデータ取り込み
    • データ保存先は限定的(基本はElasitcSearch)
    • サーバにエージェント的な用途で導入

OpenDistro for ElasticSearch(↗)

AWSが公開している、ElasticSearchの有償機能を無償で使えるオープンソースプロダクト。
セキュリティなどの有償のものが無償で使えるらしい?

ElasticSearchの設計における考え方

ノードの役割

  • matserノード
  • データを保持したりするData node
  • ML用のMLnode
  • コーディネーティングNode

などで分ける

全文検索と時系列

  • 全文検索は、メモリにデータが残せる状態で設計を行う
  • 時系列データは常にデータが増えるので、メモリにキャッシュが残せないため、ディスクのIO性能を重視する

スキーマレス

Dynamic fild mappingがある程度スキーマがなくてもやってくれるが、
ちゃんとしておいたほうが、かゆいところに手が届く

IndexとIndex Pattern

Index patternはIndexをつなぐためのもの。
それぞれIndexのfieldが異なっていても、Index Patternで共通化し、補い、
Kibanaで表示してくれる。

ログ取り込みにおけるポイント

ETL処理とは

Extract Transform Load。
ESだとLog stashがやってくれる。

パース処理とエンリッチ処理

  • パース処理
    • ログデータの中身の解析
      • CSVとかJSONとかを見分ける
  • エンリッチ処理
    • IPアドレスからホスト名にしたい
    • IPアドレスがブラックリストに入っているならフラグを立てるなど

ログの加工処理が実行される箇所

  • 前処理(Pythonなどでやる)
  • Logstashが自動でやってくれる
  • 後処理

ElasticSearchでは、前処理(Pythonなどでやる)でデータ整形するのがベスト。

Logstashはrubyで書かれているので

rubyフィルターと言うものでデータ整形を拡張できる

不要なデータの削除

  • drop
  • mutate filterのremove feild

Dead letter Queue

取りこぼしたデータをファイルに書き出しておける機能。

参考

https://www.slideshare.net/hibinohisashi/ss-154681947

[PR] おすすめの本
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。