Datadog Agent でのホスト名はルールに従って決定されます。
host名を固定化している場合、datadog.conf 内で明示的に hostname:
を指定している場合等には、 指定値が優先されます。
監視対象 AWS EC2インスタンスの instance-id を取得したいと思ったのですが、上記設定が入っていたため tag では保持していませんでした。
ドキュメントの Host Aliases にある通り、 Host としては hostname:
の設定値となり、 Alias として instance-id を持っている状態です。
Alias
Datadog Agent の info 情報で取得できる Hostnames を保持しているようです。
Infrastructure List 画面で確認できます。
Hostnames ========= ec2-hostname: ip-XXX-XX-XX-XXX.ap-northeast-1.compute.internal local-ipv4: XXX-XX-XX-XXX hostname: XX01 socket-hostname: XX01 local-hostname: ip-XXX-XX-XX-XXX.ap-northeast-1.compute.internal instance-id: i-XXXXX77e public-ipv4: XX.XX.XXX.XX socket-fqdn: localhost.localdomain
JSON API permalink
Infrastructure 画面以外で Alias を取得する方法として JSON API permalink が用意されています。 画面下部からリンクURLを取得できます。
内容は Infrastructure 画面で参照できる値をJSON形式で取得できます。
尚、現時点で公式ドキュメントの記載は見つけられませんでしたので、仕様変更が入るかもしれません。 Knowledge Base に少しだけ記載があります。
インスタンスIDの取得
他のAPI同様に利用できるようなので curl コマンドでの取得を試します。 API Key、Application Key が必要になります。
EC2インスタンスの値としては以下のようになっていました。 aws_id
で目的のインスタンスIDを取得できます。
- host_name : Datadog上のHostname
- aws_name : AWS上のEC2タグ
- aws_id : AWS EC2 Instance ID
$ apikey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX $ appkey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX $ hostname=XX01 $ curl -s -S "https://app.datadoghq.com/reports/v2/overview?api_key=${apikey}&application_key=${appkey}" \ | jq '.rows[] | select(.host_name == "'${hostname}'") | { host_name:.host_name, aws_name:.aws_name, aws_id:.aws_id }' { "host_name": "XX01", "aws_name": "XXXXXXXXX-XX01", "aws_id": "i-XXXXX77e" }
因みに取得できる基本項目は以下です。オプション付与で他にも色々取得できるようです。 infrastructure で表示している項目は全て保持していると思われます。
- オプションまとめ
- 基本的な取得項目
{ "rows": [ { "display_name": "i-XXXXXXXXXXXXXXXXX", "name": "i-XXXXXXXXXXXXXXXXX", "tags_by_source": { "Amazon Web Services": [ "availability-zone:ap-northeast-1a", "iam_profile:xxxxx", "image:ami-XXXXX2f5", "instance-type:t2.micro", "kernel:none", "name:XXXXX", "region:ap-northeast-1", "security-group:sg-XXXXXXXX" ] }, "up": true, "aws_name": "XXXXX", "host_name": "i-XXXXXXXXXXXXXXXXX", "has_metrics": false, "aws_id": "i-XXXXXXXXXXXXXXXXX", "id": XXXXXXXXX, "last_seen": 1503457664 }, ・・・