Kubernetes 塞尔顿:如何使用我自己的格拉法纳和普罗米修斯实例?

Kubernetes 塞尔顿:如何使用我自己的格拉法纳和普罗米修斯实例?,kubernetes,prometheus,grafana,seldon,seldon-core,Kubernetes,Prometheus,Grafana,Seldon,Seldon Core,我想使用监控命名空间中已经存在的Prometheus和Grafana实例来模拟正在做的事情。我正在使用普罗米修斯社区掌舵图,并在k8s上安装了kube普罗米修斯堆栈。以下是我迄今为止所做的工作: 在prometheus配置下的values.yaml文件中,我添加了以下注释: annotations: prometheus.io/scrape: "true" prometheus.io/path: "/prometheus 接下来,我查看了Github re

我想使用监控命名空间中已经存在的Prometheus和Grafana实例来模拟正在做的事情。我正在使用普罗米修斯社区掌舵图,并在k8s上安装了
kube普罗米修斯堆栈
。以下是我迄今为止所做的工作:

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

annotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: "/prometheus
接下来,我查看了Github repo中的
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
提供给您的实例还没有准备好生产。
seldon core analytics
中的普罗米修斯配置是相当标准的。它基于内置的Kubernetes服务发现,并使用注释查找抓取目标:

注释:
普罗米修斯:对
prometheus.io/path:/metrics
prometheus.io/scheme:http
prometheus.io/port:9100
在prometheus中,prometheus将使用
prometheus.io/scrap:true
注释将POD、服务和端点作为目标。其他三个标签用于覆盖每个目标的默认刮片参数。因此,如果您有一个如示例中所示的配置,那么您只需要将其中一些注释放在pod上

库伯·普罗米修斯·斯塔克的工作方式不同。它使用和CRD来塑造配置。设计文件描述了每个CRD的用途

您需要创建一个
ServiceMonitor
资源,以便为新服务定义刮取规则
ServiceMonitor
本身应具有在prometheus资源(另一个CRD)中定义的标签,位于
serviceMonitorSelector
键下。在这种情况下,很难为您提供一个有效的示例,但简短的指南应该足以理解该怎么做

我建议您描述一个您拥有的
ServiceMonitor
s,然后在
matchLabels
下创建一个新的更改标签。不要更改新对象中的名称空间,默认情况下,prometheus操作符不会在其他名称空间中查找
ServiceMonitor
s。要使
ServiceMonitor
在所有命名空间中发现目标,
namespaceSelector
必须为空:

spec:
名称空间选择器:
任何人:是的

服务监视器极难调试。 我的调试策略是:-

  • 检查创建的ServiceMonitor是否正在被普罗米修斯读取:- 查看/targets URL。(0/0中应该有一个目标 至少声明)如果没有,这意味着ServiceMonitor本身没有被Prometheus拾取 您的kube prometheus堆栈配置

        serviceMonitorSelectorNilUsesHelmValues: false
        serviceMonitorSelector: {}
        serviceMonitorNamespaceSelector: {} 
    
    默认ServiceMonitor附带了Helm元数据 普罗米修斯操作员用于过滤/选择 要监视的ServiceMonitors。背景
    serviceMonitorSelectorNilUsesHelmValues:false将忽略任何此类
    选择

  • 如果ServiceMonitor在目标中可见,但没有目标。:- 在这种情况下,问题在于ServiceMonitor和 它正试图刮去的吊舱。检查你提到的端口是否正确 可访问,POD满足上述选择器的要求


  • 我的建议是启动另一个虚拟ServiceMonitor,方法是遵循并每次修改ServiceMonitor一个步骤,直到它开始监控
    seldon core analytics
    pods

    Thank@anemyte。你提供的推荐信我已经看过了。我尝试使用服务监视器,但仍然没有将seldon部署作为目标。我已经用服务监视器文件编辑了我的原始评论。@RileyHun似乎是合法的。到目前为止你查了什么?网络用户界面中的普罗米修斯配置/目标?有什么和塞尔顿有关的吗?。如果CRD出现问题,普罗米修斯操作员日志可能包含一些有价值的信息。最后,一些CRD(特别是不确定这些CRD)可能会在其状态中显示一些提示(kubectl Descripte提供)。@aneymyte-我只检查了普罗米修斯用户界面,并查看了状态下的目标。也许它与RBAC授权有关?浏览本文:@RileyHun我看到RBAC角色和绑定在helm图表中定义,但我无法说出集群中的内容:)。我建议您删除并重新创建ServiceMonitor。在此过程中,捕获普罗米修斯和操作员的日志。CRD可能有问题,可能是错误或警告。另外,检查用户界面中的prometheus配置。它在“状态”下可用。您能看到与seldon或其ServiceMonitor相关的内容吗?最后,确定一下,您的seldon模型有服务对象吗?是的,seldon模型有服务对象。是否已定义RBAC角色?我错过了。我打算再做一个。已删除我的ServiceMonitor。