Azureインテグレーションを用いるとAzureクラウド製品をMackerelのホストとして管理し、メトリックを監視できます。本機能はTrialプランとStandardプランのみの提供となります。
Azureのクラウド製品1台が、Mackerelで1ホストとして登録され、Mackerelの課金対象のホスト数としてカウントされます。 ホストの種類は、Virtual Machinesについてはスタンダードホスト、その他の製品についてはマイクロホストとなります。 また、5分ごとに取得対象となるメトリックの数だけAzureのAPIをコールして値を取得します。そのためAzure Monitor API利用の料金が発生する場合がありますのでご注意ください。
Azureインテグレーションは現在は以下のAzureクラウド製品に対応しています。取得メトリックなどについてはそれぞれのドキュメントを参照ください。1
SQL Database・Cache for Redis・Virtual Machines・App Service・Functions・Load Balancer・Database for MySQL・Database for PostgreSQL・Application Gateway・Blob Storage・Azure Files
連携方法
Azureインテグレーションはサービスプリンシパルを使って連携をします。
サービスプリンシパルとは、特定のAzureリソースにアクセスするのに使用するIDであり、ユーザーのIDを使うのと比べて、限られた権限を持つのでセキュリティ的により安心です。
Azureインテグレーションの設定の際に、「Azure Active Directoryでアプリケーションを作成する」「サービスプリンシパルにロールを割り当てる」の両方の操作をするためのアクセス許可が必要となります。それぞれのアクセス許可を持っているかどうか確認するには以下の公式ドキュメントの「Azure Active Directory のアクセス許可を確認する」と「Azure サブスクリプションのアクセス許可を確認する」の項目をご確認ください。
このヘルプドキュメントではAzure CLI 2.0とAzure PortalでのAzureインテグレーションの設定方法を紹介します。
Azure CLI 2.0を用いた連携方法
このセクションでは、Azure CLIを用いた連携方法について説明します。
Azure CLI 2.0 インストール
ログイン、サービスプリンシパルの設定
まず以下のコマンドでAzureにログインしてください。
$ az login
次に以下のコマンドを利用して、Azureインテグレーションのためのサービスプリンシパルを作成し、同時に閲覧者権限も付与します。
--years
は password
の有効期限を設定するもので、デフォルトでは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
のオプションなどについては以下をご参照ください。
上記の結果のうち、 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"
のように指定します。
-
Azureメトリックスエクスプローラーの仕様に伴い、1メトリックのディメンションが50を超えた分は無視されます。↩