diff --git a/config.json b/config.json index 464b6f6..f2bba58 100644 --- a/config.json +++ b/config.json @@ -5,7 +5,7 @@ "host": "localhost", "port": "8080", "database": "testdb", - "type": "influxdb" + "type": "stdout" }, "interval" : 3, "duration" : 1, diff --git a/metric-collector.go b/metric-collector.go index b939a97..3021cce 100644 --- a/metric-collector.go +++ b/metric-collector.go @@ -26,6 +26,7 @@ var Collectors = map[string]collectors.MetricGetter{ var Sinks = map[string]sinks.SinkFuncs{ "influxdb": &sinks.InfluxSink{}, + "stdout": &sinks.StdoutSink{}, } // Structure of the configuration file diff --git a/sinks/stdoutSink.go b/sinks/stdoutSink.go new file mode 100644 index 0000000..ba8f56f --- /dev/null +++ b/sinks/stdoutSink.go @@ -0,0 +1,44 @@ +package sinks + +import ( + "fmt" + "time" + "strings" + "math" +) + +type StdoutSink struct { + Sink +} + +func (s *StdoutSink) Init(host string, port string, user string, password string, database string) error { + s.host = host + s.port = port + s.user = user + s.password = password + s.database = database + return nil +} + +func (s *StdoutSink) Write(measurement string, tags map[string]string, fields map[string]interface{}, t time.Time) error { + var tagsstr []string + var fieldstr []string + for k,v := range tags { + tagsstr = append(tagsstr, fmt.Sprintf("%s=%s", k, v)) + } + for k,v := range fields { + if !math.IsNaN(v.(float64)) { + fieldstr = append(fieldstr, fmt.Sprintf("%s=%v", k, v.(float64))) + } + } + if len(tagsstr) > 0 { + fmt.Printf("%s,%s %s %d\n", measurement, strings.Join(tagsstr, ","), strings.Join(fieldstr, ","), t.Unix()) + } else { + fmt.Printf("%s %s %d\n", measurement, strings.Join(fieldstr, ","), t.Unix()) + } + return nil +} + +func (s *StdoutSink) Close() { + return +}