Prometheus 监控自定义指标需要服务发现吗?

2024-02-20 21:03:00 +08:00
chesha1  chesha1
如果不改 Prometheus 的配置文件,还要能自动监控新加入的微服务(这个微服务的代码里已经有 Prometheus 的 client ),是不是一定需要一个外来的服务发现组件,比如 consul

看了一下 Prometheus 的文档,也没说怎么做比较好

请问业界比较通行,比较简单的做法是什么?
2419 次点击
所在节点   Kubernetes  Kubernetes
13 条回复
corvofeng
corvofeng
2024-02-20 21:14:34 +08:00
随便找了一篇

https://alexandre-vazquez.com/kubernetes-service-discovery-for-prometheus/

大意是你指定好 exporter 的 service name ,告诉 prometheus ,prometheus 会按照对应 service 的 endpoint 去采集的
bazbaozhilv
bazbaozhilv
2024-02-20 21:23:36 +08:00
自定义监控项直接配置 node exporter 不就行了吗,然后如何后续有大批量的节点,还是建议上 consul ,然后用 py 脚本批量增加或删除会省时省力
runinhard
runinhard
2024-02-20 21:46:06 +08:00
俺记得 svc 的注解里定义好 path 和端口,prometheus 会自动定时采集的啊,应该是不需要单独整服务发展的
mccken
mccken
2024-02-20 22:08:43 +08:00
业界通常做法就是在 k8s 中做
RedisMasterNode
RedisMasterNode
2024-02-20 22:14:23 +08:00
业界通常做法就是在 k8s 中做
chocotan
chocotan
2024-02-20 22:19:19 +08:00
Cola98
Cola98
2024-02-20 22:29:50 +08:00
说一个 k8s 的做法,Prometheus 里面有 PodMonitor 和 ServiceMonitor ,你 consul 只需要做好 label ,弄好 PodMonitor 或者 ServiceMonitor 就可以了
chocotan
chocotan
2024-02-20 22:29:51 +08:00
@chocotan
我们是有很多各种类型的指标,比如各种类型的中间件、应用(物理机、虚拟机、容器都有)
各种 target 通过资源管理控制台聚合在一起,管理控制台提供服务发现的 http api 给 promethues
zu1y
zu1y
2024-02-20 23:43:58 +08:00
https://prometheus.io/docs/prometheus/latest/http_sd/

自己写个服务,通过 http-sd 的协议暴露 metrics endpoint 给 prometheus ,数据来源可以是注册中心、cmdb 等等。。
funky
funky
2024-02-21 11:12:20 +08:00
不需要你的 service 是一个文件你只需要动态改变文件就行了
edwinyzhang
edwinyzhang
2024-02-21 11:45:08 +08:00
写一个收集 client 发送的指标的 web 服务会比较灵活,收集到指标后推送给 pushgateway (如果数据量不大的话
cloud107202
cloud107202
2024-02-21 11:59:42 +08:00
https://github.com/prometheus-operator/kube-prometheus

没一个人说明白。。。。 利用 kubernetes 的 operator 机制,监听到带特定 meta 的 svc 描述,operator 会自动抓取和拉取监控数据

service.yaml 开头形如下面这坨

apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/path: /metrics
prometheus.io/port: "8080"
prometheus.io/scheme: http
prometheus.io/scrape: "true"


综述:
1. 如果是自有服务,按前面说的来定义 service meta 部分
2. 如果是非 kubernetes 托管的外部服务,比如中间件,一般是部署对应的 exporter 服务。然后自定义一组同上的 service + 指向具体 IP 的 endpoint.
BQsummer
BQsummer
2024-02-21 18:15:40 +08:00
prometheus 支持从 k8s 拉取数据, 比如拉取 pod 信息:
kubernetes_sd_configs:
- role: pod
kubeconfig_file: ""
...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1016989

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX