in util/common/metrics.go [313:355]
func SendEMFMetrics(metricPerInterval int, metricLogGroup, metricNamespace string, sendingInterval, duration time.Duration) error {
// github.com/prozz/aws-embedded-metrics-golang/emf
conn, err := net.DialTimeout("tcp", "127.0.0.1:25888", time.Millisecond*10000)
if err != nil {
return err
}
defer conn.Close()
ticker := time.NewTicker(60 * time.Second)
defer ticker.Stop()
endTimeout := time.After(duration)
for t := 1; t <= metricPerInterval; t++ {
emf.New(emf.WithWriter(conn), emf.WithLogGroup(metricLogGroup)).
Namespace(metricNamespace).
DimensionSet(
emf.NewDimension("InstanceId", metricLogGroup),
).
MetricAs(fmt.Sprint("emf_time_", t), t, emf.Milliseconds).
Log()
}
for {
select {
case <-ticker.C:
for t := 1; t <= metricPerInterval; t++ {
emf.New(emf.WithWriter(conn), emf.WithLogGroup(metricLogGroup)).
Namespace(metricNamespace).
DimensionSet(
emf.NewDimension("InstanceId", metricLogGroup),
).
MetricAs(fmt.Sprint("emf_time_", t), t, emf.Milliseconds).
Log()
}
case <-endTimeout:
return nil
}
}
}