在 Knative 中收集指标¶
Knative 利用 OpenTelemetry 导出指标。我们目前支持以下导出协议:
您还可以设置 OpenTelemetry Collector 以接收来自 Knative 组件的指标,并将其分发到支持 OpenTelemetry 的其他指标提供商。
注意
以下监控设置仅用于说明目的。支持为尽力而为,欢迎在 Knative 监控仓库中进行更改。默认情况下,指标导出是关闭的。
关于 Prometheus 堆栈¶
Prometheus 是一个用于收集、聚合时间序列指标和警报的开源工具。当使用 Prometheus 时,它还可以用于抓取下面演示的 OpenTelemetry Collector。
Grafana 是一个用于数据分析和可视化的开源平台,使用户能够创建可定制的控制面板,用于监控和分析来自各种数据源的指标。
Prometheus Stack 是预配置的 Kubernetes 清单、Grafana 控制面板和 Prometheus 规则的集合,结合起来使用 Prometheus Operator 提供端到端的 Kubernetes 集群监控。该堆栈默认包含一些 Prometheus 包和 Grafana。
设置 Prometheus 堆栈¶
-
使用 Helm 安装 Prometheus Stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install knative prometheus-community/kube-prometheus-stack \ --create-namespace \ --namespace observability \ -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/promstack-values.yaml
本地访问 Prometheus 实例¶
默认情况下,Prometheus 实例仅通过名为 prometheus-operated 的私有服务公开。
要在您的网络浏览器中访问控制台
-
输入命令
kubectl port-forward -n observability svc/prometheus-operated 9090:9090 -
通过
https://:9090在浏览器中访问控制台。
本地访问 Grafana 实例¶
默认情况下,Grafana 实例仅通过名为 prometheus-grafana 的私有服务公开。
要在您的网络浏览器中访问控制面板
-
输入命令
kubectl port-forward -n observability svc/knative-grafana 3000:80 -
通过
https://:3000在浏览器中访问控制面板。 -
使用默认凭据登录
username: admin password: prom-operator
启用指标收集¶
-
要启用 prometheus 指标收集,您需要更新
config-observabilityConfigMap 并将metrics-protocol设置为prometheus。对于请求指标,我们建议设置将指标推送到 prometheus。这需要启用 Prometheus OLTP 接收器。这已在我们的监控示例中配置。apiVersion: v1 kind: ConfigMap metadata: name: config-observability namespace: knative-serving data: # metrics-protocol field specifies the protocol used when exporting metrics # It supports either 'none' (the default), 'prometheus', 'http/protobuf' (OTLP HTTP), 'grpc' (OTLP gRPC) metrics-protocol: prometheus # request-metrics-protocol request-metrics-protocol: http/protobuf request-metrics-endpoint: http://knative-kube-prometheus-st-prometheus.observability.svc:9090/api/v1/otlp/v1/metrics tracing-protocol: http/protobuf tracing-endpoint: http://jaeger-collector.observability.svc:4318/v1/traces tracing-sampling-rate: "1" -
应用 ServiceMonitors/PodMonitors 以从 Knative Serving 控制平面收集指标。
kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/config/serving-monitors.yaml
导入 Grafana 控制面板¶
-
Grafana 控制面板可以从
monitoring仓库导入。 -
如果您正在使用带有仪表板边车(默认启用)的 Grafana Helm Chart,您可以通过应用以下 ConfigMap 来加载仪表板。
kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/config/configmap-serving-dashboard.json