Azure Monitor エージェントを使用した IIS ログの収集

インターネット インフォメーション サービス (IIS) は、Windows マシンのローカル ディスクにデータを記録します。 この記事では、データ収集規則 (DCR) を作成し、Azure Monitor エージェントを使用して監視対象のマシンから IIS ログを収集する方法について説明します。

前提条件

この手順を完了するには、以下が必要です。

  • 少なくとも共同作成者権限がある Log Analytics ワークスペース。

  • 仮想マシンと Log Analytics ワークスペースが同じリージョンにあるかどうかに応じて、1 つまたは 2 つの データ収集エンドポイント

    詳細については、「デプロイに基づくデータ収集エンドポイントの設定方法」を参照してください。

  • ワークスペースにデータ収集ルール オブジェクトを作成するためのアクセス許可

  • IIS を実行する、VM、仮想マシン スケール セット、または Arc 対応オンプレミス サーバー。

    • W3C 形式の IIS ログ ファイルは、Azure Monitor エージェントが実行されているコンピューターのローカル ドライブに格納する必要があります。
    • ログ ファイル内の各エントリは、行末で区切る必要があります。
    • ログ ファイルでは、循環ログ記録、ファイルが新しいエントリで上書きされるログ ローテーション、またはファイルが移動され同じ名前のファイルが開かれたファイル名変更を行えません。

IIS ログを収集するデータ収集ルールを作成する

データ収集ルールでは、次を定義します。

  • Azure Monitor エージェントが新しいイベントをスキャンするソース ログ ファイル。
  • インジェスト中に Azure Monitor がイベントを変換する方法。
  • Azure Monitor がデータを送信する宛先 Log Analytics ワークスペースとテーブル。

データ収集ルールを定義して、複数のマシンから複数の Log Analytics ワークスペース (異なるリージョンまたはテナントのワークスペースを含む) にデータを送信できます。 Analytics ワークスペースと "同じリージョン" にデータ収集ルールを作成します。

注意

テナント間でデータを送信するには、まず Azure Lighthouse を有効にする必要があります。

Azure portal でデータ収集ルールを作成するには、次を行います。

  1. [モニター] メニューで、[データ収集ルール] を選択します。

  2. [作成] を選択して、新しいデータ収集ルールと関連付けを作成します。

    [データ収集ルール] 画面の [作成] ボタンを示すスクリーンショット。

  3. 次のようにルール名を入力し、サブスクリプションリソース グループリージョンプラットフォームの種類データ収集エンドポイントを指定します。

    • [リージョン] により、DCR が作成される場所を指定します。 仮想マシンとそれらの関連付けは、テナント内の任意のサブスクリプションまたはリソース グループに配置できます。
    • [プラットフォームの種類] により、このルールを適用できるリソースの種類を指定します。 [カスタム] オプションにより、Windows と Linux の両方の種類が許可されます。
    • [データ収集エンドポイント] は、Azure Monitor プライベート リンクを使わない場合は設定する必要のないオプションのフィールドです。 それが必要な場合は、データ収集に使われるデータ収集エンドポイントを指定します。 このデータ収集エンドポイントは、Log Analytics ワークスペースと同じリージョンに存在していなくてはなりません。 詳細については、「デプロイに基づくデータ収集エンドポイントの設定方法」を参照してください。

    [データ収集ルール] 画面の [基本] タブを示すスクリーンショット。

  4. [リソース] タブで、次の操作を実行します。

    1. [+ リソースの追加] を選択し、データ収集ルールにリソースを関連付けます。 リソースは、Azure 仮想マシン、Virtual Machine Scale Sets、Azure Arc for servers のいずれかです。 Azure portal は、まだインストールされていないリソースに Azure Monitor エージェントをインストールします。

      重要

      ポータルは、既存のユーザー割り当て ID と共に、ターゲット リソースでシステム割り当てマネージド ID を有効にします (該当する場合)。 既存のアプリケーションでは、ユーザー割り当て ID を要求で指定しない限り、マシンでは既定でシステム割り当て ID が代わりに使用されます。

    2. [データ収集エンドポイントを有効にする] を選択します。

    3. データ収集ルールに関連付ける各仮想マシンに対して、データ収集エンドポイントを選びます。

      このデータ収集エンドポイントを使うと、構成ファイルが仮想マシンに送信されますが、仮想マシンとは同じリージョンに存在していなくてはなりません。 詳細については、「デプロイに基づくデータ収集エンドポイントの設定方法」を参照してください。

    [データ収集ルール] 画面の [リソース] タブを示すスクリーンショット。

  5. [収集と配信] タブで、[データ ソースの追加] を選択して、データ ソースを追加し、送信先を設定します。

  6. [IIS ログ] を選択します。

    データ収集ルールで基本パフォーマンス カウンターを選ぶ Azure portal フォームを示すスクリーンショット。

  7. ファイル パターンを指定して、ログ ファイルが配置されているディレクトリを識別します。

  8. [送信先] タブで、データ ソースの送信先を追加します。

    データ収集ルールでデータ ソースを追加する Azure portal フォームを示すスクリーンショット。

  9. [確認と作成] を選択して、データ収集ルールの詳細と、一連の仮想マシンとの関連付けを確認します。

  10. [作成] を選択してデータ収集ルールを作成します。

