TIPS & TRICKS

SplunkとMicrosoft Azure Monitorの連携 パート1 – Azure Monitorの設定方法

Updated 2/22/2021: AzureからのSplunkへのデータ取り込み方法は更新されております。Splunk Add-On for Microsoft Cloud ServicesのSplunkbaseのページで詳細をご確認ください。


Azure Monitorは、Azureリソースデータのルーティングとアクセス提供を行うプラットフォームサービスです。Azure Monitorでは、主に以下の3種類のデータにアクセスできます。

1) メトリック – 主にパフォーマンス指標

2) 診断ログ – リソースによって生成されるログ

3) アクティビティログ – Azure環境で、いつ誰が何を行ったのか

Azure MonitorのデータをSplunkへ取り込むには、Azure側とSplunk側の両方で設定作業が必要です。このブログ記事では、Azure側で必要な作業について解説します。本ブログ次の記事では、データ収集を行うAzure Monitor Add-on for Splunkについて説明します。

プロフェッショナルヒント:Azureの設定を自動化できるPowerShellスクリプトをご利用いただけます

Azure Monitorのデータにアクセスできる仕組み

アクティビティログは、Azureのコントロールプレーンによって生成されます。このログには基本的に、Azure環境でいつ誰が何を行ったのかという情報と、サービスの正常性、推奨事項、セキュリティなどの情報が含まれています。Azure Monitorはアクティビティログのデータをイベントハブにルーティングします

診断ログは、プロビジョニングされたリソースによって生成されます。プロビジョニングされたリソースのタイプによって、診断ログの内容は異なります。たとえば、キーコンテナーの診断ログには、「取得」操作でシークレットを取得したときのイベントが含まれています。診断データは複数の場所にルーティングできますが、このブログでは便宜上、イベントハブにルーティングします

メトリックは、Azureリソースによって生成される数値であり、そのリソースの操作とパフォーマンスを把握するのに役立ちます。メトリックにはREST APIを介してアクセスでき、93日間(執筆時点の情報)利用できます。

Azureのコンポーネントのイメージ

Azureのコンポーネント

Azure側には、主に3つのコンポーネントが必要です。

1) Azure ADアプリケーション – これは、ユーザーIDとパスワードを持つユーザーアカウントまたはサービスアカウントと考えるとわかりやすいと思います。ただしAzure ADアプリケーションの場合は、アプリケーションIDとキーです。

2) イベントハブ – アクティビティログと診断ログが保存される場所です。

3) キーコンテナー – アプリケーションキーとイベントハブ名前空間キーがここに保存されます(キーコンテナーという名前のとおりです)。

設定作業中に、Azure ADアプリケーションに役割とアクセス許可を付与します。これを行うには、サービスプリンシパルオブジェクトを作成します。

再びユーザーに例えて説明すると、多くの場合、ユーザーを作成した後はネットワークの各エリアに対するアクセス許可をユーザーに与える必要があります。これと同じことをAzure ADアプリケーションに行うには、サービスプリンシパルオブジェクトを作成します。サービスプリンシパルでは、テナントにおけるアクセスポリシーとアプリケーションへのアクセス許可を定義します。その点でAzure ADアプリケーションはユーザーに似ており(IDとパスワードがあるところも)、サービスプリンシパルオブジェクトはユーザーのアクセスレベルのようなものです。もちろんこれは極端に単純化していますので、技術的な詳細はこちらでご確認ください

イベントハブのセキュリティ

イベントハブからプログラムでデータを取り出しSplunkに取り込むには、共有アクセスポリシー名とキーが必要です。これらの値はAzure Monitor Add-on for Splunkには保存されず、キーコンテナーから取得します。

共有アクセスポリシー名とキーとイベントハブ

 

メトリックのセキュリティ

メトリックデータは、REST APIを使用してAzureから取り出します。Azureのメトリックデータにアクセスするには、Azure ADアプリケーションIDとキーの設定が必要です。イベントハブと同様に、これらの値はAzure Monitor Add-on for Splunkには保存されず、キーコンテナーから取得します。

メトリックのセキュリティイメージ

 

キーコンテナーのセキュリティ

