회사 제품의 감시도구로 Datadog을 고려하게 되었었는데, 멘땅에 헤딩하면서 얻은 지식을 글로써 남겨둡니다. 전체적인 설정방법이라기보다는 공식문서에 없거나 몇몇 주의사항 위주로만 적었습니다.
감시요건은 아래와 같았습니다.
- 서비스 사활감시
- 인프라 감시
- 로그 수집
- 통지
시스템 감시
| 감시대상 | 감시항목 | |
|---|---|---|
| EC2 | prod-1, prod-2 | 사활감시, CPU, 메모리, 용량 |
| RDS | primary, replica | 사활감시, CPU, 메모리 |
로그 수집
| 로그수집대상 | 로그종류 | |
|---|---|---|
| EC2 | prod-1, prod-2 | APP의 error로그, debug로그, nginx의 access, error로그 등 |
이 외에도 여러가지가 있지만 본 글에서는 다루지 않겠습니다.
AWS CloudFormation
IAM설정부터 Lambda까지 공식문서를 보면서 설정합니다.
logs:
- type: file
service: nginx-access-logs
path: /var/log/nginx/access.log
source: nginx
sourcecategory: http_web_access
tags: name:prd-1
- type: file
service: nginx-error-logs
path: /var/log/nginx/error.log
source: nginx
sourcecategory: http_web_access
tags: name:prd-1
sudo chmod 755 /var/log/nginx
sudo chmod 644 /var/log/nginx/*.log
여기까지하면 Datadog에 로그가 연계되기 시작합니다.
그러나 CloudWatch 및 Lambda로 연계되는 로그는 기본적으로 그루핑이 되어있지도 않고, 한줄한줄 분해되어 있습니다. 또한 적절한 로그레벨(Error, Warn, Debug 등)이 정해져있지 않습니다.
이제는 Datadog에서 로그를 우리가 원하는 형태로 출력되도록 설정해줘야 합니다.
info 입니다. Warning, Error 등으로 표시하기 위해서는 아래 순서로 진행합니다. 
참고문서
https://www.datadoghq.com/blog/multiline-logging-guide/
CloudWatch를 사용하지 않고, dd-agent를 사용하도록 설정합니다.
# 이동
cd /etc/datadog-agent/conf.d
# 로그수집을 ON으로 한다.
sudo vi datadog.yaml
# 서비스 전용 디렉토리를 만든다
sudo mkdir my-service.d
# agent권한 부여
sudo chown dd-agent:dd-agent my-servic.d/
# 기존의 설정을 복붙한다
sudo cp nginx.d/conf.yaml.example my-servic.d/conf.yaml
# 설정파일에서 필요한 부분을 수정하고, 불필요한 부분은 삭제한다
sudo vi my-servic.d/conf.yaml
# agent를 재시작한다.
sudo systemctl restart datadog-agent
권한을 dd-agent에 부여할 필요가 있습니다.
이번에 작성한 설정파일은 아래와 같습니다.
logs:
- type: file
path: /var/www/html/logs/error.log
service: error-logs
source: php
tags: name:prd-1
log_processing_rules:
- type: multi_line
name: new_log_start_with_date
pattern: \d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])
- type: exclude_at_match
name: exclude_missing_exception
patter: [제외할문구1]|[제외할문구2] # |로 복수의 문구를 지정가능
여러줄을 그루핑하는 처리와 필터링하는 처리를 작성했습니다.
참고문서
- 서버에서 로그를 수집하는 방법 Host Agent Log collection
- 두 줄 이상의 로그를 하나의 로그로 그룹화하는 방법 Multi-line aggregation
- 로그를 필터링하는 방법 Filter logs

공식 문서가 잘 되어 있어서 시간이 충분하다면 찬찬히 읽어보면서 하나씩 해보면 필요한 요건대로 Datadog을 설정하는 것은 어렵지 않을 것입니다.
다만, Datadog에서 제공하는 기능이 워낙 다양하고 강력한 기능들도 많기 때문에, 익숙해지기까지는 시간이 걸릴 것 같습니다.
본 글에서는 제가 직접 설정하면서 얻은 지식을 조금 정리해보았습니다.
도움이 되셨으면 좋겠습니다.
감사합니다.
관련글
Datadog 소개
잘보고갑니다~^^