首页 > 解决方案 > Seldon:如何使用我自己的 Grafana 和 Prometheus 实例?

问题描述

我想在监控命名空间中使用我已经存在的 Prometheus 和 Grafana 实例来模拟seldon-core-analytics正在做的事情。我正在使用 prometheus 社区 helm 图表并安装kube-prometheus-stack 在 k8s 上。这是我到目前为止所做的:

values.yaml文件中,在 prometheus 配置下,我添加了以下注释:

annotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: "/prometheus

接下来,我查看了prometheus-config.yaml他们的 Github 存储库中的配置,并将配置复制并粘贴到 configmap 文件中。

此外,创建了一个 ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: seldon-servicemonitor-default
  labels:
    seldon-monitor: seldon-default
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app.kubernetes.io/managed-by: seldon-core
  endpoints:
    - interval: 15s
      path: /metrics
      port: http
    - interval: 15s
      path: /prometheus
      port: http
  namespaceSelector:
    matchNames:
      - seldon
      - default
      - monitoring

到目前为止,上述步骤没有错误,但似乎 prometheus 实例无法从我部署在不同命名空间上的模型中抓取指标。我还需要进行哪些其他配置,以便我自己的 Prometheus 和 Grafana 实例可以从我很少部署的模型中收集和可视化指标?该文档并没有真正解释如何在您自己的实例上执行此操作,而且他们提供给您的实例seldon-core-analytics还没有准备好生产。

标签: kubernetesprometheusgrafanaseldonseldon-core

解决方案


ServiceMonitor 非常难以调试。我的调试策略是:-

  1. 检查 Prometheus 是否正在读取创建的 ServiceMonitor:- 查看 /targets URL。(至少应该有一个处于 0/0 状态的目标)如果没有,这意味着 ServiceMonitor 本身没有被 Prometheus 拾取。我建议在您的 kube-prometheus-stack 配置中查看以下配置。

        serviceMonitorSelectorNilUsesHelmValues: false
        serviceMonitorSelector: {}
        serviceMonitorNamespaceSelector: {} 
    

    默认的 ServiceMonitor 附加了 Helm 元数据,Prometheus Operator 使用它来过滤/选择要监控的 ServiceMonitor。设置 serviceMonitorSelectorNilUsesHelmValues:false将忽略任何此类选择。

  2. 如果 ServiceMonitor 在目标中可见但没有目标。:- 在这种情况下,问题出在 ServiceMonitor 和它试图抓取的 pod 之间。检查您提到的端口是否可访问并且 pod 是否满足提到的选择器。

我的建议是按照这个启动另一个虚拟 ServiceMonitor ,然后一次修改 ServiceMonitor 直到它开始监视seldon-core-analyticsPod


推荐阅读