コンテンツにスキップ

Knativeでのメトリクスの収集

Knativeは、メトリクス収集のための一般的なツールをいくつかサポートしています。

Grafana ダッシュボードは、Prometheusで直接収集されたメトリクスに使用できます。

OpenTelemetry Collectorをセットアップして、Knativeコンポーネントからメトリクスを受信し、OpenTelemetryをサポートする他のメトリクスプロバイダーに配布することもできます。

警告

OpenTelemetry CollectorとPrometheusを同時に使用することはできません。デフォルトのメトリクスバックエンドはPrometheusです。Prometheusメトリクスを有効にするには、config-observability ConfigMapから`metrics.backend-destination`キーと`metrics.request-metrics-backend-destination`キーを削除する必要があります。

Prometheus Stackについて

Prometheusは、時系列メトリクスの収集、集計、およびアラートのためのオープンソースツールです。また、以下に示すように、Prometheusが使用されている場合に、OpenTelemetry Collectorをスクレイピングするためにも使用できます。

Grafanaは、データ分析と視覚化のためのオープンソースプラットフォームであり、ユーザーはさまざまなデータソースからのメトリクスを監視および分析するためのカスタマイズ可能なダッシュボードを作成できます。

Prometheus Stackは、Prometheus Operatorを使用してPrometheusによるエンドツーエンドのKubernetesクラスタ監視を提供するために組み合わせた、Kubernetesマニフェスト、Grafanaダッシュボード、およびPrometheusルールの事前設定済みコレクションです。スタックには、デフォルトでいくつかのPrometheusパッケージとGrafanaが含まれています。

Prometheus Stackのセットアップ

  1. Helmを使用して、Prometheus Stackをインストールします。

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    helm install prometheus prometheus-community/kube-prometheus-stack -n default -f values.yaml
    # values.yaml contains at minimum the configuration below
    

    注意

    helmチャートに以下の値が設定されていることを確認する必要があります。そうでない場合、ServiceMonitors / Podmonitorsは機能しません。

    kube-state-metrics:
      metricLabelsAllowlist:
        - pods=[*]
        - deployments=[app.kubernetes.io/name,app.kubernetes.io/component,app.kubernetes.io/instance]
    prometheus:
      prometheusSpec:
        serviceMonitorSelectorNilUsesHelmValues: false
        podMonitorSelectorNilUsesHelmValues: false
    

  2. Knativeからメトリクスを収集するために、ServiceMonitors / PodMonitorsを適用します。

    kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/servicemonitor.yaml
    

ローカルでPrometheusインスタンスにアクセスする

デフォルトでは、Prometheusインスタンスは`prometheus-kube-prometheus-prometheus`という名前のプライベートサービスでのみ公開されます。

Webブラウザでコンソールにアクセスするには

  1. コマンドを入力します

    kubectl port-forward -n default svc/prometheus-kube-prometheus-prometheus 9090:9090
    
  2. `http://localhost:9090`を介してブラウザでコンソールにアクセスします。

ローカルでGrafanaインスタンスにアクセスする

デフォルトでは、Grafanaインスタンスは`prometheus-grafana`という名前のプライベートサービスでのみ公開されます。

Webブラウザでダッシュボードにアクセスするには

  1. コマンドを入力します

    kubectl port-forward -n default svc/prometheus-grafana 3000:80
    
  2. `http://localhost:3000`を介してブラウザでダッシュボードにアクセスします。

  3. デフォルトの資格情報を使用してログインします

    username: admin
    password: prom-operator
    

Grafanaダッシュボードのインポート

  1. Grafanaダッシュボードは、`monitoring`リポジトリからインポートできます。

  2. Dashboard Sidecarが有効になっているGrafana Helm Chartを使用している場合は、次のconfigmapを適用することでダッシュボードを読み込むことができます。

    kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/grafana/dashboards.yaml
    

    注意

    helmチャートに以下の値が設定されていることを確認する必要があります。そうでない場合、ダッシュボードの読み込みは機能しません。

    grafana:
      sidecar:
        dashboards:
          enabled: true
          searchNamespace: ALL
    
    既存のconfigmapがあり、ダッシュボードの読み込みが機能しない場合は、`searchNamespace: ALL`宣言の後に`labelValue: true`属性をhelmチャートに追加します。

OpenTelemetryについて

OpenTelemetryは、クラウドネイティブソフトウェア向けのCNCFオブザーバビリティフレームワークであり、ツール、API、およびSDKのコレクションを提供します。

OpenTelemetryを使用して、テレメトリデータを計測、生成、収集、およびエクスポートできます。このデータには、メトリクス、ログ、トレースが含まれており、Knativeコンポーネントのパフォーマンスと動作を理解するために分析できます。

OpenTelemetryを使用すると、Knativeバイナリを再構築または再構成することなく、複数の監視サービスにメトリクスを簡単にエクスポートできます。

コレクターについて

コレクターは、さまざまなKnativeコンポーネントがメトリクスをプッシュして、監視サービスによって保持および収集される場所を提供します。

次の例では、ConfigMapとDeploymentを使用して単一のコレクターインスタンスを設定できます。

ヒント

より複雑なデプロイメントの場合、OpenTelemetry Operatorを使用してこれらの手順の一部を自動化できます。

注意

https://github.com/knative-extensions/monitoring/tree/main/grafanaにあるGrafanaダッシュボードは、OpenTelemetry Collectorからスクレイピングされたメトリクスでは機能しません。

Diagram of components reporting to collector, which is scraped by Prometheus

コレクターのセットアップ

  1. 次のコマンドを入力して、コレクターを実行するための名前空間を作成します。

    kubectl create namespace metrics
    
    次の手順では、コレクターを作成するために`metrics`名前空間を使用します。

  2. 次のコマンドを入力して、コレクターのDeployment、Service、およびConfigMapを作成します。

    kubectl apply -f https://raw.githubusercontent.com/knative/docs/main/docs/serving/observability/metrics/collector.yaml
    
  3. 次のコマンドを入力して、Knative ServingおよびEventing名前空間の`config-observability` ConfigMapを更新します。

    kubectl patch --namespace knative-serving configmap/config-observability \
      --type merge \
      --patch '{"data":{"metrics.backend-destination":"opencensus","metrics.request-metrics-backend-destination":"opencensus","metrics.opencensus-address":"otel-collector.metrics:55678"}}'
    kubectl patch --namespace knative-eventing configmap/config-observability \
      --type merge \
      --patch '{"data":{"metrics.backend-destination":"opencensus","metrics.opencensus-address":"otel-collector.metrics:55678"}}'
    

コレクターのセットアップの確認

  1. 次のコマンドを入力して、コレクターでPrometheusエクスポートポートを読み込むことで、メトリクスが転送されていることを確認できます。

    kubectl port-forward --namespace metrics deployment/otel-collector 8889
    
  2. エクスポートされたメトリクスを表示するには、`http://localhost:8889/metrics`を取得します。

サイトのトラフィックを理解するために、分析とCookieを使用しています。お客様のサイトのご利用に関する情報は、その目的のためにGoogleと共有されます。詳細はこちら