使用 azure 命令行工具根据自定义日志创建警报
Posted
技术标签:
【中文标题】使用 azure 命令行工具根据自定义日志创建警报【英文标题】:Create alert based on custom logs by using azure command line tool 【发布时间】:2021-02-28 14:32:42 【问题描述】:我尝试使用 az 命令行工具根据自定义日志查询创建指标警报。到目前为止,我所做的是;
保存自定义日志查询 创建用于发送警报信息的操作组我没有做的是使用 az monitor metrics alert create 命令创建警报,以便它基于保存的 loq 查询返回的结果数。是否可以使用 az 命令行工具根据自定义日志查询创建指标警报?
【问题讨论】:
【参考方案1】:自定义日志搜索警报的类型为 microsoft.insights/scheduledqueryrules。因此,您可以使用az monitor scheduled-query 命令集来管理您的计划查询规则(资源)。
要创建计划查询,请使用az monitor scheduled-query create
命令:
az monitor scheduled-query create --condition
--name
--resource-group
--scopes
[--action]
[--description]
[--disabled false, true]
[--evaluation-frequency]
[--location]
[--mad]
[--severity]
[--tags]
[--target-resource-type]
[--window-size]
查看Azure CLI command reference 了解可用参数及其定义。
本文档中描述了创建日志警报的其他一些方法:Create, view, and manage log alerts using Azure Monitor
【讨论】:
【参考方案2】:如果你知道命令,帮助信息通常非常有用和详细:
az monitor scheduled-query create --help
这是一个基于对我有用的查询的示例。它假定您已经创建了资源组、工作区和操作组:
RESOURCE_GROUP="ResourceGroupName"
WORKSPACE_NAME="LogAnalyticsWorkspaceName"
ACTION_GROUP_NAME="ActionGroupName"
QUERY='AzureDiagnostics
| where Message contains "Connection successful"
| where TimeGenerated > ago(5m)
| order by TimeGenerated desc'
WORKSPACE_ID=$(az monitor log-analytics workspace show \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME \
--query id --out tsv)
az monitor scheduled-query create \
--name "TestScheduledQuery" \
--resource-group $RESOURCE_GROUP \
--scopes $WORKSPACE_ID \
--description "Test rule" \
--action $ACTION_GROUP_NAME \
--evaluation-frequency 5m \
--mute-actions-duration PT30M \
--severity 3 \
--condition "count 'QRY1' > 0" \
--condition-query QRY1="$QUERY"
这个例子将:
每 5 分钟运行一次 (--evaluation-frequency
)
寻找符合过去 5 分钟内生成的约束的新诊断 (QUERY
)
如果匹配计数大于零 (--condition
):
它将激活警报(发送邮件等,具体取决于--action
中的操作组)
一旦警报触发,它将被静音 30 分钟,这样重复的警报就不会向任何人发送垃圾邮件 (--mute-actions-duration
)
无论如何,这些设置中的大多数都是默认设置,为了清楚起见,我只是对它们进行了定义。
【讨论】:
以上是关于使用 azure 命令行工具根据自定义日志创建警报的主要内容,如果未能解决你的问题,请参考以下文章