如何解决Seldon:如何使用我自己的 Grafana 和 Prometheus 实例?
我想使用监控命名空间中现有的 Prometheus 和 Grafana 实例来模拟 seldon-core-analytics
正在做什么。我正在使用普罗米修斯社区掌舵图表并在 k8s 上安装了 kube-prometheus-stack
。这是我到目前为止所做的:
在 values.yaml
文件中的 prometheus 配置下,我添加了以下注释:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/prometheus
接下来,我查看了他们 Github 存储库中的 prometheus-config.yaml
,并将配置复制并粘贴到了 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
提供给您的实例尚未准备好生产。
解决方法
seldon-core-analytics
中的 Prometheus 配置非常标准。它基于内置的 Kubernetes 服务发现,并使用注解来查找抓取目标:
annotations:
prometheus.io/scrape: true
prometheus.io/path: /metrics
prometheus.io/scheme: http
prometheus.io/port: 9100
在 their example configuration 中,prometheus 将使用 prometheus.io/scrape: true
注释来定位 Pod、服务和端点。其他三个标签用于覆盖每个目标的默认抓取参数。因此,如果您有示例中的配置,则只需将其中一些注释放在 pod 上即可。
kube-prometheus-stack
的工作方式不同。它使用 prometheus operator 和 CRD 来塑造配置。 This 设计文档描述了每个 CRD 的用途。
您需要创建一个 ServiceMonitor
资源才能为新服务定义抓取规则。 ServiceMonitor
本身应该具有在 serviceMonitorSelector
键下的 prometheus 资源(另一个 CRD)中定义的标签。在这些情况下很难为您提供一个可行的示例,但 this 简短指南应该足以让您了解该怎么做。
我建议您描述您拥有的 ServiceMonitor
之一,然后在 matchLabels
下创建一个新的更改标签。不要更改新对象中的命名空间,默认情况下 prometheus 运算符不会在其他命名空间中查找 ServiceMonitor
。要使 ServiceMonitor
发现所有命名空间中的目标,namespaceSelector
必须为空:
spec:
namespaceSelector:
any: true
,
ServiceMonitor 极难调试。 我的调试策略是:-
-
检查创建的 ServiceMonitor 是否正在被 Prometheus 读取:- 查看 /targets URL。 (应该有一个目标在 0/0 至少声明)如果不是,这意味着 ServiceMonitor 本身没有被 Prometheus 接收。我建议查看以下配置 您的 kube-prometheus-stack 配置。
serviceMonitorSelectorNilUsesHelmValues: false serviceMonitorSelector: {} serviceMonitorNamespaceSelector: {}
默认的 ServiceMonitor 附加了 Helm 元数据 Prometheus Operator 使用它来过滤/选择 要监视的 ServiceMonitors。环境
serviceMonitorSelectorNilUsesHelmValues:false
将忽略任何此类 选择。 -
如果 ServiceMonitor 在目标中可见但没有目标。:- 在这种情况下,问题在于 ServiceMonitor 和 它试图刮取的豆荚。检查你提到的端口是否是 可访问并且 pod 满足提到的选择器。
我的建议是按照 this 启动另一个虚拟 ServiceMonitor,然后一次修改 ServiceMonitor,直到它开始监视 seldon-core-analytics
pods
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。