in pkg/telemetry/telemetry.go [164:222]
func newT(awsConfig *aws.Config, s *session.Session, resourceARN string, noMetadata bool) *Telemetry {
timer := &timer.Client{}
hostname := ""
instanceID := ""
var metadataClient *ec2metadata.EC2Metadata
if !noMetadata {
metadataClient = ec2metadata.New(s)
}
hostnameEnv := os.Getenv("AWS_HOSTNAME")
if hostnameEnv != "" {
hostname = hostnameEnv
log.Debugf("Fetch hostname %v from environment variables", hostnameEnv)
} else if metadataClient != nil {
hn, err := metadataClient.GetMetadata("hostname")
if err != nil {
log.Debugf("Get hostname metadata failed: %s", err)
} else {
hostname = hn
log.Debugf("Using %v hostname for telemetry records", hostname)
}
} else {
log.Debug("No hostname set for telemetry records")
}
instanceIDEnv := os.Getenv("AWS_INSTANCE_ID")
if instanceIDEnv != "" {
instanceID = instanceIDEnv
log.Debugf("Fetch instance ID %v from environment variables", instanceIDEnv)
} else if metadataClient != nil {
instID, err := metadataClient.GetMetadata("instance-id")
if err != nil {
log.Errorf("Get instance id metadata failed: %s", err)
} else {
instanceID = instID
log.Debugf("Using %v Instance Id for Telemetry records", instanceID)
}
} else {
log.Debug("No Instance Id set for telemetry records")
}
record := getEmptyTelemetryRecord()
t := &Telemetry{
timer: timer,
resourceARN: resourceARN,
instanceID: instanceID,
hostname: hostname,
currentRecord: record,
timerChan: getDataCutoffDelay(timer),
Done: make(chan bool),
Quit: make(chan bool),
recordChan: make(chan *xray.TelemetryRecord, bufferSize),
postTelemetry: false,
}
telemetryClient := conn.NewXRay(awsConfig, s)
t.client = telemetryClient
go t.pushData()
return t
}