Azure ADアプリケーションキーやイベントハブ名前空間キーは、Azure Monitor Add-on for Splunkに保存されず、キーコンテナーに保存されます。しかし、これらのキーをキーコンテナーからプログラムで取得するには、Azureによるセキュリティ認証を行う必要があります。セキュリティ認証には(ご想像のとおりですが)、Azure ADアプリケーションIDとキーを使用します。このAzure ADアプリケーションIDとキーは、Azure Monitor Add-on for Splunkに保存されます。上記で使用したAzure ADアプリケーションを再利用しても、キーコンテナーの「取得」アクセス許可を持つ新規アプリケーションを作成してもかまいません。このブログでは便宜上、どちらにも同じAzure ADアプリケーションを使用します。

キーコンテナーのセキュリティイメージ

 

設定の概要

必要なAzureコンポーネントの次は、設定の概要を確認しましょう。

1) Azure ADアプリケーション登録を作成します。Azure Monitor Add-on for SplunkからAzureへのデータ問い合わせは、Azure ADアプリケーションのコンテキストで行います。

2) イベントハブ名前空間を作成します。Azureでは、この名前空間に含まれる各イベントハブにアクティビティログと診断ログが書き込まれます。名前空間は複数あってもかまいませんが、このブログでは便宜上、1つだけ使用します。

3) キーコンテナーを作成します。キーコンテナーには、Azure ADアプリケーションとイベントハブのキーが保存されます。

4) 必要なサービスプリンシパルオブジェクトをすべて設定します(ネットワークに対するユーザーの権限のようなものです)。SplunkはAzure ADアプリケーションのコンテキストでAzureからデータを取得するため、データが格納されているAzureのセクションに対する適切な権限をこのアプリケーションに持たせておく必要があります。

5) Azure ADアプリケーションとイベントハブ名前空間のキーをキーコンテナーに保存します。

このガイドを進めていく中で、AzureやSplunkの設定のために、いくつかの情報をメモしておく必要があります。メモすべき情報は、各ステップでこのアイコン を使って示します。

それでは、Azureを設定しましょう。

Azure ADアプリケーションを作成する

1. [Azure Active Directory] -> [アプリの登録] -> [新しいアプリケーションの登録]を選択します。

注:既存のAzure ADアプリケーション登録を使用してもかまいません。

Azure ADアプリケーション登録画面

2. 名前とサインオンURLを入力し、[作成]をクリックします。

注:サインオンURLを使用しない場合は、有効なURLならば何でもかまいません。

名前とサインオンURL入力の画面

3. アプリケーション登録のキーを作成します。

[設定] -> [キー]をクリックします。キーの説明を入力し、キーの有効期限を設定して、[保存]をクリックします。

アプリケーション登録のキー作成画面

 

[保存]ボタンをクリックしたら、キーの値をコピーしておきます。Azure Portalでキーの値が表示されるのはこのときだけです。この値がわからなくなった場合は、上記の手順で新しいキーを生成する必要があります。このキーは後でキーコンテナーに保存します。

アプリケーションIDとキーの画面

 

 アプリケーションIDとキーをメモしてください。

アプリケーションID 11111111-1111-1111-1111-111111111111    
アプリケーションキー 22222222-2222-2222-2222-222222222222    

サブスクリプションに対する閲覧者アクセス権をAzure ADアプリケーションに付与する

Azure ADアプリケーションを作成した後で(サービスアカウントと同様に)、サービスプリンシパルオブジェクトを介して、サブスクリプションに対する閲覧者アクセス権をアプリケーションに付与する必要があります。

1. [サブスクリプション] -> 貴社のサブスクリプション -> [アクセス制御 (IAM)] -> [追加]を選択します。[閲覧者]ロールを選択し、前のステップのアプリケーション登録名を入力して、表示されたアプリケーションを選択し、[保存]ボタンをクリックします。

サブスクリプションに対する閲覧者アクセス権

Splunkで使用したいサブスクリプションが複数ある場合、サブスクリプションごとに上記のステップを繰り返します。

イベントハブ名前空間を作成する

イベントハブ名前空間には1つ以上のイベントハブが含まれます。構成されたAzureサービスがこの名前空間にイベントハブを作成し、アクティビティログと診断ログを保存します。

