文档中心>Prometheus 监控服务>实践教程>使用实例诊断分析 Prometheus 问题

使用实例诊断分析 Prometheus 问题

最近更新时间:2024-10-25 18:18:01

我的收藏
为了提升用户在使用 Prometheus 监控采集功能时的体验,Prometheus 监控团队特推出了新的采集架构,且为用户提供了名为实例诊断的控制台页面。此功能有助于用户对当前 Prometheus 实例采集和存储功能的运行情况有更加细致的了解,并在出现问题时可以更加快速地定位和排查。
说明:
若用户名下有存量的 Prometheus 实例,则需要先将其升级到新的采集架构再来使用实例诊断的功能。详情可参考 实例诊断

问题一:采集组件升级

现象

实例诊断页面中,提示采集组件有新版本可升级。

Pasted image 20240620110254.png



解释和处理

Prometheus 采集端主要包含四个组件,用来实现采集目标的发现和调度、采集操作的进行、采集集群和用户集群之间的通信等功能:
tmp-operator: 负责采集目标的发现和调度,以及采集分片 tmp-agent 的安装和配置生成,并以集群化的形式管理所有采集分片。
tmp-agent: 负责实施实际的采集操作,并将处理后的指标推送到指定的远端地址。
proxy-server: 为采集组件访问用户集群提供代理功能,是通过多个端口实现多路代理的七层代理器,支持多个 agent 连接同一个 server。
proxy-agent: 与 proxy-server 共同提供完整的代理功能,该组件安装在用户集群中。
可以在实例诊断页面查看各个组件的当前版本、功能描述以及不同版本的更新信息。在版本的更新中,会对组件可能存在的问题进行处理修复。因此,用户使用的过程中可以尽量保持组件升级到最新的版本。当实例诊断中有新版本提示时,可根据自身需要对采集组件进行升级。其中 tmp-operator、tmp-agent 和 proxy-agent 的升级不会影响数据采集,即不会产生数据断点;而 proxy-server 的升级则可能会出现数据断点,具体的恢复时间和底层集群 Pod 的调度时间有关,需要谨慎升级。

企业微信截图_e840c8b9-2f77-4f1a-889a-c3792ad560b7.png



问题二:网络异常

现象

在查询 Prometheus 指标时陆续出现断点;
在控制台上显示采集目标一直因为 timeout 而处于 down 的状态;
在实例诊断页面则可能会显示 proxy-server 和 proxy-agent 的连接异常。

企业微信截图_ef6b3c56-48e4-4e45-9c7e-b67d528a93c6.png



解释和处理

Prometheus 采集涉及到集群内、跨集群、跨 VPC 的通信,不同对象之间的网络异常可能会导致通信异常,使得表现出来采集功能也存在异常。

image.png


这种情况,通常是带宽问题或安全组问题,特别是带宽问题。当链路上某一节点的带宽占满之后,请求或响应在该节点被阻塞,最终导致请求或响应超时。
1. 在跨 VPC 采集的情况下,如果使用的是公网 CLB,那么可以优先排查公网 CLB 的链路是否通畅、带宽是否占满;如果使用的是云联网连接两个集群,那么可以优先排查云联网的链路是否通畅、带宽是否占满。

Pasted image 20240620184522.png


2. 在排除跨 VPC 通信的问题后,可以对采集组件 proxy-server 的带宽是否占满进行排查(进入采集集群,并在 Pod 中查看监控即可)。

Pasted image 20240620183213.png


3. 如果已排除带宽的问题,那么可能是安全组的问题。安全组未放通一般在集群关联时就会暴露出来,但不排除后续被修改的可能,被安全组阻挡的请求就无法到达目标 Pod,需要按照实例诊断中的安全组要求进行配置。

Pasted image 20240620113459.png



问题三 :数据多写堆积

现象

用户短信、站内信等收到数据多写配置异常的告警;
在实例诊断页面显示数据多写异常堆积。

Pasted image 20240620115202.png



解释和处理

