2015年11月24日 リリース

The Beats 1.0.0

By Monica Sarbu

約6か月前、 PacketbeatがElasticに加わった とき、サーバーからあらゆる種類のオペレーショナルデータを収集してLogstashとElasticsearchに転送する軽量のデータ転送フレームワークを構築したいという構想が生まれ、「Beats」と名付けられました。そして本日、いよいよ初のBeatsプラットフォーム本番対応バージョンと、初の正式サポートBeatであるTopbeat、Filebeat、Packetbeatがリリースされます。

Beatsプラットフォーム

私たちの目標は、コミュニティが新しいBeatを簡単に作成できるプラットフォームを構築することでした。そのために、 libbeatを開発しました。これは、Elasticsearchへの一括挿入、Logstashへのセキュアなイベント送信、複数のLogstashおよびElasticsearchノード間でのイベントの負荷分散、 同期および非同期モードでのイベント送信など、全Beatで共通するタスクを処理するための共通パーツが含まれるGoライブラリです。libbeatプラットフォームには、ダウンストリームサーバーの過負荷や中継するネットワークの輻輳などを検出するメカニズムも含まれているため、送信レートを抑えることができます。

beats platform.png

つまり、libbeatは、LogstashおよびElasticsearchにイベントを安全・セキュア・効率的に送信するすべてを備えています。さらに構成、CLIフラグ、ログなどの機能もあるため、新しいBeatを作成するときに、開発者は関心のあるデータの収集だけに集中できます。分析プラットフォームの残りの部分は、libbeat、Logstash、Elasticsearch、Kibanaに任せてください。

この3つの公式なBeatに加え、コミュニティでは、Dockerbeat, Pingbeat, UWSGIbeat and Nginxbeat. など、独自のBeatの開発が始まっています。ご興味のある方向けに開発者ガイドも用意されています。


Topbeat

Topbeatに着手したのは、他の開発者が初めてBeatを作成する際に参考となるシンプルなBeatの例が必要だと考えたからですが、結果的にそのシンプルな提案が多くの人に気に入られました。Topbeatは、すべてのサーバーに対する分散型のtopコマンドのようなものです。ただし、指標を画面に出力せずに、定期的にLogstashまたはElasticsearchに送信します。つまり、システム負荷、空き/使用中メモリ、ディスク使用状況など、システム全体のデータやプロセスごとの指標が中央管理されるのです(全指標のリストを参照)。もうSSHであちこちを調べてRAMを消費しているプロセスを確認する必要はありません。

Topbeatは、Linuxだけでなく、OS XとWindowsもサポートしています。そのため、どのサポート対象オペレーティングシステムを使用しているかを問わず、ネットワークの各サーバーにインストールして同じオペレーティングシステム指標を収集できます。

Topbeatは、サーバーにインストールされると、Elasticsearchに定期的に指標を送信し始めます。Kibana を実行している場合、データを視覚化して独自のカスタマイズ可能なダッシュボードを構成できます。そのためのウィジェットとして、システム負荷、サーバー概要、システム全体のメモリ/CPU使用状況、最大消費プロセス、プロセス単位のメモリ/CPU使用状況、ディスク使用状況概要、ディスク使用状況などを使用できます。

Screen Shot 2015-11-22 at 11.41.24 PM.png


Filebeat

Filebeatは、多くの企業の本番環境で長年使用されてきた軽量のデータ転送ツールであるLogstash-Forwarderの後継ソフトウェアです。Logstash-Forwarderは、シンプルで軽量なGoアプリケーションで、サーバーのすべてのログを中央管理する場所に送信して追加処理できるようにします。

Logstash-Forwarderは、Logstashの考案者であるJordan Sisselが開発を開始し、Logstash開発者が保守してきましたが、Logstash本体と比べ、改良やバグ修正という点で後れを取りがちでした。Logstash-Forwarderは明らかにBeatと似ているため、私たちは、今後の最善の道はBeatに移行することだと判断しました。そこで、Forwarderのコードを分解し、古くなった部分は置き換え、追加の単体テストを実施し、すべてをまとめ直してFilebeatにしました。

Filebeatは簡単に構成できます。サーバーにインストールした後、クロールするパスを設定するだけで、Filebeatは、追加処理ができるようにログをLogstash経由でElasticsearchに送信し始めます。また、ログの循環使用、ファイルの名前変更、ダウンストリームサーバーの一時的な使用不能状況にも対応しているため、ログは1行たりとも失われません。

Logstash Forwarderユーザーは、移行ガイドに従ってFilebeatの使用を開始してください。

Screen Shot 2015-11-23 at 11.03.28 AM.png


Packetbeat

Packetbeatは、すべての始まりとなった最初のBeatです。複雑な分散システムを監視してトラブルシューティングすることを想像してみてください。各コンポーネントでばらばらのプログラミング言語、Webフレームワーク、データベーステクノロジーが使用されています。共通するのは、コンポーネント間の通信がネットワーク経由で行われることぐらいです。通常は、REST APIコールのHTTPのような標準プロトコルが使用されます。

Packetbeatは、分散型でリアルタイムのWiresharkのようなもので、トランザクションの要求と応答を相関付け、各トランザクションに関するデータをElasticsearchに挿入します。

Packetbeatは、ネットワークのサーバー間の通信を調べてアプリケーションを可視化します。ネットワークトラフィックをパッシブにスニッフして機能するため、アプリケーションを妨げません。

Packetbeatは、そのオープンソースとしての本領を十分に発揮しています。誰でも新しいプロトコルのサポートを追加でき、専有プロトコルも例外ではありません。コミュニティでは、過去数か月にMongoDBDNS over UDPDNS over TCPなどのサポートが追加され、現在も何件かのコントリビューションが進行中です。Elasticは、いつでもコントリビュータの皆さんがコードをPacketbeatに追加できるようにサポートを惜しみません。また最近、新しいプロトコル用の開発者ガイドを作成しましたのでぜひご利用ください。

packetbeat-statistics.png


正式リリースまでの道のり

1.0.0リリースまでの全体の流れにご興味がある場合は、中間リリースに関する過去のブログ記事をお読みください。


コードの提供、問題の報告、ベータステージでのBeats試用をしてくださった皆さんに心から感謝します。ぜひBeats 1.0.0を使用して、ご意見やご感想をディスカッションTwitterでお寄せください。または、GitHubでIssueを登録することもできます.