2.9. 为指标提取设置正文大小限制
默认情况下,针对从提取的指标目标返回的数据的未压缩正文大小没有限制。您可以设置正文大小限制,以帮助避免在提取目标返回包含大量数据时 Prometheus 消耗大量内存的情况。另外,通过设置正文大小限制,您可以降低恶意目标在 Prometheus 和整个集群中可能对这个影响。
为 enforcedBodySizeLimit
设置了一个值后,当至少有一个 Prometheus scrape 目标回复大于配置的值时,PrometheusScrapeBodySizeLimitHit
会触发警报。
注意
如果从目标中提取的指标数据有一个不压缩的正文大小超过配置的大小限制,则提取会失败。然后,Prometheus 会认为这个目标为停机状态,并将其 up
指标值设置为 0
, 它将触发一个 TargetDown
警报。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
命名空间中的cluster-monitoring-config
ConfigMap
对象:$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
将
enforcedBodySizeLimit
的值添加到data/config.yaml/prometheusK8s
中,以限制每个目标提取可接受的正文大小:apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: |- prometheusK8s: enforcedBodySizeLimit: 40MB 1
- 1
- 指定提取指标目标的最大正文大小。这个
enforceBodySizeLimit
示例将每个目标提取的未压缩大小限制为 40MB。有效数字值使用 Prometheus 数据大小格式:B (bytes), KB (kilobytes), MB (megabytes), GB (gigabytes), TB (terabytes), PB (petabytes), and EB (exabytes)。默认值为0
,代表没有指定限制。您还可以将值设为automatic
,以根据集群容量自动计算限制。
- 保存文件以使改变生效。新的配置会被自动应用。