Share via


使用 CRD 自訂集合 (服務和 Pod 監視器)

注意

受控 Prometheus 的 CRD 支援目前為預覽狀態。

受控 Prometheus 的啟用會自動部署 Pod 監視器和服務監視器的自定義資源定義 (CRD)。 這些自定義資源 定義與 OSS Pod 監視器Prometheus 的 OSS 服務監視器 相同,但組名變更除外。 如果您的叢集上有現有的 Prometheus CRD 和自定義資源,這些 CRD 不會與附加元件所建立的 CRD 衝突。 同時,受控 Prometheus 附加元件不會挑選針對 OSS Prometheus 建立的 CRD。 此分離是為了隔離刮傷作業的目的。

建立 Pod 或服務監視器

使用 Pod 和服務監視器範本,並遵循 API 規格來建立您的自訂資源(PodMonitor 和服務監視器)。 請注意 ,受控 Prometheus 挑選現有 OSS CRS(自定義資源)所需的唯一變更是 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/服務監視器目標的螢幕快照

下一步