概要
Apache APISIX は動的でリアルタイムな高性能 API ゲートウェイであり、ロードバランシング、ダイナミックアップストリーム、カナリアリリース、サーキットブレーキング、認証、観測性などの豊富なトラフィック管理機能を提供します。例えば、Apache APISIX を使用して、従来の南北方向のトラフィックだけでなく、サービス間の東西方向のトラフィックも処理することができます。また、Kubernetes のイングレスコントローラーとしても使用できます。
APISIX-Datadog プラグインは、Datadog Agent にバンドルされている DogStatsD サーバーに、UDP 接続でカスタムメトリクスをプッシュします。DogStatsD は StatsD プロトコルの実装です。Apache APISIX Agent のカスタムメトリクスを収集し、1 つのデータポイントに集約して、設定された Datadog サーバーに送信します。
セットアップ
インストール
以下の構成方法に従ってください。
構成
- すでに Datadog を使用していて、Datadog Agent がインストールされている場合は、ポート 8125/UDP がファイアウォールで許可されていることを確認してください。例えば、Apache APISIX Agent は、Datadog Agent のポート 8125 に到達することができます。すでにこれを構成している場合は、ステップ 3 までスキップできます。
Datadog Agent のインストール方法の詳細については、Agent のドキュメントを参照してください。
Datadog を初めて利用する場合
- まず、Datadog のウェブサイトにアクセスし、Get Started Free ボタンをクリックしてアカウントを作成します。
- API キーを生成します。
。
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
としてデプロイすることができます。
- 以下は、特定のルートに対して 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 サーバーにプッシュされるようになります。
- プラグインを無効にするには、プラグインコンフィギュレーション内の対応する 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
}
}
}'
- その他のカスタム構成オプションについては、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 のサポートチームまでお問合せください。
その他の参考資料