数据多写功能支持将集成容器服务和集成中心的数据写到自建 Prometheus 或其他 Prometheus 监控实例中。如果多写异常,说明采集分片在向目标地址推送指标的时候出现了问题;采集分片如果推送失败,会将指标保存在本地进行重试,如果数据堆积量过大,还可能导致 Pod 异常影响指标采集。
当出现这样的问题,可参考如下步骤排查:
1. 在实例诊断中确认具体的目标地址,短信告警中没有具体的地址;
2. 查看对应的 Prometheus 是否可以正常写入、是否有异常的日志,以排除目标 Prometheus 的问题;
3. 可以查看采集分片的日志,是否存在报错,以及分析具体报错的信息。

image.png

Pasted image 20240620115128.png



问题四:可用 IP 数量不足

现象

实例诊断页面提示 IP 数量不足(红色并闪烁)。

Pasted image 20240620164321.png



解释和处理

采集组件托管集群所关联的子网可用 IP 数量不足,可能会导致如下问题:
当采集规模不断增大,达到单个采集分片无法承受时,调度器会对采集群片进行扩容,扩容出来的新分片 Pod 会占用子网内部的 IP;如果可用 IP 数量不足,会出现无法扩容的情况,已有的采集分片持续超负荷运转,会影响采集的稳定性。
当进行采集组件升级时,部分组件会先产生新的正常运行的副本,再替换旧的副本;如果可用 IP 数量不足,会出现新的副本无法调度成功,导致组件升级异常。
因此,建议始终保持一定数量的可用 IP。当出现上述实例诊断页面显示可用 IP 数量较少时,可以在页面中直接添加子网,具体操作如下:
1. 点击子网数字,进入托管集群子网管理页面;
2. 显示当前 VPC 内已添加到托管集群的子网和未添加的子网,可根据规划点击启用子网启用新的子网;
3. 若没有可用子网,可以先 添加子网 后再在当前页面中启用。

Pasted image 20240620165407.png



问题五:指标标签数量过大导致写入异常

现象

存储诊断中,指标最大 Label 数量显示异常速率
同时,Prometheus 实例基本信息页面的实例监控中,“因不合法被丢弃的 Samples”图标中显示有数据被丢弃;
在查询时有部分预期的指标查不出来。

Pasted image 20240620165918.png



解释和处理

指标最大 Label 数量代表写入指标标签的最大数量 限制,如果使用过程中,在指标中加入大量无用标签,就可能会超过限制导致需要的指标写入失败,出现上述的异常提示。
在存储诊断中点击异常速率弹出窗口时,可以看到对应目标集群内尝试写入存储的最大 Label 数量,以及对应不同采集任务 Job 的详细信息。

Pasted image 20240620170103.png


Label 数量超限指标详情中,可以看到对应指标的总 Label 数量,以及采集 Label 数、全局标记和存储附加 Label 的信息。

Pasted image 20240620170137.png


采集 Label 数:根据采集配置,对采集目标服务发现的标签进行 relabel 之后的标签,加上指标本身的标签之后的标签数量,不包括全局标记以及存储附加标签。
全局标记:用户额外配置的,在当前集群所有采集任务上都会添加的标签;默认情况下会在关联集群的时候,添加包含集群信息的“cluster_type”和“cluster”全局标记;
存储附加 Label:由存储侧默认写入的标签,无法修改,用于表示存储本身的信息。
因此,要解决指标标签超限的问题,可以从采集 Label 数全局标记两个方面处理。处理之前,可以通过查看日志了解被丢弃的指标在写入之前包含的标签信息,在采集分片的日志中进行查看,并确认需要丢弃哪些标签。

image.png

企业微信截图_aa20c70e-ab8a-4bc4-ad28-f538da2d7837.png


对于采集 Label 数,可以在采集配置中的 metric_relabel_configs 或 metricRelabelings 中增加 labeldrop 配置来丢弃掉。
metricRelabelings:
- action: labeldrop
regex: label_(.+) # 正则匹配需要去掉的标签
对于全局标记,可以在控制台的数据采集中进行编辑,有不需要的全局标记可以在这里去掉,不过需要注意的是,全局标记的变更会影响到整个集群的采集。

Pasted image 20240620171013.png



问题六:指标数量达到存储上限导致写入异常

现象

存储诊断中,“实例 series 存储上限”或“单指标 series 存储上限”显示“异常速率”。
同时,Prometheus 实例基本信息页面的实例监控中,“因限流丢弃的 samples”图表中显示有 Samples 被丢弃;在查询时有部分预期的指标查不出来。

解释和处理

