我想使用监视命名空间中已经存在的Prometheus和Grafana实例来模拟seldon-core-analytics正在做的事情。我使用prometheus社区图表并在k8s上安装了k8s。以下是我迄今所做的工作:
在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部署的模型中收集和可视化度量,我还需要做什么其他配置呢?这些文档并没有真正解释如何在您自己的实例上这样做,而且它们通过seldon-core-analytics提供给您的实例还没有准备好生产。
发布于 2021-02-02 20:02:39
seldon-core-analytics中的Prometheus配置是相当标准的。它基于内置的Kubernetes服务发现,并使用注释查找刮取目标:
annotations:
prometheus.io/scrape: true
prometheus.io/path: /metrics
prometheus.io/scheme: http
prometheus.io/port: 9100在它们的示例配置中,prometheus将以豆荚、服务和端点为目标,并对其进行prometheus.io/scrape: true注释。其他三个标签用于覆盖每个目标的默认刮取参数。因此,如果您有一个配置(如本例中所示),您只需将这些注释中的一些放在荚上即可。
kube-prometheus-stack的工作方式是不同的。它使用普罗米修斯算子和CRD来塑造配置。这设计文档描述了每个CRD的用途。
您需要创建一个ServiceMonitor资源,以便为新服务定义一个刮取规则。ServiceMonitor本身应该有serviceMonitorSelector键下的prometheus (另一个CRD)中定义的标签。在这种情况下很难为您提供一个工作示例,但是这简短的指南应该足以理解该做什么。
我建议您描述一下您所拥有的ServiceMonitor之一,然后在matchLabels下创建一个新的标签。不要更改新对象中的命名空间,默认情况下,prometheus运算符不会在其他命名空间中查找ServiceMonitor。要使ServiceMonitor在所有命名空间中发现目标,namespaceSelector必须为空:
spec:
namespaceSelector:
any: true发布于 2021-02-08 21:40:50
ServiceMonitors很难调试。我的调试策略是:-
serviceMonitorSelectorNilUsesHelmValues:false将忽略任何此类选择。我的建议是启动另一个虚拟ServiceMonitor,方法是跟踪这,然后一步一步地修改ServiceMonitor,直到它开始监视seldon-core-analytics荚
https://stackoverflow.com/questions/65965188
复制相似问题