Kong Vitals とは

4 min 557 views

Kong Vitals とは

Kong Vitals は、Kong Gateway の正常稼働状況やパフォーマンスを監視する機能です。Kong Vitals は Enterprise 版で提供されている機能になります。Kong Vitals を利用すると、API ゲートウェイの動作状況を視覚的に把握することができます。Kong Gateway Enterprise はバージョン 2.3 から誰でも無償で利用できるようになりましたが、Vitals や一部のプラグインは有償ライセンスを購入しないと利用できません。

Kong Vitals の利用要件

Kong Vitals を利用するには、以下のいずれかのデータベースが必要です。

  • InfluxDB
  • PostgreSQL 9.5 以上

Kong Vitals の利用・表示について

Kong Vitals は、デフォルトでスーパーアドミンがアクセス可能になっています。また、該当ワークスペースと Vitals データにアクセス権限があるユーザーであれば、Vitals のデータを参照することができます。

Kong Vitals の利用方法について

Kong Vitals は、Kong Manager 画面の Vitals タブから参照することができます。スクリーンショットの画面は、Kong をインストール後、ブラウザで「http://localhost:8002/vitals」にアクセスした画面です。

Kong Vitals

Kong Vitals の有効化・無効化について

kong.conf を使用した設定

/etc/kong/kong.conf の vitals パラメーターで設定します。on で有効、off で無効になります。デフォルトでは on になっています。

vitals = on
vitals = off

パラメーターを変更したら kong プロセスに反映させる為、kong を再起動します。

kong restart

kong コマンドの詳細は、kong —help のマニュアルを参照してください。

環境変数を利用した設定

以下のように KONG_VITALS という環境変数で設定します。on で有効、off で無効になります。Kubernets のマニフェストで Kong を設定している人は環境変数での設定になると思います。

$ export KONG_VITALS=on
$ export KONG_VITALS=off

変更内容を kong のプロセスに反映するため、kong を再起動します。

kong restart

Kong Vitals のデータベースと運用上の注意点

Kong Vitals は、Kong Gateway に PostgreSQL データベースを使っている場合、デフォルトで Vitals のメトリクス情報を同じ PostgreSQL データベースに書き込んでいます。Vitals メトリクス情報は、以下のようなテーブルに書き込まれます。

kong=> \dt vitals*
                        リレーション一覧
 スキーマ |               名前               |    型    | 所有者
----------+----------------------------------+----------+--------
 public   | vitals_code_classes_by_cluster   | テーブル | kong
 public   | vitals_code_classes_by_workspace | テーブル | kong
 public   | vitals_codes_by_consumer_route   | テーブル | kong
 public   | vitals_codes_by_route            | テーブル | kong
 public   | vitals_locks                     | テーブル | kong
 public   | vitals_node_meta                 | テーブル | kong
 public   | vitals_stats_days                | テーブル | kong
 public   | vitals_stats_hours               | テーブル | kong
 public   | vitals_stats_minutes             | テーブル | kong
 public   | vitals_stats_seconds             | テーブル | kong
 public   | vitals_stats_seconds_1668391200  | テーブル | kong
 public   | vitals_stats_seconds_1668394800  | テーブル | kong
 public   | vitals_stats_seconds_1668398400  | テーブル | kong
(13 行)

kong=>

しかしながら、Kong Vitals をデフォルトの PostgreSQL で運用すると、困ることが出てきます。それは、Kong Gateway も同じ PostgreSQL データベースを使用しているため、Kong Gateway に高トラフィック負荷が掛かると Vitals メトリクスを PostgreSQL に書き込む負荷も上がり、データベースの負荷が非常に上がってしまうことです。Vitals のテーブルに書き込まれるデータ詳細については、公式ドキュメントを参照ください。

たとえば、エンタープライズ環境で Kong を Kubernetes 上の Pod で運用している場合、この負荷によって PostgreSQL の Pod が再起動を繰り返してしまう状況が生じ、システム運用に支障が出てしまいます。

そのため、エンタープライズ環境では Vitals のメトリクスを異なるデータベースに軽快に書き込む必要性があります。その対策として、Kong 社が提供している解決策の1つに InfluxDB を使う方法があります。詳細はドキュメントを参照ください。

Vitals に InfluxDB を利用した場合のメリット

Vitals メトリクスデータの書き込み先を InfluxDB にすると、以下のようなメリットが得られます。

  • Vitals メトリクスデータを CSV レポートに出力可能
  • Kong Gateway で使用している PostgreSQL データベースの負荷軽減
  • Kong Manager の Vitals Timeframe で長期間のデータ表示可能(Kong Manager 上、最長で “Last 2 Years”)
    • Vitals API では InfluxDB に保持している任意の期間分の Vitals メトリクスデータ表示が可能
      ※デフォルトの PostgreSQL データベース使用時は仕様上 25h までの Vitals メトリクスを保持・表示

Vitals に InfluxDB を使う手順について

記事が長くなるため、InfluxDB の導入手順は別記事(現在作成中)で紹介します。

関連記事