feat: add prometheus metrics intergration guideline
This commit is contained in:
parent
2555143c2d
commit
89a71a4715
56
docs/prometheus-metrics-intergration-guideline.md
Normal file
56
docs/prometheus-metrics-intergration-guideline.md
Normal file
@ -0,0 +1,56 @@
|
||||
# 1. 服务提供Metrics接口
|
||||
|
||||
在`webapi/providers`目录下创建一个`metrics.py`文件,用于提供Metrics接口。
|
||||
|
||||
内容如下
|
||||
```
|
||||
def register(app):
|
||||
instrumentator = (
|
||||
Instrumentator().instrument(
|
||||
app,
|
||||
metric_namespace="freeleaps-mertics",
|
||||
metric_subsystem=app_settings.APP_NAME)
|
||||
)
|
||||
|
||||
@app.on_event("startup")
|
||||
async def startup():
|
||||
instrumentator.expose(app, endpoint="/api/_/metrics", should_gzip=True)
|
||||
logging.info("Metrics endpoint exposed at /api/_/metrics")
|
||||
```
|
||||
|
||||
参考https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/src/branch/master/apps/metrics的接入方式
|
||||
|
||||
|
||||
# 2. 配置Metrics采集
|
||||
|
||||
## 2.1. 找到helm pkg目录
|
||||
对于freeleaps内部服务而言,你需要在freeleaps-ops仓库下找到该服务部署的helm-package配置
|
||||
> 比如metrics服务,他的配置在`https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-ops/src/branch/master/freeleaps/helm-pkg/metrics`
|
||||
|
||||
对于freeleaps租户服务而言(通过one-click部署),你需要在对应服务仓库下找到`.freeleas/devops/helm-pkg`
|
||||
> 比如magicleaps服务,他的配置在`https://gitea.freeleaps.mathmast.com/products/magicleaps/src/branch/main/.freeleaps/devops/helm-pkg`
|
||||
|
||||
## 2.2. 新增新增servicemonitor配置
|
||||
在templates文件夹下新增`servicemonitor.yaml`文件,内容如下,内容参考`https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-ops/src/branch/master/freeleaps/helm-pkg/notification/templates/notification/servicemonitor.yaml`
|
||||
|
||||
根据value.yaml中的配置,更新必要内容,比如第6行从notification修改为metrics
|
||||
|
||||
## 2.3. 修改value.{alpha|prod}.yaml
|
||||
新增serviceMonitor配置,参考`https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-ops/src/branch/master/freeleaps/helm-pkg/notification/values.prod.yaml`
|
||||
```
|
||||
- name: notification-service
|
||||
type: ClusterIP
|
||||
port: 8003
|
||||
targetPort: 8003
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: kube-prometheus-stack
|
||||
namespace: freeleaps-monitoring-system
|
||||
internal: 30s
|
||||
scrapeTimeout: ''
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
{{ $namespace := .Release.Namespace }}
|
||||
{{ $appVersion := .Chart.AppVersion | quote }}
|
||||
{{ $releaseService := .Release.Service }}
|
||||
{{ $releaseName := .Release.Name }}
|
||||
|
||||
{{- range $service := .Values.metrics.services }}
|
||||
{{- if $service.serviceMonitor.enabled }}
|
||||
---
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ $service.name }}-monitor
|
||||
namespace: {{ $service.serviceMonitor.namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/version: {{ $appVersion }}
|
||||
app.kubernetes.io/name: {{ $service.name }}-monitor
|
||||
app.kubernetes.io/managed-by: {{ $releaseService }}
|
||||
app.kubernetes.io/instance: {{ $releaseName }}
|
||||
{{- if $service.serviceMonitor.labels }}
|
||||
{{- toYaml $service.serviceMonitor.labels | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
endpoints:
|
||||
- path: /api/_/metrics
|
||||
targetPort: {{ $service.targetPort }}
|
||||
{{- if $service.serviceMonitor.interval }}
|
||||
interval: {{ $service.serviceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if $service.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ $service.serviceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- {{ $namespace | quote }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ $service.name }}
|
||||
app.kubernetes.io/instance: {{ $releaseName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@ -50,6 +50,13 @@ metrics:
|
||||
type: ClusterIP
|
||||
port: 8009
|
||||
targetPort: 8009
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: kube-prometheus-stack
|
||||
namespace: freeleaps-monitoring-system
|
||||
internal: 30s
|
||||
scrapeTimeout: ''
|
||||
configs:
|
||||
starrocksHost: freeleaps-starrocks-cluster-fe-service.freeleaps-data-platform.svc
|
||||
starrocksPort: 9030
|
||||
|
||||
@ -50,6 +50,13 @@ metrics:
|
||||
type: ClusterIP
|
||||
port: 8009
|
||||
targetPort: 8009
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: kube-prometheus-stack
|
||||
namespace: freeleaps-monitoring-system
|
||||
internal: 30s
|
||||
scrapeTimeout: ''
|
||||
configs:
|
||||
starrocksHost: freeleaps-starrocks-cluster-fe-service.freeleaps-data-platform.svc
|
||||
starrocksPort: 9030
|
||||
|
||||
@ -50,6 +50,13 @@ metrics:
|
||||
type: ClusterIP
|
||||
port: 8009
|
||||
targetPort: 8009
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: kube-prometheus-stack
|
||||
namespace: freeleaps-monitoring-system
|
||||
internal: 30s
|
||||
scrapeTimeout: ''
|
||||
configs:
|
||||
starrocksHost: ""
|
||||
starrocksPort: 8009
|
||||
|
||||
Loading…
Reference in New Issue
Block a user