ログの TCP プロキシとしての HAProxy の使用
この例では、HAProxy がインストールされ、ポート 10514
でリッスンしているサーバーに TCP でログを送信し、ログを Datadog に転送するように Datadog Agent を構成する方法について説明します。
agent ---> haproxy ---> Datadog
暗号化は Agent と HAProxy の間で無効にされており、Datadog に送信する前にデータを暗号化するように構成されています。
Agent の構成
datadog.yaml
Agent コンフィギュレーションファイルを編集し、logs_no_ssl
を true
に設定します。これが必要なのは、HAProxy はトラフィックを転送せず、Datadog バックエンドではないため、同じ証明書を使用することができないからです。
注: HAProxy はデータを暗号化するように構成されているため、logs_no_ssl
を true に設定する場合があります。それ以外の場合は、このパラメーターを true
に設定しないでください。
logs_config:
force_use_tcp: true
logs_dd_url: "<PROXY_SERVER_DOMAIN>: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_SERVER_IP> と <DNS_SECONDARY_SERVER_IP> を DNS サーバーの IP アドレスに置き換えます。
# HAProxy 1.8 以降の場合
resolvers my-dns
nameserver dns1 <DNS_SERVER_IP>:53
nameserver dns2 <DNS_SECONDARY_SERVER_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_SERVER_IP> と <DNS_SECONDARY_SERVER_IP> を DNS サーバーの IP アドレスに置き換えます。
# HAProxy 1.8 以降の場合
resolvers my-dns
nameserver dns1 <DNS_SERVER_IP>:53
nameserver dns2 <DNS_SECONDARY_SERVER_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:
force_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;
}
}