1. [イベント ハブ] -> [追加]を選択します。名前、リソースグループ、その他の設定を入力し、[作成]を選択します。

イベントハブ名前空間の作成画面

2. イベントハブ名前空間を作成したら、キーコンテナーに保存するキーを取得する必要があります。

作成したイベントハブ名前空間で、[共有アクセスポリシー] -> [RootManageSharedAccessKey]を選択し、プライマリキーをコピーします。

プライマリキーのコピー画面

 ポリシー名とプライマリキーをメモしてください。

アプリケーションID 11111111-1111-1111-1111-111111111111  
アプリケーションキー 22222222-2222-2222-2222-222222222222 
イベントハブ名前空間     例:splunkdev
イベントハブのポリシー名     RootManageSharedAccessKey
イベントハブのプライマリキー     1234asdf4321fdsa1234asdf4321fdsa

キーコンテナーを作成する

Azure ADアプリケーションキー(パスワードのようなもの)やイベントハブ名前空間キーはAzure Monitor Add-on for Splunkに保存されず、キーコンテナーから取得します。

1. [キーコンテナー] -> [追加]を選択します。名前、リソースグループ、その他の設定を入力し、[作成]を選択します。

注:デフォルトでは、キーコンテナーのほとんどのアクションを実行できるアクセスポリシーが現在のユーザーに付与されます。次のステップでは、今回のAzure ADアプリケーションに別のアクセスポリシーを追加します。

2. [キーコンテナー] -> 作成したキーコンテナー -> [アクセスポリシー] -> [新規追加]を選択します。

キーコンテナー新規追加画面

3. [プリンシパルの選択]をクリックします。Azure ADアプリケーション登録の名前を入力し、表示されたAzure ADアプリケーション登録の名前を選択し、[選択]をクリックします。

[プリンシパルの選択]の画面

4. シークレットのアクセス許可のリストから[取得]を選択し、[OK]を選択します。

シークレットのアクセス許可のリスト画面

5. [保存]を選択します。

保存の画面

メモのアイコン> キーコンテナー名をメモしてください。</p>
<table cellpadding=アプリケーションID 11111111-1111-1111-1111-111111111111   アプリケーションキー 22222222-2222-2222-2222-222222222222 
イベントハブ名前空間     例:splunkdev イベントハブのポリシー名     RootManageSharedAccessKey イベントハブのプライマリキー     1234asdf4321fdsa1234asdf4321fdsa
キーコンテナー名 作成したキーコンテナー名

イベントハブ名前空間キーとAzure ADアプリケーションキーをキーコンテナーに保存する

1. [キーコンテナー] -> 作成したキーコンテナー -> [シークレット] -> [生成/インポート]を選択します。

キーコンテナーに保存する\

2. 名前を入力し、イベントハブ名前空間のプライマリキーを[値]に貼り付け、RootManageSharedAccessKeyを[コンテンツの種類]に入力し、[作成]を選択します。

3. 作成したシークレットの現在のバージョンを選択し、シークレットのバージョンをコピーしておきます。

 

シークレットのバージョンコピーの画面

4. Azure ADアプリケーションのキーに対しても、このステップを繰り返します。

名前を入力し、キーを[値]に貼り付け、アプリケーションIDを[コンテンツの種類]に貼り付け、[作成]を選択します。

5. 作成したシークレットの現在のバージョンを選択し、シークレットのバージョンをコピーしておきます。

アプリケーションID 11111111-1111-1111-1111-111111111111  
アプリケーションキー 22222222-2222-2222-2222-222222222222 
イベントハブ名前空間     例:splunkdev
イベントハブのポリシー名     RootManageSharedAccessKey
イベントハブのプライマリキー     1234asdf4321fdsa1234asdf4321fdsa
キーコンテナー名 作成したキーコンテナー名
イベントハブキーのシークレット名 例:myEventHubKey
イベントハブキーのシークレットバージョン 1234asdf4321fdsa1234asdf4321fdsa
アプリケーションキーのシークレット名 例:myAppKey
アプリケーションキーのシークレットバージョン 1234asdf4321fdsa1234asdf4321fdsa

ここまでのまとめ

必要な設定は以上です。ここまでのAzure Monitorの設定作業をまとめると以下の通りです。

