Alerting: Switch to snappy-compressed-protobuf for outgoing push requests to Loki (#65077)

* Encode with snappy, always

* JSON encoder type

* Headers

* Copy labels formatter from promtail

* Implement snappy-proto encoding

* Create encoder interface, test both encoders, choose snappy-proto by default

* Make encoder configurable at the LokiCfg level

* Export both encoders

* Touch up comment and tests

* Drop unnecessary conversions after move to plain strings to appease linter
This commit is contained in:
Alexander Weaver
2023-03-21 13:38:42 -05:00
committed by GitHub
parent 83e9558cdd
commit bf54f2672e
4 changed files with 128 additions and 6 deletions

View File

@@ -117,6 +117,7 @@ func TestLokiHTTPClient_Manual(t *testing.T) {
client := newLokiClient(LokiConfig{
ReadPathURL: url,
WritePathURL: url,
Encoder: JsonEncoder{},
}, NewRequester(), metrics.NewHistorianMetrics(prometheus.NewRegistry()), log.NewNopLogger())
// Unauthorized request should fail against Grafana Cloud.
@@ -144,6 +145,7 @@ func TestLokiHTTPClient_Manual(t *testing.T) {
WritePathURL: url,
BasicAuthUser: "<your_username>",
BasicAuthPassword: "<your_password>",
Encoder: JsonEncoder{},
}, NewRequester(), metrics.NewHistorianMetrics(prometheus.NewRegistry()), log.NewNopLogger())
// When running on prem, you might need to set the tenant id,
@@ -259,6 +261,7 @@ func createTestLokiClient(req client.Requester) *httpLokiClient {
cfg := LokiConfig{
WritePathURL: url,
ReadPathURL: url,
Encoder: JsonEncoder{},
}
met := metrics.NewHistorianMetrics(prometheus.NewRegistry())
return newLokiClient(cfg, req, met, log.NewNopLogger())