diff --git a/flags/flags.go b/flags/flags.go index ec3eb68..4ddb293 100644 --- a/flags/flags.go +++ b/flags/flags.go @@ -18,9 +18,11 @@ var ( externalNetworksWhitelist = kingpin.Flag("track-public-network", "Allow track connections to the specified IP networks, all private networks are allowed by default (e.g., Y.Y.Y.Y/mask)").Strings() ExternalNetworksWhitelist []netaddr.IPPrefix - Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").String() - Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").String() - AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").String() + Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").Envar("PROVIDER").String() + Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").Envar("REGION").String() + AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").Envar("AVAILABILITY_ZONE").String() + InstanceType = kingpin.Flag("instance-type", "`instance_type` label for `node_cloud_info` metric").Envar("INSTANCE_TYPE").String() + InstanceLifeCycle = kingpin.Flag("instance-life-cycle", "`instance_life_cycle` label for `node_cloud_info` metric").Envar("INSTANCE_LIFE_CYCLE").String() ) func GetString(fl *string) string { diff --git a/node/collector.go b/node/collector.go index 498ae16..a6f0873 100644 --- a/node/collector.go +++ b/node/collector.go @@ -232,18 +232,29 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) { } } + im := metadata.CloudMetadata{} if c.instanceMetadata != nil { - im := c.instanceMetadata - ch <- gauge(cloudInfoDesc, 1, - string(im.Provider), im.AccountId, im.InstanceId, im.InstanceType, im.LifeCycle, - im.Region, im.AvailabilityZone, im.AvailabilityZoneId, im.LocalIPv4, im.PublicIPv4, - ) - } else if flags.Provider != nil || flags.Region != nil || flags.AvailabilityZone != nil { - ch <- gauge(cloudInfoDesc, 1, - flags.GetString(flags.Provider), "", "", "", "", - flags.GetString(flags.Region), flags.GetString(flags.AvailabilityZone), "", "", "", - ) + im = *c.instanceMetadata } + if flags.Provider != nil { + im.Provider = metadata.CloudProvider(flags.GetString(flags.Provider)) + } + if flags.Region != nil { + im.Region = flags.GetString(flags.Region) + } + if flags.AvailabilityZone != nil { + im.AvailabilityZone = flags.GetString(flags.AvailabilityZone) + } + if flags.InstanceType != nil { + im.InstanceType = flags.GetString(flags.InstanceType) + } + if flags.InstanceLifeCycle != nil { + im.LifeCycle = flags.GetString(flags.InstanceLifeCycle) + } + ch <- gauge(cloudInfoDesc, 1, + string(im.Provider), im.AccountId, im.InstanceId, im.InstanceType, im.LifeCycle, + im.Region, im.AvailabilityZone, im.AvailabilityZoneId, im.LocalIPv4, im.PublicIPv4, + ) } func (c *Collector) Describe(ch chan<- *prometheus.Desc) {