Elastic Stack 7.6.0リリース記念 MetricbeatのAzureモジュールを紹介したい
概要
先日リリースされました Metricbeat 7.6.0では、いくつかの機能が追加されています。
AWSでの課金情報、GCPでのモニタリング、Azureでのストレージモニタリングとありますが、今回はAzureのストレージ部分について非常に気になったので、これを紹介したいです。
正常に稼働しているか、という観点ではSLAの観点で気になりますし、ストレージの使用量は課金に直結しますから、モニタリングしておく必要があろうかと思います。
そこで、今回は以下のような背景の方には、特に刺さる内容になるのではと思い、紹介を致します。
- Azure cliやPowershellで自作することは避け、慣れたツールで見たい
- Azure Monitorでも良いんだけれども、Elastic Stackに集約する方がメリットがあると感じる人向け
Azure Moduleについて
Azure Moduleについてのドキュメントはこちらになります。 現時点では、Azure Moduleそのものがbeta版となっていることに留意してください。
azure module | Metricbeat Reference [7.6] | Elastic
事前準備
Azureへの接続時にService Principalを使いますので、これを作成しておく必要があります。
Service Principalってなんじゃらホイ、という方は以下の公式ドキュメントを片手に作業を進めると良いです。
ポータルで Azure AD アプリとサービス プリンシパルを作成する - Microsoft identity platform | Microsoft Docs
作成したService Principalには、ロールを割り当てておきましょう。
Users will have to make sure the roles assigned to the application contain at least reading permissions to the monitor data, more on the roles here
可能であればMetricbeat用のService Principalを作成し、権限を必要最低限のものに設定しておくことが望ましいです。 しかし、簡易に試したいだけ、という人は・・・「共同作成者」みたいな強いロールを割り当ててしまうと動作確認は可能です。
Azure Moduleの有効化
デフォルトでは、Azureモジュールは有効となっていないので、Azureモジュールを有効化します。
metricbeat modules enable azure
MetricbeatのAzureモジュールの設定
Azureモジュールの設定ファイルは、{metricbeat}/module.d/azure.yml になります。 先の有効化のコマンドで、azure.yml.disabledがazure.ymlになっただけです。
事前準備で作成したService Principalの情報を埋めていきましょう。
- module: azure metricsets: - storage enabled: true period: 300s client_id: '*********************' # Service Principalからひっぱってくる情報 client_secret: '*********' # Service Principalからひっぱってくる情報 tenant_id: '**************' # テナントID subscription_id: '*******************' # サブスクリプションID refresh_list_interval: 600s
ひな形にある設定ファイルですと、resoucesのセクションがありますが、取得する条件を絞り込むときの要素で必須ではないため、今回は外しておきました。
リソースIDやグループで絞ると、取得対象が絞られるのと、またBlobやFile、Queueなどの種類も絞ることができます。
Metricbeatの実行
metricbeat -e
azure storage metricsetがベータ版ですよ、というWARNINGが出力されます。 しかし、それは100も承知なので無視して次に進みましょう。
Kibanaで用意されているダッシュボード
metricbeat setup
このコマンドで設定されるダッシュボードには、Azure用のダッシュボードがいくつか含まれています。
今回は、ストレージの情報を見たいので、[Metricbeat Azure] Storage Overview
を選択することにしましょう。
このダッシュボードからコンテナ、キュー、ファイルなど他のダッシュボードにも遷移できますので、まずはOverviewを見るのが良いかと思います。
[Metricbeat Azure] Storage Overview
ここでは各ストレージのメトリクスが表示されています。 ストレージアカウントごとのUsage(使用量)を始めとして、レイテンシやIngress/Egressなどが表示されています。
画面の左には、サブスクリプション、リソースグループ、ストレージアカウントのフィルター条件を設定できるパーツがあります。
注意点1
あまりに長い期間を検索条件として指定しますと、以下のようなエラーが出ます。
The request for this panel failed Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]. This limit can be set by changing the [search.max_buckets] cluster level setting.
max_bucketsを大きくすることは、他への影響も考える必要が出てきそうです。
ですので、このダッシュボードでは、直近どうなのか、というところで確認するのが良く、長いタイムスパンで見る場合には、別途ダッシュボードを作って対応するのがよさそうです。
終わりに
Elastic APMやLog UIなどと併用すると、システムに何かあったときの調査が1つのツールで完結するために、よりやりやすくなるかと思います。
Azureの中の製品群で、上記のことはもちろん出来る内容ですが、既にElastic製品を使っていてさらに活用していきたい、という人には役立つモジュールかと思います。
AWSのbeatモジュールも開発が活発ですが、Azureも負けずに頑張って欲しいところです。
それでは、ごきげんよう。