@@ -16,13 +16,12 @@ package exporter
16
16
import (
17
17
"crypto/tls"
18
18
"errors"
19
+ "log/slog"
19
20
"net"
20
21
"strconv"
21
22
"strings"
22
23
"time"
23
24
24
- "github.com/go-kit/log"
25
- "github.com/go-kit/log/level"
26
25
"github.com/grobie/gomemcache/memcache"
27
26
"github.com/prometheus/client_golang/prometheus"
28
27
)
@@ -39,7 +38,7 @@ var errKeyNotFound = errors.New("key not found")
39
38
type Exporter struct {
40
39
address string
41
40
timeout time.Duration
42
- logger log .Logger
41
+ logger * slog .Logger
43
42
tlsConfig * tls.Config
44
43
45
44
up * prometheus.Desc
@@ -133,7 +132,7 @@ type Exporter struct {
133
132
}
134
133
135
134
// New returns an initialized exporter.
136
- func New (server string , timeout time.Duration , logger log .Logger , tlsConfig * tls.Config ) * Exporter {
135
+ func New (server string , timeout time.Duration , logger * slog .Logger , tlsConfig * tls.Config ) * Exporter {
137
136
return & Exporter {
138
137
address : server ,
139
138
timeout : timeout ,
@@ -770,7 +769,7 @@ func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
770
769
c , err := memcache .New (e .address )
771
770
if err != nil {
772
771
ch <- prometheus .MustNewConstMetric (e .up , prometheus .GaugeValue , 0 )
773
- level . Error ( e .logger ). Log ( "msg" , "Failed to connect to memcached" , "err" , err )
772
+ e .logger . Error ( "Failed to connect to memcached" , "err" , err )
774
773
return
775
774
}
776
775
c .Timeout = e .timeout
@@ -779,12 +778,12 @@ func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
779
778
up := float64 (1 )
780
779
stats , err := c .Stats ()
781
780
if err != nil {
782
- level . Error ( e .logger ). Log ( "msg" , "Failed to collect stats from memcached" , "err" , err )
781
+ e .logger . Error ( "Failed to collect stats from memcached" , "err" , err )
783
782
up = 0
784
783
}
785
784
statsSettings , err := c .StatsSettings ()
786
785
if err != nil {
787
- level . Error ( e .logger ). Log ( "msg" , "Could not query stats settings" , "err" , err )
786
+ e .logger . Error ( "Could not query stats settings" , "err" , err )
788
787
up = 0
789
788
}
790
789
@@ -857,11 +856,11 @@ func (e *Exporter) parseStats(ch chan<- prometheus.Metric, stats map[net.Addr]me
857
856
if cas , casErr := sum (s , "cas_misses" , "cas_hits" , "cas_badval" ); casErr == nil {
858
857
ch <- prometheus .MustNewConstMetric (e .commands , prometheus .CounterValue , setCmd - cas , "set" , "hit" )
859
858
} else {
860
- level . Error ( e .logger ). Log ( "msg" , "Failed to parse cas" , "err" , casErr )
859
+ e .logger . Error ( "Failed to parse cas" , "err" , casErr )
861
860
parseError = casErr
862
861
}
863
862
} else {
864
- level . Error ( e .logger ). Log ( "msg" , "Failed to parse set" , "err" , err )
863
+ e .logger . Error ( "Failed to parse set" , "err" , err )
865
864
parseError = err
866
865
}
867
866
@@ -973,11 +972,11 @@ func (e *Exporter) parseStats(ch chan<- prometheus.Metric, stats map[net.Addr]me
973
972
if slabCas , slabCasErr := sum (v , "cas_hits" , "cas_badval" ); slabCasErr == nil {
974
973
ch <- prometheus .MustNewConstMetric (e .slabsCommands , prometheus .CounterValue , slabSetCmd - slabCas , slab , "set" , "hit" )
975
974
} else {
976
- level . Error ( e .logger ). Log ( "msg" , "Failed to parse cas" , "err" , slabCasErr )
975
+ e .logger . Error ( "Failed to parse cas" , "err" , slabCasErr )
977
976
parseError = slabCasErr
978
977
}
979
978
} else {
980
- level . Error ( e .logger ). Log ( "msg" , "Failed to parse set" , "err" , err )
979
+ e .logger . Error ( "Failed to parse set" , "err" , err )
981
980
parseError = err
982
981
}
983
982
@@ -1038,7 +1037,7 @@ func (e *Exporter) parseTimevalAndNewMetric(ch chan<- prometheus.Metric, desc *p
1038
1037
return e .extractValueAndNewMetric (ch , desc , valueType , parseTimeval , stats , key , labelValues ... )
1039
1038
}
1040
1039
1041
- func (e * Exporter ) extractValueAndNewMetric (ch chan <- prometheus.Metric , desc * prometheus.Desc , valueType prometheus.ValueType , f func (map [string ]string , string , log .Logger ) (float64 , error ), stats map [string ]string , key string , labelValues ... string ) error {
1040
+ func (e * Exporter ) extractValueAndNewMetric (ch chan <- prometheus.Metric , desc * prometheus.Desc , valueType prometheus.ValueType , f func (map [string ]string , string , * slog .Logger ) (float64 , error ), stats map [string ]string , key string , labelValues ... string ) error {
1042
1041
v , err := f (stats , key , e .logger )
1043
1042
if err == errKeyNotFound {
1044
1043
return nil
@@ -1051,25 +1050,25 @@ func (e *Exporter) extractValueAndNewMetric(ch chan<- prometheus.Metric, desc *p
1051
1050
return nil
1052
1051
}
1053
1052
1054
- func parse (stats map [string ]string , key string , logger log .Logger ) (float64 , error ) {
1053
+ func parse (stats map [string ]string , key string , logger * slog .Logger ) (float64 , error ) {
1055
1054
value , ok := stats [key ]
1056
1055
if ! ok {
1057
- level .Debug (logger ). Log ( "msg" , "Key not found" , "key" , key )
1056
+ logger .Debug ("Key not found" , "key" , key )
1058
1057
return 0 , errKeyNotFound
1059
1058
}
1060
1059
1061
1060
v , err := strconv .ParseFloat (value , 64 )
1062
1061
if err != nil {
1063
- level .Error (logger ). Log ( "msg" , "Failed to parse" , "key" , key , "value" , value , "err" , err )
1062
+ logger .Error ("Failed to parse" , "key" , key , "value" , value , "err" , err )
1064
1063
return 0 , err
1065
1064
}
1066
1065
return v , nil
1067
1066
}
1068
1067
1069
- func parseBool (stats map [string ]string , key string , logger log .Logger ) (float64 , error ) {
1068
+ func parseBool (stats map [string ]string , key string , logger * slog .Logger ) (float64 , error ) {
1070
1069
value , ok := stats [key ]
1071
1070
if ! ok {
1072
- level .Debug (logger ). Log ( "msg" , "Key not found" , "key" , key )
1071
+ logger .Debug ("Key not found" , "key" , key )
1073
1072
return 0 , errKeyNotFound
1074
1073
}
1075
1074
@@ -1079,33 +1078,33 @@ func parseBool(stats map[string]string, key string, logger log.Logger) (float64,
1079
1078
case "no" :
1080
1079
return 0 , nil
1081
1080
default :
1082
- level .Error (logger ). Log ( "msg" , "Failed to parse" , "key" , key , "value" , value )
1081
+ logger .Error ("Failed to parse" , "key" , key , "value" , value )
1083
1082
return 0 , errors .New ("failed parse a bool value" )
1084
1083
}
1085
1084
}
1086
1085
1087
- func parseTimeval (stats map [string ]string , key string , logger log .Logger ) (float64 , error ) {
1086
+ func parseTimeval (stats map [string ]string , key string , logger * slog .Logger ) (float64 , error ) {
1088
1087
value , ok := stats [key ]
1089
1088
if ! ok {
1090
- level .Debug (logger ). Log ( "msg" , "Key not found" , "key" , key )
1089
+ logger .Debug ("Key not found" , "key" , key )
1091
1090
return 0 , errKeyNotFound
1092
1091
}
1093
1092
values := strings .Split (value , "." )
1094
1093
1095
1094
if len (values ) != 2 {
1096
- level .Error (logger ). Log ( "msg" , "Failed to parse" , "key" , key , "value" , value )
1095
+ logger .Error ("Failed to parse" , "key" , key , "value" , value )
1097
1096
return 0 , errors .New ("failed parse a timeval value" )
1098
1097
}
1099
1098
1100
1099
seconds , err := strconv .ParseFloat (values [0 ], 64 )
1101
1100
if err != nil {
1102
- level .Error (logger ). Log ( "msg" , "Failed to parse" , "key" , key , "value" , value , "err" , err )
1101
+ logger .Error ("Failed to parse" , "key" , key , "value" , value , "err" , err )
1103
1102
return 0 , errors .New ("failed parse a timeval value" )
1104
1103
}
1105
1104
1106
1105
microseconds , err := strconv .ParseFloat (values [1 ], 64 )
1107
1106
if err != nil {
1108
- level .Error (logger ). Log ( "msg" , "Failed to parse" , "key" , key , "value" , value , "err" , err )
1107
+ logger .Error ("Failed to parse" , "key" , key , "value" , value , "err" , err )
1109
1108
return 0 , errors .New ("failed parse a timeval value" )
1110
1109
}
1111
1110
0 commit comments