diff --git a/tools/pika_exporter/Makefile b/tools/pika_exporter/Makefile index 4daf11aabc..ff5fbc1e88 100644 --- a/tools/pika_exporter/Makefile +++ b/tools/pika_exporter/Makefile @@ -4,7 +4,8 @@ # export PATH := $(PATH):$(GOPATH)/bin -UNAME := $(shell uname) +OS := $(shell uname) +ARCH := $(shell uname -m) # for mac BRANCH := $(shell git branch | sed 's/* \(.*\)/\1/p') # for Linux @@ -63,10 +64,18 @@ export TEST_COVER all: build build: deps -ifeq ($(UNAME), Linux) - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/$(PROJNAME) -else ifeq ($(UNAME), Darwin) - CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o bin/$(PROJNAME) +ifeq ($(OS), Linux) + ifeq ($(ARCH), x86_64) + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/$(PROJNAME) + else ifeq ($(ARCH), arm6411) + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/$(PROJNAME) + endif +else ifeq ($(OS), Darwin) + ifeq ($(ARCH), x86_64) + CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o bin/$(PROJNAME) + else ifeq ($(ARCH), arm64) + CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o bin/$(PROJNAME) + endif endif deps: generateVer diff --git a/tools/pika_exporter/exporter/metrics/command_exec_count.go b/tools/pika_exporter/exporter/metrics/command_exec_count.go index b9c027101d..304dfb895c 100644 --- a/tools/pika_exporter/exporter/metrics/command_exec_count.go +++ b/tools/pika_exporter/exporter/metrics/command_exec_count.go @@ -16,7 +16,7 @@ var collectCommandExecCountMetrics = map[string]MetricConfig{ Parser: ®exParser{ name: "command_exec_count_command", source: "commands_count", - reg: regexp.MustCompile(`(\r|\n)*(?P[^:]+):(?P[\d]*)`), + reg: regexp.MustCompile(`(\r|\n)*(?P[^:]+):(?P[\d]*)`), Parser: &normalParser{}, }, }, diff --git a/tools/pika_exporter/exporter/metrics/parser.go b/tools/pika_exporter/exporter/metrics/parser.go index 0b2e2773a0..7d4f5fbf22 100644 --- a/tools/pika_exporter/exporter/metrics/parser.go +++ b/tools/pika_exporter/exporter/metrics/parser.go @@ -210,7 +210,7 @@ func (p *timeParser) Parse(m MetricMeta, c Collector, opt ParseOption) { } else { t, err := convertTimeToUnix(v) if err != nil { - log.Warnf("time is '0' and cannot be parsed", err) + log.Warnf("time is '0' and cannot be parsed", err) } metric.Value = float64(t) } @@ -264,7 +264,8 @@ func mustNewVersionConstraint(version string) *semver.Constraints { func convertTimeToUnix(ts string) (int64, error) { t, err := time.Parse(time.RFC3339, ts) if err != nil { - return 0, err + log.Warnf("format time failed, ts: %d, err: %v", ts, err) + return 0, nil } return t.Unix(), nil } diff --git a/tools/pika_exporter/exporter/parser_test.go b/tools/pika_exporter/exporter/parser_test.go index 3e3d80771e..ded4f598b4 100644 --- a/tools/pika_exporter/exporter/parser_test.go +++ b/tools/pika_exporter/exporter/parser_test.go @@ -2,11 +2,13 @@ package exporter import ( "fmt" + "testing" + "github.com/Masterminds/semver" + "github.com/stretchr/testify/assert" + "github.com/OpenAtomFoundation/pika/tools/pika_exporter/exporter/metrics" "github.com/OpenAtomFoundation/pika/tools/pika_exporter/exporter/test" - "github.com/stretchr/testify/assert" - "testing" ) func mustNewVersionConstraint(version string) *semver.Constraints { diff --git a/tools/pika_exporter/exporter/pika.go b/tools/pika_exporter/exporter/pika.go index fe9ae11821..9604bb85f8 100644 --- a/tools/pika_exporter/exporter/pika.go +++ b/tools/pika_exporter/exporter/pika.go @@ -10,9 +10,10 @@ import ( "github.com/OpenAtomFoundation/pika/tools/pika_exporter/discovery" - "github.com/OpenAtomFoundation/pika/tools/pika_exporter/exporter/metrics" "github.com/prometheus/client_golang/prometheus" log "github.com/sirupsen/logrus" + + "github.com/OpenAtomFoundation/pika/tools/pika_exporter/exporter/metrics" ) type dbKeyPair struct { diff --git a/tools/pika_exporter/exporter/pika_test.go b/tools/pika_exporter/exporter/pika_test.go index 3d41d2a8b9..81e8cc630b 100644 --- a/tools/pika_exporter/exporter/pika_test.go +++ b/tools/pika_exporter/exporter/pika_test.go @@ -1,10 +1,12 @@ package exporter import ( - "github.com/OpenAtomFoundation/pika/tools/pika_exporter/discovery" + "testing" + "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/assert" - "testing" + + "github.com/OpenAtomFoundation/pika/tools/pika_exporter/discovery" ) type fakeDiscovery struct { diff --git a/tools/pika_exporter/exporter/test/v3.3.5_master.go b/tools/pika_exporter/exporter/test/v3.3.5_master.go index 21a1c4bd1d..0d0e81029a 100644 --- a/tools/pika_exporter/exporter/test/v3.3.5_master.go +++ b/tools/pika_exporter/exporter/test/v3.3.5_master.go @@ -88,4 +88,4 @@ db0 Strings_keys=83922112, expires=0, invalid_keys=0 db0 Hashes_keys=4887344, expires=0, invalid_keys=0 db0 Lists_keys=1, expires=0, invalid_keys=0 db0 Zsets_keys=1, expires=0, invalid_keys=0 -db0 Sets_keys=0, expires=0, invalid_keys=1` \ No newline at end of file +db0 Sets_keys=0, expires=0, invalid_keys=1` diff --git a/tools/pika_exporter/exporter/test/v3.3.5_slave.go b/tools/pika_exporter/exporter/test/v3.3.5_slave.go index 987ccb4c00..1af496865e 100644 --- a/tools/pika_exporter/exporter/test/v3.3.5_slave.go +++ b/tools/pika_exporter/exporter/test/v3.3.5_slave.go @@ -89,4 +89,4 @@ db0 Strings_keys=1000, expires=0, invalid_keys=0 db0 Hashes_keys=0, expires=0, invalid_keys=0 db0 Lists_keys=0, expires=0, invalid_keys=0 db0 Zsets_keys=0, expires=100, invalid_keys=0 -db0 Sets_keys=0, expires=0, invalid_keys=0` \ No newline at end of file +db0 Sets_keys=0, expires=0, invalid_keys=0` diff --git a/tools/pika_exporter/go.mod b/tools/pika_exporter/go.mod index 0059c93fdb..5517eadfa3 100644 --- a/tools/pika_exporter/go.mod +++ b/tools/pika_exporter/go.mod @@ -22,7 +22,7 @@ require ( github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect - golang.org/x/sys v0.6.0 // indirect + golang.org/x/sys v0.10.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tools/pika_exporter/go.sum b/tools/pika_exporter/go.sum index 2893043e01..467dc4f22f 100644 --- a/tools/pika_exporter/go.sum +++ b/tools/pika_exporter/go.sum @@ -46,8 +46,8 @@ github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/tools/pika_exporter/main.go b/tools/pika_exporter/main.go index 14f06a9a17..6b94774ce4 100644 --- a/tools/pika_exporter/main.go +++ b/tools/pika_exporter/main.go @@ -5,6 +5,7 @@ import ( "net/http" "os" "strconv" + "time" "github.com/OpenAtomFoundation/pika/tools/pika_exporter/discovery" "github.com/OpenAtomFoundation/pika/tools/pika_exporter/exporter" @@ -28,7 +29,7 @@ var ( listenAddress = flag.String("web.listen-address", getEnv("PIKA_EXPORTER_WEB_LISTEN_ADDRESS", ":9121"), "Address to listen on for web interface and telemetry.") metricPath = flag.String("web.telemetry-path", getEnv("PIKA_EXPORTER_WEB_TELEMETRY_PATH", "/metrics"), "Path under which to expose metrics.") logLevel = flag.String("log.level", getEnv("PIKA_EXPORTER_LOG_LEVEL", "info"), "Log level, valid options: panic fatal error warn warning info debug.") - logFormat = flag.String("log.format", getEnv("PIKA_EXPORTER_LOG_FORMAT", "json"), "Log format, valid options: txt and json.") + logFormat = flag.String("log.format", getEnv("PIKA_EXPORTER_LOG_FORMAT", "text"), "Log format, valid options: txt and json.") showVersion = flag.Bool("version", false, "Show version information and exit.") ) @@ -63,9 +64,17 @@ func main() { log.SetLevel(level) switch *logFormat { case "json": - log.SetFormatter(&log.JSONFormatter{}) + log.SetFormatter(&log.JSONFormatter{ + TimestampFormat: "2006-01-02 15:04:05.999999", + PrettyPrint: true, + }) default: - log.SetFormatter(&log.TextFormatter{}) + log.SetFormatter(&log.TextFormatter{ + ForceColors: true, + ForceQuote: true, + TimestampFormat: time.RFC3339, + FullTimestamp: true, + }) } var dis discovery.Discovery