为 UCS Tools 应用程序添加监控#
先决条件#
为 UCS 应用程序添加监控要求在部署应用程序之前安装 Prometheus Operator。
要做到这一点,请安装 Kube Prometheus Stack。
--set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false
参数可以提供给helm install
命令,以监控所有 PodMonitor 资源。
应用程序中使用的微服务都已进行 instrumentation 并实现了 Prometheus 指标端点。
应用程序中使用的微服务已在
metrics
部分添加了详细信息。请参阅微服务指标。
PodMonitor 资源#
UCS 应用程序构建工具会根据每个微服务的 metrics
部分中的信息自动生成 PodMonitor 自定义资源,并将其添加到输出应用程序 helm chart 中。
这些 PodMonitor 自定义资源用于配置 Prometheus 服务器以抓取微服务 pod。有关更多信息,请参阅 Prometheus Operator API 参考。
要查看生成的 PodMonitor 资源,请运行以下命令
$ helm install --dry-run test <application-helm-chart>
...
---
# Source: myservice-test-app/templates/podmonitors.yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: 'myservice-test-app-myservice-metrics-podmonitor'
labels:
app.kubernetes.io/instance: 'test'
app.kubernetes.io/name: 'myservice-test-app'
spec:
selector:
matchLabels:
app: myservice-myservice-deployment
app.kubernetes.io/name: podmonitor-test-ms1
app.kubernetes.io/version: 0.0.1
podMetricsEndpoints:
- port: metrics
path: /metrics
当 helm chart 部署时,这些 PodMonitor 资源会与应用程序一起自动安装。
PodMonitor 资源的自定义标签#
如果 Prometheus Operator 需要选择这些标签,也可以在 PodMonitor 资源上设置自定义标签。
要做到这一点,请在 helm 安装期间设置 podMonitorLabels
值
$ helm install <release-name> <application-helm-chart> --set "podMonitorLabels.<label>=<value>"
验证 pod 是否正在被抓取#
如果应用程序和监控运行良好,则应在 Prometheus WebUI 中看到 pod targets。为此,请转发 prometheus 服务端口
$ kubectl get svc -l "app=kube-prometheus-stack-prometheus"
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-kube-prometheus-prometheus ClusterIP 10.152.183.234 <none> 9090/TCP 2m
$ kubectl port-forward svc/prometheus-kube-prometheus-prometheus --address 0.0.0.0 9090:9090
Forwarding from 0.0.0.0:9090 -> 9090
在浏览器中打开 http://<NODE-IP>:9090/targets
,其中 <NODE-IP>
是运行 kubectl port-forward
命令的机器的 IP 地址。微服务 pod 应在 targets 列表中可见。
应用程序信息 - 指标#
构建应用程序时,会在输出目录中生成一个应用程序信息文件。此文件包含应用程序中微服务导出的指标列表。有关更多信息,请参阅应用程序信息。