PrometheusとAPISIXを統合するためのベストプラクティス

January 13, 2024

Technology

今日のクラウドネイティブアーキテクチャにおいて、APIゲートウェイのメトリクスを監視することは非常に重要です。Apache APISIXは、高性能なAPIゲートウェイとして、幅広い機能を提供するだけでなく、Prometheusとのシームレスな統合をサポートし、主要なAPIトラフィックメトリクスを収集・監視することができます。本記事では、Apache APISIXでPrometheusを設定・使用する方法について探り、重要な考慮点を強調し、一般的なメトリクス設定を推奨します。

Prometheusについて

Prometheusは、時系列データを収集・保存するオープンソースの監視システムで、システムパフォーマンスのリアルタイム監視と分析を可能にします。Apache APISIXと統合することで、PrometheusはAPIトラフィックに関連する詳細なメトリクスをキャプチャするための重要なツールとなります。

Apache APISIXでPrometheusプラグインを有効にする

  1. Apache APISIXでPrometheusメトリクスを有効にするには、まずconfig.yamlファイルでPrometheusプラグインを設定します:

    plugins:
      - prometheus
    
  2. 収集したいサービスまたはAPIでPrometheusプラグインを設定します。または、グローバルに設定することもできます。以下は、cURLコマンドを使用してプラグインを設定する例です:

    curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    {
        "uri": "/hello",
        "plugins": {
            "prometheus":{}
        },
        "upstream": {
            "type": "roundrobin",
            "nodes": {
                "127.0.0.1:80": 1
            }
        }
    }'
    

    より複雑な設定については、Prometheusプラグインのドキュメントを参照してください。

Prometheusでの収集戦略の設定

Prometheusでは、prometheus.ymlファイルを設定して、APISIXを新しい監視ターゲットとして追加します:

scrape_configs:
  - job_name: 'apisix'
    static_configs:
    - targets: ['<APISIX_IP>:<APISIX_PORT>']

Apache APISIXの一般的なメトリクス

企業固有のメトリクスは異なる場合がありますが、以下はApache APISIXの主要なメトリクスで、システム監視と分析に豊富な情報を提供します:

  • HTTPリクエストとレスポンスのメトリクス:

    • apisix_http_request_total: APISIXを通過するHTTPリクエストの総数を記録し、システムトラフィックの概要を提供します。
    • apisix_http_request_duration_seconds: HTTPリクエストの処理時間を測定し、パフォーマンスのボトルネックを特定するのに役立ちます。
    • apisix_http_request_size_bytes: HTTPリクエストのサイズをキャプチャし、データ分析に役立てます。
    • apisix_http_response_size_bytes: HTTPレスポンスのサイズを監視し、レスポンスデータの量を追跡します。
  • アップストリームサービスのメトリクス:

    • apisix_upstream_latency: アップストリームサービスの応答遅延を反映します。
    • apisix_upstream_health: アップストリームサービスの健全性を示します。
  • システムパフォーマンスのメトリクス:

    • apisix_node_cpu_usage: APISIXノードのCPU使用率を報告します。
    • apisix_node_memory_usage: メモリ使用率に関する洞察を提供します。
  • トラフィックメトリクス:

    • apisix_bandwidth: アップストリームおよびダウンストリームトラフィックの帯域幅使用量を詳細に示します。
  • エラーと例外のメトリクス:

    • apisix_http_status_code: HTTPレスポンスステータスコードを分布させ、特に4xxおよび5xxエラーに焦点を当てます。

可視化とアラート

GrafanaとPrometheusの統合を活用して、これらのメトリクスを可視化するダッシュボードを作成します。さらに、Prometheusのアラートルールを設定して、特定の条件に基づいてアラートを設定できます。

Grafanaダッシュボードの例: Grafanaで時系列、棒グラフ、円グラフなどのさまざまなチャートを作成し、APISIXのパフォーマンスメトリクスを表示します。たとえば、HTTPリクエスト数と平均応答時間を表示するダッシュボードは、リアルタイムのトラフィックとパフォーマンスの洞察を提供します。

Prometheusアラートの例: Prometheusのアラートルールは、さまざまな条件に対して設定できます。たとえば、apisix_http_request_duration_secondsの平均期間が事前に定義されたしきい値を超えた場合、Prometheusは重大なアラートを送信するように設定できます。

最適化の考慮点

Prometheusメトリクスが広範であることは監視とアラートの次元を強化しますが、これらのメトリクスが計算リソースを消費することも認識することが重要です。より多くのメトリクスは、より高いリソース需要を意味し、ビジネスシステムに影響を与える可能性があります。

バージョン3.0以降、Apache APISIXはPrometheusプラグインを大幅に最適化し、メトリクス統計と取得のための専用プロセスを導入しました。この改善により、広範なPrometheusメトリクス統計がビジネストラフィックに与える影響が軽減されました。これはAPI7.aiによって貢献されました。

結論

PrometheusをApache APISIXと統合することで、企業はAPIインフラストラクチャに関する深い洞察を得ることができ、効率的で安全な運用を確保します。APIトラフィック監視は、問題を事前に防止し、パフォーマンスを最適化し、セキュリティを確保するための重要なツールとして徐々に認識されています。

Tags: