TCP Agent のログ用プロキシ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

TCP Agent のログ用プロキシ

ログの収集には、Datadog Agent v6.0 以上が必要です。古いバージョンの Agent には、log collection インターフェイスが含まれていません。

Agent v6.14/v7.14 では、Datadog は HTTPS トランスポートの使用と適用を推奨しています (ログのエージェントトランスポートを参照)。 ログに HTTPS トランスポートを使用している場合は、Agent プロキシのドキュメントを参照し、他のデータタイプと同じプロキシ設定のセットを使用してください。

TCP ログ転送

TCP 通信用のプロキシを使用する場合は、datadog.yaml 構成ファイルで次のパラメーターを使用して、TCP 経由でプロキシにログを送信するように Datadog Agent を構成します。

logs_config:
  logs_dd_url: "<プロキシエンドポイント>:<プロキシポート>"
  logs_no_ssl: true

上記のパラメーターを次の環境変数で設定することもできます。

  • DD_LOGS_CONFIG_LOGS_DD_URL
  • DD_LOGS_CONFIG_LOGS_NO_SSL

: パラメーター logs_no_ssl は、Agent が SSL 証明書のホスト名 (agent-intake.logs.datadoghq.com または agent-intake.logs.datadoghq.eu) とプロキシホスト名との不一致を無視するために必要です。プロキシと Datadog インテークエンドポイントの間では SSL 暗号化接続を使用することをお勧めします。

  • 次に、<PROXY_PORT> をリスニングし、受信されたログを以下に転送するようにプロキシを構成します。

    • app.datadoghq.com の場合: agent-intake.logs.datadoghq.com のポート 10516。SSL 暗号化をアクティブにします。
    • app.datadoghq.eu の場合: agent-intake.logs.datadoghq.eu のポート 443。SSL 暗号化をアクティブにします。
  • 以下のコマンドを使用して、SSL 暗号化用の TLS 暗号化の CA 証明書をダウンロードします。

    • sudo apt-get install ca-certificates (Debian、Ubuntu)
    • yum install ca-certificates (CentOS、Redhat) および /etc/ssl/certs/ca-certificates.crt(Debian、Ubuntu) または /etc/ssl/certs/ca-bundle.crt (CentOS、Redhat) にある証明書ファイルを使用

TCP プロキシの例

ログの TCP プロキシとしての HAProxy の使用

この例では、HAProxy がインストールされ、ポート 10514 でリッスンしているサーバーに TCP でログを送信し、ログを Datadog に転送するように Datadog Agent を構成する方法について説明します。

agent ---> haproxy ---> Datadog

暗号化は Agent と HAProxy の間で無効にされており、Datadog に送信する前にデータを暗号化するように構成されています。

Agent の構成

datadog.yaml Agent コンフィギュレーションファイルを編集し、logs_no_ssltrue に設定します。これが必要なのは、HAProxy はトラフィックを転送せず、Datadog バックエンドではないため、同じ証明書を使用することができないからです。

: HAProxy はデータを暗号化するように構成されているため、logs_no_ssl を true に設定する場合があります。それ以外の場合は、このパラメーターを true に設定しないでください。

logs_config:
  use_tcp: true
  logs_dd_url: "<プロキシサーバードメイン>:10514"
  logs_no_ssl: true

HAProxy コンフィギュレーション

Datadog への接続があるホストに HAProxy をインストールする必要があります。次の構成ファイルを使用します (まだ構成していない場合)。

# 基本的なコンフィギュレーション
global
    log 127.0.0.1 local0
    maxconn 4096
    stats socket /tmp/haproxy
# 妥当なデフォルト値
defaults
    log     global
    option  dontlognull
    retries 3
    option  redispatch
    timeout client 5s
    timeout server 5s
    timeout connect 5s

ポート 3833 で HAProxy 統計情報の表示を宣言します

このページを表示するための資格情報は不要です

一度セットアップを行うとオフにできます。

listen stats bind *:3833 mode http stats enable stats uri /

このセクションは、DNS レコードをリロードするためのものです

<DNS_サーバー_IP> と <DNS_セカンダリサーバー_IP> を DNS サーバーの IP アドレスに置き換えます。

HAProxy 1.8 以降の場合

resolvers my-dns nameserver dns1 <DNS_サーバー_IP>:53 nameserver dns2 <DNS_セカンダリサーバー_IP>:53 resolve_retries 3 timeout resolve 2s timeout retry 1s accepted_payload_size 8192 hold valid 10s hold obsolete 60s

これは、ログを送信するために Agent が接続するエンドポイントを

宣言します (例: "logs.config.logs_dd_url" の値)

frontend logs_frontend bind *:10514 mode tcp option tcplog default_backend datadog-logs

これは Datadog サーバーです。実際、上記で定義された

Forwarderのフロントエンドに着信する TCP リクエストは、

Datadog のパブリックエンドポイントにプロキシされます。

backend datadog-logs balance roundrobin mode tcp option tcplog server datadog agent-intake.logs.datadoghq.com:10516 ssl verify required ca-file /etc/ssl/certs/ca-certificates.crt check port 10516

: 次のコマンドで証明書をダウンロードしてください:

  • sudo apt-get install ca-certificates (Debian、Ubuntu)
  • yum install ca-certificates (CentOS、Redhat) 成功した場合、CentOS、Redhat の場合、ファイルは /etc/ssl/certs/ca-bundle.crt にあります。

HAProxy コンフィギュレーションが完成したら、リロードするか、HAProxy を再起動できます。app.datadoghq.com が別の IP にフェールオーバーした場合のために、cron ジョブで 10 分ごとに HAProxy を再読み込みすることで (例: service haproxy reload)、HAProxy の DNS キャッシュを強制的に更新することをお勧めします。

# 基本的なコンフィギュレーション
global
    log 127.0.0.1 local0
    maxconn 4096
    stats socket /tmp/haproxy
# 妥当なデフォルト値
defaults
    log     global
    option  dontlognull
    retries 3
    option  redispatch
    timeout client 5s
    timeout server 5s
    timeout connect 5s

これは、ポート 3833 で HAProxy 統計の表示を宣言します

このページを表示するために資格情報は必要ありません。

セットアップが完了したら、このページをオフにすることができます。

listen stats bind *:3833 mode http stats enable stats uri /

このセクションは、DNS レコードをリロードするためのものです

<DNS_サーバー_IP> と <DNS_セカンダリサーバー_IP> を DNS サーバーの IP アドレスに置き換えます。

HAProxy 1.8 以降の場合

resolvers my-dns nameserver dns1 <DNS_サーバー_IP>:53 nameserver dns2 <DNS_セカンダリサーバー_IP>:53 resolve_retries 3 timeout resolve 2s timeout retry 1s accepted_payload_size 8192 hold valid 10s hold obsolete 60s

これは、ログを送信するために Agent が接続するエンドポイントを

宣言します (例: "logs.config.logs_dd_url" の値)

frontend logs_frontend bind *:10514 mode tcp default_backend datadog-logs

これは Datadog サーバーです。実際、上記で定義された

フォワーダーのフロントエンドに着信する TCP リクエストは、

Datadog のパブリックエンドポイントにプロキシされます。

backend datadog-logs balance roundrobin mode tcp option tcplog server datadog agent-intake.logs.datadoghq.eu:443 ssl verify required ca-file /etc/ssl/certs/ca-bundle.crt check port 443

: 次のコマンドで証明書をダウンロードしてください:

  • sudo apt-get install ca-certificates (Debian、Ubuntu)
  • yum install ca-certificates (CentOS、Redhat)

成功した場合、CentOS、Redhat の場合、ファイルは /etc/ssl/certs/ca-bundle.crt にあります。

HAProxy コンフィギュレーションが完成したら、リロードするか、HAProxy を再起動できます。app.datadoghq.eu が別の IP にフェールオーバーした場合のために、cron ジョブで 10 分ごとに HAProxy を再読み込みすることで (例: service haproxy reload)、HAProxy の DNS キャッシュを強制的に更新することをお勧めします。

ログの TCP プロキシとしての NGINX の使用

Agent の構成

datadog.yaml Agent コンフィギュレーションファイルを編集し、Datadog と直接接続を確立する代わりに新しく作成されたプロキシを使用するように logs_config.logs_dd_url を設定します。

logs_config:
  use_tcp: true
  logs_dd_url: myProxyServer.myDomain:10514

: NGINX はトラフィックを Datadog に転送しており、トラフィックの解読または暗号化は行わないため、logs_no_ssl パラメーターを変更しないでください。

NGINX コンフィギュレーション

この例では、nginx.conf を使用して、Agent のトラフィックを Datadog にプロキシ転送できます。このコンフィギュレーションにおける最後のサーバーブロックで TLS ラップを行うことで、プロキシと Datadog のログインテーク API エンドポイントとの間で内部的なプレーンテキストログを暗号化します。

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
    worker_connections 1024;
}
# Datadog Agent の TCP プロキシ
stream {
    server {
        listen 10514; #listen for logs
        proxy_ssl on;
        proxy_pass agent-intake.logs.datadoghq.com:10516;
    }
}
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
    worker_connections 1024;
}
# Datadog Agent の TCP プロキシ
stream {
    server {
        listen 10514; #listen for logs
        proxy_ssl on;
        proxy_pass agent-intake.logs.datadoghq.eu:443;
    }
}

SOCKS5 プロキシサーバーを使用して Datadog アカウントにログを送信するには、datadog.yaml 構成ファイルで次の設定を使用します。

logs_config:
  socks5_proxy_address: "<MY_SOCKS5_プロキシ_URL>:<MY_SOCKS5_プロキシポート>"

上記のパラメーターを次の環境変数で設定することもできます。

  • DD_LOGS_CONFIG_SOCKS5_PROXY_ADDRESS

その他の参考資料