1) Azure ADアプリケーション登録を作成しました。これはユーザーアカウントやサービスアカウントに似ていて、アプリケーションIDはユーザーID、アプリケーションキーはパスワードのようなものです。

2) サブスクリプションに対する閲覧者アクセス権をAzure ADアプリケーションに付与しました。これは、サービスプリンシパルオブジェクトを介して行いました。

3) イベントハブ名前空間を作成しました。

4) キーコンテナーを作成しました。

5) キーコンテナーに保存されたシークレットに対する取得アクセス権をAzure ADアプリケーションに付与しました。

6) Azure ADアプリケーションキーとイベントハブ名前空間キーをキーコンテナーに保存しました。

次に、Azureのいくつかのデータにアクセスできるように設定します。

アクティビティログをイベントハブに送信する

1. [モニター] -> [アクティビティログ] -> [エクスポート]を選択します。

アクティビティログをイベントハブに送信画面

2. エクスポートするサブスクリプションとリージョンを選択し、保持期間を設定して、[Export to an event hub]ボックスをチェックします。[Service Bus名前空間]を選択し、先ほど作成したイベントハブ名前空間とポリシー名を選択して、[OK] -> [保存]を選択します。

エクスポート画面

診断ログをイベントハブに送信する

診断ログはリソースレベルで構成します。診断ログの構成は、Azure Portal、PowerShell、Azure CLIで行うことができます。ここでは、診断ログの設定を有効にする方法について、より詳しく説明します。

例として、先ほど作成したイベントハブの診断ログを有効にします。

1. [イベントハブ] -> 作成したイベントハブ -> [診断ログ]を選択し、[診断を有効にする]を選択します。

診断ログ画面

2. 名前を入力し、[Stream to an event hub]ボックスをチェックし、作成したイベントハブとアクセスポリシーを選択し、[OK]を選択します。イベントハブに送るログを選択し、[保存]を選択します。

イベントハブに送るログ選択画面

メトリックデータ収集の準備をする

アクティビティログや診断ログは「すべてかゼロ」、つまりオンかオフにしかできません。メトリックはそうでなく、収集したいメトリックを選択できます。ログ収集するメトリックを構成するには、リソースに「Metrics」というタグを作成します。ここでは、先ほど作成したイベントハブを使用した例を紹介します。

1. [タグ]を選択し、タグ名として「Metrics」と入力します。値には、このリソースで利用可能なすべてのメトリックを収集するためにアスタリスク(*)を入力するか、具体的なメトリック名のカンマ区切りのリストを入力し、[保存]を選択します。

メトリックデータ収集の準備画面

こちらに各リソースタイプで利用可能なメトリックの一覧があります。

注1:メトリック名を明示的に指定する場合は、「メトリックの表示名」を使用してください。たとえば、「IncomingRequests」ではなく、「受信要求」を使用します。

注2:"すべてのリソースにMetrics:*と設定し、アドオンで詳細を選別すればよいと思われるかもしれません。理論上はうまく行くはずで、アドオン側でその選別は可能です。しかし、コンピューティングの世界では、あらゆるものに上限や制約があります。その1つが、ARMのAPIに送ることができるクエリー文字列の長さです。たとえば、Redis Cacheのリソースには多数のメトリックがあります。Redis Cacheのメトリックすべてをリクエストすると、クエリー文字列の上限(2048バイト)を簡単に超えてしまいます。このような場合のベストプラクティスは、一般的な主要メトリックに絞ることでリクエストされるメトリック数を抑え、それから必要に応じて掘り下げていくことです」

出典 -> https://github.com/Microsoft/AzureMonitorAddonForSplunk/wiki/Configuration-of-Azure

まとめ

Azure Monitor for Splunk Add-onを使用してSplunkにデータを取り込むために、Azure側の設定は以上です。Azure ADアプリケーション、イベントハブ名前空間、キーコンテナー、サービスプリンシパル、アクティビティログ、診断ログ、メトリック収集タグを設定しました。次のブログ記事では、Azure Monitor Add-on for Splunkのインストールと、Azure側でアクセスできるようにしたすべてのデータを取り出すためのデータ入力設定について解説します。

Jason Conger
Posted by

Jason Conger

TAGS
Show All Tags
Show Less Tags