docker monitoring 용 data dog 설정

sungyong·2020년 5월 14일
1

인프라관리

목록 보기
3/3

서버들이 많아지고, 각각의 어플리이션들도 많아지고, 이에 따라 각 어플리케이션이 돌아가는 docker container도 많아진다.
문제가 생기면, 로그를 먼저 확인해야 하는데, 이게 만만치 않다.

그래서 중앙집중식 로그 수집 솔루션이 필요하다.
ElasticSearch와 data dog, PM2 가 후보로 올랐다.

첫 시도는 가장 많이 들어온 ElasticSearch로 했었다.
설정도 어려웠고, 사용법도 어려웠다.
결국 포기하고 data dog로 했다.
결과만 보면 만족스럽다.

docker-compose가 발생하는 log를 data dog dashboard에서 한번에 볼 수 있으니 이 이상 편할 수가 없다.

이번에 설정한 서비스에 대한 설정과정을 정리해본다.

서버가 우분투라서 먼저 우분투용 agent를 설치한다.
https://app.datadoghq.com/account/settings#agent/ubuntu

$DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=ae...0d bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

If you ever want to stop the Agent, run:

    sudo systemctl stop datadog-agent

And to run it again run:

    sudo systemctl start datadog-agent

이렇게 data dog agent를 설치하고,
이제 도커쪽 설정이다.
https://app.datadoghq.com/account/settings#integrations/docker 을 따라 한다.

$usermod -a -G docker dd-agent
sudo vi /etc/datadog-agent/conf.d/docker.d/docker_daemon.yaml

yaml 파일 내용은 아래와 같이 채운다.

init_config:

instances:
    - url: "unix://var/run/docker.sock"
      new_tag_names: true

agent 재시작해서 상태 한번 확인해보고..

$ sudo systemctl restart datadog-agent
$ sudo datadog-agent status
Getting the status from the agent.

===============
Agent (v7.19.2)
===============
...

이렇게 해서 dashboard는 잘 나왔다.


이제 실시간 로그도 나오도록 해야 한다.

역시 host agent 방식으로 설정을 해 본다.

sudo vi /etc/datadog-agent/datadog.yaml

내용은 이렇게

logs_enabled: true
listeners:
    - name: docker
config_providers:
    - name: docker
      polling: true
logs_config:
    container_collect_all: true

그런데 로그가 올라오지 않는다.
이유는 host 방식 log agent는 stdout, stderr를 가지고 하는데, 이게 다른 terminal에서 사용하고 있으면 받을 수가 없다.

그래서 docker image 방식으로 바꿨다.

docker run -d --name datadog-agent \
           -e DD_API_KEY="ae...0d" \
           -e DD_LOGS_ENABLED=true \
           -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \
           -e DD_AC_EXCLUDE="name:datadog-agent" \
           -v /var/run/docker.sock:/var/run/docker.sock:ro \
           -v /proc/:/host/proc/:ro \
           -v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \
           -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
           datadog/agent:latest

깔끔하게 잘 나온다.
이제 더이상 로그 확인하러 terminal 열고 docker-compose logs -f --tail 100 이런 수작업은 하지 않아도 되겠다.

profile
개발자입니다

0개의 댓글