现在我们使用Prometheus进行监控,我们有很多配置(我们的 prometheus.yml 主配置文件有 1400 多行)。
我想将其拆分为逻辑分组(可能是 DEV/TEST/PROD?),但我似乎找不到任何关于如何在 Prometheus 配置文件语法中使用“包含”(或类似)的文档。
有没有人用他们的 Prometheus 配置文件做过这个?如果是这样,你是怎么做到的?
我负责维护我们公司的 Prometheus 服务器。然而,这些指标是由团队提供的。
有没有办法找出存储在 Prometheus 数据库中的时间序列的数量?我们使用默认的 LevelDB 数据存储。我需要这些值来确定是否需要调整 Prometheus 实例的本地存储设置。
谢谢你的帮助。
我已经设置了 Prometheus 和 node_exporter。我发现的所有示例图都在使用,node_cpu
但我没有这个指标。我最接近的是node_cpu_seconds_total
。我是否遗漏了什么,或者我的 Prometheus 版本与这些图表不兼容?
我正在尝试编写一个通用规则来在发现的目标丢失时发出警报。特别是使用 kubernetes_sd_configs 为抓取和自动发现注释的 kubernetes pod。
形式的表达式:absent(up{job="kubernetes-pods"}==1)
不返回作为正常运行时间序列的一部分可用的任何其他标签。如果一个 pod 被删除(比如错误),它就会作为目标从 prometheus 中消失。触发了基于缺席()的警报,但我没有关于丢失什么 pod 的信息。
我认为自动发现的 kubernetes 服务也会发生同样的情况。如果它被误删除了,它就会作为监视目标消失。我不确定具有 ip 范围的target_groups ( https://prometheus.io/blog/2015/06/01/advanced-service-discovery/ )的行为是否相同- 也就是说,如果物理节点已关闭指标只是停止和上升 == 0 不可用。
以一般方式检测自动发现的目标何时消失的正确方法是什么?或者我是否需要明确地为每个服务/节点/pod 硬编码规则,即使它是自动发现的?
我正在对我的公司基础设施进行监控。我安装了 Grafana 和 Prometheus 数据源。我构建了仪表板并拥有相当“尖峰”的图表。我想知道是否有任何方法可以让它变得更平滑,以便它更具可读性。
谢谢 !
我们的设置包括:
基本上,我们的负载可能会不稳定,因此我们希望捕获详细信息,因此目前我们每 10 秒抓取一次指标,并在 Grafana 中显示 1 分钟的速率,查询如下:
rate(node_network_receive_bytes_total{instance=~'$node',device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[1m])*8
Run Code Online (Sandbox Code Playgroud)
在 Grafana 中,我们看到巨大的峰值,对于平均吞吐量低于 100Mbit/s 的网络实例,峰值超过每秒数百吉比特,这显然在技术上是不可能的。CPU 负载、CPU 等待时间、磁盘 iops 和其他node_exporter
指标也会发生同样的情况,通常看起来像这样,看看平均值和最大值之间的巨大差异:
显然,发生这种情况是因为普罗米修斯似乎“错过”了单点数据,并且根据rate
工作原理,它将“最后”点与node_network_receive_bytes_total
自上次启动以来累积的零到当前值进行比较,并大幅提高了输出。如果我们尝试切换到irate
尖峰,就会跳得更高,这似乎证明了我们的猜测。
查询我们的 Prometheus 收集服务器以获取出现峰值的特定时间范围内的数据点rate
,我们没有看到任何归零点,“尖峰”时间范围内的数据看起来连续增加:
node_network_receive_bytes_total{device="ens8",instance="cassandra-xxxxxxxxx0:9100",job="cassandra-xxxxxxxxx"}
3173659836137 @1585311247.489
3173678570634 @1585311257.49
3173696782823 @1585311267.491
3173715943503 @1585311277.492
3173715937480 @1585311277.493
3173731328095 @1585311287.495
3173743034248 @1585311297.502
3173756482486 @1585311307.497
3173775999916 @1585311317.497
3173796096167 @1585311327.498
3173814354877 @1585311337.499
3173833456218 @1585311347.499
3173852345655 @1585311357.501
Run Code Online (Sandbox Code Playgroud)
同样在图上:
rate
查询 …
在阅读 Prometheus 配置文档和一些示例抓取配置时,我发现了一些带有 role service
& role endpoints
& role的 kubernetes_sd_configspod
- job_name: kube-state-metrics
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- action: keep
regex: prometheus;kube-state-metrics
source_labels:
- __meta_kubernetes_namespace
- __meta_kubernetes_pod_label_component
Run Code Online (Sandbox Code Playgroud)
- honor_labels: true
job_name: prometheus-pushgateway
kubernetes_sd_configs:
- role: service
relabel_configs:
- action: keep
regex: pushgateway
source_labels:
- __meta_kubernetes_service_annotation_prometheus_io_probe
Run Code Online (Sandbox Code Playgroud)
- job_name: node-exporter
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
source_labels:
- __address__
- __meta_kubernetes_pod_container_port_number …
Run Code Online (Sandbox Code Playgroud) 目前我正在为我们的服务器设置监控服务。我找到了一些文章,推荐使用:Netdata, prometheus and grafana
所以我想知道使用这三种方法有什么好处。任何人都可以向我解释一下,为什么推荐 prometheus 和 grafana,如果 netdata 似乎与这两者做同样的事情?
即使在 netdata-documentations 中,也有一篇关于此设置的文章: https: //learn.netdata.cloud/docs/agent/backends/prometheus/#filtering-metrics-sent-to-prometheus
这个星座有什么好处呢?
我已经设置了 Prometheus 的 Alertmanager 来管理来自 Prometheus 的警报。我收到了从 Prometheus 发送到 Alertmanager 的警报,但故事到此结束。Alertmanager 永远不会将警报发送到我的电子邮件端点。
为了弄清楚警报在 Alertmanager 内部的具体位置结束其旅程,我想将日志级别从信息级别更改为调试级别,但无法弄清楚如何操作。即使现在找到日志似乎也是一个艰巨的任务,它不存在/var/log
并且journalctl -u alertmanager
包含的内容太少,以至于可能在某个地方还有另一条日志。
配置Alertmanager的手册页没有提到调试级别。我查看了源代码中提到的 log 并发现该设置应该命名为log.level
. 将以下代码片段添加到配置 YAML 也没有帮助:
log:
level: debug
Run Code Online (Sandbox Code Playgroud)
因为 Alertmanager 无法启动,无法解析其配置文件。
我仍然在努力理解为什么我的 ipmi_exporter 容器不会与我的 Prometheus、Grafana、snmp_exporter 和 Alertmanager 在同一个“pod”中运行。当我调出“pod”时,docker-compose 说ipmi_exporter 已启动,但docker-compose ps找不到容器。我希望能够看到包含 ipmi_exporter 启动的日志,如果我的帖子标题中没有明确说明的话。
另外,docker-compose 容器组叫什么?Pod 是 K8 的东西。