ログプラグインを変換してObservabilityを強化する
Yong Qian
February 24, 2023
現在、ログはAPIゲートウェイにおいて非常に重要であり、特に障害検出とトラブルシューティングにおいて運用コストを削減するために不可欠です。APIゲートウェイのログは、データ収集を支援する上でも大きな価値を持っています。オブザーバビリティとシステムの安定性を向上させるために、オープンソースのAPIゲートウェイであるApache APISIXは、
elasticsearch-logger
、kafka-logger
、loggly
、error-log-logger
などの多くのログプラグインをサポートしています。
ゲートウェイログの価値
デジタル時代において、ビジネスの急速な成長に伴い、ソフトウェアアーキテクチャはますます複雑化し、障害の検出と診断が非常に困難になっています。これにより、ソフトウェアのオブザーバビリティの重要性が再認識されています。
ログはオブザーバビリティの3つの柱の1つです。ログは、システム管理者や開発者にシステムの動作状況を把握するための洞察を提供し、問題の迅速な特定と解決を容易にします。
さらに、ログはデータマイニング、監査、セキュリティ監視など、追加の目的にも使用でき、システムのコンプライアンスとセキュリティを維持するのに役立ちます。
APIゲートウェイはアプリケーションと外部世界を接続し、組織がAPI呼び出しをより良く管理および監視することを可能にします。これには、API呼び出しログを記録する重要な機能も含まれます。
以下のセクションでは、APIゲートウェイログの価値を2つの観点から分析します。
運用と保守の価値
従来のシステム運用保守(O&M)であろうと、現代のSRE(Site Reliability Engineering)であろうと、システムの安定性を確保する上で、障害の発見と修正は常に最優先事項です。これは、大規模なオンラインビジネスにおいて、1秒のダウンタイムでも大きなビジネス損失を引き起こし、ユーザーエクスペリエンスに悪影響を及ぼす可能性があるためです。
APIゲートウェイはシステム全体の最前線に位置し、「センチネル」の役割を果たすことができます。そのアクセスログからは、運用システムにとって重要なデータを豊富に抽出できます:
- 上流および下流のステータスコードを分析し、ウェブサイトの可用性や特定の上流サービスの可用性を監視します。
- アクセスログを使用してウェブサイトのトラフィックを監視し、DDoSなどの攻撃を迅速に検出します。
- トラフィックの傾向を分析し、ビジネスシステムのスケールアップまたはスケールダウンのための参考資料を提供します。
- リクエスト処理時間を追跡し、インターフェースレベルのパフォーマンスレポートを生成し、ビジネスシステムのパフォーマンス最適化のためのデータ参照とします。
上記は、APIゲートウェイログのベストプラクティスの一部であり、業界で広く採用され、多くの企業の運用保守システムに実装されています。
ビジネス価値
広く認識されている運用価値と比較して、ゲートウェイログのビジネス価値はしばしば見過ごされがちです。
例えば、ユーザー行動分析において、プログラム内でイベントトラッキングを通じてデータを収集する最も一般的な方法はエンコーディングです。しかし、よく設計されたAPIの場合、ゲートウェイログは自然にそのような要件を満たすことができます。その結果、以下のようなことが可能です:
- クライアントIPを分析して、トラフィックの地理的分布を把握します。
- HTTP Refererを分析して、各ページへのユーザーアクセスのソースを理解します。
- 主要なAPIの集計統計のために、直接重要なビジネス指標を取得できます。例えば、ユーザー登録や注文のAPIの成功呼び出しをカウントすることで、指定期間内の新規ユーザー数や注文数を取得できます。
もちろん、ゲートウェイログはイベントトラッキングほど柔軟ではなく、カスタムデータ収集の要件を満たすことはできませんが、基本的なデータマイニングのニーズを満たすのに十分なビジネス価値を持っています。
Apache APISIXは、動的でリアルタイムかつ高性能なクラウドネイティブAPIゲートウェイであり、ロードバランシング、動的上流、カナリアリリース、サーキットブレーカー、認証、オブザーバビリティなどの豊富なトラフィック管理機能を提供します。
その多くの機能はプラグインを通じて提供されており、数十のログプラグインも含まれています。以下では、APISIXの典型的なログプラグインを例に、ゲートウェイログをログ分析システムと統合してさらなる価値を引き出す方法を説明します。
APISIXの典型的なログプラグインの紹介
elasticsearch-logger
Elastic Searchは、大量のデータを処理するための分散型オープンソースの検索および分析エンジンであり、ログ分析において非常に有名です。その補完的なデータダッシュボードであるKibanaは、組織の視覚的なクエリ分析のニーズを満たすために、さまざまな統計チャートを簡単にカスタマイズできます。
実際のアプリケーションでは、従来のソフトウェアログのほとんどはローカルファイルに保存されるため、Elastic Searchエコシステム内のFilebeat
というプロジェクトを使用して、ローカルマシン上のログファイルを監視し、増分ログをElastic Searchサーバーに送信します。
しかし、APISIXが提供するelasticsearch-loggerプラグインは、APISIXのアクセスログを直接Elastic Searchサーバーに送信することができ、以下の利点があります:
- Filebeatコンポーネントのデプロイが不要であり、処理チェーンが短くなり、計算リソースが削減されます。
- ログはディスクに保存されないため、ディスクスペースの使用を心配する必要がありません。ただし、アクセスログは非常に大量になる可能性があり、ファイルローテーションが適切に処理されないと、マシンのディスクをすぐに満杯にして障害を引き起こす可能性があります。さらに、ディスクとのやり取りはゲートウェイのパフォーマンスを低下させる可能性もあります。
kafka-logger
ゲートウェイアクセスログには、ログデータの量がビジネスリクエストの量に比例するという顕著な特徴があります:リクエストが多いほど、ログも多くなります。
オンラインビジネスでは、通常、リクエスト量に周期的なパターンが見られます。例えば、フードデリバリープラットフォームは食事時間にトラフィックが増加し、ビデオサイトは仕事終了後にピークを迎えます。
これはログストレージシステムにとって大きな課題であり、トラフィックピーク時にシステムが適切に機能することを保証することは、すべてのElasticSearch管理者にとって重要なスキルです。
メッセージキューはトラフィックをバランスさせるための最適なツールです。ゲートウェイとストレージシステムの間にメッセージキューを導入してログバッファを提供することで、トラフィックピーク時のストレージシステムへの負荷を大幅に軽減できます。
この目的のために、APISIXはkafka-loggerを提供しており、アクセスログをKafkaサーバーに送信し、ログストレージへの直接的な影響を回避します。
loggly
近年、SaaS(Software as a Service)の概念が徐々に普及し、その低い参入障壁と従量課金制の価格モデルにより、多くの中小企業に支持されています。ログ分析の分野でも、多くのSaaS製品が登場しており、logglyはその豊富なログソースと分析能力によりリーダーとなっています。
この背景の中で、活発なAPISIXコミュニティは、すぐに使えるLogglyプラグインを開発しました。これにより、認証情報を設定するだけで、APISIXのアクセスログを直接Logglyサービスに送信できるため、非常に便利です。
Logglyプラグインと同様に、APISIXはgoogle-cloud-logging、sls-logger、tencent-cloud-clsプラグインも提供しており、主要なクラウドベンダーのログサービスと簡単に統合できます。
error-log-logger
上記で紹介したプラグインはすべてアクセスログを収集するためのものです。しかし、APISIXにはもう1つのタイプのログ、つまりエラーログ(error.log
)があり、ゲートウェイの障害診断に非常に重要です。
そのため、APISIXはerror-log-loggerを提供しており、エラーログをリモートサーバーに送信して保存および分析します。実際には、APISIXのログレベル設定を使用して、より詳細なデバッグや情報レベルのログを出力することができ、これにはゲートウェイの動作状況に関するより詳細なログが含まれます。これらのログを使用することで、ほとんどの問題を特定できます。
まとめ
ゲートウェイログには非常に大きな価値があり、Apache APISIXプロジェクトの豊富なログプラグインから、コミュニティの企業ユーザーがゲートウェイログの価値を認識していることがわかります。さらに、これらのプラグインは、新規ユーザーがログシステムを構築するコストをさらに削減します。
さらに、APISIXにはmetrics
とtracing
という2つのタイプのオブザーバビリティプラグインもあります。これらをログプラグインと組み合わせることで、ゲートウェイのオブザーバビリティがさらに向上し、システムの安定性を構築するのに役立ちます。