共用方式為


使用 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/目標中。

顯示 Pod/服務監視器目標的螢幕擷取畫面

下一步