当前位置: 首页 > 知识库问答 >
问题:

避免Prometheus调用k8s服务的所有实例(仅一个,应用程序范围的度量集合)

宋景福
2023-03-14

我需要公开普罗米修斯从库伯内特斯应用程序收集的应用程序范围的指标,该应用程序部署了多个实例,例如通过水平Pod自动缩放器缩放。为了故障转移的目的,Pod的每个实例都公开了刮擦点,但是我不希望普罗米修斯在每个Pod的实例上实际调用刮擦终结点,一次只调用一个实例,只有在必要时才能故障转移到另一个实例。

统计信息是应用程序范围的,而不是每个pod实例,所有实例endpoint都报告相同的数据,并行调用它们将没有任何用处,只会增加后端系统上必须查询统计信息的工作负载。我不想要30个呼叫到后端(假设应用程序扩展到30个pod),只要一个呼叫就足够了。

我希望将scrapeendpoint公开为一个k8s服务(并为scraping注释该服务)就可以做到这一点。然而,普罗米修斯似乎不是通过服务代理将请求路由到其中一个POD,而是直接访问服务背后的实例,以及所有实例,而不是一次只访问一个实例。

有没有办法避免普罗米修斯调用所有的实例,并且只调用一个?

该服务定义为:

apiVersion: v1
kind: Service
metadata:
  name: k8worker-msvc
  labels:
    app: k8worker-msvc
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/metrics'
    prometheus.io/port: '3110'
spec:
  selector:
    app: k8worker
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 3110
      targetPort: 3110

如果这是不可能的,除了在应用程序中运行领导者选举和从非领导者实例报告空指标数据之外,我还有什么选择?

谢谢你的建议。

共有1个答案

乐正迪
2023-03-14

这意味着度量来自某种后端数据库,而不是通常的进程内导出器。将度量endpoint移动到连接到同一数据库的新服务,并仅运行其一个副本。

 类似资料:
  • 是否有任何工具/方法来获取的CPU、MEM、NET度量。除了下面的链接之外,还有其他可用的工具吗 -可以部署,但没有有用的POD度量。您可以在这里看到POD指标。 Kubernetes-monitoring-with-prometheus-in-15分钟-安装kube-prometheus与“helm”工具,没有吊舱指标。此处列出指标 -但它的结构是永远注册自定义服务。查看此处 用Promethe

  • 如果您正在分析任何给定的微服务体系结构,并且您将服务A和服务B合并在一起,以避免由于B崩溃而导致A无法工作(因为它严重依赖于B,并且根据项目规范,如果B有故障,A就无法完成请求),如果进行了足够的迭代,您不是最终会得到一个整体体系结构吗? 这是我们公司最近提出的一个问题,恐怕他们正在做一个短视的决定。 体系结构摘要: -这是我们第一个使用微服务体系结构的系统 -我们有一个数量的微服务(具体地说,每

  • 问题内容: 为什么最终控制台日志未定义?变量时间具有全局作用域,而ajax调用是异步的。 这是我的代码: 问题答案: 更改为布尔值false。 http://api.jquery.com/jQuery.ajax/ 另外,请注意,如果您需要在此处使用跨域,则将无法同步-请使用Promise。 使用Q.js在此处查看这样的示例: 演示

  • 为了效率和成本,我不想将这些标志存储在memcache或Datastore中。 我正在寻找一种向所有实例发送消息的方法(请参阅我之前的文章GAE向所有活动实例发送请求): 1)向我的应用程序或服务的所有实例发送关闭消息/命令 2)向我的应用程序或服务的所有实例发送重新启动消息/命令 我只使用自动缩放,所以我不能发送针对特定实例的请求(我可以使用GAE管理API获得活动实例的列表)。 有没有办法在P

  • 如何强制调度器以循环方式在节点上运行pod,以便如果任何节点宕机,那么至少有一个节点将NGINX pod处于运行模式。 这到底有没有可能?如果可能,我们如何实现这一场景?

  • 我对匕首比较陌生,我刚开始使用剑柄。我想要的是在中注入一个应用程序范围的存储库(这意味着它需要在任何地方都是相同的对象)。存储库将用于检索用户、auth令牌和诸如此类的东西。这是我能找到的最接近的: 这样一切都可以正常工作,使用debug我可以确认每次使用时都注入了相同的实例。问题是第二次调用时(例如,视图被销毁并重新创建)。我不知道我是在科特林一侧犯了什么愚蠢的错误,还是在剑柄一侧犯了什么愚蠢的