首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用prometheus操作员服务监视器监视没有在kubernetes吊舱中运行的外部服务

如何使用prometheus操作员服务监视器监视没有在kubernetes吊舱中运行的外部服务
EN

Stack Overflow用户
提问于 2021-06-03 09:51:36
回答 1查看 3.2K关注 0票数 2

我正在成功地配置我的服务监视器,以监视提供在kubernetes吊舱中运行的度量标准的API。但是,我也想向我的服务监视器目标添加外部服务。这个外部服务是arangoDB绿洲出口度量(https://www.youtube.com/watch?v=c8i7K4HUPF4&t=554s)。而且这个服务没有在kubernetes容器中运行。下面是有关我的配置文件:

  1. /helm/charts/prometheus-xxx/templates/service_monitor.tpl

代码语言:javascript
复制
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: {{ template "jobs-manager-servicemonitor.fullname" . }}
  # Change this to the namespace the jobs-manager-servicemonitor instance is running in
  namespace: {{ .Values.serviceMonitor.namespace }}
  labels:
    serviceapp: {{ template "jobs-manager-servicemonitor.name" . }}
    release: "{{ .Release.Name }}"
spec:
  selector:
    matchLabels:
      # Targets jobs-manager service
      app.kubernetes.io/instance: {{ .Values.instance.name }}
  endpoints:
    - port: {{ .Values.service.metricsPort.name }}
      interval: {{ .Values.serviceMonitor.interval }}
      {{- if .Values.serviceMonitor.scrapeTimeout }}
      scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
      {{- end }}
  namespaceSelector:
    matchNames:
    - {{ .Values.Namespace }}

  1. /helm/charts/prometheus-xxx/Chart.yaml

代码语言:javascript
复制
apiVersion: v1
appVersion: "1.0.0"
description: Prometheus Service monitor, customized
name: jobs-manager-servicemonitor
version: 1.0.1

  1. /helm/charts/prometheus-xxx/templates/_helpers.tpl

代码语言:javascript
复制
{{/*
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 -}}

  1. /helm/charts/prometheus-xxx/values.yaml

代码语言:javascript
复制
serviceMonitor:
  enabled: false
  namespace: prometheus
  interval: 10s
  scrapeTimeout: 10s

service:
  metricsPort:
    name: http

instance:
  name: jobs-manager
  
Namespace: test1

对于如何将没有在kubernetes pod中运行的外部服务添加到服务监视器的目标中,您有什么建议吗?先谢谢你。

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

  1. /helm/charts/arangodb-servicemonitor/templates/service.yaml

代码语言:javascript
复制
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

  1. /helm/charts/arangodb-servicemonitor/templates/endpoints.yaml

代码语言:javascript
复制
kind: Endpoints
apiVersion: v1
metadata:
  name: arangodb
  labels:
    app: arangodb
subsets:
- addresses:
  - ip: xxxxx.arangodb.cloud:xxxx
  ports: 
  - name: metrics
    port: 9000
    protocol: TCP

  1. /helm/charts/arangodb-servicemonitor/templates/service_monitor.tpl

代码语言:javascript
复制
---
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

但是,当我执行terraform apply时,我会得到关于我添加的bearer_token的错误消息:

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

EN

回答 1

Stack Overflow用户

发布于 2021-06-03 10:06:45

创建Kubernetes服务,并以同样的方式使用Prometheus 。

创建K8s服务

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
 name: arangoDB
spec:
 type: ClusterIP
 ports:
 - name: metrics
   port: 9000
   targetPort: 9000

在这个prometheus中创建数据库的端点配置应该能够访问数据库的IP

代码语言:javascript
复制
kind: Endpoints
apiVersion: v1
metadata:
 name: arangoDB
subsets:
 - addresses:
     - ip: IP of Database
   ports: 
     - name: metrics
       port: 9000 

因此,尼斯服务监视器将检查Kubernetes服务,Kubernetes服务将指向端点和数据库,并从外部服务获取度量。

检查端点服务创建的详细信息。:https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67819225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档