Azureインテグレーション

Azureインテグレーションを用いるとAzureクラウド製品をMackerelのホストとして管理し、メトリックを監視できます。本機能はTrialプランとStandardプランのみの提供となります。

Azureのクラウド製品1台が、Mackerelで1ホストとして登録され、Mackerelの課金対象のホスト数としてカウントされます。 ホストの種類は、Virtual Machinesについてはスタンダードホスト、その他の製品についてはマイクロホストとなります。 また、5分ごとに取得対象となるメトリックの数だけAzureのAPIをコールして値を取得します。そのためAzure Monitor API利用の料金が発生する場合がありますのでご注意ください。

Azureインテグレーションは現在は以下のAzureクラウド製品に対応しています。取得メトリックなどについてはそれぞれのドキュメントを参照ください。1

SQL DatabaseCache for RedisVirtual MachinesApp ServiceFunctionsLoad BalancerDatabase for MySQLDatabase for PostgreSQLApplication GatewayBlob StorageAzure Files

連携方法

Azureインテグレーションはサービスプリンシパルを使って連携をします。

サービスプリンシパルとは、特定のAzureリソースにアクセスするのに使用するIDであり、ユーザーのIDを使うのと比べて、限られた権限を持つのでセキュリティ的により安心です。

Azureインテグレーションの設定の際に、「Azure Active Directoryでアプリケーションを作成する」「サービスプリンシパルにロールを割り当てる」の両方の操作をするためのアクセス許可が必要となります。それぞれのアクセス許可を持っているかどうか確認するには以下の公式ドキュメントの「Azure Active Directory のアクセス許可を確認する」と「Azure サブスクリプションのアクセス許可を確認する」の項目をご確認ください。

docs.microsoft.com

このヘルプドキュメントではAzure CLI 2.0とAzure PortalでのAzureインテグレーションの設定方法を紹介します。

Azure CLI 2.0を用いた連携方法

このセクションでは、Azure CLIを用いた連携方法について説明します。

Azure CLI 2.0 インストール

docs.microsoft.com

ログイン、サービスプリンシパルの設定

まず以下のコマンドでAzureにログインしてください。

$ az login

次に以下のコマンドを利用して、Azureインテグレーションのためのサービスプリンシパルを作成し、同時に閲覧者権限も付与します。

--yearspassword の有効期限を設定するもので、デフォルトでは1年となります。有効期限が切れると再び設定するまでメトリック取得が不可能となりますのでご注意ください。

$ az ad sp create-for-rbac --role Reader --years <YEARS>
{
  "appId": "abcdefgh-abcd-efgh-abcd-abcdefghijkl",
  "displayName": "azure-cli-2017-01-23-45-67-89",
  "name": "http://azure-cli-2017-01-23-45-67-89",
  "password": "foofoo-bar-bar-foo-foobarbaz",
  "tenantId": "12345678-1234-5678-1234-123456781234",
}

create-for-rbac のオプションなどについては以下をご参照ください。

docs.microsoft.com

上記の結果のうち、 tenantId の値をMackerelの テナントID に、 appId の値を クライアントID に、 passwordシークレットキー に設定してください。 Mackerelの設定画面にてテナントID、クライアントID、シークレットキーの他、リージョンとサービスとタグが正しく設定されていることを今一度ご確認ください。

連携ホストを確認した上で、設定を保存してください。しばらくすると、ホスト一覧にAzureインテグレーションによって作成されたホストが表示されます。

Azure CLI 2.0を用いた連携方法は以上です。

Azure Portalを用いた連携方法

このセクションでは、Azure Portalを用いた連携方法について説明します。

Azure Portalにログイン

https://portal.azure.com にアクセスし、ログインしてください。

テナントID取得

サイドバーからAzure Active Directoryを選択し、「プロパティ」を選択してください。

選択すると表示される「ディレクトリID」をMackerelのAzureインテグレーション設定画面の テナントID に入力してください。

Active Directory アプリケーションの作成

Mackerelとの連携の際にユーザーの権限ではなくアプリケーションの権限でメトリックの取得をするために、Azure Active Directoryでアプリケーションの作成をします。

先ほどのActive Directoryの画面から「アプリの登録」を選択してください。

次に「新規登録」を選ぶと以下の様な画面になります。

Mackerel と連携するためのアプリケーションを登録してください。 アプリケーションの表示名とリダイレクトURIはMackerel側では利用しません。パブリッククライアント/ネイティブとWebを選ぶ場面では「Web」を選択してください。

クライアントID, シークレットキーの取得

登録が完了したら、先ほどの画面から登録したアプリケーションを選択してください。以下の様な画面に移ります。「アプリケーション ID」をMackerelの画面の クライアントID の欄に入力してください。

このアプリケーションの画面で次に「証明書とシークレット」を選択してください。ここではクライアントシークレットを作成できます。シークレットの説明や有効期限を設定し保存するとシークレットの値が表示されます。こちらをコピーしMackerel側の シークレットキー の欄に入力してください。(権限設定がされていない間はMackerelの画面で「無効」と表示されます。「権限設定」の項目に進み、閲覧権限を付与してください)

注意 こちらのシークレットの有効期限が切れますとその時点からMackerelのAzureインテグレーションでもメトリック取得が不可能となりますので、その際はシークレットを新たに作り直してください。「期限なし」を選んだ場合は有効期限がすぐに切れることはありません。

権限設定

上記でシークレットの取得と設定は完了ですが、最後に権限の付与も必要です。メトリック値を読み取るための権限を付与します。

Portal画面のサイドバーの「サブスクリプション」を選択してください。その後対象のサブスクリプションを選びます。

「アクセス制御 (IAM)」を選択してください。ここではユーザーやサービスプリンシパルに対する権限の設定ができます。今回は先ほど作成したActive Directoryのアプリケーションに対して権限を設定します。

「追加」から「ロールの割り当ての追加」を押し、「役割」は「閲覧者」を選択してください(仮にここで閲覧者以外の権限を選択してしまった場合、安全のためMackerelのAzureインテグレーションはメトリック取得をしないようになっています。)

「選択」の欄では先ほど作成したアプリケーションを選択してください。(注意: アプリケーション名の検索は前方一致なので先頭から入力しないと表示されません)

しばらくすると権限がアプリケーションに付与され、以下のように表示されます。「閲覧者」の欄の下に表示されているアプリケーションが正しいことを確認してください。

Azureインテグレーションは複数サブスクリプションに対応していますので、上記の権限設定を監視したい全てのサブスクリプションで繰り返してください。

Mackerelの設定画面にてテナントID、クライアントID、シークレットキーの他、リージョンとサービスとタグが正しく設定されていることを今一度ご確認ください。

連携ホストを確認した上で、設定を保存してください。しばらくすると、ホスト一覧にAzureインテグレーションによって作成されたホストが表示されます。

Azure Portalを用いた連携方法は以上です。

タグで絞り込む

Mackerelの設定画面でタグを指定します。連携ホスト数を確認し、保存してください。

タグを service:foo, service:bar のように指定すると、キーがserviceで値がfooまたはキーがserviceで値がbarであるタグが付与されているインスタンスが対象となります。 キーや値にカンマ , などを含む場合は、クォート ( " または ' ) で囲ってください。例えば、キーが service,role で値が foo,bar である場合は、 "service,role": "foo,bar" のように指定します。


  1. Azureメトリックスエクスプローラーの仕様に伴い、1メトリックのディメンションが50を超えた分は無視されます。