如何使用prometheus operator service monitor监控kubernetes吊舱中未运行的外部服务

如何使用prometheus operator service monitor监控kubernetes吊舱中未运行的外部服务,service,kubernetes-helm,monitor,prometheus-operator,Service,Kubernetes Helm,Monitor,Prometheus Operator,我正在成功地配置我的服务监视器,以监视提供kubernetes吊舱中运行的度量的API。但是,我还想将外部服务添加到我的服务监视器目标中。此外部服务是arangoDB oasis exporter metrics()。此服务未在kubernetes容器中运行。以下是我的相关配置文件: /helm/charts/prometheus xxx/templates/service\u monitor.tpl /helm/charts/prometheus xxx/Chart.yaml /helm/ch

我正在成功地配置我的服务监视器,以监视提供kubernetes吊舱中运行的度量的API。但是,我还想将外部服务添加到我的服务监视器目标中。此外部服务是arangoDB oasis exporter metrics()。此服务未在kubernetes容器中运行。以下是我的相关配置文件:

  • /helm/charts/prometheus xxx/templates/service\u monitor.tpl
  • /helm/charts/prometheus xxx/Chart.yaml
  • /helm/charts/prometheus xxx/templates/\u helpers.tpl
  • /helm/charts/prometheus xxx/values.yaml
  • 对于如何将kubernetes吊舱中没有运行的外部服务添加到service monitor的目标中,您有什么建议吗?事先非常感谢

    ------更新帖子----

    以下是我在图表模板中的新配置文件
    arangodb servicemonitor

  • /helm/charts/arangodb servicemonitor/templates/service.yaml
  • /helm/charts/arangodb servicemonitor/templates/endpoints.yaml
  • /helm/charts/arangodb servicemonitor/templates/service\u monitor.tpl
  • 但是当我执行
    terraform apply
    时,我会收到关于我添加的
    承载令牌
    的错误消息:

    有关信息,我需要添加此令牌以连接到ArangoDB外部服务:


    创建Kubernetes服务,并以相同方式使用普罗米修斯服务监视器

    创建K8s服务

    kind: Service
    apiVersion: v1
    metadata:
     name: arangoDB
    spec:
     type: ClusterIP
     ports:
     - name: metrics
       port: 9000
       targetPort: 9000
    
    在这个数据库中创建数据库的端点配置,普罗米修斯应该能够访问数据库的IP

    kind: Endpoints
    apiVersion: v1
    metadata:
     name: arangoDB
    subsets:
     - addresses:
         - ip: IP of Database
       ports: 
         - name: metrics
           port: 9000 
    
    因此,nice服务监视器将检查Kubernetes服务,Kubernetes服务将指向端点和数据库,并从外部服务获取度量

    在上检查端点服务创建详细信息。

    Thank you@Harsh Manvar我正在尝试配置它,但是我有一个问题,为了连接到我的arangoDB,我需要根据arangoDB oasis页面添加这个参数(bearer\u token):scrape\u configs:-job\u name:'deployment'bearer\u token:'scheme:'https'静态\u配置:-目标:['xxxxx.arangoDB.cloud:xxxx']tls\u config:unsecure\u skip\u verify:true如何添加此参数?我已在service.yaml:spec:type:clusterpexternalname:xxxxx.arangodb.cloud:xxxx端口:-名称:度量端口:9000目标端口:9000协议:TCP-承载令牌:[arangodb\u令牌]type:ExternalName,但我得到一个错误“arangodb servicemonitor/templates/service.YAML上的YAML解析错误:将YAML转换为JSON时出错:YAML:第17行:未找到预期的“-”指示符”。我是否也需要在endpoints.yaml中添加此参数?我在这里做错了什么?对不起,评论中没有那么清楚,我会在帖子中添加我的新配置文件,请查看我的更新post@shuti您的刮取指标或作业配置错误您必须使用:
    bearer\u token\u文件:/etc/prometheus/prometheus.token
    类似的内容。将令牌保存到文件中,您可以按上述方式传递它。另外,我不是100%确定,因为scrape文件中有YAML错误,所以请检查第17行。谢谢@Harsh Manvar,我也找到了这个arangoDB导出器,我是否也应该部署arangoDB导出器?我的项目非常复杂,因为它不是prometheus配置文件的直接配置,但我通过Helm chart配置所有内容,并通过Terraform部署
    {{/*
    Expand the name of the chart.
    */}}
    {{- define "jobs-manager-servicemonitor.name" -}}
    {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
    {{- end }}
    
    {{/*
    Create a default fully qualified app name.
    We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
    If release name contains chart name it will be used as a full name.
    */}}
    {{- define "jobs-manager-servicemonitor.fullname" -}}
    {{- if .Values.fullnameOverride -}}
    {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
    {{- else -}}
    {{- $name := default .Chart.Name .Values.nameOverride -}}
    {{- if contains $name .Release.Name -}}
    {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
    {{- else -}}
    {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
    {{- end -}}
    {{- end -}}
    {{- end -}}
    
    serviceMonitor:
      enabled: false
      namespace: prometheus
      interval: 10s
      scrapeTimeout: 10s
    
    service:
      metricsPort:
        name: http
    
    instance:
      name: jobs-manager
      
    Namespace: test1
    
    apiVersion: v1
    kind: Service
    metadata:
      name: arangodb
      namespace: prometheus
      labels:
        app: arangodb
        release: prometheus
    spec:
      type: ClusterIP
      externalName: xxxxx.arangodb.cloud:xxxx
      ports:
        - name: metrics
          port: 9000
          targetPort: 9000
          protocol: TCP
        - bearer_token: [ARANGODB_TOKEN]
        type: ExternalName
    
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: arangodb
      labels:
        app: arangodb
    subsets:
    - addresses:
      - ip: xxxxx.arangodb.cloud:xxxx
      ports: 
      - name: metrics
        port: 9000
        protocol: TCP
    
    ---
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: arangodb-servicemonitor
      # Change this to the namespace the arangodb-servicemonitor instance is running in
      namespace: prometheus
      labels:
        serviceapp: arangodb-servicemonitor
        release: prometheus
    spec:
      selector:
        # Targets arangodb service
        app: arangodb
      endpoints:
        # TO DO: use an array (List) of endpoints to monitor many endpoints
        - port: metrics
          interval: 30s
      namespaceSelector:
        matchNames:
        # TO DO: use an array (List) of endpoints to monitor many endpoints
        - default
    
    kind: Service
    apiVersion: v1
    metadata:
     name: arangoDB
    spec:
     type: ClusterIP
     ports:
     - name: metrics
       port: 9000
       targetPort: 9000
    
    kind: Endpoints
    apiVersion: v1
    metadata:
     name: arangoDB
    subsets:
     - addresses:
         - ip: IP of Database
       ports: 
         - name: metrics
           port: 9000