PrometheusGrafana告警

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PrometheusGrafana告警相关的知识,希望对你有一定的参考价值。

主要概念和特点

关键概念或特征含义
Data sources for Alerting 告警的数据源配置从哪里查询到告警信息数据
Provisioning for Alerting 告警的配置使用文件等方式配置警报资源,已经管理警报资源
Scheduler 调度器评估告警规则,将其视为定期对数据源运行查询的组件
Alertmanager 告警管理器赶礼警报实例的路由和分组
Alert rule 告警规则告警规则由一个或多个查询和表达式、条件、评估频率以及满足条件的持续时间组成。一个告警规则可以产生多个告警实例。
Alert instance触发警报规则时会创建一个警报实例。警报规则可以创建一个或多个警报实例。当一个警报规则导致创建多个实例时,这称为多维警报。
Alert group默认情况下,Alertmanager 使用根通知策略的标签对警报实例进行分组。这控制发送到联系点的重复数据删除和警报实例组。
Contact point 联系点定义触发警报规则时如何通知您的联系人。比如邮件、钉钉企业微信等
Message templating消息模板创建可重复使用的自定义模板并在联系点中使用它们。
Notification policy 通知策略定义了一组关于告警分组和路由到联系点的位置、时间和方式
Labels and label matchers 标签和标签选择器标签唯一标识警报规则。它们将警报规则链接到通知策略和静音,确定应处理它们的策略以及应静音的警报规则。
Silences 静默设置在接下的某个时间段(比如 2:20到3:30)停止来自一个或多个警报实例的通知,这个是单次设定的。使用标签匹配器使警报实例静音。
Mute timings 静音计时指定您不希望生成或发送新通知的时间间隔。例如在固定每周的某个时间段进行维护系统的时候,或者升级的时候,不希望接收到告警通知。必须链接到现有的通知政策。

告警规则

告警规则类型

Mimir, Loki and Cortex rules

要创建 Mimir、Loki 或 Cortex 警报,您必须具有兼容的 Prometheus 数据源。您可以通过测试数据源并检查是否支持 ruler API 的详细信息来检查您的数据源是否兼容。

告警实例

Grafana 托管警报支持多维警报。每个警报规则可以创建多个警报实例。如果您在单个表达式中观察多个系列,这将非常强大。

考虑以下 PromQL 表达式:

sum by(cpu) (
  rate(node_cpu_seconds_totalmode!="idle"[1m])
)

组织告警规则

警报可以使用 Grafana 管理规则的文件夹和 Mimir 或 Loki 规则和组名称的命名空间来组织。

Namespace
在创建 Grafana 管理的规则时,该文件夹可用于执行访问控制并授予或拒绝对特定文件夹内所有规则的访问。

Groups
一个组内的所有规则都以相同的时间间隔进行评估。

组内的警报规则和记录规则将始终按顺序进行评估,这意味着不会同时按出现顺序评估任何规则。

消息模板

通过联系点发送的通知是使用消息传递模板构建的。Grafana 的默认模板基于Go 模板系统,其中一些字段被评估为文本,而其他字段被评估为 html(这会影响转义)。default_template.go中定义的默认模板是自定义模板的有用参考。

由于大多数联系点字段都可以模板化,因此您可以创建可重复使用的自定义模板并在多个联系点中使用它们。默认模板在default_template.go中定义,可以作为自定义模板的有用参考或起点。

使用消息模板

模板数据

名称类型备注
Receiverstring发送通知的联系点的名称。
Statusstring告警的状态,如果至少有一个警报正在触发,则触发,否则解决。
AlertsAlert此通知中包含的警报对象列表(请参见下文)。
GroupLabelsKeyValue这些警报按标签分组。
CommonLabelsKeyValue此通知中包含的所有警报的通用标签。
CommonAnnotationsKeyValue此通知中包含的所有警报的通用注释。
ExternalURLstring返回发送通知的Grafana的链接。如果使用外部Alertmanager,请返回链接到此Alertmanager。

Alerts 类型公开用于筛选警报的函数:
Alerts.Firing 返回已经触发的警报列表。
Alerts.Resolved 返回已解决的警报列表。

告警

名称类型备注
Statusstringfiring or resolved. (发送或解决)
LabelsKeyValue附加到警报的一组标签。
AnnotationsKeyValue附加到警报的一组批注。
StartsAttime.Time警报启动的时间
EndsAttime.Time警报结束时间。仅当警报的结束时间已知时设置。否则,设置为自上次收到警报后的可配置超时时间。
GeneratorURLstringGrafana或外部Alertmanager的反向链接。
SilenceURLstring链接到的grafana silence,其中预先填充了此警报的标签。仅适用于Grafana管理的警报。
DashboardURLstring链接到grafana仪表板(如果警报规则属于一个)。仅适用于Grafana管理的警报。
PanelURLstring链接到grafana仪表板面板(如果警报规则属于一个)。仅适用于Grafana管理的警报。
Fingerprintstring可用于识别警报的指纹
ValueStringstring包含警报中每个缩减表达式的标签和值的字符串。

