AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

NGINX | 2023年5月31日

ユーザー数を問わず本番サービスを担当している方なら、自分たちより先にお客さまが問題を発見することのつらさをご存じでしょう。Akitaはこの問題を解決するため、新たに「NGINX Plus認定モジュール」を開発しました。

このブログでは、ログだけでなくシステム全体を俯瞰する必要がある理由、システム全体の問題を迅速に発見して修正する方法、新しいAkitaモジュールによってNGINXユーザーがこの機能を簡単に利用できる仕組みなど、モジュールの主なポイントをご紹介します。

ログからAPIエンドポイントへ視野を広げる

現在、数多くの開発者が、実質的に顧客を監視システム代わりにせざるを得ないという望ましくない状況に陥っています。

ソフトウェアチームがエラーをログに記録していないわけではありません。たとえば、NGINXをリバースプロキシとして使用している場合、NGINXのログには、タイムスタンプ、リクエストの長さと処理時間、レスポンスステータスコードなど、さまざまな情報が記録されます。時間をかけて根気よく探せば、必要な情報はそこにあります。

しかし、多種多様なリクエストとレスポンスを処理するシステムでは、膨大なログに埋もれてしまいがちです。ログを可視化するダッシュボードなどのツールを事前に用意していなければ、数千、場合によっては数百万行ものログを調べ、潜在的な問題とその発生箇所を特定することになります。一方、適切なダッシュボードや監視方法の構築には、数週間、数か月、場合によっては数四半期を要することがあります。また、多くの場合、コードに合わせて更新する必要もあります。

Akitaでは、ログから一歩引き、APIエンドポイント単位で全体を捉えることが重要だと考えています。これにより、ソフトウェアチームは、問題を実際に特定するために必要な粒度を維持しながら、課題やホットスポットの全体像をすばやく把握できます。Akitaは、コードの変更やダッシュボードの構築を必要とせず、レイテンシ指標とエラーを自動的に監視する、導入するだけで使えるメトリクスソリューションによって、監視における情報過多を解消します。このソリューションはAPIトラフィックを受動的に監視して自動分析し、エンドポイントごとの監視とアラートを提供します。さらに、ユーザーは登録後15分以内に利用を開始できます。

AkitaのNGINX Plus認定モジュールのご紹介

このたび、NGINXユーザー向けにAkitaモジュールの提供を開始しました。NGINXをWebアプリケーションサーバー、リバースプロキシ、またはAPIゲートウェイとして使用している場合、APIトラフィックをAkitaに送信して分析できるようになりました。無料のAkitaアカウントに登録し、Akitaモジュールとエージェントをインストールして、NGINX構成ファイルに簡単な変更を加えてください。

数分以内にAkitaコンソールへ移動し、APIエンドポイント、動作が遅い箇所、エラーが発生している箇所を確認できるようになります。

Akitaコンソールの概要

AkitaのNGINX Plus Certified Moduleは、既存のNGINX環境を拡張し、NGINXユーザーがAkitaのさまざまなメリットを活用できるようにします。AkitaはHTTPリクエストからトラフィックを取得し、レイテンシーとエラーを測定するとともに、あらかじめ用意されたダッシュボードで本番環境の状況を可視化します。

AkitaのNGINX Plus Certified Moduleの仕組み

モジュールの機能と、それが処理のどこで動作するかを詳しく見ていきます。まず、リクエストはNGINXによって複数の「フェーズ」で処理されます。ネットワークからのリクエストの読み取りに始まり、書き換えとアクセス制御のチェックを経て、レスポンスとログエントリの生成で終了します。AkitaのNGINX Plus Certified Moduleは、この処理の後半(ヘッダーの書き換えなどの機能が実行された後のpre-content フェーズ)に組み込まれるため、アプリケーションが受信する形式に最も近い状態でリクエストを確認できます。Akitaは、NGINX構成内のserverとlocationに基づいて、受信した各リクエストが監視対象として指定されているかどうかを確認します。

注記:他のNGINX機能やモジュールと同様に、Webサービスの一部に対してのみAkitaを有効にすることも、NGINXが提供するすべてのサービスに対してデフォルトで有効にすることもできます。

次のフェーズでは、モジュールがリクエストボディを記録し、リクエストをすべて受信すると直ちにAkitaエージェントへ送信します。同じデータがアプリケーションとAkitaエージェントの両方に並行して送信されるため、この動作はngx_http_mirrorモジュールと似ています。

NGINXまたはアップストリームサーバーでレスポンスの準備が整うと、Akitaモジュールは、そのレスポンスがクライアントにストリーミングで返される間に最大1 MBまで記録します。このバッファリングによってレスポンスが遅延することはありません。バッファリングは、レスポンス本文の各チャンクを利用可能になった時点で処理できるNGINXの「コンテンツフィルター」で行われます。

サーバーの応答時間が判明し、応答が正常であることが確認されると、その応答がAkitaエージェントにミラーリングされます。エージェントはリクエストと応答を対応付けたうえで、両方の本文の解析を試みます。このデータは、分析のためにAkitaへ送信される前に、エージェントによってローカルで難読化されます。そのため、Akitaが把握するのはAPIトラフィックの構造のみであり、ユーザーが送受信する具体的な値は把握しません。

AkitaのNGINX Plus認定モジュールは、このアプリケーショントラフィックのトレースからエンドポイントを自動的に推定し、閲覧およびダウンロード可能なAPIモデルを構築して、レイテンシーとエラーの情報を自動的に表示します。エンドポイントごとのエラー率、特定のエンドポイントでの高レイテンシー、さらには予想外に多い呼び出しについてアラートを設定できます。

AkitaのNGINX Plus認定モジュールでは、各エンドポイントについて以下を確認できます。

  • API呼び出し数
  • HTTPレスポンスコードの分布
  • サーバーが応答するまでにかかった時間

AkitaのNGINX Plus認定モジュールの設定について詳しくは、こちらをご覧ください。

AkitaのNGINX Plus認定モジュールを使い始める

Akitaは現在オープンベータ版として提供されています。ベータ版にお申し込みいただくと、30分以内に結果を確認できます。


共有
タグ: API, F5 NGINX, News

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります