为 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 列表中可见。

应用程序信息 - 指标#

构建应用程序时,会在输出目录中生成一个应用程序信息文件。此文件包含应用程序中微服务导出的指标列表。有关更多信息,请参阅应用程序信息