我正在尝试使用prometheus客户端库在golang中捕获一些自定义应用程序指标,以便在Prometheus中显示。
我有以下工作:
我有一个go应用程序,它在localhost:8080 / metrics上公开指标,如本文所述:
https://godoc.org/github.com/prometheus/client_golang/prometheus
我有一个kubernates minikube运行,它使用本文中的运算符运行Prometheus,Grafana和AlertManager:
https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus
我为go app创建了一个docker镜像,当我运行它并转到localhost时:8080 / metrics我可以在浏览器中看到prometheus指标。
我使用以下pod.yaml将我的docker镜像部署到k8s中的pod中
apiVersion: v1 kind: Pod metadata: name: my-app-pod labels: zone: prod version: v1 annotations: prometheus.io/scrape: 'true' prometheus.io/port: '8080' spec: containers: - name: my-container image: name/my-app:latest imagePullPolicy: IfNotPresent ports: - containerPort: 8080
kubectl exec -it my-app-pod - / bin / bash
然后在“localhost:8080 / metrics”上执行wget,我可以看到我的指标
到目前为止一直很好,这里是我撞墙的地方。我可以有多个pod运行相同的图像。我想将所有图像暴露给prometheus作为目标。如何配置我的pod以便它们显示在prometheus中,以便我可以报告我的自定义指标?
感谢您提供的任何帮助!
答案 0 :(得分:1)
kubernetes_sd_config指令可用于发现具有给定标记的所有pod。你的Prometheus.yml配置文件应该是这样的:
- job_name: 'some-app'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: python-app
action: keep
源标签[__meta_kubernetes_pod_label_app]基本上使用Kubernetes api来查看标签为'app'并且其值由正则表达式捕获的pod,在下面的行中给出(在这种情况下,匹配'python -app')。
完成此操作后,Prometheus会自动发现您想要的广告连播,并开始从您的应用中抓取指标。
希望有所帮助。您可以关注博文here了解更多详情。
注意:值得一提的是,在撰写本文时,kubernetes_sd_config仍处于测试阶段。因此,在将来的版本中可能会发生对配置的更改。
答案 1 :(得分:0)
您可以分享您用来削减指标的prometheus配置吗?配置将控制从中获取指标的所有源。以下是您可以参考的一些链接:https://groups.google.com/forum/#!searchin/prometheus-users/Application $ 20metrics $ 20监控$ 20of $ 20Kubernetes $ 20Pods%7Csort:相关性/ prometheus-users / uNPl4nJX9yk / cSKEBqJlBwAJ
答案 2 :(得分:0)
你需要两件事:
此处的文档中有一个示例:https://coreos.com/operators/prometheus/docs/latest/user-guides/running-exporters.html