diff --git a/discovery/ec2/ec2.go b/discovery/ec2/ec2.go index a4f09cf068..ca3f767eb3 100644 --- a/discovery/ec2/ec2.go +++ b/discovery/ec2/ec2.go @@ -43,6 +43,7 @@ const ( ec2LabelInstanceState = ec2Label + "instance_state" ec2LabelInstanceType = ec2Label + "instance_type" ec2LabelOwnerID = ec2Label + "owner_id" + ec2LabelPlatform = ec2Label + "platform" ec2LabelPublicDNS = ec2Label + "public_dns_name" ec2LabelPublicIP = ec2Label + "public_ip" ec2LabelPrivateIP = ec2Label + "private_ip" @@ -252,6 +253,10 @@ func (d *Discovery) refresh() (tg *targetgroup.Group, err error) { addr := net.JoinHostPort(*inst.PrivateIpAddress, fmt.Sprintf("%d", d.port)) labels[model.AddressLabel] = model.LabelValue(addr) + if inst.Platform != nil { + labels[ec2LabelPlatform] = model.LabelValue(*inst.Platform) + } + if inst.PublicIpAddress != nil { labels[ec2LabelPublicIP] = model.LabelValue(*inst.PublicIpAddress) labels[ec2LabelPublicDNS] = model.LabelValue(*inst.PublicDnsName) diff --git a/docs/configuration/configuration.md b/docs/configuration/configuration.md index 0dcee5158d..f227888107 100644 --- a/docs/configuration/configuration.md +++ b/docs/configuration/configuration.md @@ -405,6 +405,7 @@ The following meta labels are available on targets during [relabeling](#relabel_ * `__meta_ec2_instance_state`: the state of the EC2 instance * `__meta_ec2_instance_type`: the type of the EC2 instance * `__meta_ec2_owner_id`: the ID of the AWS account that owns the EC2 instance +* `__meta_ec2_platform`: the Operating System platform, set to 'windows' on Windows servers, absent otherwise * `__meta_ec2_primary_subnet_id`: the subnet ID of the primary network interface, if available * `__meta_ec2_private_ip`: the private IP address of the instance, if present * `__meta_ec2_public_dns_name`: the public DNS name of the instance, if available