Azure Monitor エージェントを使用して JSON ファイルからログを収集する
カスタム JSON ログは、データ収集ルール (DCR) で使用されるデータ ソースの 1 つです。 DCR の作成の詳細については、「Azure Monitor エージェントを使用してデータを収集する」を参照してください。 この記事では、テキスト ログと JSON ログの種類の詳細について説明します。
多くのアプリケーションとサービスでは、Windows イベント ログや Syslog などの標準のログ記録サービスの代わりに、JSON ファイルに情報を記録します。 このデータは、Azure Monitor エージェントを使用して収集し、他のソースから収集されたデータを使用して Log Analytics ワークスペースに格納できます。
前提条件
- 少なくとも共同作成者権限がある Log Analytics ワークスペース。
- Azure Monitor Private Link を使用する予定の場合は、データ収集エンドポイント (DCE)。 このデータ収集エンドポイントは、Log Analytics ワークスペースと同じリージョン内に存在している必要があります。 詳細については、「デプロイに基づいてデータ収集エンドポイントを設定する方法」を参照してください。
- 「Azure Monitor エージェントを使用してデータを収集する」で説明されている新規または既存の DCR。
基本的な操作
次の図は、JSON ファイルからログ データを収集する基本的な操作を示しています。
- エージェントは、ローカル ディスク上の指定された名前パターンと一致するすべてのログ ファイルを監視します。
- ログ内の各エントリが収集され、Azure Monitor に送信されます。 ユーザーによって定義された受信ストリームは、ログ データを列に解析するために使用されます。
- 受信ストリームのスキーマがターゲット テーブルのスキーマと一致する場合は、既定の変換が使用されます。
JSON ファイルの要件とベスト プラクティス:
Azure Monitor エージェントが監視しているファイルは、次の要件を満たしている必要があります。
- ファイルは、Azure Monitor エージェントがあるコンピューターのローカル ドライブの、監視対象のディレクトリ内に格納する必要があります。
- 各レコードは、行末で区切る必要があります。
- ファイルでは、ASCII または UTF-8 エンコードを使用する必要があります。 UTF-16 など他の形式はサポートされていません。
- 新しいレコードは、古いレコードを上書きせず、ファイルの末尾に追加する必要があります。 上書きすると、データが失われます。
- JSON テキストは 1 行に含まれている必要があります。 JSON 本文フォーマットはサポートされません。 以下のサンプルを参照してください。
データの損失やパフォーマンスの問題が発生しないように、次の推奨事項に従ってください。
- 古いファイルを簡単にクリーンアップできるように、毎日新しいログ ファイルを作成します。
- 監視対象ディレクトリのログ ファイルを継続的にクリーンアップします。 多くのログ ファイルを追跡すると、エージェントの CPU とメモリの使用量が増える可能性があります。 すべてのログが処理されるための十分な時間を確保できるよう、少なくとも 2 日間待ちます。
- ファイル スキャンのパターンと一致するファイルの名前を、ファイル スキャンのパターンと一致する別の名前に変更しないでください。 これにより、重複するデータが取り込まれることになります。
- ファイル スキャンのパターンと一致する大規模ログ ファイルの名前を変更したり、監視対象のディレクトリにコピーしたりしないでください。 必要な場合は、1 分あたり 50 MB を超えないようにしてください。
カスタム テーブル
JSON ファイルからログ データを収集する前に、Log Analytics ワークスペースにカスタム テーブルを作成してデータを受信する必要があります。 テーブル スキーマは、受信ストリームの列と一致する必要があります。または、出力スキーマがテーブルと一致するように変換を追加する必要があります。
警告: MMA エージェントが使用する既存のカスタム テーブルは使用しないでください。 最初の AMA エージェントがテーブルに書き込むと、MMA エージェントはテーブルに書き込むことができなくなります。 MMA データ損失を防ぐために使用する AMA 用の新しいテーブルを作成する必要があります。
たとえば、次の PowerShell スクリプトを使用して、複数の列を含むカスタム テーブルを作成できます。
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "MyStringColumn",
"type": "string"
},
{
"name": "MyIntegerColumn",
"type": "int"
},
{
"name": "MyRealColumn",
"type": "real"
},
{
"name": "MyBooleanColumn",
"type": "bool"
},
{
"name": "FilePath",
"type": "string"
},
{
"name": "Computer",
"type": "string"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
JSON ファイルのデータ収集ルールを作成する
Note
エージェントベースの JSON カスタム ファイルの取り込みは現在プレビュー段階であり、ポータルの完全な UI エクスペリエンスはまだありません。 ポータルを使用して DCR を作成できますが、受信ストリームの列を定義するために DCR を変更する必要があります。 必要な DCR の作成に関する詳細については、[Resource Manager テンプレート] タブを参照してください。
着信ストリーム
JSON ファイルには、各値にプロパティ名が含まれており、DCR の受信ストリームには、各プロパティ名に一致する列が含まれている必要があります。 Azure portal を使用して DCR を作成する場合、次の表の列が受信ストリームに含まれるため、手動で DCR を変更するか、受信ストリームを明示的に定義できる別の方法を使用して作成する必要があります。
列 | タイプ | 説明 |
---|---|---|
TimeGenerated |
datetime | レコードが生成された時刻。 |
RawData |
string | この列は JSON ログでは空になります。 |
FilePath |
string | この列を DCR の受信ストリームに追加すると、ログ ファイルへのパスが設定されます。 この列は自動的には作成されず、ポータルを使用して追加することはできません。 ポータルによって作成された DCR を手動で変更するか、受信ストリームを明示的に定義できる別の方法を使用して DCR を作成する必要があります。 |
Computer |
string | この列を DCR の受信ストリームに追加すると、コンピューターの名前が設定されます。 この列は自動的には作成されず、ポータルを使用して追加することはできません。 ポータルによって作成された DCR を手動で変更するか、受信ストリームを明示的に定義できる別の方法を使用して DCR を作成する必要があります。 |
Azure Monitor エージェントを使用したデータの収集に関するページの説明に従って、データ収集ルールを作成します。 [収集と配信] 手順で、[データ ソースの種類] ドロップダウンから [JSON ログ] を選択します。
設定 | 説明 |
---|---|
ファイル パターン | ローカル ディスク上のログ ファイルの場所と名前を確認します。 新しい名前で毎日新しいファイルが作成される場合など、異なるファイル名にはワイルドカードを使用します。 複数のファイル パターンをコンマで区切って入力できます。 例 : - C:\Logs\MyLog.json - C:\Logs\MyLog*.json - C:\App01\AppLog.json、C:\App02\AppLog.json - /var/mylog.json - /var/mylog*.json |
テーブル名 | Log Analytics ワークスペースの宛先テーブルの名前。 |
レコードの区切り記号 | 現在は使用されていませんが、将来の使用のために予約されており、現在サポートされている行末以外の区切り記号 (/r/n ) を許可します。 |
変換 | インジェスト時の変換を行ってレコードをフィルター処理したり、変換先テーブルの受信データを書式設定したりします。 source を使用して、受信データを変更せずに残します。 |
トラブルシューティング
想定している JSON ログからデータを収集しない場合は、次の手順を実行します。
- 収集されるログ ファイルにデータが書き込まれていることを確認します。
- ログ ファイルの名前と場所が、指定したファイル パターンと一致することを確認します。
- DCR の受信ストリームのスキーマが、ログ ファイルのスキーマと一致していることを確認します。
- ターゲット テーブルのスキーマが受信ストリームと一致していること、または受信ストリームを正しいスキーマに変換する変換があることを確認します。
- 「操作の確認」を参照して、エージェントが動作していて、データが受信されているかどうかを確認します。
次のステップ
各項目の詳細情報
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示