问题标签 [prometheus-alertmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
monitoring - Prometheus-Alertmanager 警报的复杂规则/过滤器
情况:我设置了 Prometheus 和 Alertmanager 来监控各种设备的 CPU 温度等。Alertmanager 将警报从生产设备发送到 PagerDuty。
我正在监控的设备有不同的型号和不同的操作规格。型号 1-5 的正常 CPU 温度为 50C,而型号 6 为 70C。目前 CPU 温度警报的阈值为 60C,因此 PagerDuty 不断收到来自在正常温度下运行的 6 型设备的警报。
如果温度低于 80C,是否有办法仅从 6 型设备中过滤出 CPU 温度警报,并且在 60C 时仍会收到 1-5 型设备的 CPU 温度警报?
注意:还有许多其他指标正在被监控,但对于除 CPU 温度之外的所有指标,所有设备型号都具有完全相同的阈值。
这是我的一个片段,alertmanager.yml
它向 PagerDuty 发送刺激警报
诚然,我没有太多的 YML 经验。但这是我希望做的,但我不确定正确的语法:
期望的结果:
- 除 device_cpu_temperature 之外的所有关键产品警报都发送到 PagerDuty
- 如果型号不是 6(uuid 包含型号后跟“X”),则仅将关键产品 device_cpu_temperature 警报发送到 PagerDuty
- 仅当 cpu 温度高于 80C 时,来自 6 型设备的关键 prod device_cpu_temperature 警报才会发送到 PagerDuty。
或者在普罗米修斯中有两个不同的警报规则会更好吗?某些规则能否仅适用于某些设备?如果是这样,怎么做?
monitoring - Prometheus AlertManager - 根据路由向不同的客户端发送警报
我有 2 个要监控的服务A和B。此外,我在AlertManager 配置文件中还有 2 个不同的通知通道X和Y。receivers
如果服务 A 出现故障,我想发送通知 X,如果服务B出现故障,我想通知Y。我怎样才能实现我的配置?
我的 AlertManager YAML 文件是:
alert.rule
文件是:
prometheus - 警报管理器唯一 ID
我正在使用警报管理器。
我想检查 Alertmanager 在后端为每个警报保存的详细信息。
Alertmanager 是否为收到的警报创建唯一键?
我想知道有什么办法可以取到它吗?
kubernetes - Prometheus 中 pod 内存利用率的自定义警报
我在 Prometheus 中为 pod 内存使用创建了警报规则。警报在我的松弛频道上完美显示,但它不包含 pod 的名称,因此很难理解哪个 pod 有问题。
它只是显示[FIRING:35] (POD_MEMORY_HIGH_UTILIZATION default/k8s warning)
。但是当我查看 Prometheus UI 中的“警报”部分时,我可以看到触发的规则及其 pod 名称。任何人都可以帮忙吗?
我的警报通知模板如下:
我title: '{{ .CommonAnnotations.summary }}' text: '{{ .CommonAnnotations.description }}'
在我的警报通知模板中添加了该选项,现在它显示了描述。我的描述是description: pod {{$labels.pod}} is using high memory
。但只是显示is using high memory
。未指定 pod 名称
docker - AlertManager - 容器警报未返回其运行的主机名
我面临一个问题,当我收到警报时,我在 alert_rules.yml 中使用以下规则,它不返回容器运行的主机名。如何实现返回主机名而不是节点 ID?
我尝试使用 container_label_com_docker_swarm_node_name 而不是 container_label_com_docker_swarm_node_id 但不起作用。
有什么建议么 ?
monitoring - Promethues 警报规则中的动态标签值
我对监控世界有点新手。这是我的问题。
我只想针对基于资产 ID 的一组资产发出警报。
我的指标如下所示。
我的警报管理器规则如下所示。
我在注释上获得了模板功能。但是,我的 promQL 表达式不允许我进行模板化。基本上,我正在寻找如下的表达式。
表达式:test_value{asset_id=$1} >= 4。
1 美元的价值将来自其他地方(资产清单)。
这是一种可能吗?我不想通过为每个资产创建相同的规则来硬编码表达式中的资产 ID。基本上资产ID在开发时是未知的,我不希望我的客户创建规则。
monitoring - 使用 Prometheus 警报管理器使用多个指标发送警报
我正在为某个商业案例评估 Prometheus。我一直在关注文档,但找不到描述我的要求的示例。
以下是我的商业案例。
我将在一个 PULL 循环中使用以下指标将数据 (PULL) 泵送到 Prometheus。当然,在一个 PULL 循环中,我也可以抽取另一组完全相同的指标,但资产 ID 会有所不同。
我的问题是
我可以使用多个指标(相同的资产 ID)构建单个规则吗?我认为可以将多个指标与表达式 (expr) 一起使用。但我的要求如下。
如果您查看警报规则中的附加文本,值0.815和0.715需要分别来自其他两个指标,即test_value_two和test_value_six。这是我可以实现的吗,因为我的目标是在我打算发送的单个警报中提供其他指标的全面视图。
relative-path - 在 Prometheus Alertmanager 中通过相对路径添加模板文件
假设我的警报管理器设置文件使用与设置文件位于同一目录中的模板文件:
说,
/users/someAddress/settings.yml
&
/users/someAddress/myTemplate.tmpl
目前我使用:
templates:
- '/users/someAddress/myTemplate.tmpl'
参考它。我可以使用像 /myTemplate.tmpl 这样的相对路径吗?
prometheus - 普罗米修斯中的刮擦间隔和评估间隔
我的刮擦间隔和评估间隔彼此相差很远,如下所示(15s vs 4m)。当我向端点提供指标时,我发现规则每 4m 进行一次评估,这是预期的。但是,我不明白的是,它不会评估过去 4 分钟提供的所有指标的规则。我很难理解两个时钟(刮擦和评估)的功能。此外,这方面的文档非常稀少。任何指针都会有很大帮助。我毫不犹豫地将刮擦时间和评估时间更改为各 15 秒。但我需要了解将时钟分开的后果。
prometheus - 如何使用 Prometheus 来提醒特定的错误信息?
我正在尝试收集应用程序的运行状态,如果发生错误,则使用 alertmanager 进行警报。
我阅读了有关度量类型的文档,似乎仪表 vec 是唯一合适的类型。目前我的指标定义是这样的(它在 Go 中,但你可以理解):
发生错误时将报告 1。并且 alertmanager 被配置为在validate_errored
变为 1 时发出警报。
但是现在我需要知道警报消息中的确切错误,所以我决定添加一个新标签:
错误将被成功警告,但这种方式的问题是 Prometheus 在查询时似乎聚合了每个唯一的标签,每个不同的错误消息在图表上变成一条线。
我还读到,如果我使用标签来保存我现在忘记了来源的可变数据,这可能是个问题。
那么警告特定错误的惯用方法是什么?