Filebeatモジュールを使った簡単なログ分析の始め方

Elastic{on} 17以降、Elastic Stackに追加される新機能の中でも特に注目されているのが、Filebeatの「モジュール」という新しい概念です。従来、Filebeatでデータ収集を始めるには、Filebeat自体の設定、Elasticsearch用マッピングテンプレートの作成、Ingest PipelineやLogstashインスタンスの構築・テスト、さらにKibanaでの可視化ダッシュボード作成など、多くの手順が必要でした。Beatsチームは、この面倒なセットアッププロセスをモジュールの仕組みによって大幅に簡素化しました。
Filebeatモジュールは、こうした一連の設定作業をひとつのパッケージにまとめたもので、たった1つのコマンドで有効化できます。Filebeat 5.3.0以降にはmysql、nginx、apache、システムログ向けのモジュールが標準で同梱されており、独自のモジュールを作成することも簡単です。
Filebeatモジュールが登場して数週間ほど経ちましたので、本記事ではObjectRocketのような外部(非ローカル)Elasticsearchクラスタでモジュールを活用する方法を紹介します。ObjectRocketではElasticsearch 5.4の提供も開始されたため、今すぐFilebeatモジュールを試し、新登場のauditdモジュールやLinuxのsystem.authファイルセットを活用できます。
事前準備
以下の手順ではObjectRocket for ElasticsearchインスタンスとそのUIを例に説明しますが、他のサービスや自前のクラスタにも容易に応用できます。また、ここでは「system」モジュールを使用しますが、他のモジュールを追加するのも簡単です。
必要なものは次のとおりです。
- Elasticsearch 5.3以降のインスタンス(筆者はそれ以前の5.x系でも動作を確認しましたが、保証はできません)
- 同じバージョンのKibana
- Elasticsearchクラスタへ接続するためのホスト名
- クラスタへの書き込み権限とインデックス作成権限を持つユーザー認証情報
- Filebeat 5.3以降
ElasticsearchクラスタとKibanaがすでに構築済みであることを前提に、まずは利用中のOSに対応したFilebeatをダウンロードし、ログを収集したいサーバー上で展開します。この記事の例では、MacOSを搭載したMacbookからElasticsearch 5.4.0クラスタに接続するため、「filebeat-5.4.0-darwin-x86_64.tar.gz」パッケージを使用します。アーカイブを展開したら、Filebeatのセットアップに取り掛かりましょう。
Filebeatの設定
デフォルトのfilebeat.ymlファイルでは、Filebeatはローカルマシン上のElasticsearchインスタンスへの接続と、/var/log/*.log配下のすべてのログ読み取りを試みるようになっています。まずはこのファイルを編集して、接続先をご自身のクラスタに変更し、不要なprospector設定を削除しましょう。ObjectRocketサービスを利用している場合は、UIからBeats用のコードスニペットをコピーすれば、クラスタ固有のホスト名が自動的に挿入されるので便利です。

不要な記述をすべて削除し、ユーザー名とパスワードを入力すると、filebeat.yml全体は次のようになります。
output:
elasticsearch:
# The Elasticsearch cluster
hosts: ["https://dfw-xxxx-0.es.objectrocket.com:xxxx", "https://dfw-xxxx-1.es.objectrocket.com:xxxx", "https://dfw-xxxx-2.es.objectrocket.com:xxxx", "https://dfw-xxxx-3.es.objectrocket.com:xxxx"]
# HTTP basic auth
username: "elasticsearch"
password: "supersecretpassword"
これだけです。すべてのinput設定が削除され、ファイルにはElasticsearchへの接続情報のみが残っている点に注意してください。この時点で、ご自身のマシンからElasticsearchクラスタにアクセスできること、ACLが適切に設定されていることも確認しておきましょう。それでは、Filebeatを使ってすべてを動かしてみます。
Filebeatの実行
クラスタとの通信設定は完了しました。filebeat.ymlをデフォルトの場所に置いたまま変更した場合は、filebeatディレクトリで次のコマンドを実行するだけです。
./filebeat -e -modules=system -setup-eオプションはsyslogではなく標準エラー出力(stderr)へログを出力させるためのもの、-modules=systemはsystemモジュールの使用を指定し、-setupはモジュールのKibanaダッシュボードを読み込むためのオプションです。-setupは初回実行時やFilebeatアップグレード後に一度指定するだけでよく、Kibanaにデフォルトのダッシュボードを読み込む役割を担います。複数のモジュールを実行したい場合は、カンマ区切り(スペースなし)で列挙します。
注意:Filebeat 5.4.0には、特定の環境で-setupオプションが失敗するバグがあります。
ulimit -n 2048を実行してulimit値を引き上げるか、Filebeat 5.3.xを使用することで回避できます。
これでFilebeatが動き出したはずです。エラーが表示されていないようであれば、Kibana側で結果を確認してみましょう。
データの確認
Kibanaにログインすると、新しい「filebeat-*」インデックスパターンと、いくつかの新しいビジュアライゼーションおよびダッシュボードが追加されているはずです。「Dashboards」メニューを開き、「Filebeat syslog dashboard」を選択してください。
はい、これで完成です。システムログに何らかのデータが記録されていれば、データを見やすい形で可視化できるでしょう。

注意:Filebeatに明らかなエラーが出ていないのにKibanaにデータが表示されない場合、単にシステムログの出力が少ない可能性があります。筆者の場合、日付フィルタをデフォルトの「過去15分」より前に戻さないとデータが確認できませんでした。
まとめ
モジュールの導入は、最も一般的なユースケースにおいてBeatsをさらに使いやすくする大きな一歩です。今回の例の基本手順は、現在提供されている他のモジュールにもそのまま応用できます。たとえばWordPress、Drupal、Magentoなどの多くのWebアプリケーションは、WebサーバーとMySQLをバックエンドに持っています。この一連のモジュールと1つのコマンドだけで、Webサーバーのログ、データベースのログ、そしてシステムログの送信を一括して開始できるのです。
さらに詳しい情報をお探しの方は、開発者ドキュメントを参照したり、Filebeatインストールディレクトリ内のmoduleフォルダを覗いてみてください。モジュールが使用しているprospector、pipeline、テンプレート、ビジュアライゼーションと、Kibana上で見えている内容を対応付けることができるはずです。
-
Excelで変更履歴を追跡する方法【初心者向け簡単ステップ解説】
このチュートリアルでは、Excelで変更履歴を追跡する手順を詳しく解説します。他の人と共有して更新やレビューを行うExcelファイルを扱っているなら、変更履歴(Track Changes)機能が非常に役立ちます。自分自身がファイルを編集する際に、すべての変更内容を記録しておきたい場合にも活用でき、後日見直すときに何を変更したのかを簡単に確認できます。この記事を読み終える頃には、Excelで変更履歴を自力で追跡できるようになっているはずです。 練習用ワークブックはこちらからダウンロードできます。 Excelで変更履歴を追跡する手順 ここでは、サンプルデータセットを使って分かりやすく説明します
-
Driver Easyでドライバーを最新化し、PCのパフォーマンスと生産性を向上させる方法
ドライバーは、コンピューターに接続されたハードウェアにとっての「エナジードリンク」のようなものです。システムを長期間にわたってスムーズかつ高速に動作させたいなら、ドライバーを常に最新の状態に保つことが重要です。 しかし、ドライバーの更新となると、さまざまな疑問が浮かんでくるものです。「手動でドライバーを更新するにはどうすればいいのか?」「自分のPCに合った正しいドライバーはどこで入手できるのか?」「どのドライバーを選べばハードウェアに適合するのか?」など。 これらの疑問に答えるには多少の調査が必要ですが、「手間をかけずに最新ドライバーを導入したい」というのであれば、ドライバーアップデートソフト