使用 CRD (服務和 Pod 監視器) 自訂集合
受控 Prometheus 的啟用會自動部署 Pod 監視器 (英文) 和服務監視器 (英文) 的自訂資源定義 (CRD)。 這些自訂資源定義與 Prometheus 之 OSS Pod 監視器和 OSS 服務監視器的自訂資源定義 (CRD) 相同,但群組名稱有變更。 如果您的叢集上有現有的 Prometheus CRD 和自訂資源,這些 CRD 不會與附加元件所建立的 CRD 相衝突。 於此同時,受控 Prometheus 附加元件並不會挑選 OSS Prometheus 所建立的 CRD。 此分隔的目的是為了隔離抓取作業。
注意
目前無法使用已啟用 Azure ARC 的 Kubernetes 中的自訂資源定義 (CRDs) 支援。
建立 Pod 或服務監視器
使用 Pod 和服務監視器範本 (英文),並遵循 API 規格來建立您的自訂資源 (PodMonitor (英文) 和服務監視器 (英文))。 請注意,受控 Prometheus 挑選現有 OSS CR (自訂資源) 所需的唯一變更是 API 群組 - azmonitoring.coreos.com/v1。
注意 - 請務必使用範本中指定的 labelLimit、labelNameLengthLimit 與 labelValueLengthLimit,以便在處理期間不會卸除它們。
您的 Pod 和服務監視器看起來應像如下範例:
範例 Pod 監視器
# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
# Can be deployed in any namespace
metadata:
name: reference-app
namespace: app-namespace
spec:
labelLimit: 63
labelNameLengthLimit: 511
labelValueLengthLimit: 1023
# The selector specifies which pods to filter for
selector:
# Filter by pod labels
matchLabels:
environment: test
matchExpressions:
- key: app
operator: In
values: [app-frontend, app-backend]
# [Optional] Filter by pod namespace
namespaceSelector:
matchNames: [app-frontend, app-backend]
# [Optional] Labels on the pod with these keys will be added as labels to each metric scraped
podTargetLabels: [app, region, environment]
# Multiple pod endpoints can be specified. Port requires a named port.
podMetricsEndpoints:
- port: metrics
範例服務監視器
# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor
# Can be deployed in any namespace
metadata:
name: reference-app
namespace: app-namespace
spec:
labelLimit: 63
labelNameLengthLimit: 511
labelValueLengthLimit: 1023
# The selector filters endpoints by service labels.
selector:
matchLabels:
app: reference-app
# Multiple endpoints can be specified. Port requires a named port.
endpoints:
- port: metrics
部署 Pod 或服務監視器
您接下來可使用 kubectl apply 來部署 Pod 或服務監視器。
套用時,自訂資源中的任何錯誤應會顯示,且 Pod 或服務監視器應無法套用。
成功建立的 Pod 監視器看起來如下 -
podmonitor.azmonitoring.coreos.com/my-pod-monitor created
範例
建立應用程式範例
部署公開要由 Pod/服務監視器所設定之 Prometheus 計量的範例應用程式。
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml
建立 Pod 監視器和/或服務監視器以抓取計量
部署已設定為從上一個步驟之範例應用程式抓取計量的 Pod 監視器。
Pod 監視器
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
服務監視器
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml
疑難排解
成功套用 Pod 或服務監視器時,附加元件應會自動從目標開始收集計量。 若要確認此動作,請遵循此處的指示,進行自訂資源的一般疑難排解,並確保目標會顯示 127.0.0.1/目標中。