Note

データ収集ルールを作成した後、データが送信先に送信されるまでに最大で 5 分かかることがあります。

サンプル ログ クエリ

  • www.contoso.com というホストの URL 別の IIS ログ エントリの数。

    W3CIISLog 
    | where csHost=="www.contoso.com" 
    | summarize count() by csUriStem
    
  • 各 IIS マシンによって受信された合計バイト数を確認します。

    W3CIISLog 
    | summarize sum(csBytes) by Computer
    

サンプルのアラート ルール

  • リターン状態が 500 のレコードに対するアラート ルールを作成します。

    W3CIISLog 
    | where scStatus==500
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

トラブルシューティング

IIS ログの収集をトラブルシューティングするには、次の手順を使用します。

IIS ログが受信されているかどうかを確認する

まず、Log Analytics で次のクエリを実行して、IIS ログのレコードが収集されているかどうかを確認します。 クエリでレコードが返されない場合は、他のセクションで考えられる原因を確認してください。 このクエリは過去 2 日間のエントリを検索しますが、別の時間範囲に変更できます。

W3CIISLog
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

エージェントがハートビートを正常に送信していることを確認する

Log Analytics で次のクエリを実行して、ハートビート テーブルにレコードがあるかどうかを確認することで、Azure Monitor エージェントが正しく通信していることを検証します。

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

IIS ログが作成されていることを確認する

ログ ファイルのタイムスタンプを確認し、最新のものを開いて、ログ ファイルに最新のタイムスタンプが存在することを確認します。 IIS ログ ファイルの既定の場所は C:\inetpub\logs\LogFiles\W3SVC1 です。

IIS ログのタイムスタンプのスクリーンショット。

データ収集ルールで正しいログの場所を指定したことを確認します

データ収集ルールには、次のようなセクションがあります。 logDirectories 要素は、エージェント コンピューターから収集するログ ファイルへのパスを指定します。 エージェント コンピューターを調べて、これが正しいことを確認します。

    "dataSources": [
    {
            "configuration": {
                "logDirectories": ["C:\\scratch\\demo\\W3SVC1"]
            },
            "id": "myIisLogsDataSource",
            "kind": "iisLog",
            "streams": [{
                    "stream": "ONPREM_IIS_BLOB_V2"
                }
            ],
            "sendToChannels": ["gigl-dce-6a8e34db54bb4b6db22d99d86314eaee"]
        }
    ]

このディレクトリは、エージェント マシン上の IIS ログの場所に対応している必要があります。

エージェント マシン上の IIS ログ ファイルのスクリーンショット。

IIS ログが W3C 形式であることを確認する

IIS マネージャーを開き、ログが W3C 形式で書き込まれていることを確認します。

エージェント マシン上の IIS ログ構成ダイアログボックスのスクリーンショット。

エージェント マシンで IIS ログ ファイルを開き、ログが W3C 形式であることを確認します。

ファイルが W3C 形式であることを指定するヘッダーを示す IIS ログのスクリーンショット。

Note

現時点では、X-Forwarded-For カスタム フィールドはサポートされていません。 これが重要なフィールドの場合、IIS ログをカスタム テキスト ログとして収集できます。

次のステップ

各項目の詳細情報