Skip to content

Commit 2163f5f

Browse files
committed
cloud metadata: added the ability to set the instance type and lifecycle using CLI arguments or environment variables
1 parent b64ad23 commit 2163f5f

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

flags/flags.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ var (
1818
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()
1919
ExternalNetworksWhitelist []netaddr.IPPrefix
2020

21-
Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").String()
22-
Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").String()
23-
AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").String()
21+
Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").Envar("PROVIDER").String()
22+
Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").Envar("REGION").String()
23+
AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").Envar("AVAILABILITY_ZONE").String()
24+
InstanceType = kingpin.Flag("instance-type", "`instance_type` label for `node_cloud_info` metric").Envar("INSTANCE_TYPE").String()
25+
InstanceLifeCycle = kingpin.Flag("instance-life-cycle", "`instance_life_cycle` label for `node_cloud_info` metric").Envar("INSTANCE_LIFE_CYCLE").String()
2426
)
2527

2628
func GetString(fl *string) string {

node/collector.go

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -232,18 +232,29 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) {
232232
}
233233
}
234234

235+
im := metadata.CloudMetadata{}
235236
if c.instanceMetadata != nil {
236-
im := c.instanceMetadata
237-
ch <- gauge(cloudInfoDesc, 1,
238-
string(im.Provider), im.AccountId, im.InstanceId, im.InstanceType, im.LifeCycle,
239-
im.Region, im.AvailabilityZone, im.AvailabilityZoneId, im.LocalIPv4, im.PublicIPv4,
240-
)
241-
} else if flags.Provider != nil || flags.Region != nil || flags.AvailabilityZone != nil {
242-
ch <- gauge(cloudInfoDesc, 1,
243-
flags.GetString(flags.Provider), "", "", "", "",
244-
flags.GetString(flags.Region), flags.GetString(flags.AvailabilityZone), "", "", "",
245-
)
237+
im = *c.instanceMetadata
246238
}
239+
if flags.Provider != nil {
240+
im.Provider = metadata.CloudProvider(flags.GetString(flags.Provider))
241+
}
242+
if flags.Region != nil {
243+
im.Region = flags.GetString(flags.Region)
244+
}
245+
if flags.AvailabilityZone != nil {
246+
im.AvailabilityZone = flags.GetString(flags.AvailabilityZone)
247+
}
248+
if flags.InstanceType != nil {
249+
im.InstanceType = flags.GetString(flags.InstanceType)
250+
}
251+
if flags.InstanceLifeCycle != nil {
252+
im.LifeCycle = flags.GetString(flags.InstanceLifeCycle)
253+
}
254+
ch <- gauge(cloudInfoDesc, 1,
255+
string(im.Provider), im.AccountId, im.InstanceId, im.InstanceType, im.LifeCycle,
256+
im.Region, im.AvailabilityZone, im.AvailabilityZoneId, im.LocalIPv4, im.PublicIPv4,
257+
)
247258
}
248259

249260
func (c *Collector) Describe(ch chan<- *prometheus.Desc) {

0 commit comments

Comments
 (0)