在存储诊断中,series 存储上限分别代表了整个 Prometheus 实例和单个指标的 series 存储 上限,当存储中的 series 达到上限之后,会出现新的 series 无法写入的问题,详情如下。(图中的存储上限仅供演示)

Pasted image 20240620173521.png



单指标存储上限

通常,单个指标 series 数量庞大,是因为某些标签值变化过于频繁,例如将用户的 id、时间戳等作为标签值,或许这在日志收集中很常见,但对于 Prometheus 来说,这种使用方式造成的高基数问题,会严重影响 Prometheus 系统的性能。
解决该问题,即解决标签值频繁变化的情况。在存储诊断中,可以看到“series 数量 Top10 指标”,当出现异常的时候,这里的数值和“单指标 series 存储上限”是对应的。

Pasted image 20240620182635.png


只要找到了对应指标,看是具体哪个标签有问题,在业务暴露指标中去掉这个标签,或是在采集配置的 metric_relabel_configs(原生 Job 配置) 或 metricRelabelings(servicemonitor、podmonitor 等 crd,以及集成中心的云监控集成) 将该标签 labeldrop 即可。
metricRelabelings:
- action: labeldrop
regex: label_(.+) # 正则匹配需要去掉的标签
metric_relabel_configs:
- action: labeldrop
regex: label_(.+) # 正则匹配需要去掉的标签

实例存储上限

在该处显示异常,说明预期写入的 series 数量超过了单实例可以存储的数量;而绝大部分情况下,该限制已经满足普通业务量的需要了。您可从如下方面考虑:
1. 确认是否因为某些标签值变化过于频繁导致的整体存储 series 数量过多,毕竟 series 数量和费用关联紧密,如果是因为不需要的标签值变化导致 series 数量较大,最好将该标签去除;
2. 根据业务需要,去掉不需要写入的 series,精简指标体系;
3. 如果业务真的需要上报如此大量的 series,请 联系我们

问题七:关联失败

现象

Prometheus 控制台 > 点击实例 ID/名称 > 数据采集 > 集成容器服务中关联集群时,偶尔会出现“状态异常”关联失败的情况;在实例诊断中也会显示“采集组件关联异常”,这个异常出现的时候采集功能是没有正常发挥作用的。

Pasted image 20240620182852.png



解释和处理

关联成功是正常使用采集容器指标的必要条件,出现关联失败问题的暴露时间点位于实际采集和存储发生之前。您可在集成容器服务实例诊断中,查看整个关联过程的详情,包含具体出现异常的环节。

Pasted image 20240620182929.png


常见的异常及原因通常包括:
集群内剩余可用 IP 不足
这在异常消息中通常会以以下形式出现:
“network-unavailable” 的 taint 提示,是 IP 不足时 EKS 集群自动给 node 添加的标记;
“insufficient IP available” 提示可用 IP 不足;
其他与 IP 不足相关的提示。
解决方法:
如果出现异常的是 initializeEKSCluster 或安装 proxy-server 阶段,需要给采集集群(即同地域下名称为 Prom 实例 ID 的 Serverless 集群)添加有足够 IP 的子网对应的超级节点。

Pasted image 20240620183213.png


如果出现异常的是安装 proxy-agent 阶段,则需要给被关联的用户集群添加可用的 IP。
集群内资源不足:
提示“nodes are available”,没有足够的 CPU 或内存;
提示“max node group size reached”,节点池无法再扩充节点。
解决方法:这通常发生在目标集群内,需要您增加集群内资源后重试关联。
网络不通:
一般异常消息会包含“failed to sync cache”,由于网络问题导致采集集群无法 watch 目标集群。
解决方法:可进入目标集群以当前 Prom 实例 ID 为名称的命名空间下,查看 proxy-agent 的日志,通常会有无法和对端连接的日志,如“connect to server failed”。
如果是同 VPC ,可能是 proxy-agent 的安全组限制,具体放通要求可以参考如下:
入站放通 TCP:9093,9090,10901,10902,9990,3000,8080,8008,8100-8200。
出站放通 TCP:ALL

Pasted image 20240620113459.png


如果是跨 VPC,则需要查看公网 CLB 是否正确配置。例如:如果集群是 EKS 集群是否配置 NAT 网关,或是对应的云联网是否正常等。

Pasted image 20240620184511.png