エンジニアリング

FilebeatとElasticオブザーバビリティでAzureインフラを監視する

アプリケーションとそのエンドユーザーエクスペリエンスを最適化するには、アプリケーションが存在するエコシステム内部の状態を把握する能力が不可欠です。Microsoft AzureのElastic Cloudを使うユーザーは、Elasticオブザーバビリティを使ってインフラストラクチャーを監視できるほか、数分でデプロイできる幅広いリソースを活用して各シグナルの相互の関連性を理解することができます。

Azureで提供されるマネージドサービスのElasticsearchを導入すると、1クリックでのアップグレードやデフォルトで有効なセキュリティ機能など、ITの運用をシンプル化する数多くのメリットを活用することができます。さらに、ログ、メトリック、APMトレースの大規模な一元化に役立つElasticオブザーバビリティを使ってシステムの最新の状態を簡単に把握することもできます。また機械学習を使って異常を検知し、奇妙な挙動をアラートするよう設定すれば、環境内で起きているイベントに速やかに対応することも可能です。

Azureを監視するユースケース向けにElasticオブザーバビリティを活用する方法は次の通りです。

  • Azure Event HubsでFilebeat Azureモジュールを使ってアクティビティ、サインイン、監査ログを監視する。
  • Metricbeat Azureモジュールを使って演算処理能力、コンテナー、データベースストレージ、請求、アプリケーションインサイトメトリックを分析する。

このブログ記事は、Elastic Stackを使ってAzureにオブザーバビリティを構築する方法を取り上げます。記事をご覧になった後は、ぜひお使いのデプロイで試していただくことをお勧めいたします。既存のデプロイをお持ちでない場合は、ブログ記事「Microsoft AzureのElastic Cloudを使いはじめる」をぜひご覧ください。Elastic Cloud(Elasticsearchマネージドサービス)はAzure Marketplaceから簡単に立ち上げることができ、高度にフレキシブルな特長を備えているほか、Azureと請求をまとめることができます。

Elastic × Azureでオブザーバビリティを高める

Elasticオブザーバビリティは、Azureを監視する目的ですぐに使い始めることができるソリューションです。Filebeatには設定不要のAzureモジュールがあり、お使いのエコシステムにすばやく軽量なシッパーを追加することができます。インストールするとログイベントを収集することができます。収集したログはElasticsearchまたはLogstashに送ってインデックスできます。インデックスを完了すると、パワフルなKibanaの機能を使ってデータを分析したり、可視化したりできます。Kibanaの可視化やダッシュボードはすぐに使いはじめることができるよう、事前構築されています。

実際に試してみましょう!

Azureのログをインジェストする

操作をシンプルにするため、Filebeatのインストール手順はKibana上でも確認できるようになっています。本記事の冒頭でも説明したように、この手順を使ってFilebeatをデプロイし、Azureのアクティビティ、サインイン、監査ログのインジェストします。

Filebeatのダウンロードとインストール

バージョン7.10以降のデプロイをお使いの場合は、Kibanaホームページで[Install Filebeat](Filebeatをインストール)をクリックします。

7.9以前のデプロイをお使いの場合は、バージョンのアップグレードに関するドキュメントをご覧ください。アップグレード作業は自動で行われ、予期しないダウンタイムを最小化する設計です。

まずナビゲーションメニューをクリックしてから、[Home](ホーム)をクリックします。

Add data](データを追加)をクリックします。

クリックすると、[Add data](データを追加)メニューに遷移します。[Azure logs](Azureログ)を選択します。

手順に従い、お使いのシステムにFilebeatをインストールします。[View exported fields](エクスポートされたフィールドを表示)や、[Learn more](詳しく見る)のリンクをクリックして、Filebeatに関する補足情報を参照することもできます。

Kibanaのこのページは開いたままで、以下の作業を続けていただくことができます。ここから、各設定を進めるたびにこのページに戻って参照する形で進みます。

Filebeatを設定する

お使いのシステムにFilebeatをダウンロード、およびインストールしたら、次にfilebeat.ymlファイルを修正する必要があります。Linuxシステムの場合、このファイルは通常/etc/filebeatにあります。

このプロセスをKibanaで実行する場合のメリットに、Elastic Cloudのデプロイと通信するために必要なエントリをファイルに追加する方法がKibanaに表示される、という点があります。このファイルの2つの変数に修正が必要です。1つがcloud.id、もう1つがcloud.authです。

