1日目、最後のセッションはBeatsです。
BeatsはElasticsearchやLogstashにデータを転送するエージェントで、要するにtd-agentとか、Mackerelのエージェントのようなものです。
Go言語で書かれているので、僕もGoの勉強がてらBeatsを書いてみたこともありました。
Filebeatが想像以上にちゃんとしていた件
Beatsシリーズのうち、Topbeat/ Packetbeatは以前このブログでも紹介しました。
acro-engineer.hatenablog.com
簡単なセットアップで、サーバのCPU、メモリ、ディスクなどのリソース情報や、
パケットを流れる情報を元にSQLの内容や実行回数などを確認できるという、
なかなかインパクトあるプロダクトです。
これに加えてWinlogbeatが最近追加され、WindowsXP以降のWindowsイベントログを転送できるようになりました。
恐らくこれはセキュリティ監視などの用途で使われるものなのかなと思います。
ウィルスに感染したり外部からアタックを受けていることを、Windowsのイベントログから拾おうとするんじゃないかなと。
また、今回のセッションでかなり詳細に紹介されたのがFilebeatです。
Filebeatはログファイルのようなファイルを監視し、その内容を転送するプロダクトです。
Filebeat自体にはログを解釈するような仕組みはないため、そこはLogstashに任せることになります。
なので、Filebeat -> Logstash -> Elasticsearchという構成になるわけですね。
ここでFilebeat + Logstashの組み合わせで利用する場合、ファイルのデータを転送し損なわないよう、
バックプレッシャー的な手法を用いるそうです。
つまり転送先であるLogstashの方からFilebeatに対して「読み込めない」という通知が来ると、
Filebeatは転送対象のログファイルの読み込みをストップし(どこまで読み込んだかはFilebeat自身が保持しておき)
またLogstashから「読み込めるよ」という通知が来ると、転送を再開するそうです。
うん、これはバックプレッシャーでありリアクティブだ!(←言いたかっただけ)
またElasticsearch 5.0になれば、先に紹介したIngest Nodeという機能のおかげでLogstashなしでもログの解釈などができるようになるため、
Filebeatから直接Elasticsearchに転送することができるようになります。簡易的なログ分析であれば、そのような形式の方が楽でしょうね。
逆に、より規模が大きくなって、ログの転送し損ないが許されない状況下では、
Kafkaのようなバッファを挟んで過負荷に耐えられるようにしなくてはいけません(←しつこい)
その点も考慮して、Beats 5.0ではElasticsearch、Logstashに加えて、
Kafkaへの転送機能も付くそうです(っていう事をクラスメソッドさんのブログで知りました!)
dev.classmethod.jp
Create your own beat!
Beatsのようなプロダクトは、自分でエージェントないしプラグインのようなものを作りたくなるものです。
コミュニティベースのBeatsも既に14種類ほど作られており @yasuenag さんの作成したHsbeatもそのうちの一つとして紹介されていました。
Beatsは正式に作り方が公開されており、Generatorも提供されています。
github.com
またBeats Packerというビルドツールも提供されています。
これは自作したBeatsを各プラットフォーム用のバイナリをクロスコンパイルして作成したうえ、
RPMとDEBも作ってくれるスグレモノです。
github.com
Beats PackerはTravis CIからも実行できるようにしているなど、至れり尽くせりなようです。
なるほどですね。
ただBeatsは今後コミュニティベースでどんどん数が増える一方で、よくある放置状態になるのではないか、という懸念も湧いてきますよね。
そこに対する解の一つが、Metricbeatだと思います。
きちんと管理されるMetrisbeat
Metricbeatは様々なミドルウェアの情報を収集するモジュールでありライブラリです。
最初にApache / Redis / MySQL / Golangに対応させようとしているようです。
こちらはElastic社が管理するプロダクトになり、Metricbeatに対する拡張を作りたい場合は、Elasticのgithubにプルリクする形になります。
そんなMetricbeatですが、そもそもミドルウェアの情報はどうやって取ってくるの? というのが当然の疑問になります。
セッション後にスピーカーに聞いてみたところ、それぞれのミドルウェアに定期的にメトリクス情報を取りに行く形を採用しているとのこと。
ソースも合わせて確認してみたら、Apacheならserver-status?autoを叩くとか、Goならexpvarのmetricsを使うとか、そういう形になっていました。なるほどですね。
なんか全体を通じて、なるほど感のあるセッションでした。変に奇をてらわずに、実直にデータを集める、抜けを防ぐ、そして管理する。
Beatsは今後も安定したエージェントとして活躍してくれそうな予感がします。
それでは本日のセッションレポートは以上になります。
また明日のレポートも楽しみにしてください。
Stay elastic, see you!
レポート一覧
1日目
Elastic{ON} 2016 キーノートレポート Elastic goes 5.0! #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート What's Evolving in Elasticsearch #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート What's Cookin' in Kibana #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート What's Brewing in Beats #elasticon - Taste of Tech Topics
2日目
Elastic{ON} 2016レポート What's the Latest in Logstash #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート My own google? FaceChimpを見せてもらいました。 #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート Ingest Node: Enriching Documents within Elasticsearch #elasticon - Taste of Tech Topics
3日目
Elastic{ON} 2016レポート AMA = Ask Me Anything! #elasticon - Taste of Tech Topics
Elastic{ON} 2016レポート いよいよクロージング! #elasticon - Taste of Tech Topics
AcroquestではElasticsearch、Logstash、Kibanaの無償ハンズオンセミナーを開催致します。
当社公認エンジニアがELKの基礎から、商用プラグインの利用、
実データを用いた可視化・分析までを、ハンズオン形式で説明致します。
可視化・分析の題材には、当社がミャンマーにて収集したビッグデータを用います。
詳細・参加応募はこちらからお願いします。
www.acroquest.co.jp