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中定义,可以作为自定义模板的有用参考或起点。
使用消息模板
模板数据
名称 | 类型 | 备注 |
---|---|---|
Receiver | string | 发送通知的联系点的名称。 |
Status | string | 告警的状态,如果至少有一个警报正在触发,则触发,否则解决。 |
Alerts | Alert | 此通知中包含的警报对象列表(请参见下文)。 |
GroupLabels | KeyValue | 这些警报按标签分组。 |
CommonLabels | KeyValue | 此通知中包含的所有警报的通用标签。 |
CommonAnnotations | KeyValue | 此通知中包含的所有警报的通用注释。 |
ExternalURL | string | 返回发送通知的Grafana的链接。如果使用外部Alertmanager,请返回链接到此Alertmanager。 |
Alerts 类型公开用于筛选警报的函数:
Alerts.Firing 返回已经触发的警报列表。
Alerts.Resolved 返回已解决的警报列表。
告警
名称 | 类型 | 备注 |
---|---|---|
Status | string | firing or resolved. (发送或解决) |
Labels | KeyValue | 附加到警报的一组标签。 |
Annotations | KeyValue | 附加到警报的一组批注。 |
StartsAt | time.Time | 警报启动的时间 |
EndsAt | time.Time | 警报结束时间。仅当警报的结束时间已知时设置。否则,设置为自上次收到警报后的可配置超时时间。 |
GeneratorURL | string | Grafana或外部Alertmanager的反向链接。 |
SilenceURL | string | 链接到的grafana silence,其中预先填充了此警报的标签。仅适用于Grafana管理的警报。 |
DashboardURL | string | 链接到grafana仪表板(如果警报规则属于一个)。仅适用于Grafana管理的警报。 |
PanelURL | string | 链接到grafana仪表板面板(如果警报规则属于一个)。仅适用于Grafana管理的警报。 |
Fingerprint | string | 可用于识别警报的指纹 |
ValueString | string | 包含警报中每个缩减表达式的标签和值的字符串。 |
KeyValue
KeyValue
是一组表示标签和注释的键/值字符串对。
下面是一个包含两个注释的示例:
"summary": "alert summary 警报摘要",
"description": "alert description 警报描述"
除了直接访问存储为KeyValue的数据(标签和注释)之外,还有排序、删除和转换的方法。
名称 | 参数 | 返回 | 注释 |
---|---|---|---|
SortedPairs | 已经排序的 一对 key & value 字符串 | ||
Remove | []string | KeyValue | 返回没有给定键的键/值映射的副本。 |
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 labels | Grafana通过为警报分配标签来处理警报通知。这些标签将警报连接到联系人,并使具有匹配标签的警报实例静音 |
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的监控与告警