📘
[Azure]データ収集ルールのカスタムログの送信先テーブルは1つだけ?
きっかけ
VMに適用するデータ収集ルールの数をできるだけ少なくしたいという要件があった。少なくともPortal上からの操作では、データの送信先が1つにしか設定できないため、テンプレートデプロイを利用した方法で解消できないかを検証してみた。
手順(公式URL)
を使いながら試してみる。
公式との差分を本記事で載せていく。
- データ収集ルール作成後に、テンプレートのダウンロードを行う。
オートメーション → テンプレートのエクスポート - dataSourcesとdataFlowsに出力先のテーブルを追加する。
一部個人情報のためマスキングしています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRules_xxxx_test_name": {
"defaultValue": "xxx-test",
"type": "String"
},
"dataCollectionEndpoints_xxx_externalid": {
"defaultValue": "/subscriptions/1e52a4ec-3c4d-47a3-817c-8c2892d41ace/resourceGroups/Sandbox/providers/Microsoft.Insights/dataCollectionEndpoints/xxxx",
"type": "String"
},
"workspaces_xxx_externalid": {
"defaultValue": "/subscriptions/1e52a4ec-3c4d-47a3-817c-8c2892d41ace/resourceGroups/Sandbox/providers/Microsoft.OperationalInsights/workspaces/xxx",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2022-06-01",
"name": "[parameters('dataCollectionRules_xxx_test_name')]",
"location": "japaneast",
"kind": "Linux",
"properties": {
"dataCollectionEndpointId": "[parameters('dataCollectionEndpoints_xxx_externalid')]",
"streamDeclarations": {
"Custom-tbl_audit_CL": {
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "RawData",
"type": "string"
}
]
}
},
"dataSources": {
"logFiles": [
{
"streams": [
"Custom-tbl_audit_CL"
],
"filePatterns": [
"/tmp/tmp.log"
],
"format": "text",
"settings": {
"text": {
"recordStartTimestampFormat": "ISO 8601"
}
},
"name": "tbl_audit_CL"
}
★★★追加★★★
,
{
"streams": [
"Custom-tbl_audit2_CL"
],
"filePatterns": [
"/tmp/tmp.log"
],
"format": "text",
"settings": {
"text": {
"recordStartTimestampFormat": "ISO 8601"
}
},
"name": "tbl_audit2_CL"
}
★★★追加★★★
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaces_xxx_externalid')]",
"name": "la-53555362"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-tbl_audit_CL"
],
"destinations": [
"la-53555362"
],
"transformKql": "source",
"outputStream": "Custom-tbl_audit_CL"
}
★★★追加★★★
,
{
"streams": [
"Custom-tbl_audit2_CL"
],
"destinations": [
"la-53555362"
],
"transformKql": "source",
"outputStream": "Custom-tbl_audit2_CL"
}
★★★追加★★★
]
}
}
]
}
- 再度デプロイを行う。
- データ収集ルールのリソースにVMを追加する。(VMは作成しておく)
Portal上での見え方
少なくともPortal上での見え方は変わらない。ただ、テンプレートのエクスポート画面からjsonを見ると、ちゃんと変更は反映されていた。
Log Analytics ワークスペースでの見え方
-
1つ目のテーブル(これはPortal上でもデータ収集ルールに設定済みのテーブル)
-
2つ目のテーブル(テンプレートデプロイでのみ反映したテーブル)
実際にどちらのカスタムテーブルにも出力された。テーブルへの出力までには5~10分ほどかかった。
※余談
1つ目のテーブルにしかないログ(test3,test4)だが、収集ルールを再デプロイして適用されきる前にVM上でのログを追加してしまった可能性がある。そのため、jsonでのみ追加した2つ目のテーブルには出力されなかった可能性が高い。タイミングイシューだけの話である。
詰まったところ
- データ収集ルールの作成時にテーブルが見つからないとエラーが出てしまう
ワークスペース側にはテーブルがあるので、原因がよくわからなかった。
→ 別のサブスクリプションで作成したところ問題なかった…サブスクリプション固有の問題なのだろうか。後でサポートに問い合わせしてみよう。
結論
テンプレートのエクスポートから、jsonを編集することで複数のテーブルにカスタムログが出力可能である。
さらなる拡張検証として、LogAnalytics ワークスペース自体が複数になった時の検証も実施してみたい。
Discussion