Azureアカウント上でセルフマネージドのElastic Stackを実行している方は、Elastic Stack Filebeatへの接続クイックスタートガイドを参照してください。

ヒント:どの値を参照すればよいかわからない場合は、こちらのドキュメントで詳しい説明をご確認ください。

Event Hubを作成する

Elasticオブザーバビリティソリューションでアクティビティ、サインイン、監査ログを監視するには、Azure Event Hubsを使う必要があるほか、storage blobへのアクセスも必要となります。セットアップ済みのEvent Hubをお使いでない場合、クイックスタート:Azure portalを使用したイベントハブの作成ドキュメントで詳しい作成手順をご確認ください。次に、そのEvent Hubにアクティビティログを送信する手順を参照し、実行してください。

Event Hubの作成にあたって、既に作成済みのものがある場合は、既存の名前空間に追加しても構いません。または、以下に示すように完全に新しいEvent Hubを作ることもできます。

お使いのAzure Portalの[Event Hubs]サービスで、[Add](追加)をクリックします。

リソースグループを選択し、名前を付けます。ここでは一例として、elastic-eventhubとします。

場所と料金ティアを選択して進み、お好みに応じてオプションのタグを追加した後、[Create](作成)をクリックします。

Shared access policies](共有アクセスポリシー)をクリックします。

RootManageSharedAccessKey]という名前で表示されるデフォルトのポリシーをクリックしてから、接続文字列をクリックしてコピーします。コピーした文字列をどこか安全な場所にペーストします。この文字列は後ほど、Filebeat Azureモジュール設定ファイル(azure.yml)に使用します。

Activity log](アクティビティログ)に移動し、[Diagnostics settings](診断設定)をクリックします。

Add diagnostic setting](診断設定)をクリックして、elastic-diagと名づけます。

お好みのログを選択し、[Stream to an event hub](Event Hubにストリーミングする)の選択を必ず有効にします。

elastic-eventhub]名前空間を選択し、このEvent Hub名の[(Create in selected namespace)](指定した名前空間に作成する)というオプションを選択してから、[RootManageShareAccessKey]ポリシーを選択します。

insights-activity-logsという名称のEvent Hubが作成され、elastic-eventhub名前空間の下に表示されます。この名前空間は、後でazure.yml設定ファイルに使用します。

Save](保存)をクリックしてから、elastic-eventhubにもう一度戻り、イベントメトリックが流入していることを確認します。

Azureモジュールを有効化する

Azureモジュールは、コマンド1つでシンプルに有効化することができます。出発点となったKibana内のページでは、3番目のステップとして説明されています。

このステップは、azure.yml設定ファイルを確実に有効化し、Azureサブスクリプションと通信できるようにします。

Linuxでモジュールを有効化する場合のコマンドは次の通りです。

sudo filebeat modules enable azure

すべてのモジュールをリスト化し、かつ有効化されたモジュールを上位に表示するには以下を実行します。

sudo filebeat modules list

モジュールを無効化するには、以下を実行します。

sudo filebeat modules disable azure

Azureモジュールを設定する

有効化した後は、azure.ymlファイルを設定する必要があります。Linuxシステムでは通常、このファイルは/etc/filebeat/modules.dディレクトリで見つけることができます。モジュールが有効になっていない場合は、同じディレクトリに.disabled拡張子があるはずです。

Azureモジュール内ではデフォルトでactivitylogsのみ有効化されており、enabled: trueと表現されています。

auditlogsおよびsigninlogsを設定するには、Azureアカウントのグローバル管理者、またはセキュリティ管理者権限が必要です。Event Hubの設定と権限について詳しくは、「Azure Active DirectoryログをAzureイベントハブにストリーム配信する」チュートリアルをご確認ください。2つのログは、enabled: falsetrueに変更することで有効化できます。

重要:監査ログとサインインログの設定に必要な権限を持っていない場合、azure.ymlファイル内の2つのモジュールは無効化のままにしておく必要があります。

それではいよいよ、azure.yml設定ファイルに情報を追加します。先ほど保存しておいたeventhubおよびconnection_stringエントリと、ストレージアカウント情報を追加するだけです。

ヒント:必要となるストレージアカウント名とキーは、使用するストレージカウントで確認することができます。[Access keys](アクセスキー)をクリックしてください。Microsoft Azureのページ「ストレージアカウントアクセスキーを管理する」を参照していただくこともできます。

