共用方式為


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

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

建立 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/服務監視器目標的螢幕擷取畫面

下一步