From c95405a79884001a81ccc37fb399bbd0ab1f3801 Mon Sep 17 00:00:00 2001 From: TJ Hoplock Date: Sun, 13 Oct 2024 23:33:40 -0400 Subject: [PATCH 1/4] ci: update go to version 1.23 Signed-off-by: TJ Hoplock --- .circleci/config.yml | 2 +- .promu.yml | 2 +- go.mod | 2 +- go.sum | 7 +++++++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fc606200..07a6101c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ executors: # This must match .promu.yml. golang: docker: - - image: cimg/go:1.22.6 + - image: cimg/go:1.23 jobs: test: executor: golang diff --git a/.promu.yml b/.promu.yml index f53913b1..db8843ab 100644 --- a/.promu.yml +++ b/.promu.yml @@ -1,6 +1,6 @@ go: # This must match .circle/config.yml. - version: 1.22 + version: 1.23 repository: path: github.com/prometheus-community/elasticsearch_exporter build: diff --git a/go.mod b/go.mod index 860347d9..ef36ed06 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/prometheus-community/elasticsearch_exporter -go 1.20 +go 1.23.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 diff --git a/go.sum b/go.sum index 19e83a68..6ed80eca 100644 --- a/go.sum +++ b/go.sum @@ -50,12 +50,15 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -71,9 +74,11 @@ github.com/prometheus/exporter-toolkit v0.11.0/go.mod h1:BVnENhnNecpwoTLiABx7mrP github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -103,8 +108,10 @@ google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGm google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 604f7e7959cb4fbd54dd9e86ee57e737b5bdb180 Mon Sep 17 00:00:00 2001 From: TJ Hoplock Date: Sun, 13 Oct 2024 23:34:13 -0400 Subject: [PATCH 2/4] build(deps): bump prometheus/{client_golang,common,exporter-toolkit} Signed-off-by: TJ Hoplock --- go.mod | 34 ++++++++++++------------ go.sum | 82 +++++++++++++++++++++++++++------------------------------- 2 files changed, 56 insertions(+), 60 deletions(-) diff --git a/go.mod b/go.mod index ef36ed06..b522462a 100644 --- a/go.mod +++ b/go.mod @@ -11,9 +11,9 @@ require ( github.com/blang/semver/v4 v4.0.0 github.com/go-kit/log v0.2.1 github.com/imdario/mergo v0.3.13 - github.com/prometheus/client_golang v1.19.1 - github.com/prometheus/common v0.48.0 - github.com/prometheus/exporter-toolkit v0.11.0 + github.com/prometheus/client_golang v1.20.4 + github.com/prometheus/common v0.60.0 + github.com/prometheus/exporter-toolkit v0.13.0 ) require ( @@ -28,23 +28,25 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 // indirect github.com/aws/smithy-go v1.20.3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/golang/protobuf v1.5.3 // indirect github.com/jpillora/backoff v1.0.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/vsock v1.2.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/xhit/go-str2duration/v2 v2.1.0 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect - golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/text v0.18.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 6ed80eca..a7bf14c6 100644 --- a/go.sum +++ b/go.sum @@ -32,8 +32,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -44,68 +44,62 @@ github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBj github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= +github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= +github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= -github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g= -github.com/prometheus/exporter-toolkit v0.11.0/go.mod h1:BVnENhnNecpwoTLiABx7mrPB/OLRIgN74qlQbV+FK1Q= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= +github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/exporter-toolkit v0.13.0 h1:lmA0Q+8IaXgmFRKw09RldZmZdnvu9wwcDLIXGmTPw1c= +github.com/prometheus/exporter-toolkit v0.13.0/go.mod h1:2uop99EZl80KdXhv/MxVI2181fMcwlsumFOqBecGkG0= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -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= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= From 6ef7ed24ba09f6b633389655a829bc8ce03d5050 Mon Sep 17 00:00:00 2001 From: TJ Hoplock Date: Mon, 14 Oct 2024 00:58:57 -0400 Subject: [PATCH 3/4] chore!: adopt log/slog, drop go-kit/log The bulk of this change set was automated by the following script which is being used to aid in converting the various exporters/projects to use slog: https://gist.github.com/tjhop/49f96fb7ebbe55b12deee0b0312d8434 In addition to the parts that were straightforward conversions, this also: - refactors much of the logging config to adopt slog - removed custom `logger.go` setup for go-kit - adopt promslog/flag and use that to handle parsing log level/format flags - for consistent behavior, keep log output flag to allow toggle stdout/stderr for output - adopt promslog for logger setup - enables sloglint in golangci-lint config - drops go-kit/log exclusions from lint config - tidies mods to drop go-kit/log and go-logfmt/logfmt deps Signed-off-by: TJ Hoplock --- .golangci.yml | 1 + collector/cluster_health.go | 15 +++---- collector/cluster_health_test.go | 4 +- collector/cluster_info.go | 6 +-- collector/cluster_info_test.go | 4 +- collector/cluster_settings.go | 19 ++++---- collector/cluster_settings_test.go | 4 +- collector/collector.go | 19 ++++---- collector/data_stream.go | 15 +++---- collector/data_stream_test.go | 4 +- collector/ilm_indices.go | 15 +++---- collector/ilm_indices_test.go | 4 +- collector/ilm_status.go | 15 +++---- collector/ilm_status_test.go | 4 +- collector/indices.go | 23 +++++----- collector/indices_mappings.go | 15 +++---- collector/indices_mappings_test.go | 4 +- collector/indices_settings.go | 15 +++---- collector/indices_settings_test.go | 4 +- collector/indices_test.go | 4 +- collector/nodes.go | 15 +++---- collector/nodes_test.go | 4 +- collector/shards.go | 24 +++++----- collector/shards_test.go | 4 +- collector/slm.go | 6 +-- collector/slm_test.go | 4 +- collector/snapshots.go | 6 +-- collector/snapshots_test.go | 4 +- collector/tasks.go | 13 +++--- collector/tasks_test.go | 4 +- collector/util.go | 10 ++--- go.mod | 2 - go.sum | 4 -- logger.go | 68 ----------------------------- main.go | 56 +++++++++++++----------- pkg/clusterinfo/clusterinfo.go | 51 +++++++++------------- pkg/clusterinfo/clusterinfo_test.go | 10 ++--- pkg/roundtripper/roundtripper.go | 17 ++++---- scripts/errcheck_excludes.txt | 2 - 39 files changed, 202 insertions(+), 296 deletions(-) delete mode 100644 logger.go diff --git a/.golangci.yml b/.golangci.yml index a0e0753c..03e6085d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -2,6 +2,7 @@ linters: enable: - revive + - sloglint issues: exclude-rules: diff --git a/collector/cluster_health.go b/collector/cluster_health.go index 29f3a41c..303838e8 100644 --- a/collector/cluster_health.go +++ b/collector/cluster_health.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -46,7 +45,7 @@ type clusterHealthStatusMetric struct { // ClusterHealth type defines the collector struct type ClusterHealth struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -55,7 +54,7 @@ type ClusterHealth struct { } // NewClusterHealth returns a new Collector exposing ClusterHealth stats. -func NewClusterHealth(logger log.Logger, client *http.Client, url *url.URL) *ClusterHealth { +func NewClusterHealth(logger *slog.Logger, client *http.Client, url *url.URL) *ClusterHealth { subsystem := "cluster_health" return &ClusterHealth{ @@ -225,8 +224,8 @@ func (c *ClusterHealth) fetchAndDecodeClusterHealth() (clusterHealthResponse, er defer func() { err = res.Body.Close() if err != nil { - level.Warn(c.logger).Log( - "msg", "failed to close http.Client", + c.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -252,8 +251,8 @@ func (c *ClusterHealth) fetchAndDecodeClusterHealth() (clusterHealthResponse, er func (c *ClusterHealth) Collect(ch chan<- prometheus.Metric) { clusterHealthResp, err := c.fetchAndDecodeClusterHealth() if err != nil { - level.Warn(c.logger).Log( - "msg", "failed to fetch and decode cluster health", + c.logger.Warn( + "failed to fetch and decode cluster health", "err", err, ) return diff --git a/collector/cluster_health_test.go b/collector/cluster_health_test.go index 8d520f54..fd3e887e 100644 --- a/collector/cluster_health_test.go +++ b/collector/cluster_health_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestClusterHealth(t *testing.T) { @@ -189,7 +189,7 @@ func TestClusterHealth(t *testing.T) { t.Fatal(err) } - c := NewClusterHealth(log.NewNopLogger(), http.DefaultClient, u) + c := NewClusterHealth(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/cluster_info.go b/collector/cluster_info.go index 1714986a..5dafb9b9 100644 --- a/collector/cluster_info.go +++ b/collector/cluster_info.go @@ -17,11 +17,11 @@ import ( "context" "encoding/json" "io" + "log/slog" "net/http" "net/url" "github.com/blang/semver/v4" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus" ) @@ -30,12 +30,12 @@ func init() { } type ClusterInfoCollector struct { - logger log.Logger + logger *slog.Logger u *url.URL hc *http.Client } -func NewClusterInfo(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) { +func NewClusterInfo(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) { return &ClusterInfoCollector{ logger: logger, u: u, diff --git a/collector/cluster_info_test.go b/collector/cluster_info_test.go index f289c3c0..d7d12bc2 100644 --- a/collector/cluster_info_test.go +++ b/collector/cluster_info_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestClusterInfo(t *testing.T) { @@ -80,7 +80,7 @@ func TestClusterInfo(t *testing.T) { t.Fatal(err) } - c, err := NewClusterInfo(log.NewNopLogger(), u, http.DefaultClient) + c, err := NewClusterInfo(promslog.NewNopLogger(), u, http.DefaultClient) if err != nil { t.Fatal(err) } diff --git a/collector/cluster_settings.go b/collector/cluster_settings.go index 8af3e702..35ee97f5 100644 --- a/collector/cluster_settings.go +++ b/collector/cluster_settings.go @@ -18,13 +18,12 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "strconv" "strings" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/imdario/mergo" "github.com/prometheus/client_golang/prometheus" ) @@ -34,12 +33,12 @@ func init() { } type ClusterSettingsCollector struct { - logger log.Logger + logger *slog.Logger u *url.URL hc *http.Client } -func NewClusterSettings(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) { +func NewClusterSettings(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) { return &ClusterSettingsCollector{ logger: logger, u: u, @@ -226,7 +225,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh if strings.HasSuffix(merged.Cluster.Routing.Allocation.Disk.Watermark.High, "b") { flooodStageBytes, err := getValueInBytes(merged.Cluster.Routing.Allocation.Disk.Watermark.FloodStage) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse flood_stage bytes", "err", err) + c.logger.Error("failed to parse flood_stage bytes", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["floodStageBytes"], @@ -237,7 +236,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh highBytes, err := getValueInBytes(merged.Cluster.Routing.Allocation.Disk.Watermark.High) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse high bytes", "err", err) + c.logger.Error("failed to parse high bytes", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["highBytes"], @@ -248,7 +247,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh lowBytes, err := getValueInBytes(merged.Cluster.Routing.Allocation.Disk.Watermark.Low) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse low bytes", "err", err) + c.logger.Error("failed to parse low bytes", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["lowBytes"], @@ -263,7 +262,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh // Watermark ratio metrics floodRatio, err := getValueAsRatio(merged.Cluster.Routing.Allocation.Disk.Watermark.FloodStage) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse flood_stage ratio", "err", err) + c.logger.Error("failed to parse flood_stage ratio", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["floodStageRatio"], @@ -274,7 +273,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh highRatio, err := getValueAsRatio(merged.Cluster.Routing.Allocation.Disk.Watermark.High) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse high ratio", "err", err) + c.logger.Error("failed to parse high ratio", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["highRatio"], @@ -285,7 +284,7 @@ func (c *ClusterSettingsCollector) Update(ctx context.Context, ch chan<- prometh lowRatio, err := getValueAsRatio(merged.Cluster.Routing.Allocation.Disk.Watermark.Low) if err != nil { - level.Error(c.logger).Log("msg", "failed to parse low ratio", "err", err) + c.logger.Error("failed to parse low ratio", "err", err) } else { ch <- prometheus.MustNewConstMetric( clusterSettingsDesc["lowRatio"], diff --git a/collector/cluster_settings_test.go b/collector/cluster_settings_test.go index b4b98a09..52c41a1e 100644 --- a/collector/cluster_settings_test.go +++ b/collector/cluster_settings_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestClusterSettingsStats(t *testing.T) { @@ -136,7 +136,7 @@ elasticsearch_clustersettings_allocation_watermark_low_bytes 5.24288e+07 t.Fatal(err) } - c, err := NewClusterSettings(log.NewNopLogger(), u, http.DefaultClient) + c, err := NewClusterSettings(promslog.NewNopLogger(), u, http.DefaultClient) if err != nil { t.Fatal(err) } diff --git a/collector/collector.go b/collector/collector.go index d8b56abb..38de96ce 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -18,14 +18,13 @@ import ( "context" "errors" "fmt" + "log/slog" "net/http" "net/url" "sync" "time" "github.com/alecthomas/kingpin/v2" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -37,7 +36,7 @@ const ( defaultDisabled = false ) -type factoryFunc func(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) +type factoryFunc func(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) var ( factories = make(map[string]factoryFunc) @@ -90,7 +89,7 @@ func registerCollector(name string, isDefaultEnabled bool, createFunc factoryFun type ElasticsearchCollector struct { Collectors map[string]Collector - logger log.Logger + logger *slog.Logger esURL *url.URL httpClient *http.Client } @@ -98,7 +97,7 @@ type ElasticsearchCollector struct { type Option func(*ElasticsearchCollector) error // NewElasticsearchCollector creates a new ElasticsearchCollector -func NewElasticsearchCollector(logger log.Logger, filters []string, options ...Option) (*ElasticsearchCollector, error) { +func NewElasticsearchCollector(logger *slog.Logger, filters []string, options ...Option) (*ElasticsearchCollector, error) { e := &ElasticsearchCollector{logger: logger} // Apply options to customize the collector for _, o := range options { @@ -128,7 +127,7 @@ func NewElasticsearchCollector(logger log.Logger, filters []string, options ...O if collector, ok := initiatedCollectors[key]; ok { collectors[key] = collector } else { - collector, err := factories[key](log.With(logger, "collector", key), e.esURL, e.httpClient) + collector, err := factories[key](logger.With("collector", key), e.esURL, e.httpClient) if err != nil { return nil, err } @@ -176,7 +175,7 @@ func (e ElasticsearchCollector) Collect(ch chan<- prometheus.Metric) { wg.Wait() } -func execute(ctx context.Context, name string, c Collector, ch chan<- prometheus.Metric, logger log.Logger) { +func execute(ctx context.Context, name string, c Collector, ch chan<- prometheus.Metric, logger *slog.Logger) { begin := time.Now() err := c.Update(ctx, ch) duration := time.Since(begin) @@ -184,13 +183,13 @@ func execute(ctx context.Context, name string, c Collector, ch chan<- prometheus if err != nil { if IsNoDataError(err) { - level.Debug(logger).Log("msg", "collector returned no data", "name", name, "duration_seconds", duration.Seconds(), "err", err) + logger.Debug("collector returned no data", "name", name, "duration_seconds", duration.Seconds(), "err", err) } else { - level.Error(logger).Log("msg", "collector failed", "name", name, "duration_seconds", duration.Seconds(), "err", err) + logger.Error("collector failed", "name", name, "duration_seconds", duration.Seconds(), "err", err) } success = 0 } else { - level.Debug(logger).Log("msg", "collector succeeded", "name", name, "duration_seconds", duration.Seconds()) + logger.Debug("collector succeeded", "name", name, "duration_seconds", duration.Seconds()) success = 1 } ch <- prometheus.MustNewConstMetric(scrapeDurationDesc, prometheus.GaugeValue, duration.Seconds(), name) diff --git a/collector/data_stream.go b/collector/data_stream.go index 9d1b117d..29f564e8 100644 --- a/collector/data_stream.go +++ b/collector/data_stream.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -42,7 +41,7 @@ var ( // DataStream Information Struct type DataStream struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -50,7 +49,7 @@ type DataStream struct { } // NewDataStream defines DataStream Prometheus metrics -func NewDataStream(logger log.Logger, client *http.Client, url *url.URL) *DataStream { +func NewDataStream(logger *slog.Logger, client *http.Client, url *url.URL) *DataStream { return &DataStream{ logger: logger, client: client, @@ -106,8 +105,8 @@ func (ds *DataStream) fetchAndDecodeDataStreamStats() (DataStreamStatsResponse, defer func() { err = res.Body.Close() if err != nil { - level.Warn(ds.logger).Log( - "msg", "failed to close http.Client", + ds.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -134,8 +133,8 @@ func (ds *DataStream) Collect(ch chan<- prometheus.Metric) { dataStreamStatsResp, err := ds.fetchAndDecodeDataStreamStats() if err != nil { - level.Warn(ds.logger).Log( - "msg", "failed to fetch and decode data stream stats", + ds.logger.Warn( + "failed to fetch and decode data stream stats", "err", err, ) return diff --git a/collector/data_stream_test.go b/collector/data_stream_test.go index 605dff93..7de95fb5 100644 --- a/collector/data_stream_test.go +++ b/collector/data_stream_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestDataStream(t *testing.T) { @@ -65,7 +65,7 @@ func TestDataStream(t *testing.T) { t.Fatal(err) } - c := NewDataStream(log.NewNopLogger(), http.DefaultClient, u) + c := NewDataStream(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/ilm_indices.go b/collector/ilm_indices.go index 2982675a..9f30c726 100644 --- a/collector/ilm_indices.go +++ b/collector/ilm_indices.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -35,7 +34,7 @@ type ilmMetric struct { // Index Lifecycle Management information object type IlmIndiciesCollector struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -60,7 +59,7 @@ var ( ) // NewIlmIndicies defines Index Lifecycle Management Prometheus metrics -func NewIlmIndicies(logger log.Logger, client *http.Client, url *url.URL) *IlmIndiciesCollector { +func NewIlmIndicies(logger *slog.Logger, client *http.Client, url *url.URL) *IlmIndiciesCollector { subsystem := "ilm_index" return &IlmIndiciesCollector{ @@ -101,8 +100,8 @@ func (i *IlmIndiciesCollector) fetchAndDecodeIlm() (IlmResponse, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(i.logger).Log( - "msg", "failed to close http.Client", + i.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -136,8 +135,8 @@ func (i *IlmIndiciesCollector) Collect(ch chan<- prometheus.Metric) { // indices ilmResp, err := i.fetchAndDecodeIlm() if err != nil { - level.Warn(i.logger).Log( - "msg", "failed to fetch and decode ILM stats", + i.logger.Warn( + "failed to fetch and decode ILM stats", "err", err, ) return diff --git a/collector/ilm_indices_test.go b/collector/ilm_indices_test.go index ed550da8..b091f6fb 100644 --- a/collector/ilm_indices_test.go +++ b/collector/ilm_indices_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestILMMetrics(t *testing.T) { @@ -98,7 +98,7 @@ elasticsearch_ilm_index_status{action="complete",index="facebook",phase="new",st t.Fatal(err) } - c := NewIlmIndicies(log.NewNopLogger(), http.DefaultClient, u) + c := NewIlmIndicies(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/ilm_status.go b/collector/ilm_status.go index 57fda408..067e375c 100644 --- a/collector/ilm_status.go +++ b/collector/ilm_status.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -39,7 +38,7 @@ type ilmStatusMetric struct { // IlmStatusCollector information struct type IlmStatusCollector struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -51,7 +50,7 @@ type IlmStatusResponse struct { } // NewIlmStatus defines Indices IndexIlms Prometheus metrics -func NewIlmStatus(logger log.Logger, client *http.Client, url *url.URL) *IlmStatusCollector { +func NewIlmStatus(logger *slog.Logger, client *http.Client, url *url.URL) *IlmStatusCollector { subsystem := "ilm" return &IlmStatusCollector{ @@ -97,13 +96,13 @@ func (im *IlmStatusCollector) fetchAndDecodeIlm() (*IlmStatusResponse, error) { body, err := io.ReadAll(res.Body) if err != nil { - level.Warn(im.logger).Log("msg", "failed to read response body", "err", err) + im.logger.Warn("failed to read response body", "err", err) return nil, err } err = res.Body.Close() if err != nil { - level.Warn(im.logger).Log("msg", "failed to close response body", "err", err) + im.logger.Warn("failed to close response body", "err", err) return nil, err } @@ -119,8 +118,8 @@ func (im *IlmStatusCollector) fetchAndDecodeIlm() (*IlmStatusResponse, error) { func (im *IlmStatusCollector) Collect(ch chan<- prometheus.Metric) { indicesIlmsResponse, err := im.fetchAndDecodeIlm() if err != nil { - level.Warn(im.logger).Log( - "msg", "failed to fetch and decode cluster ilm status", + im.logger.Warn( + "failed to fetch and decode cluster ilm status", "err", err, ) return diff --git a/collector/ilm_status_test.go b/collector/ilm_status_test.go index 56254ba9..cc7e9ecb 100644 --- a/collector/ilm_status_test.go +++ b/collector/ilm_status_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestILMStatus(t *testing.T) { @@ -66,7 +66,7 @@ elasticsearch_ilm_status{operation_mode="STOPPING"} 0 t.Fatal(err) } - c := NewIlmStatus(log.NewNopLogger(), http.DefaultClient, u) + c := NewIlmStatus(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/indices.go b/collector/indices.go index 97aedf91..735d3afe 100644 --- a/collector/indices.go +++ b/collector/indices.go @@ -17,14 +17,13 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" "sort" "strconv" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus-community/elasticsearch_exporter/pkg/clusterinfo" "github.com/prometheus/client_golang/prometheus" ) @@ -57,7 +56,7 @@ type aliasMetric struct { // Indices information struct type Indices struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL shards bool @@ -71,7 +70,7 @@ type Indices struct { } // NewIndices defines Indices Prometheus metrics -func NewIndices(logger log.Logger, client *http.Client, url *url.URL, shards bool, includeAliases bool) *Indices { +func NewIndices(logger *slog.Logger, client *http.Client, url *url.URL, shards bool, includeAliases bool) *Indices { indexLabels := labels{ keys: func(...string) []string { @@ -1073,14 +1072,14 @@ func NewIndices(logger log.Logger, client *http.Client, url *url.URL, shards boo // start go routine to fetch clusterinfo updates and save them to lastClusterinfo go func() { - level.Debug(logger).Log("msg", "starting cluster info receive loop") + logger.Debug("starting cluster info receive loop") for ci := range indices.clusterInfoCh { if ci != nil { - level.Debug(logger).Log("msg", "received cluster info update", "cluster", ci.ClusterName) + logger.Debug("received cluster info update", "cluster", ci.ClusterName) indices.lastClusterInfo = ci } } - level.Debug(logger).Log("msg", "exiting cluster info receive loop") + logger.Debug("exiting cluster info receive loop") }() return indices } @@ -1131,7 +1130,7 @@ func (i *Indices) fetchAndDecodeIndexStats() (indexStatsResponse, error) { isr.Aliases = map[string][]string{} asr, err := i.fetchAndDecodeAliases() if err != nil { - level.Error(i.logger).Log("err", err.Error()) + i.logger.Error("error getting alias information", "err", err) return isr, err } @@ -1179,8 +1178,8 @@ func (i *Indices) queryURL(u *url.URL) ([]byte, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(i.logger).Log( - "msg", "failed to close http.Client", + i.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -1203,8 +1202,8 @@ func (i *Indices) Collect(ch chan<- prometheus.Metric) { // indices indexStatsResp, err := i.fetchAndDecodeIndexStats() if err != nil { - level.Warn(i.logger).Log( - "msg", "failed to fetch and decode index stats", + i.logger.Warn( + "failed to fetch and decode index stats", "err", err, ) return diff --git a/collector/indices_mappings.go b/collector/indices_mappings.go index 5f49eceb..21f119a1 100644 --- a/collector/indices_mappings.go +++ b/collector/indices_mappings.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -38,7 +37,7 @@ type indicesMappingsMetric struct { // IndicesMappings information struct type IndicesMappings struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -46,7 +45,7 @@ type IndicesMappings struct { } // NewIndicesMappings defines Indices IndexMappings Prometheus metrics -func NewIndicesMappings(logger log.Logger, client *http.Client, url *url.URL) *IndicesMappings { +func NewIndicesMappings(logger *slog.Logger, client *http.Client, url *url.URL) *IndicesMappings { subsystem := "indices_mappings_stats" return &IndicesMappings{ @@ -117,13 +116,13 @@ func (im *IndicesMappings) getAndParseURL(u *url.URL) (*IndicesMappingsResponse, body, err := io.ReadAll(res.Body) if err != nil { - level.Warn(im.logger).Log("msg", "failed to read response body", "err", err) + im.logger.Warn("failed to read response body", "err", err) return nil, err } err = res.Body.Close() if err != nil { - level.Warn(im.logger).Log("msg", "failed to close response body", "err", err) + im.logger.Warn("failed to close response body", "err", err) return nil, err } @@ -145,8 +144,8 @@ func (im *IndicesMappings) fetchAndDecodeIndicesMappings() (*IndicesMappingsResp func (im *IndicesMappings) Collect(ch chan<- prometheus.Metric) { indicesMappingsResponse, err := im.fetchAndDecodeIndicesMappings() if err != nil { - level.Warn(im.logger).Log( - "msg", "failed to fetch and decode cluster mappings stats", + im.logger.Warn( + "failed to fetch and decode cluster mappings stats", "err", err, ) return diff --git a/collector/indices_mappings_test.go b/collector/indices_mappings_test.go index 65c61ffe..73a2b423 100644 --- a/collector/indices_mappings_test.go +++ b/collector/indices_mappings_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestMapping(t *testing.T) { @@ -113,7 +113,7 @@ elasticsearch_indices_mappings_stats_fields{index="test-data-2023.01.20"} 40 t.Fatal(err) } - c := NewIndicesMappings(log.NewNopLogger(), http.DefaultClient, u) + c := NewIndicesMappings(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/indices_settings.go b/collector/indices_settings.go index dc78d3af..141c2e69 100644 --- a/collector/indices_settings.go +++ b/collector/indices_settings.go @@ -17,19 +17,18 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" "strconv" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) // IndicesSettings information struct type IndicesSettings struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL @@ -53,7 +52,7 @@ type indicesSettingsMetric struct { } // NewIndicesSettings defines Indices Settings Prometheus metrics -func NewIndicesSettings(logger log.Logger, client *http.Client, url *url.URL) *IndicesSettings { +func NewIndicesSettings(logger *slog.Logger, client *http.Client, url *url.URL) *IndicesSettings { return &IndicesSettings{ logger: logger, client: client, @@ -143,8 +142,8 @@ func (cs *IndicesSettings) getAndParseURL(u *url.URL, data interface{}) error { defer func() { err = res.Body.Close() if err != nil { - level.Warn(cs.logger).Log( - "msg", "failed to close http.Client", + cs.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -195,8 +194,8 @@ func (cs *IndicesSettings) Collect(ch chan<- prometheus.Metric) { if err != nil { cs.readOnlyIndices.Set(0) cs.up.Set(0) - level.Warn(cs.logger).Log( - "msg", "failed to fetch and decode cluster settings stats", + cs.logger.Warn( + "failed to fetch and decode cluster settings stats", "err", err, ) return diff --git a/collector/indices_settings_test.go b/collector/indices_settings_test.go index 7a3d0fcd..3b68b0c7 100644 --- a/collector/indices_settings_test.go +++ b/collector/indices_settings_test.go @@ -20,7 +20,7 @@ import ( "net/url" "testing" - "github.com/go-kit/log" + "github.com/prometheus/common/promslog" ) func TestIndicesSettings(t *testing.T) { @@ -70,7 +70,7 @@ func TestIndicesSettings(t *testing.T) { if err != nil { t.Fatalf("Failed to parse URL: %s", err) } - c := NewIndicesSettings(log.NewNopLogger(), http.DefaultClient, u) + c := NewIndicesSettings(promslog.NewNopLogger(), http.DefaultClient, u) nsr, err := c.fetchAndDecodeIndicesSettings() if err != nil { t.Fatalf("Failed to fetch or decode indices settings: %s", err) diff --git a/collector/indices_test.go b/collector/indices_test.go index badcd07e..6e3a832b 100644 --- a/collector/indices_test.go +++ b/collector/indices_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestIndices(t *testing.T) { @@ -1673,7 +1673,7 @@ func TestIndices(t *testing.T) { t.Fatal(err) } - c := NewIndices(log.NewNopLogger(), http.DefaultClient, u, false, true) + c := NewIndices(promslog.NewNopLogger(), http.DefaultClient, u, false, true) if err != nil { t.Fatal(err) } diff --git a/collector/nodes.go b/collector/nodes.go index 143dac97..2fb07693 100644 --- a/collector/nodes.go +++ b/collector/nodes.go @@ -17,12 +17,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -168,7 +167,7 @@ type filesystemIODeviceMetric struct { // Nodes information struct type Nodes struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL all bool @@ -184,7 +183,7 @@ type Nodes struct { } // NewNodes defines Nodes Prometheus metrics -func NewNodes(logger log.Logger, client *http.Client, url *url.URL, all bool, node string) *Nodes { +func NewNodes(logger *slog.Logger, client *http.Client, url *url.URL, all bool, node string) *Nodes { return &Nodes{ logger: logger, client: client, @@ -1875,8 +1874,8 @@ func (c *Nodes) fetchAndDecodeNodeStats() (nodeStatsResponse, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(c.logger).Log( - "msg", "failed to close http.Client", + c.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -1901,8 +1900,8 @@ func (c *Nodes) fetchAndDecodeNodeStats() (nodeStatsResponse, error) { func (c *Nodes) Collect(ch chan<- prometheus.Metric) { nodeStatsResp, err := c.fetchAndDecodeNodeStats() if err != nil { - level.Warn(c.logger).Log( - "msg", "failed to fetch and decode node stats", + c.logger.Warn( + "failed to fetch and decode node stats", "err", err, ) return diff --git a/collector/nodes_test.go b/collector/nodes_test.go index b7d9851a..9e731837 100644 --- a/collector/nodes_test.go +++ b/collector/nodes_test.go @@ -22,8 +22,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestNodesStats(t *testing.T) { @@ -1593,7 +1593,7 @@ func TestNodesStats(t *testing.T) { t.Fatal(err) } - c := NewNodes(log.NewNopLogger(), http.DefaultClient, u, true, "_local") + c := NewNodes(promslog.NewNopLogger(), http.DefaultClient, u, true, "_local") if err != nil { t.Fatal(err) } diff --git a/collector/shards.go b/collector/shards.go index 37ea1fef..d9b26820 100644 --- a/collector/shards.go +++ b/collector/shards.go @@ -16,13 +16,13 @@ package collector import ( "encoding/json" "fmt" - "github.com/prometheus-community/elasticsearch_exporter/pkg/clusterinfo" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" - "github.com/go-kit/log/level" + "github.com/prometheus-community/elasticsearch_exporter/pkg/clusterinfo" + "github.com/prometheus/client_golang/prometheus" ) @@ -36,7 +36,7 @@ type ShardResponse struct { // Shards information struct type Shards struct { - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL clusterInfoCh chan *clusterinfo.Response @@ -65,7 +65,7 @@ type nodeShardMetric struct { } // NewShards defines Shards Prometheus metrics -func NewShards(logger log.Logger, client *http.Client, url *url.URL) *Shards { +func NewShards(logger *slog.Logger, client *http.Client, url *url.URL) *Shards { nodeLabels := labels{ keys: func(...string) []string { @@ -113,14 +113,14 @@ func NewShards(logger log.Logger, client *http.Client, url *url.URL) *Shards { // start go routine to fetch clusterinfo updates and save them to lastClusterinfo go func() { - level.Debug(logger).Log("msg", "starting cluster info receive loop") + logger.Debug("starting cluster info receive loop") for ci := range shards.clusterInfoCh { if ci != nil { - level.Debug(logger).Log("msg", "received cluster info update", "cluster", ci.ClusterName) + logger.Debug("received cluster info update", "cluster", ci.ClusterName) shards.lastClusterInfo = ci } } - level.Debug(logger).Log("msg", "exiting cluster info receive loop") + logger.Debug("exiting cluster info receive loop") }() return shards @@ -145,8 +145,8 @@ func (s *Shards) getAndParseURL(u *url.URL) ([]ShardResponse, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(s.logger).Log( - "msg", "failed to close http.Client", + s.logger.Warn( + "failed to close http.Client", "err", err, ) } @@ -186,8 +186,8 @@ func (s *Shards) Collect(ch chan<- prometheus.Metric) { sr, err := s.fetchAndDecodeShards() if err != nil { - level.Warn(s.logger).Log( - "msg", "failed to fetch and decode node shards stats", + s.logger.Warn( + "failed to fetch and decode node shards stats", "err", err, ) return diff --git a/collector/shards_test.go b/collector/shards_test.go index 73aec9ed..14ba7a7b 100644 --- a/collector/shards_test.go +++ b/collector/shards_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestShards(t *testing.T) { @@ -70,7 +70,7 @@ func TestShards(t *testing.T) { t.Fatalf("Failed to parse URL: %s", err) } - s := NewShards(log.NewNopLogger(), http.DefaultClient, u) + s := NewShards(promslog.NewNopLogger(), http.DefaultClient, u) if err != nil { t.Fatal(err) } diff --git a/collector/slm.go b/collector/slm.go index eb3cf809..35aee9f2 100644 --- a/collector/slm.go +++ b/collector/slm.go @@ -16,10 +16,10 @@ package collector import ( "context" "encoding/json" + "log/slog" "net/http" "net/url" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus" ) @@ -103,13 +103,13 @@ func init() { // SLM information struct type SLM struct { - logger log.Logger + logger *slog.Logger hc *http.Client u *url.URL } // NewSLM defines SLM Prometheus metrics -func NewSLM(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) { +func NewSLM(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) { return &SLM{ logger: logger, hc: hc, diff --git a/collector/slm_test.go b/collector/slm_test.go index 5351b8dd..36e41328 100644 --- a/collector/slm_test.go +++ b/collector/slm_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestSLM(t *testing.T) { @@ -123,7 +123,7 @@ func TestSLM(t *testing.T) { t.Fatalf("Failed to parse URL: %s", err) } - s, err := NewSLM(log.NewNopLogger(), u, http.DefaultClient) + s, err := NewSLM(promslog.NewNopLogger(), u, http.DefaultClient) if err != nil { t.Fatal(err) } diff --git a/collector/snapshots.go b/collector/snapshots.go index cb6a894a..42cfc50a 100644 --- a/collector/snapshots.go +++ b/collector/snapshots.go @@ -17,11 +17,11 @@ import ( "context" "encoding/json" "fmt" + "log/slog" "net/http" "net/url" "path" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus" ) @@ -96,13 +96,13 @@ func init() { // Snapshots information struct type Snapshots struct { - logger log.Logger + logger *slog.Logger hc *http.Client u *url.URL } // NewSnapshots defines Snapshots Prometheus metrics -func NewSnapshots(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) { +func NewSnapshots(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) { return &Snapshots{ logger: logger, u: u, diff --git a/collector/snapshots_test.go b/collector/snapshots_test.go index a4f88b11..cf4b2d6a 100644 --- a/collector/snapshots_test.go +++ b/collector/snapshots_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestSnapshots(t *testing.T) { @@ -209,7 +209,7 @@ func TestSnapshots(t *testing.T) { t.Fatal(err) } - c, err := NewSnapshots(log.NewNopLogger(), u, http.DefaultClient) + c, err := NewSnapshots(promslog.NewNopLogger(), u, http.DefaultClient) if err != nil { t.Fatal(err) } diff --git a/collector/tasks.go b/collector/tasks.go index e171b67c..faaef2da 100644 --- a/collector/tasks.go +++ b/collector/tasks.go @@ -18,12 +18,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "github.com/alecthomas/kingpin/v2" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -45,14 +44,14 @@ func init() { // Task Information Struct type TaskCollector struct { - logger log.Logger + logger *slog.Logger hc *http.Client u *url.URL } // NewTaskCollector defines Task Prometheus metrics -func NewTaskCollector(logger log.Logger, u *url.URL, hc *http.Client) (Collector, error) { - level.Info(logger).Log("msg", "task collector created", +func NewTaskCollector(logger *slog.Logger, u *url.URL, hc *http.Client) (Collector, error) { + logger.Info("task collector created", "actionFilter", actionFilter, ) @@ -98,8 +97,8 @@ func (t *TaskCollector) fetchTasks(_ context.Context) (tasksResponse, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(t.logger).Log( - "msg", "failed to close http.Client", + t.logger.Warn( + "failed to close http.Client", "err", err, ) } diff --git a/collector/tasks_test.go b/collector/tasks_test.go index d5da114f..e471eba4 100644 --- a/collector/tasks_test.go +++ b/collector/tasks_test.go @@ -21,8 +21,8 @@ import ( "strings" "testing" - "github.com/go-kit/log" "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/prometheus/common/promslog" ) func TestTasks(t *testing.T) { @@ -65,7 +65,7 @@ elasticsearch_task_stats_action{action="indices:data/write/index"} 1 t.Fatalf("Failed to parse URL: %s", err) } - c, err := NewTaskCollector(log.NewNopLogger(), u, ts.Client()) + c, err := NewTaskCollector(promslog.NewNopLogger(), u, ts.Client()) if err != nil { t.Fatalf("Failed to create collector: %v", err) } diff --git a/collector/util.go b/collector/util.go index 19c045cd..a2df06ed 100644 --- a/collector/util.go +++ b/collector/util.go @@ -17,13 +17,11 @@ import ( "context" "fmt" "io" + "log/slog" "net/http" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" ) -func getURL(ctx context.Context, hc *http.Client, log log.Logger, u string) ([]byte, error) { +func getURL(ctx context.Context, hc *http.Client, log *slog.Logger, u string) ([]byte, error) { req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil) if err != nil { return nil, err @@ -37,8 +35,8 @@ func getURL(ctx context.Context, hc *http.Client, log log.Logger, u string) ([]b defer func() { err = resp.Body.Close() if err != nil { - level.Warn(log).Log( - "msg", "failed to close response body", + log.Warn( + "failed to close response body", "err", err, ) } diff --git a/go.mod b/go.mod index b522462a..aeedc596 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,6 @@ require ( github.com/aws/aws-sdk-go-v2/credentials v1.17.24 github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 github.com/blang/semver/v4 v4.0.0 - github.com/go-kit/log v0.2.1 github.com/imdario/mergo v0.3.13 github.com/prometheus/client_golang v1.20.4 github.com/prometheus/common v0.60.0 @@ -30,7 +29,6 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/kylelemons/godebug v1.1.0 // indirect diff --git a/go.sum b/go.sum index a7bf14c6..b8efb4aa 100644 --- a/go.sum +++ b/go.sum @@ -39,10 +39,6 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/logger.go b/logger.go deleted file mode 100644 index 700926a7..00000000 --- a/logger.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2021 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "os" - - "github.com/go-kit/log" - "github.com/go-kit/log/level" - "io" - "strings" -) - -func getLogger(loglevel, logoutput, logfmt string) log.Logger { - var out *os.File - switch strings.ToLower(logoutput) { - case "stderr": - out = os.Stderr - case "stdout": - out = os.Stdout - default: - out = os.Stdout - } - var logCreator func(io.Writer) log.Logger - switch strings.ToLower(logfmt) { - case "json": - logCreator = log.NewJSONLogger - case "logfmt": - logCreator = log.NewLogfmtLogger - default: - logCreator = log.NewLogfmtLogger - } - - // create a logger - logger := logCreator(log.NewSyncWriter(out)) - - // set loglevel - var loglevelFilterOpt level.Option - switch strings.ToLower(loglevel) { - case "debug": - loglevelFilterOpt = level.AllowDebug() - case "info": - loglevelFilterOpt = level.AllowInfo() - case "warn": - loglevelFilterOpt = level.AllowWarn() - case "error": - loglevelFilterOpt = level.AllowError() - default: - loglevelFilterOpt = level.AllowInfo() - } - logger = level.NewFilter(logger, loglevelFilterOpt) - logger = log.With(logger, - "ts", log.DefaultTimestampUTC, - "caller", log.DefaultCaller, - ) - return logger -} diff --git a/main.go b/main.go index dcb6bfa4..663fb772 100644 --- a/main.go +++ b/main.go @@ -15,21 +15,25 @@ package main import ( "fmt" + "io" "net/http" "net/url" "os" "os/signal" + "strings" "time" "context" "github.com/alecthomas/kingpin/v2" - "github.com/go-kit/log/level" "github.com/prometheus-community/elasticsearch_exporter/collector" "github.com/prometheus-community/elasticsearch_exporter/pkg/clusterinfo" "github.com/prometheus-community/elasticsearch_exporter/pkg/roundtripper" "github.com/prometheus/client_golang/prometheus" + versioncollector "github.com/prometheus/client_golang/prometheus/collectors/version" "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/prometheus/common/promslog" + "github.com/prometheus/common/promslog/flag" "github.com/prometheus/common/version" "github.com/prometheus/exporter-toolkit/web" webflag "github.com/prometheus/exporter-toolkit/web/kingpinflag" @@ -101,12 +105,6 @@ func main() { esInsecureSkipVerify = kingpin.Flag("es.ssl-skip-verify", "Skip SSL verification when connecting to Elasticsearch."). Default("false").Bool() - logLevel = kingpin.Flag("log.level", - "Sets the loglevel. Valid levels are debug, info, warn, error"). - Default("info").String() - logFormat = kingpin.Flag("log.format", - "Sets the log format. Valid formats are json and logfmt"). - Default("logfmt").String() logOutput = kingpin.Flag("log.output", "Sets the log output. Valid outputs are stdout and stderr"). Default("stdout").String() @@ -118,18 +116,27 @@ func main() { Default("").String() ) + promslogConfig := &promslog.Config{} + flag.AddFlags(kingpin.CommandLine, promslogConfig) kingpin.Version(version.Print(name)) kingpin.CommandLine.HelpFlag.Short('h') kingpin.Parse() - logger := getLogger(*logLevel, *logOutput, *logFormat) + var w io.Writer + switch strings.ToLower(*logOutput) { + case "stderr": + w = os.Stderr + case "stdout": + w = os.Stdout + default: + w = os.Stdout + } + promslogConfig.Writer = w + logger := promslog.New(promslogConfig) esURL, err := url.Parse(*esURI) if err != nil { - level.Error(logger).Log( - "msg", "failed to parse es.uri", - "err", err, - ) + logger.Error("failed to parse es.uri", "err", err) os.Exit(1) } @@ -167,13 +174,13 @@ func main() { if *awsRegion != "" { httpClient.Transport, err = roundtripper.NewAWSSigningTransport(httpTransport, *awsRegion, *awsRoleArn, logger) if err != nil { - level.Error(logger).Log("msg", "failed to create AWS transport", "err", err) + logger.Error("failed to create AWS transport", "err", err) os.Exit(1) } } // version metric - prometheus.MustRegister(version.NewCollector(name)) + prometheus.MustRegister(versioncollector.NewCollector(name)) // create the exporter exporter, err := collector.NewElasticsearchCollector( @@ -183,7 +190,7 @@ func main() { collector.WithHTTPClient(httpClient), ) if err != nil { - level.Error(logger).Log("msg", "failed to create Elasticsearch collector", "err", err) + logger.Error("failed to create Elasticsearch collector", "err", err) os.Exit(1) } prometheus.MustRegister(exporter) @@ -201,11 +208,11 @@ func main() { iC := collector.NewIndices(logger, httpClient, esURL, *esExportShards, *esExportIndexAliases) prometheus.MustRegister(iC) if registerErr := clusterInfoRetriever.RegisterConsumer(iC); registerErr != nil { - level.Error(logger).Log("msg", "failed to register indices collector in cluster info") + logger.Error("failed to register indices collector in cluster info") os.Exit(1) } if registerErr := clusterInfoRetriever.RegisterConsumer(sC); registerErr != nil { - level.Error(logger).Log("msg", "failed to register shards collector in cluster info") + logger.Error("failed to register shards collector in cluster info") os.Exit(1) } } @@ -234,14 +241,11 @@ func main() { // start the cluster info retriever switch runErr := clusterInfoRetriever.Run(ctx); runErr { case nil: - level.Info(logger).Log( - "msg", "started cluster info retriever", - "interval", (*esClusterInfoInterval).String(), - ) + logger.Info("started cluster info retriever", "interval", (*esClusterInfoInterval).String()) case clusterinfo.ErrInitialCallTimeout: - level.Info(logger).Log("msg", "initial cluster info call timed out") + logger.Info("initial cluster info call timed out") default: - level.Error(logger).Log("msg", "failed to run cluster info retriever", "err", err) + logger.Error("failed to run cluster info retriever", "err", err) os.Exit(1) } @@ -263,7 +267,7 @@ func main() { } landingPage, err := web.NewLandingPage(landingConfig) if err != nil { - level.Error(logger).Log("err", err) + logger.Error("error creating landing page", "err", err) os.Exit(1) } http.Handle("/", landingPage) @@ -277,13 +281,13 @@ func main() { server := &http.Server{} go func() { if err = web.ListenAndServe(server, toolkitFlags, logger); err != nil { - level.Error(logger).Log("msg", "http server quit", "err", err) + logger.Error("http server quit", "err", err) os.Exit(1) } }() <-ctx.Done() - level.Info(logger).Log("msg", "shutting down") + logger.Info("shutting down") // create a context for graceful http server shutdown srvCtx, srvCancel := context.WithTimeout(context.Background(), 5*time.Second) defer srvCancel() diff --git a/pkg/clusterinfo/clusterinfo.go b/pkg/clusterinfo/clusterinfo.go index 00486f5f..f47659c3 100644 --- a/pkg/clusterinfo/clusterinfo.go +++ b/pkg/clusterinfo/clusterinfo.go @@ -19,13 +19,12 @@ import ( "errors" "fmt" "io" + "log/slog" "net/http" "net/url" "path" "time" - "github.com/go-kit/log" - "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" ) @@ -53,7 +52,7 @@ type consumer interface { // sends it to all registered consumer channels type Retriever struct { consumerChannels map[string]*chan *Response - logger log.Logger + logger *slog.Logger client *http.Client url *url.URL interval time.Duration @@ -65,7 +64,7 @@ type Retriever struct { } // New creates a new Retriever -func New(logger log.Logger, client *http.Client, u *url.URL, interval time.Duration) *Retriever { +func New(logger *slog.Logger, client *http.Client, u *url.URL, interval time.Duration) *Retriever { return &Retriever{ consumerChannels: make(map[string]*chan *Response), logger: logger, @@ -131,7 +130,7 @@ func (r *Retriever) updateMetrics(res *Response) { u := *r.url u.User = nil url := u.String() - level.Debug(r.logger).Log("msg", "updating cluster info metrics") + r.logger.Debug("updating cluster info metrics") // scrape failed, response is nil if res == nil { r.up.WithLabelValues(url).Set(0.0) @@ -174,19 +173,17 @@ func (r *Retriever) Run(ctx context.Context) error { for { select { case <-ctx.Done(): - level.Info(r.logger).Log( - "msg", "context cancelled, exiting cluster info update loop", + r.logger.Info( + "context cancelled, exiting cluster info update loop", "err", ctx.Err(), ) return case <-r.sync: - level.Info(r.logger).Log( - "msg", "providing consumers with updated cluster info label", - ) + r.logger.Info("providing consumers with updated cluster info label") res, err := r.fetchAndDecodeClusterInfo() if err != nil { - level.Error(r.logger).Log( - "msg", "failed to retrieve cluster info from ES", + r.logger.Error( + "failed to retrieve cluster info from ES", "err", err, ) r.updateMetrics(nil) @@ -194,8 +191,8 @@ func (r *Retriever) Run(ctx context.Context) error { } r.updateMetrics(res) for name, consumerCh := range r.consumerChannels { - level.Debug(r.logger).Log( - "msg", "sending update", + r.logger.Debug( + "sending update", "consumer", name, "res", fmt.Sprintf("%+v", res), ) @@ -211,32 +208,26 @@ func (r *Retriever) Run(ctx context.Context) error { } }(ctx) // trigger initial cluster info call - level.Info(r.logger).Log( - "msg", "triggering initial cluster info call", - ) + r.logger.Info("triggering initial cluster info call") r.sync <- struct{}{} // start a ticker routine go func(ctx context.Context) { if r.interval <= 0 { - level.Info(r.logger).Log( - "msg", "no periodic cluster info label update requested", - ) + r.logger.Info("no periodic cluster info label update requested") return } ticker := time.NewTicker(r.interval) for { select { case <-ctx.Done(): - level.Info(r.logger).Log( - "msg", "context cancelled, exiting cluster info trigger loop", + r.logger.Info( + "context cancelled, exiting cluster info trigger loop", "err", ctx.Err(), ) return case <-ticker.C: - level.Debug(r.logger).Log( - "msg", "triggering periodic update", - ) + r.logger.Debug("triggering periodic update") r.sync <- struct{}{} } } @@ -246,7 +237,7 @@ func (r *Retriever) Run(ctx context.Context) error { select { case <-startupComplete: // first sync has been successful - level.Debug(r.logger).Log("msg", "initial clusterinfo sync succeeded") + r.logger.Debug("initial clusterinfo sync succeeded") return nil case <-time.After(initialTimeout): // initial call timed out @@ -264,8 +255,8 @@ func (r *Retriever) fetchAndDecodeClusterInfo() (*Response, error) { res, err := r.client.Get(u.String()) if err != nil { - level.Error(r.logger).Log( - "msg", "failed to get cluster info", + r.logger.Error( + "failed to get cluster info", "err", err, ) return nil, err @@ -274,8 +265,8 @@ func (r *Retriever) fetchAndDecodeClusterInfo() (*Response, error) { defer func() { err = res.Body.Close() if err != nil { - level.Warn(r.logger).Log( - "msg", "failed to close http.Client", + r.logger.Warn( + "failed to close http.Client", "err", err, ) } diff --git a/pkg/clusterinfo/clusterinfo_test.go b/pkg/clusterinfo/clusterinfo_test.go index 91841682..c1803cca 100644 --- a/pkg/clusterinfo/clusterinfo_test.go +++ b/pkg/clusterinfo/clusterinfo_test.go @@ -25,7 +25,7 @@ import ( "testing" "time" - "github.com/go-kit/log" + "github.com/prometheus/common/promslog" "github.com/blang/semver/v4" ) @@ -120,7 +120,7 @@ func TestNew(t *testing.T) { if err != nil { t.Skipf("internal test error: %s", err) } - r := New(log.NewNopLogger(), http.DefaultClient, u, 0) + r := New(promslog.NewNopLogger(), http.DefaultClient, u, 0) if r.url != u { t.Errorf("new Retriever mal-constructed") } @@ -132,7 +132,7 @@ func TestRetriever_RegisterConsumer(t *testing.T) { if err != nil { t.Fatalf("internal test error: %s", err) } - retriever := New(log.NewNopLogger(), mockES.Client(), u, 0) + retriever := New(promslog.NewNopLogger(), mockES.Client(), u, 0) ctx, cancel := context.WithCancel(context.Background()) defer cancel() consumerNames := []string{"consumer-1", "consumer-2"} @@ -171,7 +171,7 @@ func TestRetriever_fetchAndDecodeClusterInfo(t *testing.T) { if err != nil { t.Skipf("internal test error: %s", err) } - retriever := New(log.NewNopLogger(), mockES.Client(), u, 0) + retriever := New(promslog.NewNopLogger(), mockES.Client(), u, 0) ci, err := retriever.fetchAndDecodeClusterInfo() if err != nil { t.Fatalf("failed to retrieve cluster info: %s", err) @@ -191,7 +191,7 @@ func TestRetriever_Run(t *testing.T) { } // setup cluster info retriever - retriever := New(log.NewLogfmtLogger(os.Stdout), mockES.Client(), u, 0) + retriever := New(promslog.New(&promslog.Config{Writer: os.Stdout}), mockES.Client(), u, 0) // setup mock consumer ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) diff --git a/pkg/roundtripper/roundtripper.go b/pkg/roundtripper/roundtripper.go index 4229f96d..97e33672 100644 --- a/pkg/roundtripper/roundtripper.go +++ b/pkg/roundtripper/roundtripper.go @@ -19,6 +19,7 @@ import ( "crypto/sha256" "encoding/hex" "io" + "log/slog" "net/http" "time" @@ -27,8 +28,6 @@ import ( "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/credentials/stscreds" "github.com/aws/aws-sdk-go-v2/service/sts" - "github.com/go-kit/log" - "github.com/go-kit/log/level" ) const ( @@ -39,13 +38,13 @@ type AWSSigningTransport struct { t http.RoundTripper creds aws.CredentialsProvider region string - log log.Logger + log *slog.Logger } -func NewAWSSigningTransport(transport http.RoundTripper, region string, roleArn string, log log.Logger) (*AWSSigningTransport, error) { +func NewAWSSigningTransport(transport http.RoundTripper, region string, roleArn string, log *slog.Logger) (*AWSSigningTransport, error) { cfg, err := config.LoadDefaultConfig(context.Background(), config.WithRegion(region)) if err != nil { - level.Error(log).Log("msg", "failed to load aws default config", "err", err) + log.Error("failed to load aws default config", "err", err) return nil, err } @@ -58,7 +57,7 @@ func NewAWSSigningTransport(transport http.RoundTripper, region string, roleArn // are valid before returning the transport. _, err = cfg.Credentials.Retrieve(context.Background()) if err != nil { - level.Error(log).Log("msg", "failed to retrive aws credentials", "err", err) + log.Error("failed to retrive aws credentials", "err", err) return nil, err } @@ -74,20 +73,20 @@ func (a *AWSSigningTransport) RoundTrip(req *http.Request) (*http.Response, erro signer := v4.NewSigner() payloadHash, newReader, err := hashPayload(req.Body) if err != nil { - level.Error(a.log).Log("msg", "failed to hash request body", "err", err) + a.log.Error("failed to hash request body", "err", err) return nil, err } req.Body = newReader creds, err := a.creds.Retrieve(context.Background()) if err != nil { - level.Error(a.log).Log("msg", "failed to retrieve aws credentials", "err", err) + a.log.Error("failed to retrieve aws credentials", "err", err) return nil, err } err = signer.SignHTTP(context.Background(), creds, req, payloadHash, service, a.region, time.Now()) if err != nil { - level.Error(a.log).Log("msg", "failed to sign request body", "err", err) + a.log.Error("failed to sign request body", "err", err) return nil, err } return a.t.RoundTrip(req) diff --git a/scripts/errcheck_excludes.txt b/scripts/errcheck_excludes.txt index 14b824f8..2cadaa53 100644 --- a/scripts/errcheck_excludes.txt +++ b/scripts/errcheck_excludes.txt @@ -1,4 +1,2 @@ // Used in HTTP handlers, any error is handled by the server itself. (net/http.ResponseWriter).Write -// Never check for logger errors. -(github.com/go-kit/log.Logger).Log From ac9a75ed5c4103b1515f12b6e8ec45844d7549f5 Mon Sep 17 00:00:00 2001 From: TJ Hoplock Date: Thu, 17 Oct 2024 10:08:07 -0400 Subject: [PATCH 4/4] ci: update deprecated golangci-lint config Fixes: ``` WARN [config_reader] The configuration option `linters.errcheck.exclude` is deprecated, please use `linters.errcheck.exclude-functions`. ``` Signed-off-by: TJ Hoplock --- .golangci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index 03e6085d..c6fdefb0 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,7 +12,7 @@ issues: linters-settings: errcheck: - exclude: scripts/errcheck_excludes.txt + exclude-functions: scripts/errcheck_excludes.txt revive: rules: # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter