クラウドインテグレーション事業部所属の自称魚介系エンジニアの松尾です。
ForgeVision Advent Calendar 8日目の記事です。
個人的に今回はさほど間を開けずの投稿となります。
鯖のネタを楽しみにされている方には申し訳ないのですが、今シーズンはネタが尽きてきた(魚だけに)ので、今回鯖のお話を見送る旨予めお詫び申し上げます。。。
お話できるような鯖のネタはないのですが、ネタが尽きない監視サービスは・・・そうです!Mackerelです!!
これまでのブログでは主にAWSとMackerelの連携について記載させていただいておりましたが、今回は趣向を変えてAzureとの連携方法について紹介させていただきます。
私がMackerelを使い始めた頃は、Azureでインテグレーションが可能なサービスは3つしかなかったのですが、今ではApp Service、Functions、Application Gatewayなど、Azureには欠かせないサービスもインテグレーションできるようになりました!!
まさにブログ化にするには、時は満ちた・・・という感じですね!!
なお、これまでのMackerelに関する投稿は以下の通りです。
気になる記事がございましたら、是非ご一読下さい!!
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
Mackerelインテグレーションの概要
まず、実際にインテグレーションを行う前に、Mackerelのインテグレーション機能について説明します。
インテグレーション機能について、Mackerelサイトでは以下のように説明されています。
Azureインテグレーションを用いるとAzureクラウド製品をMackerelのホストとして管理し、メトリックを監視できます。本機能はTrialプランとStandardプランのみの提供となります。
※AWSインテグレーションでも同様の説明がされております。
私の理解では、自らが保有するクラウドサービス(AWS、Azureなど)のアクセス権限をMackerelに付与することで、APIを使って自動的にメトリックを取得してくれる機能と考えてます。(おおむね間違ってはいないと思います・・・)
EC2やAzureVMなどのIaaSサービスはMackerelエージェントをインストールすることでMackerelへメトリックをPushしますが、PaaSやSaaSサービス(RDS、LB、Web Appsなど…)はエージェントをインストールすることができませんので、このインテグレーション機能を用いることでメトリックの取得が可能となります。
※厳密にはMackerel公式プラグインでも監視可能ですが、導入の容易さと継続的な運用を考えるとインテグレーションの方がかなり楽です。
詳細は以下Mackerelサイトをご参照下さい。 mackerel.io
事前準備
Mackerel側では基本的にオーガニゼーションの作成が完了していれば問題ございませんが、先にサービス・ロール作成していると監視までの設定がスムーズにできます。
なお注意点として、上記Mackerelサイトに記載の通り、プランはTrialまたはStandardプランのみでインテグレーションの設定が可能であるため、その点はご留意下さい。
Azure側では以下のリソースを作成しております。
- Azure VM
- App Service
- Azure Database for MySQL サーバー
また、Mackerel側で監視対象を区別するため、各リソースに以下のタグを付与しております。
キー | 値 |
---|---|
Mackerel | True |
Azure側の設定
サービスプリンシパルの作成
まず初めに、Azure側でMackerelへアクセス許可を与えるためのサービスプリンシパル(特定のAzureリソースにアクセスするのに使用するID)を作成します。
Azureポータルにログインし、Azure Active Directoryの管理画面にアクセスします。
Azure Active Directoryの管理画面で、左ペインの「アプリの登録」を選択し、中央ペインで「+新規登録」を押下します。
アプリケーションの登録画面で以下の通りの指定を行い、「登録」を押下します。
- 名前
- Mackerelインテグレーション
⇒ どういった指定でも問題はありませんが、識別しやすい名前をお勧めします。
- Mackerelインテグレーション
- サポートされているアカウントの種類
- この組織ディレクトリのみに含まれるアカウント (フォージビジョン株式会社 のみ - シングル テナント)
⇒ デフォルト
- この組織ディレクトリのみに含まれるアカウント (フォージビジョン株式会社 のみ - シングル テナント)
- リダイレクトURI
- 空欄
⇒ デフォルト
- 空欄
アプリケーションの登録が完了したら、先ほどのアプリケーションの一覧画面から登録したアプリケーションを選択します。
アプリケーションの詳細画面でクライアントID、テナントIDを控えておきます。
※Mackerel側のインテグレーション設定時に必要になります。
Mackerelからのアクセスを許可するためのシークレットの作成を行います。
左ペインの「証明書とシークレット」を選択し、中央ペインで「+新しいクライアントシークレット」を押下します。
クライアントシークレットの追加画面で以下の通りの指定を行い、「追加」を押下します。
- 説明
- Mackerelインテグレーションに利用
⇒どういった指定でも問題はありませんが、どこで利用されているか識別できる内容をお勧めします。
- Mackerelインテグレーションに利用
- 有効期限
- 1年
⇒ セキュリティ的には有効期限の指定をお勧めしますが、ローテーションし忘れると、期限経過後にMackerelからアクセス不能になるためご注意下さい!
- 1年
クライアントシークレット追加後、シークレットの値を必ず控えること。
※Mackerel側のインテグレーション設定時に必要になります。
※暫く時間が経過すると確認不可となるためご注意ください!!
権限の追加
前項でMackerelからのAzureへのアクセス許可の準備が整いましたので、次にメトリックを読み取るための権限を付与します。
サブスクリプションにアクセスします。
サブスクリプションの一覧画面でMackerelからのアクセスを許可するサブスクリプションを選択します。
サブスクリプション詳細画面の左ペインで「アクセス制御(IAM)」を選択し、中央ペインの「ロールの割り当てを追加」を押下します。
ロールの割り当て追加画面で、以下の通りの設定を行い、「保存」を押下します。
- 役割
- 閲覧者
- アクセスの割当先
- ユーザー、グループ、またはサービス プリンシパル
- 選択
- アプリケーション登録時に指定した名前(今回の場合は「Mackerelインテグレーション」)
アクセス制御(IAM)画面でロールが割り当たっていることを確認します。
Mackerel側の設定
Azureインテグレーション
Azure側の準備が整ったのでMackerel側の設定を進めます。
Mackerelにログインし、オーガニゼーションの詳細ページを表示します。
「Azureインテグレ―ション」タブを選択し、「Azureインテグレーションを登録」を押下します。
Azureインテグレーション画面で以下を入力し、「作成」を押下します。
- Azureアカウント
- Azure側で控えたテナントID/クライアントID/シークレットキーを入力します。
内容に間違いが無ければ「有効」ステータスとなります。 - インテグレーションを行うリソースのリージョンを指定します。今回は「東日本」リージョンですべてのリソースを作成しているため、「Japan East」を選択します。
※リージョンごとにインテグレーション設定が必要となりますのでご注意下さい。
- Azure側で控えたテナントID/クライアントID/シークレットキーを入力します。
- メトリックを収集するサービス
- インテグレーションを行うAzureリソースを指定します。今回は事前に作成いていた以下のリソースを追加します。
※事前にサービス・ロールを作成している場合は併せてご指定下さい。- Virtual Machines
- App Service
- Database for MySQL
- インテグレーションを行うAzureリソースを指定します。今回は事前に作成いていた以下のリソースを追加します。
- タグを指定して登録するホストを絞り込む
- インテグレーション対象のリソースを絞り込む場合はタグを指定します。今回は事前にタグを付与しているため、「Mackerel:True」を指定します。
※絞り込みが必要ない場合は指定不要です。
- インテグレーション対象のリソースを絞り込む場合はタグを指定します。今回は事前にタグを付与しているため、「Mackerel:True」を指定します。
- 基本設定
- インテグレーションの名前を入力します。今回は利用しているリージョンが識別できるよう「AzureIntegrationJapanEast」と指定します。
- 任意のメモを入力します。
インテグレーションが完了すると設定時に選択したリソースが表示されます。
早速ホストの一覧画面を確認すると既に登録ずみだったAWSのリソースと共にAzureのリソースが存在しているこが確認できました。
2つのクラウドサービスのリソースが一画面に表示されるのは感慨深いですね・・・。
各リソースのメトリック群も紹介しますので、ご参考になれば・・・。
Azure VM
App Service
Azure Database for MySQL
Azureインテグレーションの開始方法については以上となります。
今回は特に触れませんでしたが、MackerelではTeamsへもアラートの通知が可能ですので、Microsoftのサービス同士で連携させるのも面白そうですね!
最後までお読みいただきありがとうございました!!
次の配信について
今回はAzureとの連携方法についてご紹介させていただきました。
(前回のブログの宣言通りです!!)
Mackerelで残りのインテグレーションできるクラウドサービスと言えば・・・
それでは次回もお楽しみに!!