我们经常听到Grafana云用户要求指导如何编写更好的警报综合监测指标和综合监控检测到一个问题时得到通知。
我们已经船一个预定义的警报在Grafana云综合监测。一个预定义的警报,我们船报警probe_all_success_sum指标灵敏度和利用警报配置创建多个Grafana云报警规则。看看综合监控报警文档获取详细信息。
一个预定义的警报记录规则的利用probe_all_success_sum和连接sm_check_info得到alert_sensitivity标签。然后我们创建警报规则使用记录规则与用户定义的阈值。
这些提醒表达式可以用于构建预警规则。请参阅普罗米修斯文档为更多的细节。
警报表达式
我们使用PromQL表达式来获取数据,规模,或使用promQL函数执行计算。
这些五大表情Grafana云用户正在寻找帮助:
- 正常运行时间——时间的分数目标了。
- 可达性——所有的检查都有成功的百分比。
- 平均延迟——接收响应的平均时间在所有检查。
- 出错率——总误差百分比是多少?
- 出错率的调查——有什么错误比例对于每个探针观察给定的目标?
在这里,我们将编写Grafana云报警(Alertmanager)表达式最要求合成监测指标。
我们将使用警报,看一百一十分钟(10米)时期作为一个例子,但这可能是改变任何的时间长度。
1。正常运行时间
这个警报触发时(即目标是下来。在所有调查),检查失败。
表达式:
sum_over_time(装天花板(金额(例如,工作)(idelta (probe_all_success_sum{}(10米)))/笔(例如,工作)(idelta (probe_all_success_count{}(10米)))))[10 m:]) / count_over_time(((例如,工作)和(idelta (probe_all_success_count{}(10米))))[10 m:])
当这个表达式1不等于(! = 1),它将意味着目标下,探测器都能达到目标。
这个警报不会火如果至少一个探针能够达到目标,成功地检查目标(即。,检查需要通过)。
您可以配置检查失败从所有调查100%的时间来测试这个表达式。为此,使用重定向的目标和配置检查不遵循重定向。它将失败100%的时间从所有探测器或使用不存在的一个目标。
例子提醒:警报或遥不可及的目标时探针
sum_over_time(装天花板(金额(例如,工作)(idelta (probe_all_success_sum{}(10米)))/笔(例如,工作)(idelta (probe_all_success_count{}(10米)))))[10 m:]) / count_over_time(((例如,工作)和(idelta (probe_all_success_count{}(10米))))[10 m:]) ! = 1
2。可达性
可达性的比例是所有成功的检查时间。
在这种情况下我们有两种可能的警报表达式基于你如何定义报警阈值。
表达式1:
(例如,工作)和(δ(probe_all_success_sum{}(10米)))/笔(例如,工作)(δ(probe_all_success_count{}(10米)))
这个表达式返回0 - 1可达性范围,1意味着100%可及的地方。你可以当你想使用0.9作为阈值警告如果能达性会降到90%。
例子提醒:警报时可达性低于90%
(例如,工作)和(δ(probe_all_success_sum{}(10米)))/笔(例如,工作)(δ(probe_all_success_count{}(10米)))< 0.9
表达式2:
100 *((例如,工作)和(δ(probe_all_success_sum{}(10米)))/总和(例如,工作)(δ(probe_all_success_count{}(10米))))
这个表达式返回可达性在0 - 100的范围内。在这种情况下我们扩展指标在100年实现这一目标。在这里你可以直接使用百分比数字作为阈值。
例子提醒:警报时可达性低于90%
100 *((例如,工作)和(δ(probe_all_success_sum{}(10米)))/总和(例如,工作)(δ(probe_all_success_count{}(10米))))< 90
3所示。平均延迟
表达式1:
(例如,工作)和(率(probe_all_duration_seconds_sum{}(10米)))/笔(例如,工作)(率(probe_all_duration_seconds_count{}(10米)))
这个表达式返回延迟在几秒钟内,所以我们需要定义警报阈值或分数秒的秒。
例子提醒:警报当延迟1秒以上
(例如,工作)和(率(probe_all_duration_seconds_sum{}(10米)))/笔(例如,工作)(率(probe_all_duration_seconds_count{}(10米)))> 1
例子提醒:警报当延迟超过500毫秒
(例如,工作)和(率(probe_all_duration_seconds_sum{}(10米)))/笔(例如,工作)(率(probe_all_duration_seconds_count{}(10米)))> 0.5
表达式2:
1000 *((例如,工作)和(率(probe_all_duration_seconds_sum{}(10米)))/总和(例如,工作)(率(probe_all_duration_seconds_count{}(10米))))
这个表达式返回延迟毫秒,毫秒可以用作警告阈值。这里我们扩展相同的表达式在1000年得到结果,以毫秒为单位。
例子提醒:警报当延迟超过500毫秒
1000 *((例如,工作)和(率(probe_all_duration_seconds_sum{}(10米)))/总和(例如,工作)(率(probe_all_duration_seconds_count{}(10米))))> 500
4所示。出错率
表达式1:
(例如,工作1 -(总和)(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米))))
这个表达式返回一个出错率在0 - 1之间。提醒,我们需要定义阈值在0 - 1之间。
例子提醒:警报当错误率在10%以上
(例如,工作1 -(总和)(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米))))> 0.1
表达式2:
100 *(1 -((例如,工作)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米)))))
这个警报表达式被扩展到100年。现在,出错率在0 - 100的范围内。我们可以用百分比来警告阈值。
例子提醒:警报当错误率在10%以上
100 *(1 -((例如,工作)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米)))))> 10
5。出错率的调查
错误率的探针是一样的错误率,只有我们被分解数据,包括探测器和每个探测器的指标。
表达式1:
1 - (sum()工作,调查(率(probe_all_success_sum{}(10米)))/总和(工作,探测器)(率(probe_all_success_count{}(10米))))
这个表达式返回出错率在0 - 1之间,和这对每个探测率。提醒,我们需要定义阈值在0 - 1的范围内。
例子提醒:警报当错误率探针在50%以上
1 - (sum()工作,调查(率(probe_all_success_sum{}(10米)))/总和(工作,探测器)(率(probe_all_success_count{}(10米))))> 0.5
表达式2:
100 *(1 -((工作,探测器)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作,探测器)(率(probe_all_success_count{}(10米)))))
这个警报表达式被扩展到100年。现在每个探针的出错率在0 - 100的范围内。我们可以用百分比来警告阈值。
例子提醒:警报当错误率探针在50%以上
100 *(1 -((工作,探测器)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作,探测器)(率(probe_all_success_count{}(10米)))))> 50
预警规则
构建一个警告,我们需要添加一个条件表达式。当条件的求值结果为true(即。,返回一些数据),我们的警报被认为是积极的。
例子提醒规则:
警告:SMHighErrorRateAbove10Per expr: 100 *(1 -((例如,工作)和(率(probe_all_success_sum{}(10米)))/总和(例如,工作)(率(probe_all_success_count{}(10米)))))> 10:5 m注释:摘要:“高错误率在SM检查{{$标签。实例}}和{{$标签。工作}}”的描述:“SM检查{{$标签。实例}}和{{$标签。工作}}错误率在10%以上”
在这个例子中预警规则,我们提醒当任何检查所有探测器的错误率在10%以上在过去10分钟。
警告:SMHighErrorRateAbove10Per
是我们的警报名称
expr: 100 *(1 -((例如,工作)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米)))))
是我们promQL表达式(条件/阈值)。
expr: 100 *(1 -((例如,工作)和(率(probe_all_success_sum{}(10米)))/笔(例如,工作)(率(probe_all_success_count{}(10米)))))> 10
是我们promQL表达式条件/阈值(在这种情况下> 10)。一个警告规则需要用条件表达式。
你可以把这个表达式和查询使用Grafana探索。如果你得到数据和状态,这意味着警报会火。你可以测试你的警报表达和调整阈值。
:5米
定义了时间后等待我们的表达式计算为true(即。返回数据)。在这种情况下,表达式需要评估为true警惕火灾至少5分钟。警报会在未决状态停留5分钟,之后将进入发射状态。
注释:
这部分可以用来定义额外的信息,比如警报描述,runbook链接,或指示板连接。您可以使用模板在本节显示警告标签或其他细节。
提示:你可以看一下警报{}
普罗米修斯时间序列,看看哪个警报是活动的(等待或解雇)。
如果你想了解更多,请查看我们的会议综合监控Grafana云从GrafanaCONline 2021。
没有Grafana云账户?现在免费注册和看看我们慷慨的永远免费提供,并计划为每个用例。