로그를 위해 TCP 프록시를 HAProxy로 사용하기
이 예제에서는 Datadog 에이전트를 설정해 HAProxy가 설치되어 있고 포트 10514
에서 수신 대기 중인 서버로 TCP 로그를 전달하는 방법을 설명합니다.
agent ---> haproxy ---> Datadog
Datadog로 전송하기 전에 데이터를 암호화하도록 설정한 에이전트와 HAProxy 간에 암호화가 비활성화됩니다.
에이전트 구성
datadog.yaml
에이전트 설정 파일을 편집하고 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 레코드를 다시 로드하기 위한 것입니다.
# Replacewith your DNS 서버 IP 주소로 <DNS_SERVER_IP> 및 <DNS_SECONDARY_SERVER_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
# 에이전트가 로그 전송을 위해 연결하는 엔드포인트를 정의합니다.
# (예: "logs.config.logs_dd_url" 값)
frontend logs_frontend
bind *:10514
mode tcp
option tcplog
default_backend datadog-logs
# Datadog 서버입니다. 위에 정의된 포워더 프런트엔드에 수신되는 모든 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로 페일오버될 경우를 대비하여 10분마다 HAProxy를 다시 로드하는 cron
작업(예: 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_SERVER_IP> 및 <DNS_SECONDARY_SERVER_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
# 로그 전송을 위해 에이전트가 연결하는 엔드포인트를 정의합니다.
# (예: "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로 페일오버될 경우를 대비하여 10분마다 HAProxy를 다시 로드하는 cron
작업(예: service haproxy reload
)을 통해 HAProxy의 DNS 캐시를 강제로 새로 고치는 것이 좋습니다.
로그를 위해 TCP 프록시로 NGINX 사용하기
에이전트 구성
datadog.yaml
에이전트 설정 파일을 편집하고 logs_config.logs_dd_url
을 Datadog와 직접 연결하는 대신 새로 만든 프록시를 사용하도록 설정합니다.
logs_config:
force_use_tcp: true
logs_dd_url: myProxyServer.myDomain:10514
참고: NGINX는 트래픽을 Datadog 로 전달하고 트래픽을 복호화하거나 암호화하지 않으므로 logs_no_ssl
파라미터를 변경하지 마세요.
NGINX 설정
이 예제에서 nginx.conf
는 프록시 에이전트 트래픽을 Datadog로 보내는 데 사용할 수 있습니다. 이 설정의 마지막 서버 블록은 내부 일반 텍스트 로그가 프록시와 Datadog 로그를 남기고 API 엔드포인트 사이에 암호화되도록 TLS 래핑을 수행합니다.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
# Datadog 에이전트 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 에이전트에 대한 TCP 프록시
stream {
server {
listen 10514; #listen for logs
proxy_ssl on;
proxy_pass agent-intake.logs.datadoghq.eu:443;
}
}