如何使用prometheus operator service monitor监控kubernetes吊舱中未运行的外部服务
我正在成功地配置我的服务监视器,以监视提供kubernetes吊舱中运行的度量的API。但是,我还想将外部服务添加到我的服务监视器目标中。此外部服务是arangoDB oasis exporter metrics()。此服务未在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
/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
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