diff --git a/go.mod b/go.mod
index 8dcc1cfb81b..7d6dd98007c 100644
--- a/go.mod
+++ b/go.mod
@@ -165,7 +165,7 @@ require (
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
- github.com/sirupsen/logrus v1.8.1 // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
github.com/spf13/pflag v1.0.5 // indirect
go.mongodb.org/mongo-driver v1.11.0 // indirect
go.opencensus.io v0.24.0 // indirect
diff --git a/go.sum b/go.sum
index 22eccf13a39..078420ad7f3 100644
--- a/go.sum
+++ b/go.sum
@@ -684,8 +684,8 @@ github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
@@ -980,6 +980,7 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
diff --git a/scrape/testdata/ca.cer b/scrape/testdata/ca.cer
index 86f627a9032..25ee877ec42 100644
--- a/scrape/testdata/ca.cer
+++ b/scrape/testdata/ca.cer
@@ -1,22 +1,33 @@
-----BEGIN CERTIFICATE-----
-MIIDkTCCAnmgAwIBAgIJAJNsnimNN3tmMA0GCSqGSIb3DQEBCwUAMF8xCzAJBgNV
-BAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
-Q29tcGFueSBMdGQxGzAZBgNVBAMMElByb21ldGhldXMgVGVzdCBDQTAeFw0xNTA4
-MDQxNDA5MjFaFw0yNTA4MDExNDA5MjFaMF8xCzAJBgNVBAYTAlhYMRUwEwYDVQQH
-DAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxGzAZ
-BgNVBAMMElByb21ldGhldXMgVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAOlSBU3yWpUELbhzizznR0hnAL7dbEHzfEtEc6N3PoSvMNcqrUVq
-t4kjBRWzqkZ5uJVkzBPERKEBoOI9pWcrqtMTBkMzHJY2Ep7GHTab10e9KC2IFQT6
-FKP/jCYixaIVx3azEfajRJooD8r79FGoagWUfHdHyCFWJb/iLt8z8+S91kelSRMS
-yB9M1ypWomzBz1UFXZp1oiNO5o7/dgXW4MgLUfC2obJ9j5xqpc6GkhWMW4ZFwEr/
-VLjuzxG9B8tLfQuhnXKGn1W8+WzZVWCWMD/sLfZfmjKaWlwcXzL51g8E+IEIBJqV
-w51aMI6lDkcvAM7gLq1auLZMVXyKWSKw7XMCAwEAAaNQME4wHQYDVR0OBBYEFMz1
-BZnlqxJp2HiJSjHK8IsLrWYbMB8GA1UdIwQYMBaAFMz1BZnlqxJp2HiJSjHK8IsL
-rWYbMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAI2iA3w3TK5J15Pu
-e4fPFB4jxQqsbUwuyXbCCv/jKLeFNCD4BjM181WZEYjPMumeTBVzU3aF45LWQIG1
-0DJcrCL4mjMz9qgAoGqA7aDDXiJGbukMgYYsn7vrnVmrZH8T3E8ySlltr7+W578k
-pJ5FxnbCroQwn0zLyVB3sFbS8E3vpBr3L8oy8PwPHhIScexcNVc3V6/m4vTZsXTH
-U+vUm1XhDgpDcFMTg2QQiJbfpOYUkwIgnRDAT7t282t2KQWtnlqc3zwPQ1F/6Cpx
-j19JeNsaF1DArkD7YlyKj/GhZLtHwFHG5cxznH0mLDJTW7bQvqqh2iQTeXmBk1lU
-mM5lH/s=
+MIIFtTCCA52gAwIBAgIURZkhZmCjjZKxCkrNyio+7BZeWHUwDQYJKoZIhvcNAQEL
+BQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsM
+IFByb21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9t
+ZXRoZXVzIFRMUyBDQTAgFw0yNjAyMDkxMzIyMzhaGA8yMDc2MDEyODEzMjIzOFow
+aTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsMIFBy
+b21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9tZXRo
+ZXVzIFRMUyBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMFTRu4F
+Mpj+5U4/o7jaMxwrgm6tgYram3Zwle1AUSnJoIR/waZ77Z0r3C0HBnvaCWfL4uRJ
+N7bWtHNkHKAw/GilAXya1R0CQHWEemtYAJ8Se30v8lRk87uqu3nRSn5aEz14qwLF
+492hM3gmE4GWgw2KimEPFAy8cquA5ils8rIvf7HAPfH1gIS97+QKSV1rfXv6g80D
+dpc2lWSzyNpgwlKZoSn4aAPURX3FROWLVaqMcFUGvtayxX/ZEr4PfYhqXUpBL9E8
+ySIjOSGUBI8uJItoygJMZJRMT8amW0tMULvAdHQ4s87noZTX1HjC4Tc8dntZEBqe
+VHrwryS/9VAjmYX3hslKhYBRSF2X5l+7NeUQDmQL9qsQGxYW2XhrNrVRyvEJJOiJ
+a6gdV5qxoRxDGwQp67MKGMxQnCjhNASxjO2mMpspnSgfE3FTr6j8IQ7OgsrNp32v
+Fc8Hpr+a0zIMCoXB6hRPUIfwqGRqRnaca3T+lp/Esto7sR98jTGIaInHdQVHWSaR
+5npwmIXv7d6uMn6V0m7VvmMQhK5x2rU+RsNF+v0kudDXilxrhCRsG+UAq36G4gwn
+Nh/+Xx04yNolIwFIci14sslj4zBUS0uUAgMK3yLUUOVwSwwHAm8jogsqPaVRV7/f
+ZaHJnXscq4iA4nVcUo52hGMptKRhOzbNSL/JAgMBAAGjUzBRMB0GA1UdDgQWBBTy
+UGwlMISJy038NEjQ+Lnj86wkIjAfBgNVHSMEGDAWgBTyUGwlMISJy038NEjQ+Lnj
+86wkIjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBBIMDimY4s
+AUkJVd3hOPPSh5GTKfNKK9H56EwXx6MKuN3Ubj/fQ9lL1YT4ihCAOQagmX0ORlak
+2LvOUQ/JOSInlPihz/esfdq/TJYT/kHznzom5erchx0xln7eQgrf4UgEGRNcsl6w
+9prdV/YPfmCw2/pvpJOOP09RdPT3a5DJ+uyrgqb+IDk+YGJzK0C1EYQ5skm6nCUA
+wO4cL1u4ePA7yDPC7sHXXCrhrX50VelsSxdR3PNOxvd1HwBPAZdbsYOu1TN3OmY2
+J2Nik6R7ANb7s8l8+MHd6YqvoCKNhGg8t7MzKOnC/qV7hbXJH88K8VmD2CNkXHGx
+XOto1e8tWSI3jVDNwmVzT3AsQVIqDu5QWv00D/0ekZo6zu8L4IGnORe/IgRjcZWa
+L8kH6I2o5If4H3fTYECioObtBBIUYqOeR7m+GW51tF/o2bq36oE+/g1GEaHX0lvy
+CLlx0CAOXZDRTAxCcNjCX7s5W/X41AAtWB7hiiHCoz0Nrpy08wzOub3RKQi/FItc
+C6ImhjPEYit21bg/U9Nn30GsCIYTlF8Y17/KSBbXgGYv1zlLaqu7nj2LOAD1qjIL
+Ubwu5H7nE+l/dtjk2J96AbqbeQr3XrRGXXdJOaAkPz8L5mqlLl97OEJLW/7QCUj5
+a39QQuwV9+K1xfE87Ed4PpiIZx5XxAZR2A==
-----END CERTIFICATE-----
diff --git a/scrape/testdata/ca.key b/scrape/testdata/ca.key
index 1db2600376c..dc24302eb30 100644
--- a/scrape/testdata/ca.key
+++ b/scrape/testdata/ca.key
@@ -1,27 +1,52 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpgIBAAKCAQEA6VIFTfJalQQtuHOLPOdHSGcAvt1sQfN8S0Rzo3c+hK8w1yqt
-RWq3iSMFFbOqRnm4lWTME8REoQGg4j2lZyuq0xMGQzMcljYSnsYdNpvXR70oLYgV
-BPoUo/+MJiLFohXHdrMR9qNEmigPyvv0UahqBZR8d0fIIVYlv+Iu3zPz5L3WR6VJ
-ExLIH0zXKlaibMHPVQVdmnWiI07mjv92BdbgyAtR8Lahsn2PnGqlzoaSFYxbhkXA
-Sv9UuO7PEb0Hy0t9C6GdcoafVbz5bNlVYJYwP+wt9l+aMppaXBxfMvnWDwT4gQgE
-mpXDnVowjqUORy8AzuAurVq4tkxVfIpZIrDtcwIDAQABAoIBAQCcVDd3pYWpyLX1
-m31UnkX1rgYi3Gs3uTOznra4dSIvds6LrG2SUFGPEibLBql1NQNHHdVa/StakaPB
-UrqraOe5K0sL5Ygm4S4Ssf1K5JoW2Be+gipLPmBsDcJSnwO6eUs/LfZAQd6qR2Nl
-hvGJcQUwne/TYAYox/bdHWh4Zu/odz4NrZKZLbnXkdLLDEhZbjA0HpwJZ7NpMcB7
-Z6NayOm5dAZncfqBjY+3GNL0VjvDjwwYbESM8GkAbojMgcpODGk0h9arRWCP2RqT
-SVgmiFI2mVT7sW1XLdVXmyCL2jzak7sktpbLbVgngwOrBmLO/m4NBftzcZrgvxj3
-YakCPH/hAoGBAP1v85pIxqWr5dFdRlOW0MG35ifL+YXpavcs233jGDHYNZefrR5q
-Mw8eA20zwj41OdryqGh58nLYm3zYM0vPFrRJrzWYQfcWDmQELAylr9z9vsMj8gRq
-IZQD6wzFmLi1PN2QDmovF+2y/CLAq03XK6FQlNsVQxubfjh4hcX5+nXDAoGBAOut
-/pQaIBbIhaI8y3KjpizU24jxIkV8R/q1yE5V01YCl2OC5hEd4iZP14YLDRXLSHKT
-e/dyJ/OEyTIzUeDg0ZF3ao9ugbWuASgrnrrdPEooi7C9n9PeaLFTK5oVZoVP2A7E
-BwhSFW3VdEzQkdJczVE2jOY6JdBKMndjoDQnhT6RAoGBAL4WMO1gdnYeZ0JQJoZd
-kPgrOZpR2DaDa3I3F+3k3enM0+2EmzE70E4fYcyPTLqh62H4LS4ngRx4sK7D7j2G
-9u2EcsDNEXUE+wgzROK7hxtGysTMeiKrg8Hj6nFq53Bqp1s7SESGS/lCDPD398Rr
-hdL5gJyN5waW6uXqJ9Pk+eFHAoGBAKV/YGcV1XTKSPT9ZgxRmM6ghq0qT1umA1Gt
-t0QzBp2+Yhqx/+cDKhynMnxhZEXqoyw6HvJLSny5wSMsYJHeratNxRmFizZOQ2e3
-AdbMppqY0EdDUWnRI4lqExM3de+let4bj6irI3smSm3qhIvJOTCPcu/04zrZ74hh
-AE2/dtTRAoGBAO6bENEqLgxZOvX5NnbytTuuoEnbceUPiIvc6S/nWJPEoGXVN2EJ
-a3OaIOQmknE6bjXIWrHTaXJhwejvPUz9DVa4GxU5aJhs4gpocVGf+owQFvk4nJO8
-JL+QVVdXp3XdrXIGyvXJfy0fXXgJg5czrnDHjSTE8/2POtyuZ6VyBtQc
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+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
+6JKxwi8TRlO01KDcAgtXjSPUI6Wo2zI=
+-----END PRIVATE KEY-----
diff --git a/scrape/testdata/client.cer b/scrape/testdata/client.cer
index aeeca617fdc..8fd1b222d60 100644
--- a/scrape/testdata/client.cer
+++ b/scrape/testdata/client.cer
@@ -1,28 +1,32 @@
-----BEGIN CERTIFICATE-----
-MIIErjCCA5agAwIBAgIUZSocqIiJtB3sMwam1lxD89SYebUwDQYJKoZIhvcNAQEL
-BQAwXzELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
-CgwTRGVmYXVsdCBDb21wYW55IEx0ZDEbMBkGA1UEAwwSUHJvbWV0aGV1cyBUZXN0
-IENBMB4XDTIyMDMxNzA3MDAzNloXDTQ5MDMxNzA3MDAzNlowajELMAkGA1UEBhMC
-WFgxEzARBgNVBAgMClNvbWUtU3RhdGUxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEc
-MBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDERMA8GA1UEAwwIdGVzdHVzZXIw
-ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDigQV8d+V/fgSxqmP3Atvp
-UGGc59d2fGRA61Cqb+Z/dUANAf2GRN4A0p5Nsq8vHcZqdTSbV5vFq6yEEgZ7Exji
-sMiMEdYHIIFGDw/Xwssu0+8u2G8wRvHaxHMYiv2CFsoqNH6UQn0/W9vnzhHmPtPr
-YBVfvl4211c10QgTJrGdtnDpuLdrexhygWYWKFKD4Cow5/uLf669K9aHeslTqHGA
-qOka7kB7Fjx4+kJVPFRrrZA+z6by0vsNpf+iapmQx5WOqOqQ4nQvGpKfIv7d6TQZ
-XsZOrLf/GGeUvY+i46gum1J3q1GQeNG+i/Dl18Fkt0ucurdOwNUCJz79g2Shm5/F
-Lo+0b0uTgGXQ59T/jOWlZUS6GG3UxySC6y4Pm8cgyKJKjjWy4I+/ABU+mtNd3iQG
-SQZHqGjew423/3eRY0Q2nR9m19FLq9wD4eHG7/tBaNdwjz0nJAPRFKONqgZii1sr
-POfA/L0Sskv5qvyHkS9ACMCrmhCCbT7YsAk55Oj7xX0LzvNM/xMqvrr0QaGW61h2
-/txkfKzc7vBnNVG0wvo5xmLW0Iccdf+52nudlxkaaZZ8DzvXG/qcdmX/NNofpT90
-jGP10vp8kwKf43Mv4zgMK2SmOK4M/uWZigiOtTWdIqL2iuyaqPakzIko8pGQmphY
-ZuKYPIrRAg+RYZ1HrSemsQIDAQABo1cwVTATBgNVHSUEDDAKBggrBgEFBQcDAjAd
-BgNVHQ4EFgQUQkOl8D7Cn1gpwoxg1LNKBM+mGnQwHwYDVR0jBBgwFoAUzPUFmeWr
-EmnYeIlKMcrwiwutZhswDQYJKoZIhvcNAQELBQADggEBALQ7dkH4sSnnAU+LRdxf
-SfzyEiG5YHArP0hT3CGOaVDRqftimLyYxTQXU/jI3LG3ai+SuCQiDyrhHvlDCzZA
-gA9FaEI9d06nK8gu27i5PCHNegB8acPBPZdk+FxLU/XGKmbQiYG8Hqssc7C9gG0r
-hiJX4KrqVgdtbxXTaP9p3dIc9N1EXJh8CX9E+QuNS7/E3cx+asPu2PiL+zt4G5tM
-1kLxibnAF6zoXBUN0ap60BjJ+v9mxQYimqY4XEuSUo4RxVh0z19UAxuWEhbuWAvq
-7Zk2AHG0i65w3XNuBPbICp/C9zxzcCd/3AlB6fJCkHYeTTeUUn5jqLNV89XdwjCh
-nOI=
+MIIFcTCCA1mgAwIBAgIUBfrR7Zh/nPF/d+hE+CWsioHX+C8wDQYJKoZIhvcNAQEL
+BQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsM
+IFByb21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9t
+ZXRoZXVzIFRMUyBDQTAgFw0yNjAyMDkxMzIyMzlaGA8yMDc2MDEyODEzMjIzOVow
+NjELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxEjAQBgNVBAMMCWxv
+Y2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJsW5Yv0gtRu
++YnC+H4Bh4h222VjSODMLIERCuvzdJe8PYkibdsI+m4s/jIbS2BnT69b+u+rhRzS
+A2+CeNAjcUn5f/SEFp16DPHesNVWAbu9CbBL56U7ZICUVeQAJAwYe2wOYJb7B6xY
+bA94L6lDNVMTTgTQ+wYwPwWsNry+PWv5GM1mICnem2NoZd5UPZe3QXAHcM15wyAQ
+ohtacFta6FZc4lXYzKaE9E+WOq+H19MUXTrUKKBb8eyAWZLCEO8yHMZxnYUegnKK
+0PtAsg47QhSTzz7J5nmnJKEG2WgDnJZIO3AwZY1okeAACkkgdBkzpENaR+5qziuG
+XERfghCr6fxRVOwbROWsvoWEr2otVo5zg/MaRO6wwUl8MDDIQuAC4M4Wv+eiAYc/
+5s2EjyFbWXheze6a3W1t6TDF2YY7+yk+r/ySb7QFRJW6sHIWpdXqosui1teaYbsS
+tf8HK+AR1QoLUG5pTdgbSe9C7u2FvW9Tk5cq6oQMeiMYKWRs+dzCDf3mTJ/FM6/a
+N/FZEcFjUFwhUIQiLBIPNJqLeYH+zYzLPk5qxu9Q2xIKFlIHb1magppdqHqig1ph
+lOdZfoAtqel3fWDs8JSBnOPp4VzYS5FVF6TwNtDjm+sZqToCd3iCjSfMsxAMJ57H
+jV0YNE3O5kGP5q9+OqMT3tIRFrb/fZazAgMBAAGjQjBAMB0GA1UdDgQWBBSmQ0t1
+duV49iWRxN8B4mD/ty4lvjAfBgNVHSMEGDAWgBTyUGwlMISJy038NEjQ+Lnj86wk
+IjANBgkqhkiG9w0BAQsFAAOCAgEAY8hMHNy3NrcqEp8llk62H+KZtDvViIr+vZEE
+7mqkxpZEmMXYvqR0QZPUoEvi+mxLSl7naLSqKLB+By8zc7UPH8D09VxbXKM/P/nn
+qOxe8jnLM6UcNGyv8vfvqC37pllbQ0dJCF7bcMSWEcaYhgw3SROv9fPYGcT3Gaun
+oxWjz1+g+zlr0FS178EEtryhdERBhZs/Csum9WheQ18wMDKzjLbNz36I1aAhKaww
+oX+SMdHPE/y/KFuQmWlB2rVfLlLc8FLXaQeW4DR0GQPE6TUSyvgEQQOiaCGMeUFW
+GEXZVjM+VpJdrdi5BRDvx6gbUzcvTTdogrEgpz1Ycx6TcsijPV5qRjU+xnQMBVeL
+GZaA+SvePKHYPxb1MHmITTYXeSMONMtz7LCAGWRR/4XbUVBTpIF8Os+n34pIutR0
+KXKHS3JSleYXaYFSAsGjvxn5PhRoXh50LyRKSKo+nuSN09JPNyVj7UHjVRIkeN6L
+7xbrAz+SdBHtBWBA6SfcWPk5Af+wMOgIpnGVcaoft5CqP9OyigQvVfvz+1FklC0u
+aI1qBZfklzM/TwFywOF7U5bDT8m+FvNNHECt6i9GHRvPyFB71EqzzE03vDZ5AWTO
+6/YveeyT7lauhPcDKxvC1eW9/iEi4RjdK0Wdh8cx4Jg+Fuy8i1QP0fU9/koOZUFw
+Pkab9qQ=
-----END CERTIFICATE-----
diff --git a/scrape/testdata/client.key b/scrape/testdata/client.key
index e584b7eada5..0a4ed6662f5 100644
--- a/scrape/testdata/client.key
+++ b/scrape/testdata/client.key
@@ -1,51 +1,52 @@
------BEGIN RSA PRIVATE KEY-----
-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
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCbFuWL9ILUbvmJ
+wvh+AYeIdttlY0jgzCyBEQrr83SXvD2JIm3bCPpuLP4yG0tgZ0+vW/rvq4Uc0gNv
+gnjQI3FJ+X/0hBadegzx3rDVVgG7vQmwS+elO2SAlFXkACQMGHtsDmCW+wesWGwP
+eC+pQzVTE04E0PsGMD8FrDa8vj1r+RjNZiAp3ptjaGXeVD2Xt0FwB3DNecMgEKIb
+WnBbWuhWXOJV2MymhPRPljqvh9fTFF061CigW/HsgFmSwhDvMhzGcZ2FHoJyitD7
+QLIOO0IUk88+yeZ5pyShBtloA5yWSDtwMGWNaJHgAApJIHQZM6RDWkfuas4rhlxE
+X4IQq+n8UVTsG0TlrL6FhK9qLVaOc4PzGkTusMFJfDAwyELgAuDOFr/nogGHP+bN
+hI8hW1l4Xs3umt1tbekwxdmGO/spPq/8km+0BUSVurByFqXV6qLLotbXmmG7ErX/
+ByvgEdUKC1BuaU3YG0nvQu7thb1vU5OXKuqEDHojGClkbPncwg395kyfxTOv2jfx
+WRHBY1BcIVCEIiwSDzSai3mB/s2Myz5OasbvUNsSChZSB29ZmoKaXah6ooNaYZTn
+WX6ALanpd31g7PCUgZzj6eFc2EuRVRek8DbQ45vrGak6And4go0nzLMQDCeex41d
+GDRNzuZBj+avfjqjE97SERa2/32WswIDAQABAoICADejebuBf1Ql8fkVzN8rvktb
+VK9ldJZNOWQeUJxAjaIIAs2JX/72FB3ln1Yri5msxp4jMf28u3cQ8vGUzbHiHTkM
+PPbkUlaxnCZDnY4TmnCXS3wHZzXUfmRQkxXGZSg/ujuUVtujeGfAmxfbpsGjHmTM
+5q78qCnasilfVI3W9CMhzN+XVU+gEIATyoP+FdCxilTeHn5gwftlbDrC8c8caIDf
+NsXUjurohNtuimRBqFCOHDpINcD962dMzpXDcJ7XjBI3XWsN/H+KRJn25koLwVOv
+iWi9tyUKrS3lzqYtsYYKqORBQJWAH+FMMmR0s6H88F/Hakni4E8mF0DiQL+pZTo0
+U58mKIUL/hG6zNz6uxBMi+HLZCcXwE/NTEVdXs8PmCShBt1LWs8e35KWuUPzRMSk
+uPIGeUKWknHpAb8RZ6QuD59KWuMaC65AsYX57e5ZRlTVd9oB8hlWOb67an4MCDVG
+/+ep0Jrw2a26PrCSDkni73/4vLfU7zMoZdIUNUafzwBdPcI7TDlTZ4ZzN+LeIeWX
+FxjC7LdGeHZ1hdg5Y8uM910Ai/yMa7b08b21bekSpa8f77J2YKePGKG/T7MQbsNQ
+eBeaJrBylPU+D/k9F1Kzugfc7SucSQxPk0JEBJjXtPjTDj7I25OV+wOG6C32sO0G
+YN9xRpCzSDiSxvPC+YORAoIBAQDUUSoHMTrA/E2uklu1MpZjrZ0zIvpaL7J96l2h
+/lGdmdz+LHIUtqdRSxDv5eJ4BC8ENG2BfbJUFW81PoWxOFWv0O1QByIYz4G+VFw4
+51gSTHWkVoK/9npLV5YBsu/cTtT5dAz58zR6tIxpExYFUx2bbRcsiKTp8UIG3T9i
+4sLKwQBBdyNfSWzMt3fLgY5D9vJfenZZ6HDy3DcJw7mVaM0B3be/urVAaPD39Ynf
+LIiqSdWnW4hPUfoHBW5Q0WBNYGLLw0VoM+71BTHwn/NmjrX6QFHaAE7SeuinbhI/
+BSOCc823jbzIJyWjBbCNuUr2fVdLHN6cAItnPhrg8JBTrddjAoIBAQC6/4c9kfxk
+daNrZt18wFBIdFIngTjBefYu1ApYm6AL7PP9jSVbd29xc2gmUh8BubXOiufldf8q
+WCcHJQKnGHTYF37HCs+58CPDp+uluZEqAiK2ZaOa3kjkeOhILVSX6HW439SWTdIk
+fQicFb9rZD0dwtnzPG/a3LfOKnp1LZqZbnLZJTc5ZLMK92zuSSWxCYHJqxGIduk3
+ZQZ7lQXTFJysq9ficSpoa5pdV5pMpJZoYdHaW+ytt4KI6Okwd9VI0nW+EFpUlIyq
+n5znk3Z3SkKGurFdDUB/hKRMneGUedzgokb3yObZjdNZ/u7u4nZPxh3TrpHo38ei
+3KKp5s7aOaxxAoIBAQCw6tkMmTcOLK9Gcmq8uGSctsSxIcpfcDNZvPs8y0CTBO0j
+V0HQhMszcEuyu2pU+5d5933wUx9P9XRvd6PLotez43J8JxWAexjv0jfuqse2p8O3
+pubYsrgBJAC5dbNtbrsFCnDtrnziaqQ9wkutMC8Rnnua/ln9Hq4YLjBtY+tRLDXc
+VzxAYFyq0Y6fI1u6woIAkXkhPhEwLdQm7NMt7uA1V92PhDMYctmopQ+3ydIvo8rG
+4/zXq8WeKCZebbnDgDeS9ypUxEGwJh4RFheqM+zrlMEf2PXVadmH+q51mQCX6YtY
+EmFmn0g7abhOwEH410TwMCRG9iUzaIrZOVvqfodlAoIBAHFW83eEBkA1dQlh3ZkB
+Tye7KRg8oFPUQjx71JGEMetIgVIKvLvFlkxjMJsZZyW6k9FOK+POMwxNRcp0yjjQ
+//EBvJuTl/gQ7vxlyNQ3tx6JENUQoar6U5/3EIK+xukTwlZ9g/Jd1KK9DfzcyZqj
+tM9XDJb66Kj04osZAAQJ0gxw/zdR8TjeKg7ZjLKYrzmwk3PSNdxKhmxG1TkOR+t6
+MMQPm9fp01Ra88Ljl+ggUfGOaI067icUdQ/aa4wu9Z0fwrGiY72kE+ZOu+E4ZbND
+1TKn8Vx+7brcgGDXyKQfgJq+gNkqcZEm/xUrCVLM+/y6DdYBlvpYuD2kEQt9k559
+GmECggEAEMRQ+xP2Hwh43Jnc4jk3AHADoaktGwvlSm9SdWYUO4H14EF6wjr5rm5q
+ZFDNqlZDU1+RACLxZ3QLbyM4i86Hfu1+9cWkQ1gRzzHjiSJK4SKIjmIo3IJmVV7D
+vEP4MA0Ejwg5i0Kaxmim6aVptcdkQGR4MX9ecnRNQ+fd1rD5s5SRlL4hnWwwOOGe
+HXP4Zokqsttd1MHGVxCqwGpnmNde3njLRrKpAcSlLMqSkNlGwHHxvwp0NVlLFXRE
+0AZA1vLLlVgDxSTDge/ilCXT8t4Xb4VrX7FSfOe2JMY7aU9S/OTswnTpN1LtXPrS
+cS+ikX2I8zmR6ojdPpzlpvyeovo5lQ==
+-----END PRIVATE KEY-----
diff --git a/scrape/testdata/gencert/README.md b/scrape/testdata/gencert/README.md
new file mode 100644
index 00000000000..05e3b25c964
--- /dev/null
+++ b/scrape/testdata/gencert/README.md
@@ -0,0 +1,11 @@
+# Test certificate generation only
+
+This directory contains tools to regenerate TLS certificates used by **scrape** and **tracing** tests only. It is not built or tested by the Go toolchain (Go ignores `testdata`).
+
+When test certs expire, from the **repository root** run:
+
+```bash
+bash scrape/testdata/gencert/generate_certs.sh
+```
+
+This updates `scrape/testdata/*.cer`, `*.key` and `tracing/testdata/ca.cer` with 50-year validity certs.
diff --git a/scrape/testdata/gencert/ext_server.cnf b/scrape/testdata/gencert/ext_server.cnf
new file mode 100644
index 00000000000..a9f71d0a6c1
--- /dev/null
+++ b/scrape/testdata/gencert/ext_server.cnf
@@ -0,0 +1,2 @@
+[v3_req]
+subjectAltName = DNS:localhost,IP:127.0.0.1,IP:127.0.0.0
diff --git a/scrape/testdata/gencert/ext_servername.cnf b/scrape/testdata/gencert/ext_servername.cnf
new file mode 100644
index 00000000000..6f5676483ff
--- /dev/null
+++ b/scrape/testdata/gencert/ext_servername.cnf
@@ -0,0 +1,2 @@
+[v3_req]
+subjectAltName = DNS:prometheus.rocks,IP:127.0.0.1
diff --git a/scrape/testdata/gencert/generate_certs.sh b/scrape/testdata/gencert/generate_certs.sh
new file mode 100644
index 00000000000..6391406f9ce
--- /dev/null
+++ b/scrape/testdata/gencert/generate_certs.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+# Generate TLS certificates for scrape and tracing tests (50-year validity).
+# Run from repository root: bash scrape/testdata/gencert/generate_certs.sh
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+ROOT_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)"
+cd "$ROOT_DIR"
+
+DAYS=$((50 * 365))
+SCRAPE_TD=scrape/testdata
+TRACING_TD=tracing/testdata
+GENCERT_DIR=scrape/testdata/gencert
+mkdir -p "$SCRAPE_TD" "$TRACING_TD"
+
+# CA
+openssl genrsa -out "$SCRAPE_TD/ca.key" 4096
+openssl req -new -x509 -days "$DAYS" -key "$SCRAPE_TD/ca.key" -out "$SCRAPE_TD/ca.cer" \
+ -subj "/C=US/O=Prometheus/OU=Prometheus Certificate Authority/CN=Prometheus TLS CA"
+
+# Server (localhost, 127.0.0.1)
+openssl genrsa -out "$SCRAPE_TD/server.key" 4096
+openssl req -new -key "$SCRAPE_TD/server.key" -out /tmp/server.csr \
+ -subj "/C=US/O=Prometheus/CN=localhost"
+openssl x509 -req -days "$DAYS" -in /tmp/server.csr -CA "$SCRAPE_TD/ca.cer" -CAkey "$SCRAPE_TD/ca.key" \
+ -CAcreateserial -out "$SCRAPE_TD/server.cer" \
+ -extfile "$GENCERT_DIR/ext_server.cnf" -extensions v3_req
+rm -f /tmp/server.csr
+
+# Client
+openssl genrsa -out "$SCRAPE_TD/client.key" 4096
+openssl req -new -key "$SCRAPE_TD/client.key" -out /tmp/client.csr \
+ -subj "/C=US/O=Prometheus/CN=localhost"
+openssl x509 -req -days "$DAYS" -in /tmp/client.csr -CA "$SCRAPE_TD/ca.cer" -CAkey "$SCRAPE_TD/ca.key" \
+ -CAcreateserial -out "$SCRAPE_TD/client.cer"
+rm -f /tmp/client.csr
+
+# Servername (prometheus.rocks for TestNewHTTPWithServerName)
+openssl genrsa -out "$SCRAPE_TD/servername.key" 4096
+openssl req -new -key "$SCRAPE_TD/servername.key" -out /tmp/servername.csr \
+ -subj "/C=US/O=Prometheus/CN=prometheus.rocks"
+openssl x509 -req -days "$DAYS" -in /tmp/servername.csr -CA "$SCRAPE_TD/ca.cer" -CAkey "$SCRAPE_TD/ca.key" \
+ -CAcreateserial -out "$SCRAPE_TD/servername.cer" \
+ -extfile "$GENCERT_DIR/ext_servername.cnf" -extensions v3_req
+rm -f /tmp/servername.csr
+
+# Copy CA to tracing testdata
+cp "$SCRAPE_TD/ca.cer" "$TRACING_TD/ca.cer"
+
+# Clean serial so next run doesn't conflict
+rm -f "$SCRAPE_TD/ca.srl"
+
+echo "Generated $SCRAPE_TD/*.cer, *.key and $TRACING_TD/ca.cer"
diff --git a/scrape/testdata/server.cer b/scrape/testdata/server.cer
index c7608c38127..08a0c0658b8 100644
--- a/scrape/testdata/server.cer
+++ b/scrape/testdata/server.cer
@@ -1,22 +1,32 @@
-----BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIUIcqjmIGMLSIlEGcSinhaw9+fYWowDQYJKoZIhvcNAQEL
-BQAwXzELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
-CgwTRGVmYXVsdCBDb21wYW55IEx0ZDEbMBkGA1UEAwwSUHJvbWV0aGV1cyBUZXN0
-IENBMB4XDTIyMDMxNzA2MzQ1MloXDTQ5MDMxNzA2MzQ1MlowVjELMAkGA1UEBhMC
-WFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UECgwTRGVmYXVsdCBDb21w
-YW55IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAxCEfTBqVmUD4bLlkHdjPPFm1ruaFNfc/7IF5DobrKt6LgfuC
-/4xMImPmpQFz4FJy1ryWgopRBaOimmPKHi3PxrCRMPmwTJ50Tv8bcNLuYuCbHQ+y
-XCquRcUFCGb8LZ9pl9I7r1Nny67V2AKaYZ70rZeo+dHp+716C0ukrxFPSz8LHThs
-Wdo9LR5zKP7ersDHMOwfzhnUo+jgseCo1aUeoWxA+of7tb1qOEXqWc7gCsQMncq4
-sOWCsQ3MKwNpuWzRTZexxwEnM/4uz6JDAx8qnHYhJAMeqeKilIgLD6w+5+IC/44a
-ecbqsYZZCNSy2p/DgOdTgNm+StwRagZrp+rbqQIDAQABo1MwUTAPBgNVHREECDAG
-hwR/AAABMB0GA1UdDgQWBBQCsrwnq5c2CYe44tc2i1RyvWX0FDAfBgNVHSMEGDAW
-gBTM9QWZ5asSadh4iUoxyvCLC61mGzANBgkqhkiG9w0BAQsFAAOCAQEA4/7pIiWV
-5Xc6XBPZIlc8+cmcDP56EIqq5VIBkB6NMdXP8nBbnga0c8o+owhk3za9A8IS7KQ/
-9+rMRPahPHrQFK44/6NiHqARTT9Im32vsH5Dgnl1+Ec2Ni3j+WRB0z3bV/T46Rsj
-yVQhJI8FLiKR7hf9VFao46RBKFhi7kT7y2MeelZCfLB6lJiMmINKn9c4ElFXrIHC
-RVgdWEZnpalRhADRAIItWj6ynCtD9z0Ohe1JGU5C0RlqMruj6ghtcf5SBujnRhRW
-OUbP59kYS/SC1Kos0sfZAqtyRKIrbc6AEbUM9dVIywm3GIo+oMMfxlxeWOnDgrCE
-HM7RCqDVnA7SNw==
+MIIFkzCCA3ugAwIBAgIUBfrR7Zh/nPF/d+hE+CWsioHX+C4wDQYJKoZIhvcNAQEL
+BQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsM
+IFByb21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9t
+ZXRoZXVzIFRMUyBDQTAgFw0yNjAyMDkxMzIyMzhaGA8yMDc2MDEyODEzMjIzOFow
+NjELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxEjAQBgNVBAMMCWxv
+Y2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMIXkQQd9gyT
+JRWqfcpDVp5PD6fLjHYAQ3d4dYBgXUJZhknweSUkskfuh4jYmrgROyFx2aIdxcH8
+lDfCc2mIo47Up4lj0JgillS1fs9ZKJjvpeS5PHYIgRX0pYXcMBWQhG5JSr9xY+wq
+XfrT+pUIEPbn2wxPIBBamo7C+TBxadWiKGdI7qT8KhJ75FxGy7/IKOUeyS+36QKJ
+2DCpA5O4xWzO5T2shBbGw/ijXKBnjNqn1jDoHC0bFI3WnieZ8/TX5fbDdlVOb3lx
+b5M9aosbTbLeBk5Q/9JgIYOCuNgxIgc4qVP+7qs7SLu47FfkKt8ZHE90wcrV4m4q
+65ykNadUOj+bI4gF36dOVSOWV0tUVgNoA2uT2lXnDvk3A5SFOqd+MzAt0tb7UPEj
+xDH5uU96Gv44VoaVOEq8AC1sehEo5H+Hjd8OzG9ta2Ff1sXSI7yu8hCEUznebP5T
+dWVZVMzsYrYwvm+xeNDEC8yw76M8bGL+f5CvttOpu9TuzDhbD6DN6ZZ7ON51m46A
+2JOfmmKQioFTrQBZBbOqjG+zsX5mSzkTfPub226tz6foe8JzmwrM7gI1p9LSNeNK
+AFjwwVPeiNdsPRNMwDlEZWdKbEzrNmdRPRjCNlrKnljLfjPgd3TR/J6bZT0dTDNY
+F3XwsJ/p0ITHpoGDxsbPh81sRB+7M89JAgMBAAGjZDBiMCAGA1UdEQQZMBeCCWxv
+Y2FsaG9zdIcEfwAAAYcEfwAAADAdBgNVHQ4EFgQUXmhvFyjb/qe890Lq0VX8zrML
+zlAwHwYDVR0jBBgwFoAU8lBsJTCEictN/DRI0Pi54/OsJCIwDQYJKoZIhvcNAQEL
+BQADggIBAIloPfMlpTliT/SruENv047rZmW5Dxe5DJ2kV6v0NdGjydXVmKzzi0Ra
+UXPfJZuYZiOjooSKXdNPRJehZGfegoVugq37yQTMkVo0NL0kj+nBbTblvMFGnEdL
+64ZEU8hqpWZiVFooaGCefRadBGxtKFWxeY3whweYmgQxhAOOkBekZyS7xQwhg8m5
+2kx8xzD3h3cnzZH6kv/vUBSWFvM0DbPOLcQTv7vfEMRPmk6qQXYE0MQ7qRWXming
+66ygHdNfNzjFTHosOxs6F+E7gKYJNUadKx8mql2PLOrr4LH3c68Yh5nn2VUnGfbI
+Ur/ZuFVS2ESm+pFlEI9/11BHQyYOiKewKi6jMRArj/kr0slURNuTTWj+Olzd+BW4
+le5ePG4gd//OQsoTWxEhdi0XvWZOxq0l9/2jonF0HgiZTABd9OwMb0I73L2ZLW7r
+zE8UVpD+wzg7u6UyL7hR19xIGHxWM094Q/KE5hIXaYN3FJEaA0rR7R8DY55oPIdA
+AZa2Vdp9ysB+7DN32/SJ8VOYFE1KEj9vkslhA+WBScs9DU9HNGnc1iy/b6D9ZC4D
+9qcQv02hBp6RW5ZAOib06gXnXmeyXAdP37dr7npNG237ezAqPZOEh/KXyECvCKsj
+wm68Oy7zhQd2IuSn2b+SjbL4GKPrlGRyhL69N0hHZqwIcBO+EXZN
-----END CERTIFICATE-----
diff --git a/scrape/testdata/server.key b/scrape/testdata/server.key
index 2266b015008..7500adb451e 100644
--- a/scrape/testdata/server.key
+++ b/scrape/testdata/server.key
@@ -1,27 +1,52 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAxCEfTBqVmUD4bLlkHdjPPFm1ruaFNfc/7IF5DobrKt6LgfuC
-/4xMImPmpQFz4FJy1ryWgopRBaOimmPKHi3PxrCRMPmwTJ50Tv8bcNLuYuCbHQ+y
-XCquRcUFCGb8LZ9pl9I7r1Nny67V2AKaYZ70rZeo+dHp+716C0ukrxFPSz8LHThs
-Wdo9LR5zKP7ersDHMOwfzhnUo+jgseCo1aUeoWxA+of7tb1qOEXqWc7gCsQMncq4
-sOWCsQ3MKwNpuWzRTZexxwEnM/4uz6JDAx8qnHYhJAMeqeKilIgLD6w+5+IC/44a
-ecbqsYZZCNSy2p/DgOdTgNm+StwRagZrp+rbqQIDAQABAoIBACeOjqNo0TdhtTko
-gxrJ+bIwXcZy0/c4cPogeuwFJjU1QWnr8lXcVBazk3dAPcDGoEbTLoARqZm7kTYW
-XlOL5dYrEn2QPpCVfNvZ9AzjXhUvO9m2qsCQEyobPJKfQslo14E5c7Q+3DZmgtbY
-X47E4pCIgBoyzkBpzM2uaf6tPRLtv8QcLklcf7lP5rd0Zypc325RR6+J5nxfCoFp
-fD3sj7t/lJLS8Xb6m4/YFjsVJ2qEAelZ086v8unMBEj324Vv/VqrkPFtFNJKI+Az
-Pd9xFDBdsKijBn1Yam9/dj7CiyZYKaVZ9p/w7Oqkpbrt8J8S8OtNHZ4fz9FJgRu9
-uu+VTikCgYEA5ZkDmozDseA/c9JTUGAiPfAt5OrnqlKQNzp2m19GKh+Mlwg4k6O5
-uE+0vaQEfc0cX3o8qntWNsb63XC9h6oHewrdyVFMZNS4nzzmKEvGWt9ON6qfQDUs
-1cgZ0Y/uKydDX/3hk/hnJbeRW429rk0/GTuSHHilBzhE0uXJ11xPG48CgYEA2q7a
-yqTdqPmZFIAYT9ny099PhnGYE6cJljTUMX9Xhk4POqcigcq9kvNNsly2O1t0Eq0H
-2tYo91xTCZc3Cb0N+Vx3meLIljnzhEtwzU9w6W5VGJHWiqovjGwtCdm/W28OlMzY
-zM+0gVCJzZLhL0vOwBLwGUJvjgfpvgIb/W+C2UcCgYB5TJ3ayQOath7P0g6yKBfv
-ITUd+/zovzXx97Ex5OPs3T4pjO5XEejMt0+F4WF+FR8oUiw65W5nAjkHRMjdI7dQ
-Ci2ibpEttDTV7Bass1vYJqHsRvhbs7w8NbtuO9xYcCXoUPkcc+AKzTC+beQIckcj
-zZUj9Zk6dz/lLAG3Bc3FgQKBgQC+MmZI6auAU9Y4ZlC+4qi4bfkUzaefMCC+a6RC
-iKbvQOUt9j+k81h+fu6MuuYkKh6CP8wdITbwLXRrWwGbjrqgrzO2u/AJ+M07uwGZ
-EAb8f+GzROR8JhjE4TEq6B/uvmDIOoI1YFF2Rz4TdjQ0lpJzrAT3czjjJy68+8is
-XFhJ8QKBgQCMPpB7taMLQzuilEGabL6Xas9UxryiGoBHk4Umb107GVWgwXxWT6fk
-YSlvbMQHCgVeaJe374Bghyw33Z3WilWM1fCWya/CxXlw9wakjQHiqFCIOCxdgosX
-Sr35bRFWJMnHXD+jD0Vr8WrtbGzFSZb3ZrjT6WhWRIGCHcaMANN9ew==
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+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
+RU+Wvun2W8lAJNdMpwDLw1xj4h6G8Q==
+-----END PRIVATE KEY-----
diff --git a/scrape/testdata/servername.cer b/scrape/testdata/servername.cer
index d1aea98b12e..5ffdc8f40d0 100644
--- a/scrape/testdata/servername.cer
+++ b/scrape/testdata/servername.cer
@@ -1,72 +1,32 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = XX, L = Default City, O = Default Company Ltd, CN = Prometheus Test CA
- Validity
- Not Before: Aug 12 19:58:32 2020 GMT
- Not After : Nov 27 19:58:32 2041 GMT
- Subject: C = XX, ST = State, L = City, O = Prom Test Inc., CN = Test
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:ca:58:23:ba:98:7f:ce:08:b5:03:62:92:d0:8c:
- 3f:ef:7c:dd:a2:6e:38:f4:6c:3e:0c:04:c0:a4:bd:
- 6c:29:85:13:01:50:64:d2:e0:e9:11:92:30:7e:e6:
- 04:03:3e:91:6f:30:60:cd:d6:30:d7:47:26:0c:20:
- c3:6f:49:4d:4c:11:78:57:4f:1b:18:05:dc:61:e2:
- 64:2a:72:07:45:9a:6b:4c:fb:3b:3d:60:1a:8b:58:
- c4:d0:7e:a9:87:e4:e1:b8:78:21:3e:4b:bb:38:07:
- b2:4e:f6:32:b7:98:b4:8e:45:36:be:02:d2:3d:af:
- 70:2d:c8:82:7e:fc:2d:77:a4:b5:82:cb:61:7c:49:
- 7c:62:c2:87:88:45:44:fb:98:78:9c:b8:f3:a7:c3:
- 08:80:60:4d:3e:1c:d0:bf:05:bc:c7:a6:e9:d3:08:
- 6e:57:33:85:44:74:75:54:17:8a:e6:bc:46:d0:b6:
- c2:55:4d:d0:e6:83:d5:48:bb:91:4e:48:d0:ea:f3:
- 6d:9b:fa:99:3d:3c:36:98:02:e3:a5:15:2b:37:16:
- c0:e3:9d:da:13:7d:df:a0:91:db:de:01:7c:e5:b4:
- ad:eb:b1:7b:82:51:70:c3:9b:2a:1a:dc:53:8a:3b:
- bc:b7:c8:0d:cb:b5:15:d1:13:a5:92:80:bb:a3:5a:
- 4c:b3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Alternative Name:
- DNS:prometheus.rocks
- Signature Algorithm: sha256WithRSAEncryption
- 00:12:d7:ac:b7:ef:64:83:22:bb:34:3b:48:1e:c1:2c:e7:57:
- fd:cd:0e:9a:fa:91:7c:f2:a7:72:45:ac:9c:8d:1b:ef:eb:5b:
- 62:5a:c3:a3:f2:53:75:23:25:6b:6c:ec:6e:c0:de:92:f6:11:
- 17:93:6d:b6:0d:e4:13:a3:eb:c5:ee:33:2e:f9:97:73:65:d2:
- b2:23:c0:87:63:67:02:78:a4:28:4b:df:f2:c5:47:dc:49:27:
- 06:53:12:d7:6d:53:95:eb:01:e3:58:6e:0c:44:43:30:bc:b0:
- d7:0b:14:c7:81:8e:0d:a3:44:ee:2c:89:32:ab:8d:21:54:ed:
- 8d:9a:fb:2f:f5:53:1d:ec:43:d4:ef:76:c7:5b:dd:3c:54:df:
- 29:f7:64:34:e9:7e:98:49:1b:26:3c:52:77:43:70:f8:2c:8c:
- 2f:af:24:cc:81:58:be:8d:b9:6e:2e:e8:75:9a:27:6e:24:05:
- eb:dc:df:c6:23:93:5b:f1:03:c6:0a:4d:ad:d7:0e:cd:bc:e9:
- 6e:38:c7:7f:ba:af:1b:91:1c:37:77:b6:0c:4d:81:da:04:3a:
- eb:4a:c4:8a:41:29:9f:45:a0:0f:1b:d1:32:28:48:77:5d:f4:
- 3a:71:7d:87:b0:98:c4:c3:94:e1:cf:65:cf:12:e2:90:02:48:
- a8:b7:a1:5d
-----BEGIN CERTIFICATE-----
-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
+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
-----END CERTIFICATE-----
diff --git a/scrape/testdata/servername.key b/scrape/testdata/servername.key
index 95d6aca525b..89808c2305f 100644
--- a/scrape/testdata/servername.key
+++ b/scrape/testdata/servername.key
@@ -1,27 +1,52 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEogIBAAKCAQEAylgjuph/zgi1A2KS0Iw/73zdom449Gw+DATApL1sKYUTAVBk
-0uDpEZIwfuYEAz6RbzBgzdYw10cmDCDDb0lNTBF4V08bGAXcYeJkKnIHRZprTPs7
-PWAai1jE0H6ph+ThuHghPku7OAeyTvYyt5i0jkU2vgLSPa9wLciCfvwtd6S1gsth
-fEl8YsKHiEVE+5h4nLjzp8MIgGBNPhzQvwW8x6bp0whuVzOFRHR1VBeK5rxG0LbC
-VU3Q5oPVSLuRTkjQ6vNtm/qZPTw2mALjpRUrNxbA453aE33foJHb3gF85bSt67F7
-glFww5sqGtxTiju8t8gNy7UV0ROlkoC7o1pMswIDAQABAoIBADZ5vETEQcRKe9FJ
-fJVA7QWg7FqKqjLD4YCC1wqDJNeYyCEWb86GVrkwTnYbnwDwm17/+0/vVn7e3NNv
-Dq6rYXAVU/zNg1HYYhjIRodW47ZNeI3lJXHEqeDSKUqojyPS7yIm1WxcHy9agxrX
-FZhwOEwFPlOxlsCcturcjKV7ZxJKftiWoyPodQLjlEmNoD/MQ6Obuge1dQZRLwCk
-/R+EcTWHN4A+rpnZLoKFEaw5p7DTjdKSGOu+EFB+lrEg5kTOCN/kR0PYGnDH1Ygd
-6/DmP0xiPpT2pKudTtI7f+QoPtff+GJ47Xy1oYks/cXUJiJbtCT9wyKQtR5mZRUc
-ruNWBCECgYEA9e87HbUaMA4tAqaur684RTFAqpDjDBB8tDAxbnuQrv6947odgQHu
-YcBAneL2HIvUMuusI0X52nGRwt+qOSXiS1WQwA1P44qR28VYxLIkgK1xMEpezClU
-xIavMzwZtmjCZ84Q6H/qvVuqa5MuE4pe6O9vnb4cUWF280ngmf+zViUCgYEA0qAx
-qzh6cUBSF6PAV+7QKXB4YLfvLloX3qwC+qkdaGjacREb7URxTKs1lHLhpmHwoPN+
-aXccxNs443Z67AK68N2RAOVw3z1IPTmSUzL7HCKqzZtRXsj+Lm8bj9sRzvWuE7RU
-X2QW+9ppAvjwwrhG0vXCs3yua2usMyHjr6ekw/cCgYBSut0qCyf6Dmq5v5R36PuG
-2yCjwAWAo3Mvsh6OyeZL18nM92jBYwLrwx55fkXIKImDb6ACZaG9CAM+iLrcapAL
-Q4dj85ZyNsUGJwbLdBmvZ6jx07K7/xNS4PPCym7j2625+anabF1swY88jNAtJpjy
-xsjHSZKBFcZL5Qg3BbswOQKBgHigD/IMRWtot9scCAMUHRkudXKGxK9aH4OCJa6i
-fdoW+st4TfMjmHOdNfFPndWpD6NN8B68fbhsCHeUmi9iHOfnLK1DudHQCfguaZPG
-hbOGUyWvhvluyMuVDEbl4pwRbeGRDCUZcGRKoIt4QIJ0APO+lgQvKsEQiC08gmZN
-73nfAoGAKXVVV7dN59gohMTRWsOSGP+YLEj8+rGZZYNKCLVTol0VQ7T30tA0P4Cf
-Dw9oLKGnDdgTtJA6Fsms858B6ANC+6Hxd9LG0ecOevKMBFHuWPm56Z0ofDzoPVBW
-eDuHeR5xF0xq5PIFl/mIJJ1NK0p1Do9gwqEEIftdNyrcGefGdXk=
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+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
+DwxK05rn1WCRpFriUWR/zHDDLgA9BQ==
+-----END PRIVATE KEY-----
diff --git a/tracing/testdata/ca.cer b/tracing/testdata/ca.cer
index 86f627a9032..25ee877ec42 100644
--- a/tracing/testdata/ca.cer
+++ b/tracing/testdata/ca.cer
@@ -1,22 +1,33 @@
-----BEGIN CERTIFICATE-----
-MIIDkTCCAnmgAwIBAgIJAJNsnimNN3tmMA0GCSqGSIb3DQEBCwUAMF8xCzAJBgNV
-BAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
-Q29tcGFueSBMdGQxGzAZBgNVBAMMElByb21ldGhldXMgVGVzdCBDQTAeFw0xNTA4
-MDQxNDA5MjFaFw0yNTA4MDExNDA5MjFaMF8xCzAJBgNVBAYTAlhYMRUwEwYDVQQH
-DAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxGzAZ
-BgNVBAMMElByb21ldGhldXMgVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAOlSBU3yWpUELbhzizznR0hnAL7dbEHzfEtEc6N3PoSvMNcqrUVq
-t4kjBRWzqkZ5uJVkzBPERKEBoOI9pWcrqtMTBkMzHJY2Ep7GHTab10e9KC2IFQT6
-FKP/jCYixaIVx3azEfajRJooD8r79FGoagWUfHdHyCFWJb/iLt8z8+S91kelSRMS
-yB9M1ypWomzBz1UFXZp1oiNO5o7/dgXW4MgLUfC2obJ9j5xqpc6GkhWMW4ZFwEr/
-VLjuzxG9B8tLfQuhnXKGn1W8+WzZVWCWMD/sLfZfmjKaWlwcXzL51g8E+IEIBJqV
-w51aMI6lDkcvAM7gLq1auLZMVXyKWSKw7XMCAwEAAaNQME4wHQYDVR0OBBYEFMz1
-BZnlqxJp2HiJSjHK8IsLrWYbMB8GA1UdIwQYMBaAFMz1BZnlqxJp2HiJSjHK8IsL
-rWYbMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAI2iA3w3TK5J15Pu
-e4fPFB4jxQqsbUwuyXbCCv/jKLeFNCD4BjM181WZEYjPMumeTBVzU3aF45LWQIG1
-0DJcrCL4mjMz9qgAoGqA7aDDXiJGbukMgYYsn7vrnVmrZH8T3E8ySlltr7+W578k
-pJ5FxnbCroQwn0zLyVB3sFbS8E3vpBr3L8oy8PwPHhIScexcNVc3V6/m4vTZsXTH
-U+vUm1XhDgpDcFMTg2QQiJbfpOYUkwIgnRDAT7t282t2KQWtnlqc3zwPQ1F/6Cpx
-j19JeNsaF1DArkD7YlyKj/GhZLtHwFHG5cxznH0mLDJTW7bQvqqh2iQTeXmBk1lU
-mM5lH/s=
+MIIFtTCCA52gAwIBAgIURZkhZmCjjZKxCkrNyio+7BZeWHUwDQYJKoZIhvcNAQEL
+BQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsM
+IFByb21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9t
+ZXRoZXVzIFRMUyBDQTAgFw0yNjAyMDkxMzIyMzhaGA8yMDc2MDEyODEzMjIzOFow
+aTELMAkGA1UEBhMCVVMxEzARBgNVBAoMClByb21ldGhldXMxKTAnBgNVBAsMIFBy
+b21ldGhldXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRowGAYDVQQDDBFQcm9tZXRo
+ZXVzIFRMUyBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMFTRu4F
+Mpj+5U4/o7jaMxwrgm6tgYram3Zwle1AUSnJoIR/waZ77Z0r3C0HBnvaCWfL4uRJ
+N7bWtHNkHKAw/GilAXya1R0CQHWEemtYAJ8Se30v8lRk87uqu3nRSn5aEz14qwLF
+492hM3gmE4GWgw2KimEPFAy8cquA5ils8rIvf7HAPfH1gIS97+QKSV1rfXv6g80D
+dpc2lWSzyNpgwlKZoSn4aAPURX3FROWLVaqMcFUGvtayxX/ZEr4PfYhqXUpBL9E8
+ySIjOSGUBI8uJItoygJMZJRMT8amW0tMULvAdHQ4s87noZTX1HjC4Tc8dntZEBqe
+VHrwryS/9VAjmYX3hslKhYBRSF2X5l+7NeUQDmQL9qsQGxYW2XhrNrVRyvEJJOiJ
+a6gdV5qxoRxDGwQp67MKGMxQnCjhNASxjO2mMpspnSgfE3FTr6j8IQ7OgsrNp32v
+Fc8Hpr+a0zIMCoXB6hRPUIfwqGRqRnaca3T+lp/Esto7sR98jTGIaInHdQVHWSaR
+5npwmIXv7d6uMn6V0m7VvmMQhK5x2rU+RsNF+v0kudDXilxrhCRsG+UAq36G4gwn
+Nh/+Xx04yNolIwFIci14sslj4zBUS0uUAgMK3yLUUOVwSwwHAm8jogsqPaVRV7/f
+ZaHJnXscq4iA4nVcUo52hGMptKRhOzbNSL/JAgMBAAGjUzBRMB0GA1UdDgQWBBTy
+UGwlMISJy038NEjQ+Lnj86wkIjAfBgNVHSMEGDAWgBTyUGwlMISJy038NEjQ+Lnj
+86wkIjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBBIMDimY4s
+AUkJVd3hOPPSh5GTKfNKK9H56EwXx6MKuN3Ubj/fQ9lL1YT4ihCAOQagmX0ORlak
+2LvOUQ/JOSInlPihz/esfdq/TJYT/kHznzom5erchx0xln7eQgrf4UgEGRNcsl6w
+9prdV/YPfmCw2/pvpJOOP09RdPT3a5DJ+uyrgqb+IDk+YGJzK0C1EYQ5skm6nCUA
+wO4cL1u4ePA7yDPC7sHXXCrhrX50VelsSxdR3PNOxvd1HwBPAZdbsYOu1TN3OmY2
+J2Nik6R7ANb7s8l8+MHd6YqvoCKNhGg8t7MzKOnC/qV7hbXJH88K8VmD2CNkXHGx
+XOto1e8tWSI3jVDNwmVzT3AsQVIqDu5QWv00D/0ekZo6zu8L4IGnORe/IgRjcZWa
+L8kH6I2o5If4H3fTYECioObtBBIUYqOeR7m+GW51tF/o2bq36oE+/g1GEaHX0lvy
+CLlx0CAOXZDRTAxCcNjCX7s5W/X41AAtWB7hiiHCoz0Nrpy08wzOub3RKQi/FItc
+C6ImhjPEYit21bg/U9Nn30GsCIYTlF8Y17/KSBbXgGYv1zlLaqu7nj2LOAD1qjIL
+Ubwu5H7nE+l/dtjk2J96AbqbeQr3XrRGXXdJOaAkPz8L5mqlLl97OEJLW/7QCUj5
+a39QQuwV9+K1xfE87Ed4PpiIZx5XxAZR2A==
-----END CERTIFICATE-----
diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md
index 5152b6aa406..d1d4a85fd75 100644
--- a/vendor/github.com/sirupsen/logrus/README.md
+++ b/vendor/github.com/sirupsen/logrus/README.md
@@ -1,4 +1,4 @@
-# Logrus
[](https://travis-ci.org/sirupsen/logrus) [](https://godoc.org/github.com/sirupsen/logrus)
+# Logrus
[](https://github.com/sirupsen/logrus/actions?query=workflow%3ACI) [](https://travis-ci.org/sirupsen/logrus) [](https://pkg.go.dev/github.com/sirupsen/logrus)
Logrus is a structured logger for Go (golang), completely API compatible with
the standard library logger.
@@ -9,7 +9,7 @@ the last thing you want from your Logging library (again...).
This does not mean Logrus is dead. Logrus will continue to be maintained for
security, (backwards compatible) bug fixes, and performance (where we are
-limited by the interface).
+limited by the interface).
I believe Logrus' biggest contribution is to have played a part in today's
widespread use of structured logging in Golang. There doesn't seem to be a
@@ -43,7 +43,7 @@ plain text):
With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash
or Splunk:
-```json
+```text
{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the
ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"}
@@ -99,7 +99,7 @@ time="2015-03-26T01:27:38-04:00" level=fatal method=github.com/sirupsen/arcticcr
```
Note that this does add measurable overhead - the cost will depend on the version of Go, but is
between 20 and 40% in recent tests with 1.6 and 1.7. You can validate this in your
-environment via benchmarks:
+environment via benchmarks:
```
go test -bench=.*CallerTracing
```
@@ -317,6 +317,8 @@ log.SetLevel(log.InfoLevel)
It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose
environment if your application has that.
+Note: If you want different log levels for global (`log.SetLevel(...)`) and syslog logging, please check the [syslog hook README](hooks/syslog/README.md#different-log-levels-for-local-and-remote-logging).
+
#### Entries
Besides the fields added with `WithField` or `WithFields` some fields are
@@ -341,7 +343,7 @@ import (
log "github.com/sirupsen/logrus"
)
-init() {
+func init() {
// do something here to set environment depending on an environment variable
// or command-line flag
if Environment == "production" {
diff --git a/vendor/github.com/sirupsen/logrus/buffer_pool.go b/vendor/github.com/sirupsen/logrus/buffer_pool.go
index 4545dec07d8..c7787f77cbf 100644
--- a/vendor/github.com/sirupsen/logrus/buffer_pool.go
+++ b/vendor/github.com/sirupsen/logrus/buffer_pool.go
@@ -26,15 +26,6 @@ func (p *defaultPool) Get() *bytes.Buffer {
return p.pool.Get().(*bytes.Buffer)
}
-func getBuffer() *bytes.Buffer {
- return bufferPool.Get()
-}
-
-func putBuffer(buf *bytes.Buffer) {
- buf.Reset()
- bufferPool.Put(buf)
-}
-
// SetBufferPool allows to replace the default logrus buffer pool
// to better meets the specific needs of an application.
func SetBufferPool(bp BufferPool) {
diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go
index 07a1e5fa724..71cdbbc35d2 100644
--- a/vendor/github.com/sirupsen/logrus/entry.go
+++ b/vendor/github.com/sirupsen/logrus/entry.go
@@ -232,6 +232,7 @@ func (entry *Entry) log(level Level, msg string) {
newEntry.Logger.mu.Lock()
reportCaller := newEntry.Logger.ReportCaller
+ bufPool := newEntry.getBufferPool()
newEntry.Logger.mu.Unlock()
if reportCaller {
@@ -239,11 +240,11 @@ func (entry *Entry) log(level Level, msg string) {
}
newEntry.fireHooks()
-
- buffer = getBuffer()
+ buffer = bufPool.Get()
defer func() {
newEntry.Buffer = nil
- putBuffer(buffer)
+ buffer.Reset()
+ bufPool.Put(buffer)
}()
buffer.Reset()
newEntry.Buffer = buffer
@@ -260,6 +261,13 @@ func (entry *Entry) log(level Level, msg string) {
}
}
+func (entry *Entry) getBufferPool() (pool BufferPool) {
+ if entry.Logger.BufferPool != nil {
+ return entry.Logger.BufferPool
+ }
+ return bufferPool
+}
+
func (entry *Entry) fireHooks() {
var tmpHooks LevelHooks
entry.Logger.mu.Lock()
@@ -276,18 +284,21 @@ func (entry *Entry) fireHooks() {
}
func (entry *Entry) write() {
+ entry.Logger.mu.Lock()
+ defer entry.Logger.mu.Unlock()
serialized, err := entry.Logger.Formatter.Format(entry)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err)
return
}
- entry.Logger.mu.Lock()
- defer entry.Logger.mu.Unlock()
if _, err := entry.Logger.Out.Write(serialized); err != nil {
fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
}
}
+// Log will log a message at the level given as parameter.
+// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit.
+// For this behaviour Entry.Panic or Entry.Fatal should be used instead.
func (entry *Entry) Log(level Level, args ...interface{}) {
if entry.Logger.IsLevelEnabled(level) {
entry.log(level, fmt.Sprint(args...))
diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go
index 337704457a2..5ff0aef6d3f 100644
--- a/vendor/github.com/sirupsen/logrus/logger.go
+++ b/vendor/github.com/sirupsen/logrus/logger.go
@@ -44,6 +44,9 @@ type Logger struct {
entryPool sync.Pool
// Function to exit the application, defaults to `os.Exit()`
ExitFunc exitFunc
+ // The buffer pool used to format the log. If it is nil, the default global
+ // buffer pool will be used.
+ BufferPool BufferPool
}
type exitFunc func(int)
@@ -192,6 +195,9 @@ func (logger *Logger) Panicf(format string, args ...interface{}) {
logger.Logf(PanicLevel, format, args...)
}
+// Log will log a message at the level given as parameter.
+// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit.
+// For this behaviour Logger.Panic or Logger.Fatal should be used instead.
func (logger *Logger) Log(level Level, args ...interface{}) {
if logger.IsLevelEnabled(level) {
entry := logger.newEntry()
@@ -402,3 +408,10 @@ func (logger *Logger) ReplaceHooks(hooks LevelHooks) LevelHooks {
logger.mu.Unlock()
return oldHooks
}
+
+// SetBufferPool sets the logger buffer pool.
+func (logger *Logger) SetBufferPool(pool BufferPool) {
+ logger.mu.Lock()
+ defer logger.mu.Unlock()
+ logger.BufferPool = pool
+}
diff --git a/vendor/github.com/sirupsen/logrus/writer.go b/vendor/github.com/sirupsen/logrus/writer.go
index 72e8e3a1b65..074fd4b8bd7 100644
--- a/vendor/github.com/sirupsen/logrus/writer.go
+++ b/vendor/github.com/sirupsen/logrus/writer.go
@@ -4,6 +4,7 @@ import (
"bufio"
"io"
"runtime"
+ "strings"
)
// Writer at INFO level. See WriterLevel for details.
@@ -20,15 +21,18 @@ func (logger *Logger) WriterLevel(level Level) *io.PipeWriter {
return NewEntry(logger).WriterLevel(level)
}
+// Writer returns an io.Writer that writes to the logger at the info log level
func (entry *Entry) Writer() *io.PipeWriter {
return entry.WriterLevel(InfoLevel)
}
+// WriterLevel returns an io.Writer that writes to the logger at the given log level
func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
reader, writer := io.Pipe()
var printFunc func(args ...interface{})
+ // Determine which log function to use based on the specified log level
switch level {
case TraceLevel:
printFunc = entry.Trace
@@ -48,23 +52,51 @@ func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
printFunc = entry.Print
}
+ // Start a new goroutine to scan the input and write it to the logger using the specified print function.
+ // It splits the input into chunks of up to 64KB to avoid buffer overflows.
go entry.writerScanner(reader, printFunc)
+
+ // Set a finalizer function to close the writer when it is garbage collected
runtime.SetFinalizer(writer, writerFinalizer)
return writer
}
+// writerScanner scans the input from the reader and writes it to the logger
func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) {
scanner := bufio.NewScanner(reader)
+
+ // Set the buffer size to the maximum token size to avoid buffer overflows
+ scanner.Buffer(make([]byte, bufio.MaxScanTokenSize), bufio.MaxScanTokenSize)
+
+ // Define a split function to split the input into chunks of up to 64KB
+ chunkSize := bufio.MaxScanTokenSize // 64KB
+ splitFunc := func(data []byte, atEOF bool) (int, []byte, error) {
+ if len(data) >= chunkSize {
+ return chunkSize, data[:chunkSize], nil
+ }
+
+ return bufio.ScanLines(data, atEOF)
+ }
+
+ // Use the custom split function to split the input
+ scanner.Split(splitFunc)
+
+ // Scan the input and write it to the logger using the specified print function
for scanner.Scan() {
- printFunc(scanner.Text())
+ printFunc(strings.TrimRight(scanner.Text(), "\r\n"))
}
+
+ // If there was an error while scanning the input, log an error
if err := scanner.Err(); err != nil {
entry.Errorf("Error while reading from Writer: %s", err)
}
+
+ // Close the reader when we are done
reader.Close()
}
+// WriterFinalizer is a finalizer function that closes then given writer when it is garbage collected
func writerFinalizer(writer *io.PipeWriter) {
writer.Close()
}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 3ef573ab151..6d4a34e89cf 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -572,7 +572,7 @@ github.com/scaleway/scaleway-sdk-go/validation
## explicit
github.com/shurcooL/httpfs/filter
github.com/shurcooL/httpfs/union
-# github.com/sirupsen/logrus v1.8.1
+# github.com/sirupsen/logrus v1.9.3
## explicit; go 1.13
github.com/sirupsen/logrus
# github.com/spf13/pflag v1.0.5