APISIXとPrometheusでAPIの健全性を維持する
July 20, 2023
APIヘルスチェックは、APIの全体的な健全性を監視するための積極的なアプローチの一部です。これにより、APIの全体的な健全性について常に情報を得ることができ、問題を早期段階で特定することができます。この記事では、APISIXとPrometheusがどのように連携してヘルスチェックデータメトリクスを収集・分析し、API関連の問題を監視、診断、対処しやすくするかを探ります。
なぜこれがビジネスにとって重要なのか?
サービスレベル指標(SLI)とサービスレベル目標(SLO)を確立することが、サイト信頼性エンジニアリング(SRE)のベストプラクティスの重要な要素となっています。これらは、チームがサービス(ウェブサイトやアプリなど)がどれだけうまく機能すべきかについて明確な目標を設定するのに役立ちます。これらの目標は、内部サービス(会社自身のアプリが使用するAPIなど)や公開製品(顧客が使用するもの)に対して設定できます。これにより、システムのパフォーマンスを管理するための定量化可能なアプローチを提供します。例えば、一般的なSLIにはエラーレート、レイテンシ、スループット、可用性などがあり、SLOは「APIリクエストの99.9%が300ms以内に完了する」といったものがあります。
APISIX APIゲートウェイは、APIインフラストラクチャの最前線に位置し、SLIとSLOを測定するのに非常に役立ちます。特に今日の複雑で分散されたアーキテクチャでは、何を測定するかとどのように測定するかを考えるのは問題になることがあります。APISIXは、APIが消費するアップストリームサービスのレイテンシ、失敗したリクエスト、スループットなどの必要なメトリクスを自動的に追跡します。APISIXはバックエンドサービスのヘルスチェックを実行し、リクエストを処理できる状態であることを確認し、問題がエスカレートする前に責任あるチームに警告を発してダウンタイムを最小限に抑え、システムの信頼性を向上させます。
APIゲートウェイのヘルスチェックはどのように機能するのか?
一般的に、APIのヘルスチェックを有効にするのは簡単なプロセスです。各サービスには、指定された**ヘルスチェックAPIエンドポイント(/health
)**が必要です。そこから、そのサービスに関連する最も重要なメトリクス(メモリ使用量、データベース接続性、応答時間など)を検査します。PrometheusやGrafanaなどの可観測性プラットフォームを使用して結果を表示し、問題があればすぐにフラグを立てるアラートシステムを使用できます。
APISIXの利点の1つは、複数のサービスの可観測性ツールの設定プロセスをさらに簡単にすることです。APISIXは、管理するバックエンドサービス(アップストリームノードとも呼ばれる)に定期的にリクエストを送信します。正常なステータス(通常は200 OK HTTPステータスコード)が返されると、そのサービスは正常と見なされます。ゲートウェイは応答時間も評価し、遅い応答を潜在的な問題の兆候として扱います。指定された時間内にサービスが応答しない場合、またはエラーステータスを返した場合、そのサービスは異常とマークされます。アプリケーションエラーや速度低下を防ぐために、そのサービスへのトラフィックのルーティングを停止し、代わりに正常なノードにトラフィックをルーティングします。ヘルスチェックを有効にする方法はこちらで学べます。
APISIX Prometheusプラグインを使用したヘルスチェックデータの収集
APISIXは、prometheus
というプラグインを通じてPrometheusと統合し、APIメトリクス(アップストリームノードの健全性ステータスに関連するものも含む)を効率的にプルする方法を提供します。以下はその仕組みです:
- APISIX Prometheusプラグインが有効になると(有効にする方法はこちら)、通常は**
/apisix/prometheus/metrics
**というメトリクスURLを公開します。conf/config.yaml
ファイルで設定することで、URIのエクスポート、追加ラベルの追加、これらのスクレイプの頻度、その他のパラメータをカスタマイズすることもできます。
plugin_attr:
prometheus:
export_uri: /metrics
- Prometheusは特定の間隔でこのURLをスクレイプし、リクエスト数、リクエストレイテンシ、アップストリームレイテンシ、ステータスコードなどのさまざまなパフォーマンスパラメータに関連する時系列データを収集します。
- APISIX 3.3.0バージョンでリリースされたPrometheusのカスタムメトリクス機能を使用すると、APIのより詳細なメトリクスデータを公開できるようになりました。このメカニズムにより、APISIXは定期的にアップストリームノードが正常かどうかをチェックし、それに応じてルーティングを調整できます。これにより、障害を防ぎ、システムの信頼性を向上させることができます。これは、APIベースのインフラストラクチャにとって非常に重要です。これらのヘルスチェックの結果は、Prometheusプラグインが公開するメトリクスに組み込まれ、APIのパフォーマンスを包括的かつリアルタイムに把握できます。例えば、APISIX Gatewayの
/metrics
エンドポイントに簡単なリクエストを送信すると、収集された監視データとアップストリームノードのヘルスチェック結果ステータスを観察できます。
curl <http://127.0.0.1:9091/metrics>
...
# HELP apisix_upstream_status Upstream status from health check
# TYPE apisix_upstream_status gauge
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1
値が1は正常、0はアップストリームノードが異常であることを表します。
- Prometheusダッシュボードでアップストリームノードのヘルスチェックステータスの出力も確認できます:
- APISIX Prometheusプラグインは、これらのメトリクスを視覚化するためにGrafanaに自動的に接続するように設定されています。
同様に重要なのは、Prometheusを有効にしてTCP/UDPのメトリクスを収集することも可能です。トランスポート層での可観測性は、インフラストラクチャ内のサービス間でデータがどのように伝送されるかについての洞察を提供し、問題の診断とパフォーマンスの最適化に重要な役割を果たすことができます。
Prometheusプラグインのカスタマイズ
APISIXのコンテキストでは、Prometheusプラグインはデフォルトでいくつかのメトリクスを公開します。これらのメトリクスは設定可能で、プラグインを拡張して特定の要件に基づいて追加のメトリクスを追加できます。API7.aiチームは、APIヘルスチェックと監視に関する質問にいつでも対応し、エンジニアが新しいAPISIXユーザーを積極的にサポートして、彼らのニーズに合わせてAPISIXのデフォルト設定を変更するのを支援しています。
実世界のユースケース:APISIXとPrometheusの統合によりサーバーヘルス監視を改善したファストフード大手
世界中に数千の支店を持つグローバルなファストフードチェーン(以下「会社X」と呼ぶ)が、アクティブ-アクティブサーバー構成を実現したいと考えていました。彼らの目標は、すべてのサーバーまたはデータセンターがリアルタイムでワークロードを共有し、サービス中断を引き起こさないようにすることでした。
同社の技術チームは、サーバーまたはデータセンター間の切り替えプロセスを自動化していました。しかし、ビジネストラフィックがアクティブサーバー間で変動し、負荷が不均等に分散されることがありました。一部のサーバーは過負荷になり、他のサーバーはトラフィックが少なくなり、運用効率が低下していました。ピーク時には、サーバーがクラッシュし、サービスが中断され、同社のデジタル運用に影響を与えていました。
APISIXにより、同社はアップストリームサーバー/データセンターの健全性を継続的に監視し、サーバーの健全性ステータスに基づいてトラフィックを自動的に切り替えることができました。サーバーが異常と見なされた場合、システムは別の正常なサーバーに自動的に切り替えて、サービスを中断なく維持できます。特定のシナリオでは、トラフィックが異常に少ないか、サーバーが処理できないほど大きい場合、Prometheusのアラートメカニズムがアラートをトリガーしました。この統合により、会社Xの運用チームはサーバーの健全性ステータス、トラフィック負荷、その他の重要なメトリクスを積極的に監視できるようになりました。
まとめ
まとめると、APISIXとPrometheusを統合してヘルスチェックデータメトリクスを取得することで、メトリクスエコシステムを大幅に改善し、APIの健全性ステータスについてより深く理解することができます。これにより、運用効率の向上、顧客満足度の向上、収益の増加など、より良いビジネス成果につながる可能性があります。したがって、メトリクスエコシステムをレベルアップしたい場合は、APISIXとPrometheusの強みを活用することを検討してください。