Prometheus:区分应用程序指标
Posted
技术标签:
【中文标题】Prometheus:区分应用程序指标【英文标题】:Prometheus : Distinguish Application metrics 【发布时间】:2020-11-09 02:48:06 【问题描述】:我在 EKS 集群上运行我的服务。为了收集应用程序指标 [API 响应时间、状态和调用次数],我遇到了 Prometheus。我认为需要完成以下步骤:
-
集群角色、服务帐户和角色绑定:这将允许我的 prometheus 服务与集群节点、pod 和服务 [在资源部分中定义] 进行通信。
Configmap:这允许抓取过程并定义不同的角色。
服务和入口:建立端点 [例如:9090] 并路由来自互联网的流量。
我遇到了prometheus using helm,它描述了我们如何利用 helm 预定义的 prometheus 图表来从 kubernetes 获取原始指标。
我按照以下步骤操作:
kubectl create namespace prometheus
helm install prometheus stable/prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"
kubectl get pods -n prometheus
我可以看到使用该命名空间运行的 pod。现在,我有两个问题,
-
我有多个服务(例如,服务 A 和服务 B)
在集群上运行。那么,我怎样才能区分上的指标
普罗米修斯。
是否需要每次运行
kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
才能看到结果?我懂了
targetPort 被定义为 9090
那么为什么我需要运行
命令?我可以改用values.yaml
吗?
【问题讨论】:
是否尝试遵循普罗米修斯文档? 【参考方案1】:很好地回答你的问题
是的,您可以在prometheus的configMap中使用标签来区分服务指标
static_configs:
- targets:
- "<yourfirstservicename>.<namespace>.svc.cluster.local:<yourservice1portnumber>"
labels:
instance: 'service1'
- targets:
- "<yourservice2name>.<namespace>.svc.cluster.local:<yourservice2port>"
labels:
instance: 'service2'
是的,您必须进行端口转发,但如果您打算使用 grafana 进行可视化,那么新的 grafana 版本会提供内置的查询运行功能。
我希望这会有所帮助!
【讨论】:
1.我目前正在使用 helm for prometheus。你是在告诉我写所有的文件吗? 2. 为什么需要端口转发? service.yaml 文件应该建立端点? 3. 我在服务发现下看到我的服务 [with different namespace] 被删除了。它们也有 /metrics 路径,但已被删除。这是什么意思? [我在集群上运行了两个服务,并且有两个 kubernetes-apiserversactive
]
@Amul123 不,我的意思是你必须编辑你的 configMap 并在你的 promethues configMap 中添加目标部分,以从两个不同的服务中获取指标。我已经更新了我的答案,看看我提供的 configMap。并回答您的第二个问题,如果您不进行端口转发,那么您将如何检查哪些查询返回了什么样的信息。您必须进行端口转发以检查查询及其数据以上是关于Prometheus:区分应用程序指标的主要内容,如果未能解决你的问题,请参考以下文章