アクティビティログのみ設定しているとき、設定ファイルは概ね以下のようになります。

- module: azure 
  # All logs 
  activitylogs:
    enabled: true 
    var:
      # eventhub name containing the activity logs 
      eventhub: "insights-activity-logs" 
      # consumer group name that has access to the event hub 
      consumer_group: "$Default" 
      # connection string required to communicate with Event Hubs       
      connection_string: "<your connection string key>" 
      # the storage account  
      storage_account: "<your storage name>" 
      # the storage account key 
      storage_account_key: "<your account key>"

この設定についてさらに詳しくは、モジュール設定のドキュメントをご覧ください。storage account/keyは、万が一Filebeatサービスが停止した場合でもログのシーケンスを保つために必要となります。

ヒントeventhubは“Event Hub”という名前空間ではなく、インスタンス名です。Event Hub名前空間は複数のハブのコンテナーをグループ化し、その名前空間レベルでユーザーへの請求が発生します。詳しくは、Microsoftが提供するドキュメントサイトで「Event Hubsのよく寄せられる質問」をご覧ください。

Filebeatをセットアップ&起動する

ここまででFilebeatとEvent Hub、ストレージアカウントの設定が完了しました。次はFilebeatのセットアップと起動です。Kibana上で、Filebeatのダウンロードと設定を開始したページに戻りましょう。ステップ4に、この手順で必要となる下記のコマンドの概説があります。

先行の手順で、FilebeatをサービスとしてインストールするためにRPMを使用しましたが、ここでまた、Filebeatをサービスとして実行するためにRPMを使います。この手順は、お使いのシステムのタイプによって若干異なります。DEBおよびRPMパッケージ向けにサービスとしてFilebeatを実行する方法について詳しくは、Filebeatとsystemdについてのドキュメントをご覧ください。または、異なるプラットフォームで実行する場合は、Filebeatクイックスタートドキュメントを参照してください。

最初にsetupステップを実行する必要があります。このステップで、事前構築済みのAzure Cloudダッシュボードで使用する事前定義済みのアセットインデックス可視化などを読み込みます。このsetupコマンドを使うことにより、ElasticがAzure向けに提供する設定不要の統合機能をフル活用できます。自前で開発する必要がなく、必要に応じて完全にカスタマイズできるうえ、コミュニティ開発の豊富な統合機能を活用することもできます。

セットアップを実行します。

sudo filebeat setup

また、setupコマンドに-eをつけて実行することもできます。この場合、ロギングデータがsyslogではなく表示用に送信され、進行中のステップを確認するのに役立ちます。

sudo filebeat setup -e

次に、以下を実行し、サービスを起動します。

sudo service filebeat start

以下を実行し、ステータスを確認します。

sudo service filebeat status

Filebeatを停止するには、以下を実行します。

sudo service filebeat stop

実行ダイアログでサービスが正常に稼働していることを確認、検証します。

sudo journalctl -u filebeat -f

Kibanaで可視化する

ここまでの手順でEvent Hubがアクティビティログの収集を開始し、またログをFilebeatでElasticsearchに送るよう設定しました。次は、収集したログをKibanaで可視化します。

お手元では、KibanaでFilebeatの設定を開始したページを開いていただいていると思います。そのページで、[Check data](データを確認)をクリックしてから、[Azure logs dashboard](Azureログダッシュボード)をクリックしてください。

blog-azure-log-mon-11.jpg

結果が表示されます。ここまでわずか数ステップの手順で、インジェスト、分析、可視化をすべて実行することができました!

まとめ

この記事が、Event Hubを使ったAzureアクティビティログのインジェストによってAzureデプロイを監視したり、設定不要のダッシュボードを活用したりするユースケースにFilebeatを導入するための有用なリソースとなりましたら幸いです。

この先のステップとして、Metricbeat Azureモジュールを使い、Azureの演算処理能力、コンテナー、データベースストレージ、請求、アプリケーションインサイトメトリックを収集することができます。

ご不明点がおありの方や、建設的なディスカッションを通じたコントリビューションに関心をお持ちの方はぜひ、Elasticオブザーバビリティディスカッショングループをご活用ください。またElastic学習ハブに、多数のチュートリアル動画やトレーニングリソースをご用意しています。こちらも併せてご利用ください。