From aa310b4441467e57ffaf8cf2755087b57a0cabd8 Mon Sep 17 00:00:00 2001 From: Javier Marcos <1271349+javuto@users.noreply.github.com> Date: Fri, 5 Jul 2024 12:30:51 +0200 Subject: [PATCH 1/2] Making sure redis keys expire --- cache/cache.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cache/cache.go b/cache/cache.go index 8791c1cb..8f5fecfe 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -255,6 +255,10 @@ func (r *RedisManager) SetLogs(logType, hostID, envOrName string, data []byte) e if err := r.Client.Set(ctx, hKey, data, tExpire).Err(); err != nil { return fmt.Errorf("%s Set: %s", logType, err) } + // Make sure we expire the key + if err := r.Client.Expire(ctx, hKey, tExpire).Err(); err != nil { + return fmt.Errorf("%s Expire: %s", logType, err) + } return nil } From 2b89d74bddac1555519fd7a3ad79789939ea6d5f Mon Sep 17 00:00:00 2001 From: Javier Marcos <1271349+javuto@users.noreply.github.com> Date: Sat, 6 Jul 2024 19:36:13 +0200 Subject: [PATCH 2/2] Fix for #438 panic retrieving logs --- admin/handlers/json-logs.go | 2 +- admin/handlers/templates.go | 42 ++++++++++++++++--------------- admin/handlers/types-templates.go | 42 ++++++++++++++++--------------- admin/handlers/utils.go | 6 +++++ admin/templates/node.html | 13 ++++++++++ admin/templates/queries-logs.html | 7 ++++++ settings/settings.go | 2 +- 7 files changed, 72 insertions(+), 42 deletions(-) diff --git a/admin/handlers/json-logs.go b/admin/handlers/json-logs.go index 3a60fc73..c1a93ca7 100644 --- a/admin/handlers/json-logs.go +++ b/admin/handlers/json-logs.go @@ -190,7 +190,7 @@ func (h *HandlersAdmin) JSONQueryLogsHandler(w http.ResponseWriter, r *http.Requ // Iterate through targets to get logs queryLogJSON := []QueryLogJSON{} // Get logs - if h.RedisCache != nil { + if h.DBLogger != nil { queryLogs, err := h.DBLogger.QueryLogs(name) if err != nil { log.Printf("error getting logs %v", err) diff --git a/admin/handlers/templates.go b/admin/handlers/templates.go index cf21a967..b58c56b6 100644 --- a/admin/handlers/templates.go +++ b/admin/handlers/templates.go @@ -722,14 +722,15 @@ func (h *HandlersAdmin) QueryLogsHandler(w http.ResponseWriter, r *http.Request) } // Prepare template data templateData := QueryLogsTemplateData{ - Title: "Query logs " + query.Name, - EnvUUID: env.UUID, - Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), - LeftMetadata: leftMetadata, - Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), - Platforms: platforms, - Query: query, - QueryTargets: targets, + Title: "Query logs " + query.Name, + EnvUUID: env.UUID, + Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), + LeftMetadata: leftMetadata, + Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), + Platforms: platforms, + Query: query, + QueryTargets: targets, + ServiceConfig: *h.AdminConfig, } if err := t.Execute(w, templateData); err != nil { h.Inc(metricAdminErr) @@ -1115,18 +1116,19 @@ func (h *HandlersAdmin) NodeHandler(w http.ResponseWriter, r *http.Request) { } // Prepare template data templateData := NodeTemplateData{ - Title: "Node View " + node.Hostname, - EnvUUID: env.UUID, - Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), - LeftMetadata: leftMetadata, - Node: node, - NodeTags: nodeTags, - TagsForNode: tags, - Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), - Platforms: platforms, - Dashboard: dashboardEnabled, - Packs: packs, - Schedule: schedule, + Title: "Node View " + node.Hostname, + EnvUUID: env.UUID, + Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), + LeftMetadata: leftMetadata, + Node: node, + NodeTags: nodeTags, + TagsForNode: tags, + Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), + Platforms: platforms, + Dashboard: dashboardEnabled, + Packs: packs, + Schedule: schedule, + ServiceConfig: *h.AdminConfig, } if err := t.Execute(w, templateData); err != nil { h.Inc(metricAdminErr) diff --git a/admin/handlers/types-templates.go b/admin/handlers/types-templates.go index 6246ae0d..8448050a 100644 --- a/admin/handlers/types-templates.go +++ b/admin/handlers/types-templates.go @@ -143,14 +143,15 @@ type CarvesDetailsTemplateData struct { // QueryLogsTemplateData for passing data to the query template type QueryLogsTemplateData struct { - Title string - EnvUUID string - Environments []environments.TLSEnvironment - Platforms []string - Query queries.DistributedQuery - QueryTargets []queries.DistributedQueryTarget - Metadata TemplateMetadata - LeftMetadata AsideLeftMetadata + Title string + EnvUUID string + Environments []environments.TLSEnvironment + Platforms []string + Query queries.DistributedQuery + QueryTargets []queries.DistributedQueryTarget + Metadata TemplateMetadata + LeftMetadata AsideLeftMetadata + ServiceConfig types.JSONConfigurationAdmin } // EnvironmentsTemplateData for passing data to the environments template @@ -216,16 +217,17 @@ type TagsTemplateData struct { // NodeTemplateData for passing data to the query template type NodeTemplateData struct { - Title string - EnvUUID string - Node nodes.OsqueryNode - NodeTags []tags.AdminTag - TagsForNode []tags.AdminTagForNode - Environments []environments.TLSEnvironment - Platforms []string - Metadata TemplateMetadata - LeftMetadata AsideLeftMetadata - Dashboard bool - Schedule environments.ScheduleConf - Packs environments.PacksEntries + Title string + EnvUUID string + Node nodes.OsqueryNode + NodeTags []tags.AdminTag + TagsForNode []tags.AdminTagForNode + Environments []environments.TLSEnvironment + Platforms []string + Metadata TemplateMetadata + LeftMetadata AsideLeftMetadata + Dashboard bool + Schedule environments.ScheduleConf + Packs environments.PacksEntries + ServiceConfig types.JSONConfigurationAdmin } diff --git a/admin/handlers/utils.go b/admin/handlers/utils.go index edfb4533..5c7f8770 100644 --- a/admin/handlers/utils.go +++ b/admin/handlers/utils.go @@ -168,6 +168,12 @@ func toJSONConfigurationService(values []settings.SettingValue) types.JSONConfig if v.Name == settings.JSONAuth { cfg.Auth = v.String } + if v.Name == settings.JSONLogger { + cfg.Logger = v.String + } + if v.Name == settings.JSONCarver { + cfg.Carver = v.String + } if v.Name == settings.JSONSessionKey { cfg.SessionKey = v.String } diff --git a/admin/templates/node.html b/admin/templates/node.html index f69186dc..e19bd712 100644 --- a/admin/templates/node.html +++ b/admin/templates/node.html @@ -2,6 +2,7 @@ {{ $metadata := .Metadata }} + {{ $serviceConfig := .ServiceConfig }} {{ template "page-head" . }} @@ -390,6 +391,7 @@ + {{ if eq $serviceConfig.Logger "db" }}
@@ -402,6 +404,11 @@
+ {{ else }} + + {{ end }} @@ -429,6 +436,7 @@ + {{ if eq $serviceConfig.Logger "db" }}
@@ -441,6 +449,11 @@
+ {{ else }} + + {{ end }} diff --git a/admin/templates/queries-logs.html b/admin/templates/queries-logs.html index a5bfb9f6..ed018bab 100644 --- a/admin/templates/queries-logs.html +++ b/admin/templates/queries-logs.html @@ -2,6 +2,7 @@ {{ $metadata := .Metadata }} + {{ $serviceConfig := .ServiceConfig }} {{ template "page-head" . }} @@ -71,6 +72,7 @@
+ {{ if eq $serviceConfig.Logger "db" }} @@ -81,6 +83,11 @@
+ {{ else }} + + {{ end }} diff --git a/settings/settings.go b/settings/settings.go index 52717e25..eb79e1df 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -337,7 +337,7 @@ func (conf *Settings) SetAdminJSON(cfg types.JSONConfigurationAdmin, envID uint) if err := conf.SetJSON(ServiceAdmin, JSONAuth, cfg.Auth, envID); err != nil { return err } - if err := conf.SetJSON(ServiceTLS, JSONLogger, cfg.Logger, envID); err != nil { + if err := conf.SetJSON(ServiceAdmin, JSONLogger, cfg.Logger, envID); err != nil { return err } if err := conf.SetJSON(ServiceAdmin, JSONSessionKey, cfg.SessionKey, envID); err != nil {