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インテグレーションの設定の際に、「Microsoft Entra ID2でアプリケーションを作成する」「サービスプリンシパルにロールを割り当てる」の両方の操作をするためのアクセス許可が必要となります。それぞれのアクセス許可を持っているかどうか確認するには以下の公式ドキュメントの「Microsoft Entra ID のアクセス許可を確認する」と「Azure サブスクリプションのアクセス許可を確認する」の項目をご確認ください。
このヘルプドキュメントではAzure CLI 2.0とAzure PortalでのAzureインテグレーションの設定方法を紹介します。
Azureアカウントの認証情報を設定する
Azure CLI 2.0 もしくは Azure Portal のいずれかの方法で認証情報を作成して、Azureインテグレーションに設定します。
Azure CLI 2.0を用いて認証情報を取得する
このセクションでは、Azure CLIを用いた連携方法について説明します。
Azure CLI 2.0 インストール
ログイン、サービスプリンシパルの設定
まず以下のコマンドでAzureにログインしてください。
$ az login
サービスプリンシパルの設定にはサブスクリプションIDが必要になるので、次のコマンドでサブスクリプションIDを事前に取得してください。
$ az account show --query id --output tsv xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
次に以下のコマンドを利用して、Azureインテグレーションのためのサービスプリンシパルを作成し、同時に閲覧者権限も付与します。
--years
は password
の有効期限を設定するもので、デフォルトでは1年となります。有効期限が切れると再び設定するまでメトリック取得が不可能となりますのでご注意ください。
$ az ad sp create-for-rbac --role Reader --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --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 Portalを用いて認証情報を取得する
このセクションでは、Azure Portalを用いた連携方法について説明します。
Azure Portalにログイン
https://portal.azure.com にアクセスし、ログインしてください。
テナントID取得
サイドバーからMicrosoft Entra IDを選択し、「プロパティ」を選択してください。
選択すると表示される「テナント ID」をMackerelのAzureインテグレーション設定画面の テナントID
に入力してください。
Entra ID アプリケーションの作成
Mackerelとの連携の際にユーザーの権限ではなくアプリケーションの権限でメトリックの取得をするために、Microsoft Entra IDでアプリケーションの作成をします。
先ほどのEntra IDの画面から「アプリの登録」を選択してください。
次に「新規登録」を選ぶと以下の様な画面になります。
Mackerel と連携するためのアプリケーションを登録してください。 アプリケーションの表示名とリダイレクトURIはMackerel側では利用しません。リダイレクトURIの項目で「パブリッククライアント/ネイティブ」「Web」「シングルページアプリケーション(SPA)」から選ぶ場面では「Web」を選択してください。
クライアントID、シークレットキーの取得
登録が完了したら、先ほどの画面から登録したアプリケーションを選択してください。以下の様な画面に移ります。「アプリケーション (クライアント) ID」をMackerelの画面の クライアントID
の欄に入力してください。
このアプリケーションの画面で次に「証明書とシークレット」を選択してください。ここではクライアントシークレットを作成できます。「新しいクライアントシークレット」をクリックし、シークレットの説明や有効期限を設定して保存するとシークレットの値が表示されます。こちらをコピーしMackerel側の シークレットキー
の欄に入力してください。(権限設定がされていない間はMackerelの画面で「無効」と表示されます。「権限設定」の項目に進み、閲覧権限を付与してください)
注意 こちらのシークレットの有効期限が切れますとその時点からMackerelのAzureインテグレーションでもメトリック取得が不可能となりますので、その際はシークレットを新たに作り直してください。
権限設定
上記でシークレットの取得と設定は完了ですが、最後に権限の付与も必要です。メトリック値を読み取るための権限を付与します。
Portal画面のサイドバーの「サブスクリプション」を選択してください。その後対象のサブスクリプションを選び、「アクセス制御 (IAM)」を選択します。ここではユーザーやサービスプリンシパルに対する権限の設定ができます。
今回は先ほど作成したEntra IDのアプリケーションに対して権限を設定します。
「追加」から「ロールの割り当ての追加」を押し、「役割」は「閲覧者」を選択して次に進んでください。(仮にここで閲覧者以外の権限を選択してしまった場合、安全のためMackerelのAzureインテグレーションはメトリック取得をしないようになっています)
「アクセスの割り当て先」で「ユーザー、グループ、またはサービス プリンシパル」にチェックを付け、メンバーには先ほど作成したアプリケーションを選択してください。(注意: アプリケーション名の検索は前方一致なので先頭から入力しないと表示されません)
「レビューと割り当て」をクリックしてしばらくすると、権限がアプリケーションに付与されます。
「ロールの割り当て」タブで「閲覧者」の欄の下に表示されているアプリケーションが正しいことを確認してください。
Azureインテグレーションは複数サブスクリプションに対応していますので、上記の権限設定を監視したい全てのサブスクリプションで繰り返してください。
Mackerelの設定画面にてテナントID、クライアントID、シークレットキーが正しく設定されていることを確認してください。認証が失敗する場合はこちらをご確認ください。
認証情報が正しいか確認する
設定に不備があり連携に失敗する場合、次のような理由が表示されます。
- 認証情報の利用に失敗しました。入力した認証情報を確認してください。
- 不必要に強い権限が付与されています。必要最低限の権限のみ付与してください。
- 現在、一時的に認証が行えない状態です。しばらく時間をおいてから再度お試しください。
認証情報や権限に不備がないか確認の上、設定の見直しを行ってください。
連携するサービスとサブスクリプションを選択する
リージョンを選択して、連携するサービスにチェックをします。
さらに連携するサブスクリプションを選択する場合は、任意のサブスクリプションにチェックを入れます。選択しない場合は、すべてのサブスクリプションが対象となります。
連携ホストを確認した上で、設定を保存してください。しばらくすると、ホスト一覧にAzureインテグレーションによって作成されたホストが表示されます。
タグで絞り込む
Mackerelの設定画面でタグを指定します。連携ホスト数を確認し、保存してください。
タグを service:foo, service:bar
のように指定すると、キーがserviceで値がfooまたはキーがserviceで値がbarであるタグが付与されているインスタンスが対象となります。 キーや値にカンマ ,
などを含む場合は、クォート ( "
または '
) で囲ってください。例えば、キーが service,role
で値が foo,bar
である場合は、 "service,role": "foo,bar"
のように指定します。