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のセットアップ¶
-
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
-
Knativeからメトリクスを収集するために、ServiceMonitors / PodMonitorsを適用します。
kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/servicemonitor.yaml
ローカルでPrometheusインスタンスにアクセスする¶
デフォルトでは、Prometheusインスタンスは`prometheus-kube-prometheus-prometheus`という名前のプライベートサービスでのみ公開されます。
Webブラウザでコンソールにアクセスするには
-
コマンドを入力します
kubectl port-forward -n default svc/prometheus-kube-prometheus-prometheus 9090:9090
-
`http://localhost:9090`を介してブラウザでコンソールにアクセスします。
ローカルでGrafanaインスタンスにアクセスする¶
デフォルトでは、Grafanaインスタンスは`prometheus-grafana`という名前のプライベートサービスでのみ公開されます。
Webブラウザでダッシュボードにアクセスするには
-
コマンドを入力します
kubectl port-forward -n default svc/prometheus-grafana 3000:80
-
`http://localhost:3000`を介してブラウザでダッシュボードにアクセスします。
-
デフォルトの資格情報を使用してログインします
username: admin password: prom-operator
Grafanaダッシュボードのインポート¶
-
Grafanaダッシュボードは、`monitoring`リポジトリからインポートできます。
-
Dashboard Sidecarが有効になっているGrafana Helm Chartを使用している場合は、次のconfigmapを適用することでダッシュボードを読み込むことができます。
kubectl apply -f https://raw.githubusercontent.com/knative-extensions/monitoring/main/grafana/dashboards.yaml
注意
helmチャートに以下の値が設定されていることを確認する必要があります。そうでない場合、ダッシュボードの読み込みは機能しません。
既存のconfigmapがあり、ダッシュボードの読み込みが機能しない場合は、`searchNamespace: ALL`宣言の後に`labelValue: true`属性をhelmチャートに追加します。grafana: sidecar: dashboards: enabled: true searchNamespace: ALL
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からスクレイピングされたメトリクスでは機能しません。
コレクターのセットアップ¶
-
次のコマンドを入力して、コレクターを実行するための名前空間を作成します。
次の手順では、コレクターを作成するために`metrics`名前空間を使用します。kubectl create namespace metrics
-
次のコマンドを入力して、コレクターのDeployment、Service、およびConfigMapを作成します。
kubectl apply -f https://raw.githubusercontent.com/knative/docs/main/docs/serving/observability/metrics/collector.yaml
-
次のコマンドを入力して、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"}}'
コレクターのセットアップの確認¶
-
次のコマンドを入力して、コレクターでPrometheusエクスポートポートを読み込むことで、メトリクスが転送されていることを確認できます。
kubectl port-forward --namespace metrics deployment/otel-collector 8889
-
エクスポートされたメトリクスを表示するには、`http://localhost:8889/metrics`を取得します。