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을 설정할 수 있다.
참고)