Azure Monitor ログのテーブルと列を追加または削除する
- [アーティクル]
-
-
データ収集ルールを使用すると、Azure テーブルまたはカスタム テーブルにデータを送信する前に、ログ データをフィルター処理して変換できます。 この記事では、カスタム テーブルを作成し、Log Analytics ワークスペース内のテーブルにカスタム列を追加する方法について説明します。
重要
テーブル スキーマを更新するときは必ず、テーブルにデータを送信するデータ収集ルールを更新してください。 データ収集ルールで定義するテーブル スキーマによって、Azure Monitor でターゲット テーブルにデータがストリーミングされる方法が決まります。 テーブル スキーマを変更しても、Azure Monitor によってデータ収集ルールが自動的に更新されることはありません。
前提条件
カスタム テーブルを作成するには、以下が必要です。
少なくとも共同作成者権限がある Log Analytics ワークスペース。
データ収集エンドポイント (DCE)。
カスタム テーブルのサンプルレコードが少なくとも 1 つ含まれる JSON ファイル。 次のクエリのような表示になります:
[
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
},
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
},
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
}
]
Log Analytics ワークスペース内のすべてのテーブルには、TimeGenerated
という名前の列が必要です。 サンプル データに TimeGenerated
という名前の列がある場合、この値を使用してレコードのインジェスト時間が識別されます。 そうでない場合は、テーブルの DCR の変換に TimeGenerated
列が追加されます。 TimeGenerated
形式の詳細については、「サポートされている datetime 形式」を参照してください。
カスタム テーブルを作成する
Azure テーブルには、定義済みのスキーマがあります。 ログ データを別のスキーマで格納するには、データ収集ルールを使用してデータを収集、変換し、Log Analytics ワークスペースのカスタム テーブルに送信する方法を定義します。 補助プランを使用したカスタム テーブルの作成については、補助プランを使用したテーブルの設定 (プレビュー) に関する記事をご覧ください。
重要
カスタム テーブルには、_CL というサフィックスが付いています。たとえば tablename_CL です。 Azure portal では、テーブル名に _CL サフィックスが自動的に追加されます。 別の方法を使用してカスタム テーブルを作成する場合は、_CL サフィックスを自分で追加する必要があります。 データ収集ルールの DataFlows Streams プロパティの tablename_CL は、Log Analytics ワークスペースの tablename_CL 名と一致する必要があります。
警告
テーブル名は課金目的で使用されるため、機密情報を含めないようにします。
Azure portal を使ってカスタム テーブルを作成するには:
[Log Analytics ワークスペース] メニューから [テーブル] を選択します。
[作成] を選択してから、[New custom log (DCR based)] (新しいカスタム ログ (DCR ベース)) を選択します。
テーブルの名前と、必要に応じて説明を指定します。 _CL サフィックスをカスタム テーブルの名前に追加する必要はありません。これは、ポータルで指定した名前に自動的に追加されます。
[データ収集ルール] ドロップダウンから既存のデータ収集ルールを選択します。または、[新しいデータ収集ルールの作成] を選択して、新しいデータ収集ルールの [サブスクリプション]、[リソース グループ]、[名前] を指定します。
[データ収集エンドポイント] を選択し、[次へ] を選択します。
[ファイルの参照] を選択し、新しいテーブルのサンプル データを含む JSON ファイルを見つけます。
サンプル データに TimeGenerated
列が含まれていない場合は、この列で変換が作成されていることを示すメッセージが表示されます。
テーブルに取り込む前にログ データを変換する場合:
[変換エディター] を選択します。
変換エディターを使用すると、受信データ ストリームの変換を作成できます。 これは、受信した各レコードに対して実行される KQL クエリです。 Azure Monitor ログでは、クエリの結果が変換先のテーブルに格納されます。
[実行] をクリックして結果を表示します。
[適用] を選択して変換を保存し、作成しようとしているテーブルのスキーマを表示します。 [次へ] をクリックして続行します。
最後の詳細を確認し、[作成] を選択してカスタム ログを保存します。
以下の PowerShell コードで、Tables - Update PATCH API を使用してテーブルを作成します。 このコードでは、2 つの列を含む MyTable_CL という名前のテーブルを作成します。 このスキーマを変更して、別のテーブルを収集します。
Azure portal で [Cloud Shell] ボタンを選択して、環境が [PowerShell] に設定されていることを確認します。
次の PowerShell コードをコピーし、Invoke-AzRestMethod
コマンドの Path パラメーターをワークスペースの適切な値に置き換えます。 それを Cloud Shell のプロンプトに貼り付けて、実行します。
$tableParams = @'
{
"properties": {
"schema": {
"name": "MyTable_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"type": "String"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
テーブルを削除する
Azure Monitor ログには、いくつかの種類のテーブルがあります。 Azure テーブルではない任意のテーブルを削除できますが、テーブルを削除した場合のデータの状態は、テーブルの種類ごとに異なります。
詳細については、「Log Analytics ワークスペース内のテーブルを削除したときにデータがどうなるか」を参照してください。
Azure portal からテーブルを削除するには:
[Log Analytics ワークスペース] メニューから [テーブル] を選択します。
削除するテーブルを名前で検索するか、[種類] フィールドで検索結果を選んで検索します。
削除するテーブルを選択し、テーブルの右側にある省略記号 (...)、[削除] の順に選択します。「yes」と入力して削除を確定します。
PowerShell を使用してテーブルを削除するには、次のようにします。
Azure portal で [Cloud Shell] ボタンを選択して、環境が [PowerShell] に設定されていることを確認します。
次の PowerShell コードをコピーし、Invoke-AzRestMethod
コマンドの Path パラメーターをワークスペースの適切な値に置き換えます。 それを Cloud Shell のプロンプトに貼り付けて、実行します。
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/NewCustom_CL?api-version=2021-12-01-preview" -Method DELETE
カスタム列を追加または削除する
カスタム テーブルのスキーマの変更や、標準テーブルに対するカスタム列の追加や列の削除を行うことができます。
Note
列名は、文字で始まる必要があり、最大 45 文字の英数字およびアンダースコア (_
) で構成できます。 _ResourceId
、id
、_ResourceId
、_SubscriptionId
、TenantId
、Type
、UniqueId
、Title
は予約されている列名です。
Log Analytics ワークスペースのテーブルにカスタム列を追加するか、列を削除するには:
[Log Analytics ワークスペース] メニューから [テーブル] を選択します。
編集するテーブルの右側にある省略記号 (...)、[スキーマの編集] の順に選択します。
[スキーマ エディター] 画面が開きます。
[スキーマ エディター] 画面の [カスタム列] セクションまで下にスクロールします。
新しい列を追加するには:
- [列の追加] を選択します。
- 列の名前と説明 (省略可能) を設定し、[型] ドロップダウンから必要な値の型を選択します。
- [保存] を選択して新しい列を保存します。
列を削除するには、削除する列の左側にある [削除] アイコンを選択します。
Azure またはカスタム テーブルに新しい列を追加するには、次を実行します。
$tableParams = @'
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": [
{
"name": ""<ColumnName>",
"description": "First custom column",
"type": "string",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/<TableName>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
PUT
呼び出しを使用すると、更新されたテーブル プロパティが返され、そこに、新しく追加した列が含まれています。
例
このコマンドを実行して、Custom1_CF
という名前のカスタム列を Azure Heartbeat
テーブルに追加します。
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
{
"name": "Custom1_CF",
"description": "The second custom column",
"type": "datetime",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
ここで、新しく追加した列を削除し、代わりに別のものを追加するには、次を実行します。
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
{
"name": "Custom2_CF",
"description": "The second custom column",
"type": "datetime",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
テーブル内のすべてのカスタム列を削除するには、次を実行します。
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
次のステップ
各項目の詳細情報