Apache APISIX

Supported OS Windows Linux

概要

Apache APISIX は動的でリアルタイムな高性能 API ゲートウェイであり、ロードバランシング、ダイナミックアップストリーム、カナリアリリース、サーキットブレーキング、認証、観測性などの豊富なトラフィック管理機能を提供します。例えば、Apache APISIX を使用して、従来の南北方向のトラフィックだけでなく、サービス間の東西方向のトラフィックも処理することができます。また、Kubernetes のイングレスコントローラーとしても使用できます。

APISIX-Datadog プラグインは、Datadog Agent にバンドルされている DogStatsD サーバーに、UDP 接続でカスタムメトリクスをプッシュします。DogStatsD は StatsD プロトコルの実装です。Apache APISIX Agent のカスタムメトリクスを収集し、1 つのデータポイントに集約して、設定された Datadog サーバーに送信します。

セットアップ

インストール

以下の構成方法に従ってください。

コンフィギュレーション

  1. すでに Datadog を使用していて、Datadog Agent がインストールされている場合は、ポート 8125/UDP がファイアウォールで許可されていることを確認してください。例えば、Apache APISIX Agent は、Datadog Agent のポート 8125 に到達することができます。すでにこれを構成している場合は、ステップ 3 までスキップできます。

Datadog Agent のインストール方法の詳細については、Agent のドキュメントを参照してください。

  1. Datadog を初めて利用する場合

    1. まず、Datadog のウェブサイトにアクセスし、Get Started Free ボタンをクリックしてアカウントを作成します。
    2. API キーを生成します。 API キーの生成
  2. APISIX-Datadog プラグインは標準的な UDP ソケットを介して statsd プロトコルに従って DogStatsD サーバーに非同期にメトリクスを送信するので、datadog/agent の DogStatsD コンポーネントのみを必要とします。これが APISIX が完全な Agent を使うのではなく、スタンドアロンの datadog/dogstatsd イメージを使うことを推奨している理由です。datadog/agent イメージの ~2.8GB に比べて非常に軽量です (サイズは ~11MB のみ)。

コンテナとして実行するには

# 最新イメージをプルします
$ docker pull datadog/dogstatsd:latest
# 切り離されたコンテナを実行します
$ docker run -d --name dogstatsd-agent -e DD_API_KEY=<Your API Key from step 2> -p 8125:8125/udp  datadog/dogstatsd

Kubernetes を使用している場合、dogstatsd を Apache APISIX Agent と一緒に Daemonset または Multi-Container Pod としてデプロイすることができます。

  1. 以下は、特定のルートに対して Datadog プラグインを有効化する方法の例です。これは、dogstatsd Agent が既に稼働していることを前提としています。
# 特定のルートでプラグインを有効にします
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "plugins": {
    "datadog": {}
  },
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "127.0.0.1:1980": 1
    }
  },
  "uri": "/hello"
}'

これで、エンドポイント URI である /hello へのリクエストがあれば、上記のメトリクスが生成され、Datadog Agent のローカル DogStatsD サーバーにプッシュされるようになります。

  1. プラグインを無効にするには、プラグインコンフィギュレーション内の対応する JSON コンフィギュレーションを削除して datadog を無効にしてください。APISIX のプラグインはホットロードされるため、APISIX を再起動する必要はありません。
# ルートに対してプラグインを無効にします
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "uri": "/hello",
  "plugins": {},
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "127.0.0.1:1980": 1
    }
  }
}'
  1. その他のカスタム構成オプションについては、Datadog Plugin のドキュメントを参照してください。

検証

Agent の status サブコマンドを実行し、Checks セクションで apisix を探します。

収集データ

メトリクス

apisix.request.counter
(count)
Number of requests received
Shown as connection
apisix.request.latency
(gauge)
Total latency of the request response lifecycle, time taken to process the particular request.
Shown as millisecond
apisix.upstream.latency
(gauge)
The latency between time taken from proxying the request to the upstream server till a response is received.
Shown as millisecond
apisix.apisix.latency
(gauge)
The latency added by Apache APISIX, time taken by APISIX agent solely to process the request.
Shown as millisecond
apisix.ingress.size
(gauge)
The body size of incoming request before forwarding it to upstream server.
Shown as byte
apisix.egress.size
(gauge)
The body size of received response coming from the APISIX forwarded upstream server.
Shown as byte

イベント

Apache APISIX チェックにはイベントは含まれません。

トラブルシューティング

ご不明な点は、Datadog のサポートチームまでお問合せください。

その他の参考資料