KeyValue

KeyValue 是一组表示标签和注释的键/值字符串对。

下面是一个包含两个注释的示例:


  "summary": "alert summary 警报摘要",
  "description": "alert description 警报描述"

除了直接访问存储为KeyValue的数据(标签和注释)之外,还有排序、删除和转换的方法。

名称参数返回注释
SortedPairs已经排序的 一对 key & value 字符串
Remove[]stringKeyValue返回没有给定键的键/值映射的副本。
Names[]string标签名称列表
Values[]string标签值列表

嵌套模板

您可以将模板嵌入到其他模板中。

例如,您可以使用define关键字定义模板片段:

 define "mytemplate" 
   len .Alerts.Firing  firing.  len .Alerts.Resolved  resolved.
 end 

template然后,您可以使用关键字在此片段中嵌入自定义模板。例如:

Alert summary:
 template "mytemplate" . 

您可以使用以下任何内置模板选项来嵌入自定义模板。

名称含义
default.title显示高级状态信息
default.message提供触发和已解决的格式化摘要
teams.default.message类似 default.message ,为 Microsoft Teams 格式化

消息模板中的 HTML

警报消息模板中的 HTML 已转义。不支持在生成的通知中呈现 HTML

创建 Grafana 托管警报规则

中英文对照表

英文中文
is above高于
is below低于
outside range超出范围
is within range在范围内
has no value没有值
classic condition经典条件
resample重新采样
reduce减少
math数学
Alert evaluation behavior警报评估行为
Evaluate评估
Evaluation interval applies to every rule within a group. It can overwrite the interval of an existing alert rule.评估间隔适用于组中的每个规则。它可以覆盖现有警报规则的间隔。
Evaluate every评估间隔(就是多长时间监控一下是否符合告警信息)
Preview alerts预览警报
Add details for your alert添加警报的详细信息
Write a summary and add labels to help you better manage your alerts编写摘要并添加标签,以帮助您更好地管理警报
Folder文件夹
Summary and annotations摘要和注释
Grafana handles the notifications for alerts by assigning labels to alerts. These labels connect alerts to contact points and silence alert instances that have matching labelsGrafana通过为警报分配标签来处理警报通知。这些标签将警报连接到联系人,并使具有匹配标签的警报实例静音
Notifications通知
chart图表


选择数据源

基本流程

在第 1 步中设置查询和告警条件
1 Set a query and alert condition

在第 2 步中, 指定警报评估间隔

针对简单的Prometheus 中已经存在的 Metric

直接查询到需要用到的 Metric 并添加

如果需要,选择 lable 进行过滤

配置完成后可以点击 Run querise 进行测试查询

添加表达,以便判断上面的查询结果达到什么条件触发告警

选择 Classic condition
1 last() 表示取出 最新的值
2 A 表示
3 IS BELOW 低于
4 1
总体意思是:A 查询到的最新的值低于 1 ,就表示符合条件。
因为此示例中查询到的结果: 1 表示 UP,0 表示 DOWN

从以上定义的两个查询或表达式中选择一个作为触发告警的条件

在第 2 步 添加警报评估时间段
下图表示每 1 分钟检查一次看告警条件是否被触发。
告警条件被触发后持续了 5 分钟就发送告警通知。

如果没有数据轰炸所有的值为null 的告警状态: No Data
如果执行错误或者超时的告警状态为:Alerting 告警

在第 3 步 添加告警信息
包含告警名称,存放在那个文件夹、分配到哪个组
告警标题
告警信息

最后点击右上角的 Save

针对 Prometheus 中没有的监控指标

有的监控指标 Prometheus 中没有,需要我们自己编写的情况,比如磁盘的使用率。这种情况下,需要使用更复杂的方式设置,需要添加多个 Metric,并使用函数把它们组合起来。

以上是关于PrometheusGrafana告警的主要内容,如果未能解决你的问题,请参考以下文章

docker-compsoe部署prometheusGrafana监控钉钉告警

Prometheus+Grafana系统部署,linuxflink的监控与告警

Prometheus+Grafana系统部署,linuxflink的监控与告警

Prometheus+Grafana系统部署,linuxflink的监控与告警

魔众API支持接口数量配额邮件告警

魔众API支持接口数量配额邮件告警