Prometheus によるモニタリング
Prometheusは、システム監視とアラート用の人気のツールキットです。多次元の時系列データモデルと分散ストレージシステムを実装し、メトリクスデータをHTTP経由のプルモデルで収集します。
Kong GatewayはPrometheusプラグインでPrometheusをサポートしており、
Kong Gatewayパフォーマンスとプロキシされたアップストリームサービスメトリクスを/metrics
エンドポイント上で公開します。
このガイドはテストKong Gatewayおよび Prometheusサービスのセットアップに役立ちます。次に、Kong Gatewayへのサンプルリクエストを生成し、 収集された監視データを観測します。
前提条件
このガイドでは、以下のツールがローカルにインストールされていることを前提としています。
- Dockerは、Kong Gateway、サポートデータベース、Prometheusをローカルで実行するために使用されます。
-
curl は Kong Gateway にリクエストを送信するために使用されます。
curl
は大抵のシステムにプリインストールされています。
Prometheus 監視を構成する
-
Kong Gatewayのインストール。
既存のKong Gatewayインストールを使用する場合、この手順はオプションです。既存の
Kong Gatewayを使用する場合は、ネットワーク接続とインストールされているKong Gatewayサービスおよびルートを考慮してコマンドを変更する必要があります。
curl -Ls https://get.konghq.com/quickstart | bash -s -- -m
-m
フラグは、スクリプトにこのガイドでサンプルメトリクスを生成するために使用するモックサービスをインストールするよう指示します。Kong Gatewayの準備が完了すると、以下のメッセージが表示されます。
Kong Gateway Ready
-
Prometheus Kong Gatewayプラグインをインストールします。
curl -s -X POST http://localhost:8001/plugins/ \ --data "name=prometheus"
インストールされたプラグインの詳細を含むJSON応答が返されます。
-
現在のディレクトリに
prometheus.yml
という名前のPrometheus設定ファイルを作成し、次の値をコピーします。scrape_configs: - job_name: 'kong' scrape_interval: 5s static_configs: - targets: ['kong-quickstart-gateway:8001']
これらの設定の詳細については、Prometheusの設定ドキュメントを参照してください。
-
Prometheusサーバーを実行し、前の手順で作成した構成ファイルを渡します。Prometheusは Kong Gatewayからのメトリクスデータの収集を開始します。
docker run -d --name kong-quickstart-prometheus \ --network=kong-quickstart-net -p 9090:9090 \ -v $(PWD)/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus:latest
-
モックサービスへのサンプルトラフィックを生成します。これにより、StatsDプラグインから 生成されたメトリクスを確認できます。次のコマンドは1分間に60の リクエストを生成します。新しいターミナルで以下を実行します。
for _ in {1..60}; do {curl -s localhost:8000/mock/anything; sleep 1; } done
-
以下のように、Admin API上の
/metrics
エンドポイントをクエリすることで、Kong Gatewayからメトリクスデータを直接表示できます。curl -s localhost:8001/metrics
Kong Gatewayは、デフォルトでシステム全体のパフォーマンスメトリクスを報告します。 プラグインがインストールされ、トラフィックがプロキシされると、サービス、ルート、 アップストリームのディメンションにわたる追加のメトリクスが記録されます。
応答は次のスニペットのようになります。
# HELP kong_bandwidth Total bandwidth in bytes consumed per service/route in Kong # TYPE kong_bandwidth counter kong_bandwidth{service="mock",route="mock",type="egress"} 13579 kong_bandwidth{service="mock",route="mock",type="ingress"} 540 # HELP kong_datastore_reachable Datastore reachable from Kong, 0 is unreachable # TYPE kong_datastore_reachable gauge kong_datastore_reachable 1 # HELP kong_http_status HTTP status codes per service/route in Kong # TYPE kong_http_status counter kong_http_status{service="mock",route="mock",code="200"} 6 # HELP kong_latency Latency added by Kong, total request time and upstream latency for each service/route in Kong # TYPE kong_latency histogram kong_latency_bucket{service="mock",route="mock",type="kong",le="1"} 4 kong_latency_bucket{service="mock",route="mock",type="kong",le="2"} 4 ...
利用可能なメトリクスと構成の詳細については、 Kong Prometheusプラグインのドキュメントを参照してください。
-
Prometheusには、収集されるメトリクスデータのクエリ方法が複数あります。
Prometheusビューアはブラウザで http://localhost:9090/graphを開いて表示できます。
PrometheusのHTTP APIを使用して直接クエリすることもできます。
curl -s 'localhost:9090/api/v1/query?query=kong_http_status'
Prometheusは、収集した時系列データの 視覚化ツールとしてのGrafanaを設定するための、ドキュメントも提供します。
クリーンアップ
PrometheusとKong Gatewayの実験が終わったら、次のコマンドを使用し、 このガイドで作成したサービスを停止および削除することができます。
docker stop kong-quickstart-prometheus
curl -Ls https://get.konghq.com/quickstart | bash -s -- -d
その他の情報
- StatsDで監視する方法 Kong Gatewayプラグインでの監視に、StatsDを使用するためのガイドを提供します。
- Kong Gateway のトレース機能については、トレーシング API リファレンスを参照してください。