如何通过命令行修改Log Analytics的dataFlows并配置多streams?
Azure DCR修改:命令行更新dataFlows及多streams配置
我创建了Log Analytics工作区,想给Application Insights传入的遥测数据加自定义列/属性(比如system_CF)。最初通过Azure门户的「Log Analytics工作区 | 表」视图,右键点特定Application Insights表选「编辑转换」配置,结果ARM模板/JSON里生成了多个dataFlows条目,只有streams属性不一样,示例如下:
{ "properties": { "dataFlows": [{ "destinations": ["dc...d1"], "streams": ["Microsoft-Table-AppDependencies"], "transformKql": "source \n| extend system_CF=case(...))\n" }, { "destinations": ["dc...d1"], "streams": ["Microsoft-Table-AppRequests"], "transformKql": "source \n| extend system_CF=case(...))\n" }, ... ] } }
后来尝试用REST API(借助az rest工具,按照编辑DCR的教程流程)更新数据收集规则,请求返回200状态码,但PATCH操作根本没生效——哪怕改transformKql内容也没用。现在问两个问题:
- 怎么用命令行修改
dataFlows属性? - 怎么设置多个
streams?
问题1:命令行修改dataFlows属性
步骤1:导出当前DCR完整配置
用az rest调用GET接口,把当前DCR的JSON配置导出到本地文件:
az rest --method get --uri "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/dataCollectionRules/{dcrName}?api-version=2021-09-01-preview" > dcr-config.json
把命令里的{subscriptionId}、{resourceGroupName}、{dcrName}换成你自己的实际值。
步骤2:编辑本地JSON文件
打开dcr-config.json,找到properties.dataFlows节点,直接修改:
- 要改现有dataFlow的
transformKql,直接更新对应字段内容就行 - 要新增dataFlow条目,就在数组里加新的对象
- 要把多streams合并到同一个dataFlow,参考问题2的配置方式
步骤3:提交完整更新(用PUT替代PATCH)
PATCH操作容易出现字段匹配问题,推荐用PUT提交完整配置,确保修改生效:
az rest --method put --uri "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/dataCollectionRules/{dcrName}?api-version=2021-09-01-preview" --body @dcr-config.json --headers Content-Type=application/json
PUT会覆盖整个DCR配置,能保证你修改的内容完全应用上去。
问题2:设置多个streams
不用创建多个dataFlows条目,直接在单个条目的streams数组里加多个流名称就行,示例如下:
{ "properties": { "dataFlows": [{ "destinations": ["dc...d1"], "streams": [ "Microsoft-Table-AppDependencies", "Microsoft-Table-AppRequests", "Microsoft-Table-Exceptions" ], "transformKql": "source \n| extend system_CF=case(...))\n" } ] } }
这样同一个转换逻辑会自动应用到所有指定的streams上,不用重复写相同的transformKql。
注意点
- 确保你加的所有streams属于同一数据源类型,而且转换逻辑对所有流都适用
- 提交PUT请求前,检查JSON格式有没有语法错误
- 操作完可以去Azure门户的DCR页面看配置是否生效,或者再用GET接口验证返回的配置内容
内容的提问来源于stack exchange,提问作者sschmeck
相关产品推荐
相关产品推荐

