温馨提示感谢您对腾讯云原生监控 TPS 的认可与信赖,为提供更优质的服务和更强大的产品能力,TPS 与原腾讯云 Prometheus 监控服务进行融合和升级,升级为 TMP。支持跨地域跨 VPC 监控,支持统一 Grafana 面板对接多监控实例实现统一查看。TMP 计费详情见 按量计费,相关云资源使用详情见 计费方式和资源使用。若您只使用基础监控的 免费指标,TMP 不会收取任何指标费用。
TPS 将于2022年5月16日下线,详情见 公告。TMP 已正式发布,欢迎 了解试用。TPS 已不支持创建新实例,我们提供一键 迁移工具,帮您一键将 TPS 实例迁移到 TMP,迁移前请 精简监控指标 或降低采集频率,否则可能产生较高费用,再次感谢您对 TPS 的支持和信任。
本文档介绍如何精简云原生监控服务 TPS 的采集指标,避免在迁移到 TMP 后产生不必要的费用支出。
在配置监控数据采集项前,您需要完成以下操作:
Prometheus 监控服务 TMP 提供了一百多个免费的基础监控指标,完整的指标列表可查看 按量付费免费指标。
TMP 目前收费模式为按监控数据的点数收费,为了最大程度减少不必要的浪费,建议您针对采集配置进行优化,只采集需要的指标,过滤掉非必要指标,从而减少整体上报量。详细的计费方式和相关云资源的使用请查看 文档。
以下步骤将分别介绍如何在自定义指标的 ServiceMonitor、PodMonitor,以及原生 Job 中加入过滤配置,精简自定义指标。
ServiceMonitor 和 PodMonitor 的过滤配置字段相同,本文以 ServiceMonitor 为例。
ServiceMonitor 示例:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 1.9.7
name: kube-state-metrics
namespace: kube-system
spec:
endpoints:
- bearerTokenSecret:
key: ""
interval: 15s # 该参数为采集频率,您可以调大以降低数据存储费用,例如不重要的指标可以改为 300s,可以降低20倍的监控数据采集量
port: http-metrics
scrapeTimeout: 15s
jobLabel: app.kubernetes.io/name
namespaceSelector: {}
selector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
若要采集 kube_node_info
和 kube_node_role
的指标,则需要在 ServiceMonitor 的 endpoints 列表中,加入 metricRelabelings
字段配置。注意:是 metricRelabelings
而不是 relabelings
。
添加 metricRelabelings
示例:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 1.9.7
name: kube-state-metrics
namespace: kube-system
spec:
endpoints:
- bearerTokenSecret:
key: ""
interval: 15s # 该参数为采集频率,您可以调大以降低数据存储费用,例如不重要的指标可以改为 300s,可以降低20倍的监控数据采集量
port: http-metrics
scrapeTimeout: 15s # 该参数为采集超时时间,Prometheus 的配置要求采集超时时间不能超过采集间隔,即:scrapeTimeout <= interval
# 加了如下四行:
metricRelabelings: # 针对每个采集到的点都会做如下处理
- sourceLabels: ["__name__"] # 要检测的 label 名称,__name__ 表示指标名称,也可以是任意这个点所带的 label
regex: kube_node_info|kube_node_role # 上述 label 是否满足这个正则,在这里,我们希望__name__满足 kube_node_info 或 kube_node_role
action: keep # 如果点满足上述条件,则保留,否则就自动抛弃
jobLabel: app.kubernetes.io/name
namespaceSelector: {}
selector:
如果使用的是 Prometheus 原生的 Job,则可以参考以下方式进行指标过滤。
Job 示例:
scrape_configs:
- job_name: job1
scrape_interval: 15s # 该参数为采集频率,您可以调大以降低数据存储费用,例如不重要的指标可以改为 300s,可以降低20倍的监控数据采集量
static_configs:
- targets:
- '1.1.1.1'
若只需采集 kube_node_info
和 kube_node_role
的指标,则需要加入 metric_relabel_configs
配置。注意:是 metric_relabel_configs
而不是 relabel_configs
。
添加 metric_relabel_configs
示例:
scrape_configs:
- job_name: job1
scrape_interval: 15s # 该参数为采集频率,您可以调大以降低数据存储费用,例如不重要的指标可以改为 300s,可以降低20倍的监控数据采集量
static_configs:
- targets:
- '1.1.1.1'
# 加了如下四行:
metric_relabel_configs: # 针对每个采集到的点都会做如下处理
- source_labels: ["__name__"] # 要检测的 label 名称,__name__ 表示指标名称,也可以是任意这个点所带的 label
regex: kube_node_info|kube_node_role # 上述 label 是否满足这个正则,在这里,我们希望__name__满足 kube_node_info 或 kube_node_role
action: keep # 如果点满足上述条件,则保留,否则就自动抛弃
TPS 关联集群后,默认会纳管集群中所有 ServiceMonitor 和 PodMonitor,若您想屏蔽某个命名空间下的监控,可以为指定命名空间添加 label:tps-skip-monitor: "true"
,关于 label 的操作请 参考。
TPS 通过在用户的集群里面创建 ServiceMonitor 和 PodMonitor 类型的 CRD 资源进行监控数据的采集,若您想屏蔽指定 ServiceMonitor 和 PodMonitor 的采集,可以为这些 CRD 资源添加 labe:tps-skip-monitor: "true"
,关于 label 的操作请 参考。
本页内容是否解决了您的问题?