Prometheus中ServiceMonitor 配置示例

devtools/2025/2/25 9:58:02/

以下是一个完整的 ServiceMonitor 配置示例(用于 Prometheus Operator),用于监控 Kubernetes 中的服务(如 Flink JobManager/TaskManager):


1. ServiceMonitor 配置示例

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: flink-jobmanager-monitor   # ServiceMonitor 名称namespace: flink-production      # 需与被监控 Service 同命名空间,或配置权限labels:app: flink-monitoring          # 可选:用于分类或筛选
spec:jobLabel: app                    # 使用 Service 的 `app` 标签作为 Prometheus Job 名称selector:matchLabels:app: flink-jobmanager        # 匹配目标 Service 的标签component: metrics           # 可选:进一步筛选 ServicenamespaceSelector:any: false                     # 仅监控当前命名空间(flink-production)# matchNames:                 # 若需跨命名空间监控,使用此字段# - flink-productionendpoints:- port: metrics                  # 对应 Service 中定义的端口名称path: /metrics                 # 指标暴露路径(根据实际应用调整)interval: 15s                  # 抓取间隔scheme: http                   # 协议(http 或 https)# 若需 TLS 配置tlsConfig:insecureSkipVerify: true     # 跳过证书验证(测试环境用)# 若需 Basic Auth 认证# basicAuth:#   username:#     name: prometheus-secret#     key: username#   password:#     name: prometheus-secret#     key: password

2. 配套的 Service 配置示例

确保被监控的 Service 包含正确的标签和端口定义:

apiVersion: v1
kind: Service
metadata:name: flink-jobmanager-servicenamespace: flink-productionlabels:app: flink-jobmanager          # 必须与 ServiceMonitor 的 selector.matchLabels 匹配component: metrics             # 可选:用于更细粒度筛选
spec:type: ClusterIPports:- name: metrics                  # 端口名称必须与 ServiceMonitor 的 endpoints.port 一致port: 9249                     # 指标暴露端口(根据实际应用调整,如 Flink 默认 9249)targetPort: 9249selector:app: flink-jobmanager          # 关联到具体 Pod 的标签component: jobmanager

3. 关键配置说明

配置项说明
spec.selector通过标签选择要监控的 Service,必须与目标 Service 的 metadata.labels 匹配。
endpoints.port对应 Service 中定义的 ports.name(如 metrics),确保名称一致。
namespaceSelector默认监控当前命名空间,若需跨命名空间监控,需配置 matchNames 并授权 Prometheus 权限。
pathscheme根据应用的指标暴露路径和协议调整(如 Flink 的 /metricshttp)。
RBAC 权限若跨命名空间监控,需为 Prometheus ServiceAccount 配置 ClusterRole 和 ClusterRoleBinding。

4. Prometheus Operator 权限配置(跨命名空间)

如果 Prometheus 需要监控其他命名空间的服务,需添加以下 RBAC 配置:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: prometheus-cross-ns
rules:
- apiGroups: [""]resources: ["services", "endpoints", "pods"]verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: prometheus-cross-ns
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: prometheus-cross-ns
subjects:
- kind: ServiceAccountname: prometheus-k8s      # Prometheus 的 ServiceAccount 名称namespace: monitoring     # Prometheus 所在的命名空间

5. 验证配置是否生效

  1. 检查 ServiceMonitor 状态

    kubectl get servicemonitor -n flink-production
    kubectl describe servicemonitor flink-jobmanager-monitor -n flink-production
    
  2. 查看 Prometheus Targets
    访问 Prometheus Web UI -> Status -> Targets,确认对应 Job 状态为 UP


6. 完整流程图

Prometheus Operator 部署在监控命名空间(如 `monitoring`)││ 发现 ServiceMonitor 资源▼
ServiceMonitor 配置指向 `flink-production` 命名空间的 Service││ 通过标签匹配 Service `flink-jobmanager-service`▼
Prometheus 抓取 Service 后端 Pod 的指标(`:9249/metrics`)

附:常见问题排查

  • 指标未抓取:检查 Service 的 labels 是否与 ServiceMonitor 的 selector.matchLabels 完全匹配。
  • 端口不匹配:确认 Service 的 ports.name 与 ServiceMonitor 的 endpoints.port 一致。
  • 权限问题:跨命名空间时确保 RBAC 配置正确。
  • 网络策略:确保 Prometheus 可访问目标 Pod 的指标端口。

根据实际应用调整端口、路径和标签即可适配到其他服务(如 Kafka、Redis 等)。


http://www.ppmy.cn/devtools/161558.html

相关文章

Python在大数据AI领域的优势分析【为什么使用Python开发】

大数据分析、大模型和 AI 领域主要采用 Python,并非其他语言完全不能使用,而是 Python 在以下方面形成了显著优势,形成了一个正反馈循环的生态系统。我们可以从多个角度分析: 1. 语法简洁:开发效率优先 特点&#xff…

知识管理系统实施优化路径

内容概要 现代知识管理系统的实施优化路径呈现出多维整合特征,其核心在于系统集成与组织适配的动态平衡。从技术架构层面,系统需突破信息孤岛桎梏,通过语义网络优化实现非结构化数据的智能解析,例如运用Baklib这类支持API接口的知…

【MySQL】表的增删查改(CRUD)(上)

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…

【Kafka系列】Kafka 消息传递保障机制

Kafka 消息传递保障机制 在现代分布式系统中,消息队列扮演着至关重要的角色。Kafka 作为一款高性能、高吞吐量的消息队列系统,提供了多种消息传递保障机制来满足不同的业务需求。本文将详细介绍 Kafka 的三种主要消息传递保障机制:最多一次&a…

智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新

智能交通系统(Intelligent Transportation Systems, ITS)是利用先进的信息技术、通信技术、传感技术、计算机技术以及自动化技术等,来提升交通系统效率和安全性的一种交通管理方式。ITS通过收集和分析交通数据,智能化地调度、控制…

互联网上门洗衣洗鞋小程序

洗衣洗鞋小程序必备功能: 1. 在线下单上门取送:用户随时下单,享受上门取送服务,方便快捷。 2. 拼团洗鞋:拼团享优惠,吸引更多订单。 3. 抽奖砍价:通过抽奖、砍价等活动,提升用户参与…

【论文学习】基于规模化Transformer模型的低比特率高质量语音编码

以下文章基于所提供的文档内容撰写,旨在对该论文“Scaling Transformers for Low-Bitrate High-Quality Speech Coding”进行较为系统和深入的分析与总结。 论文地址:https://arxiv.org/pdf/2411.19842 一、研究背景与动机 自20世纪70年代以来&#xff…

启动Redis报错记录

突然启动Redis就报了个错:‘Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。‘ 查了下解决方案,应该是6379端口已绑定,服务没有关闭。 需要输入命令redis-cli 再输入shutdown 但又出现了新的问题&…