Devops/Datadog

[Datadog] TroubleShooting - 컨테이너에서 호스트 이름 탐지

ellapk 2024. 7. 11. 22:17

7.4.0 버전부터 에이전트는 호스트 이름을 필요로 한다.

호스트 이름이 없으면 에이전트가 시작 된 이후 오류와 함께 종료된다.

 

Error while getting hostname, exiting: unable to reliably determine the host name. You can define one in the agent config file or in your hosts file

 

-> 이 경우 로그에 나타나는 ERROR 메시지

 

 

 

1. Kubernetes 호스트 이름 오류

에이전트가 다음 중 하나 이상에 액세스할 수 없음을 나타낸다.

 

- Kubelet API

- 클라우드 공급자 메타데이터 엔드포인트

- 컨테이너 런타임 API

 

보통 Kubelet API에 연결할 수 없는 가장 일반적인 오류는 Kubelet TLS 인증서와 관련된 문제이다.

Kubernetes 배포에서 Kubelet 인증서와 관련된 문제는 보통 다음 두 가지 중 하나 이다.

 

- 클러스터 CA 서명이 없음

- 연결 가능한 주소에 해당하는 SAN이 없음

 

이 경우 기본값으로 TLS 확인이 실행되기 때문에 에이전트가 HTTPS를 통해 Kubelet API 에 연결할 수 없다.

 

 

 

2. 컨테이너 런타임 API 액세스

에이전트가 Docker 소켓에 연결할 수 있도록 한다.

 

- EC2의 Amazon ECS

- VM의  Docker

 

 

3. 클라우드 공급자 메타데이터 엔드포인트 액세스

에이전트를 AWS, Google Cloud, Azure 에서 실행하는 경우 메타데이터 엔드포인트를 사용하여 호스트 이름을 검색할 수 있다. 그 중에서 CI 환경, 사이드카 설정, 컨테이너 런타임 액세스가 없는 환경에서 호스트 이름 오류가 나면

호스트 이름에 명시적으로 DD_HOSTNAME을 설정할 수 있다.

 

 

 

 

 

 

 

 

 

 

참고)

https://docs.datadoghq.com/ko/agent/troubleshooting/hostname_containers/?tab=ec2%EC%9D%98amazonecs#kubernetes-%ED%98%B8%EC%8A%A4%ED%8A%B8-%EC%9D%B4%EB%A6%84-%EC%98%A4%EB%A5%98