From 76871b4beb0fd7b02aac4a16f0571fb3d0bc4880 Mon Sep 17 00:00:00 2001 From: Maxim Leonovich Date: Mon, 25 Sep 2023 13:09:57 -0700 Subject: [PATCH] fix(loki): fix the deadlock in Loki integration Signed-off-by: Maksim Leanovich --- outputs/loki.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/outputs/loki.go b/outputs/loki.go index 9571fb254..7063e23bf 100644 --- a/outputs/loki.go +++ b/outputs/loki.go @@ -62,25 +62,38 @@ func newLokiPayload(falcopayload types.FalcoPayload, config *types.Configuration }} } -// LokiPost posts event to Loki -func (c *Client) LokiPost(falcopayload types.FalcoPayload) { - c.Stats.Loki.Add(Total, 1) - c.ContentType = LokiContentType +func (c *Client) configureTenant() { if c.Config.Loki.Tenant != "" { c.httpClientLock.Lock() defer c.httpClientLock.Unlock() c.AddHeader("X-Scope-OrgID", c.Config.Loki.Tenant) } +} +func (c *Client) configureAuth() { if c.Config.Loki.User != "" && c.Config.Loki.APIKey != "" { c.httpClientLock.Lock() defer c.httpClientLock.Unlock() c.BasicAuth(c.Config.Loki.User, c.Config.Loki.APIKey) } +} +func (c *Client) configureCustomHeaders() { + c.httpClientLock.Lock() + defer c.httpClientLock.Unlock() for i, j := range c.Config.Loki.CustomHeaders { c.AddHeader(i, j) } +} + +// LokiPost posts event to Loki +func (c *Client) LokiPost(falcopayload types.FalcoPayload) { + c.Stats.Loki.Add(Total, 1) + c.ContentType = LokiContentType + + c.configureTenant() + c.configureAuth() + c.configureCustomHeaders() err := c.Post(newLokiPayload(falcopayload, c.Config)) if err != nil {