diff --git a/.gitignore b/.gitignore index 6f0e07ca..f8da1179 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ tmp/ main Makefile src/modules/monapi/plugins/snmp/ +src/modules/monapi/plugins/oracle/ diff --git a/src/modules/monapi/plugins/mysql/mysql_test.go b/src/modules/monapi/plugins/mysql/mysql_test.go new file mode 100644 index 00000000..831bb4fb --- /dev/null +++ b/src/modules/monapi/plugins/mysql/mysql_test.go @@ -0,0 +1,20 @@ +package mysql + +import ( + "os" + "testing" + + "github.com/didi/nightingale/src/modules/monapi/plugins" +) + +func TestCollect(t *testing.T) { + dsn := os.Getenv("MYSQL_DSN") + if dsn == "" { + t.Error("unable to get DATA_SOURCE_NAME from environment") + } + + plugins.PluginTest(t, &MysqlRule{ + Servers: []string{dsn}, + GatherSlaveStatus: true, + }) +} diff --git a/src/modules/prober/manager/metric.go b/src/modules/prober/manager/metric.go index 77e699a7..05e482e8 100644 --- a/src/modules/prober/manager/metric.go +++ b/src/modules/prober/manager/metric.go @@ -5,9 +5,11 @@ import ( "hash/fnv" "sort" "strconv" + "strings" "time" "github.com/influxdata/telegraf" + "github.com/toolkits/pkg/logger" ) type metric struct { @@ -53,9 +55,10 @@ func NewMetric( if len(fields) > 0 { m.fields = make([]*telegraf.Field, 0, len(fields)) - for k, v := range fields { - v := convertField(v) + for k, value := range fields { + v := convertField(value) if v == nil { + logger.Debugf("unable to convert field to float64 %s_%s %v value: %v", name, k, tags, value) continue } m.AddField(k, v) @@ -383,6 +386,13 @@ func convertField(v interface{}) interface{} { } func atof(s string) interface{} { + switch strings.ToLower(s) { + case "yes", "true", "on": + return float64(1) + case "no", "false", "off", "none": + return float64(0) + } + if f, err := strconv.ParseFloat(s, 64); err != nil { return nil } else {