AWS Integration을 진행 한 후 갑자기 Host 가 많아지는 현상을 확인 하시는 경우가 있습니다.
이때 확인 및 의심 해 볼 수 있는 부분을 안내 드리겠습니다.
AWS Integration을 진행하면 AWS내 CloudWatch에서 수집 가능한 Metric을 모두 수집하게 됩니다.
이때 EC2 Metric들도 수집하게 되면서 이 EC2가 Infra 수량으로 Count되게 됩니다.
만약 EC2중 Agent가 이미 설치 되어있는 Host가 있다면, 해당 EC2는 Agent Host와 매핑되어 1개의 Host로 표현 되며, 이미 과금 되고 있기 때문에 추가로 과금 되지 않습니다.
( 참고 : Datadog Billing - Host )
하지만 일부 Agent가 설치 되어있는데도 불구하고, AWS Integration 후 기존의 Agent Host 매핑 되지 않고, 따로 Host로 잡히는 경우가 있습니다. 이런 경우 잘못하면 각각의 Host로 인식되어 실제로는 1개의 Host인데 2개로 인식되어 이중으로 과금 될 수 있습니다.
이런 경우 아래와 같은 순서로 확인해 보시기 바랍니다.
- Plan & Usage를 확인 합니다. AWS Integration된 EC2 내에 Datadog Agent가 모두 설치가 되었다면
Usage Summary > Infrastructure 탭에서 Infra Hosts 가 모두 Agent Hosts로 잡혀야 합니다.
Agent가 설치 되지 않은 AWS Host가 있다면 아래 이미지와 같이 AWS Hosts 가 표시됩니다.
물론 Agent 설치를 하지않고 AWS Integration만으로 모니터링 할 수도 있기 때문에 EC2내에 Agent가 모두 설치 되어있어야 한다는 전제가 있을 때 Agent 설치 되지 않은 EC2 Host 수량을 쉽게 확인 할 수 있습니다. - 위와 같은 경우 Infrastructure list에서 실제로 이중으로 Host가 인식 된 것인지, 단순히 수집 된 EC2에 Agent가 수집 되지 않은 것인지 확인합니다.
- Infrastructure list에서 field:apps:agent 로 조회해 agent가 설치된 host들을 조회 합니다.
- Integration된 Account내 포함된 EC2가 정상적으로 매핑된다면, Host 상세 정보에 Aliases 에 i- 로 시작하는 AWS EC2 instance id가 표시되어야 합니다. 또한, TAGS에 AWS 의 tag 정보들이 표시되어야 합니다.
- EC2가 매핑되지 못하고, 따로 AWS Host로 인식되었는지 확인을 위해서는 Infrastructure List에서 Host name으로 조회 해보시기 바랍니다.
Tag key없이 value로만 입력해 조회시 해당 값을 가진 다른 tag가 있는 경우 같이 조회가 됩니다.
아래의 경우는 조회시 입력한 값이 각각 host Tag와 name Tag에 value로 확인된 Host 들 입니다.
- Infrastructure list에서 field:apps:agent 로 조회해 agent가 설치된 host들을 조회 합니다.
이렇게 Agent 설치로 표시된 Host와 AWS EC2 Integration으로 인해 표시된 Host가 동일한 Host임에도 각각 표시되는 이유는 매핑에 실패했기 때문입니다.
Agent 설치 후 Agent는 Host에 대한 Hostname정보를 아래와 같은 순서로 수집합니다.
- agent-hostname: A hostname explicitly set in the Agent configuration file if it does not start with ip- or domu.
- hostname (
hostname -f
on Linux): If the DNS hostname is not an EC2 default, for example:ip-192-0-0-1
. - instance-id: If the Agent can reach the EC2 metadata endpoint from the host.
- hostname: Fall back on the DNS hostname even if it is an EC2 default.
위 순서에서 가장 먼저 확인되는 hostname을 대표 hostname으로 설정 후 그 이후 확인되는 hostname은 별칭(Aliases)로 표시합니다.
문제는 hostname 혹은 Aliases 중에 Agent와 EC2 간에 매핑이 가능한 hostname이 있어야 한다는 점입니다.
즉 Agent에서 위에서 이야기하는 3번 즉 EC2 metadata를 통한 instance id를 Agent에서도 수집되어야 이후 AWS EC2 Integration시에 Agent에서 수집한 데이터와 EC2 Integration을 통해 수집한 데이터가 매핑이 가능합니다.
우선 Agent Status를 확인해 Hostnames 항목 중 Instance-id 가 표시되는 지 확인하시기 바랍니다 .
EC2 Host인데 instance id를 가져오지 못하는 경우, 해당 EC2 Instance가 Metadata를 IMDSv1로 지원 하는지 IMDSv2 로 지원하는지 확인 하시기 바랍니다.
아래 명령어는 IMDSv1 으로 metedata 중 instance-id를 가져오는 url 입니다.
해당 명령어로 조회시 instance id가 조회되지 않는 다면 IMDSv2로 metadata를 지원하고 있는 Instance일 가능성이 높습니다.
curl http://169.254.169.254/latest/meta-data/instance-id |
이런 경우, datadog.yaml 파일에서 아래와 같이 ec2_prefer_imdsv2 항목을 ture로 설정 후 agent를 재시작하시고 Agent status를 다시 확인해 instance id를 정상적으로 가져오는지 확인하시기 바랍니다.
해당 설정 후 정상적으로 Agent와 AWS Host가 매핑되면 따로 표시되던 AWS Host는 약 2시간 이후에 Infrastructure list에서 사라지게 됩니다.
만약 해당 조치로도 매핑 정상화가 되지 않는 경우는 Support portal 티켓으로 문의 주시기 바랍니다.
참고 Link
ec2_prefer_imdsv2 설정 후에도 메타데이터에 접근 할 수 없는 경우 아래 방법들을 참고하세요