Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 28 additions & 26 deletions admin/handlers/json-logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func (h *HandlersAdmin) JSONLogsHandler(w http.ResponseWriter, r *http.Request)
}
// Get logs
logJSON := []LogJSON{}
if logType == "status" {
if logType == "status" && h.LoggerDB != nil {
statusLogs, err := h.LoggerDB.StatusLogs(UUID, env.Name, secondsBack)
if err != nil {
log.Printf("error getting logs %v", err)
Expand All @@ -142,7 +142,7 @@ func (h *HandlersAdmin) JSONLogsHandler(w http.ResponseWriter, r *http.Request)
}
logJSON = append(logJSON, _l)
}
} else if logType == "result" {
} else if logType == "result" && h.LoggerDB != nil {
resultLogs, err := h.LoggerDB.ResultLogs(UUID, env.Name, secondsBack)
if err != nil {
log.Printf("error getting logs %v", err)
Expand Down Expand Up @@ -192,34 +192,36 @@ func (h *HandlersAdmin) JSONQueryLogsHandler(w http.ResponseWriter, r *http.Requ
return
}
// Get logs
queryLogs, err := h.LoggerDB.QueryLogs(name)
if err != nil {
log.Printf("error getting logs %v", err)
h.Inc(metricJSONErr)
return
}
// Prepare data to be returned
queryLogJSON := []QueryLogJSON{}
for _, q := range queryLogs {
// Get target node
node, err := h.Nodes.GetByUUID(q.UUID)
if h.LoggerDB != nil {
queryLogs, err := h.LoggerDB.QueryLogs(name)
if err != nil {
node.UUID = q.UUID
node.Localname = ""
}
_c := CreationTimes{
Display: utils.PastFutureTimes(q.CreatedAt),
Timestamp: utils.TimeTimestamp(q.CreatedAt),
log.Printf("error getting logs %v", err)
h.Inc(metricJSONErr)
return
}
_l := QueryLogJSON{
Created: _c,
Target: QueryTargetNode{
UUID: node.UUID,
Name: node.Localname,
},
Data: string(q.Data),
// Prepare data to be returned
for _, q := range queryLogs {
// Get target node
node, err := h.Nodes.GetByUUID(q.UUID)
if err != nil {
node.UUID = q.UUID
node.Localname = ""
}
_c := CreationTimes{
Display: utils.PastFutureTimes(q.CreatedAt),
Timestamp: utils.TimeTimestamp(q.CreatedAt),
}
_l := QueryLogJSON{
Created: _c,
Target: QueryTargetNode{
UUID: node.UUID,
Name: node.Localname,
},
Data: string(q.Data),
}
queryLogJSON = append(queryLogJSON, _l)
}
queryLogJSON = append(queryLogJSON, _l)
}
returned := ReturnedQueryLogs{
Data: queryLogJSON,
Expand Down
14 changes: 10 additions & 4 deletions admin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,10 +483,16 @@ func osctrlAdminService() {
if err != nil {
log.Fatalf("Error loading metrics - %v", err)
}
// Initialize DB logger
loggerDB, err = logging.CreateLoggerDB(loggerFile)
if err != nil {
log.Fatalf("Error loading logger - %v", err)
// TODO Initialize DB logger regardless of settings
// This is temporary until we have logs stored in Redis
if adminConfig.Logger == settings.LoggingDB {
loggerDB, err = logging.CreateLoggerDBFile(loggerFile)
if err != nil {
loggerDB, err = logging.CreateLoggerDBConfig(dbConfig)
if err != nil {
log.Fatalf("Error creating db logger - %v", err)
}
}
}
// Start SAML Middleware if we are using SAML
if adminConfig.Auth == settings.AuthSAML {
Expand Down
17 changes: 16 additions & 1 deletion logging/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,27 @@ type LoggerDB struct {
}

// CreateLoggerDB to initialize the logger
func CreateLoggerDB(dbfile string) (*LoggerDB, error) {
func CreateLoggerDBFile(dbfile string) (*LoggerDB, error) {
// Initialize backend
backend, err := backend.CreateDBManagerFile(dbfile)
if err != nil {
return nil, fmt.Errorf("Failed to create backend - %v", err)
}
return CreateLoggerDB(backend)
}

// CreateLoggerDB to initialize the logger without reading a config file
func CreateLoggerDBConfig(dbConfig backend.JSONConfigurationDB) (*LoggerDB, error) {
// Initialize backend
backend, err := backend.CreateDBManager(dbConfig)
if err != nil {
return nil, fmt.Errorf("Failed to create backend - %v", err)
}
return CreateLoggerDB(backend)
}

// CreateLoggerDB to initialize the logger without reading a config file
func CreateLoggerDB(backend *backend.DBManager) (*LoggerDB, error) {
l := &LoggerDB{
Database: backend,
Enabled: true,
Expand Down
2 changes: 1 addition & 1 deletion logging/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func CreateLoggerFile(filename string, cfg LumberjackConfig) (*LoggerFile, error

// Settings - Function to prepare settings for the logger
func (logFile *LoggerFile) Settings(mgr *settings.Settings) {
log.Printf("No stdout logging settings\n")
log.Printf("No file logging settings\n")
}

// Log - Function that sends JSON result/status/query logs to stdout
Expand Down
2 changes: 1 addition & 1 deletion logging/logging.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func CreateLoggerTLS(logging, loggingFile string, mgr *settings.Settings, nodes
g.Settings(mgr)
l.Logger = g
case settings.LoggingDB:
d, err := CreateLoggerDB(loggingFile)
d, err := CreateLoggerDBFile(loggingFile)
if err != nil {
return nil, err
}
Expand Down
4 changes: 0 additions & 4 deletions nodes/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -460,10 +460,6 @@ func (n *NodeManager) Create(node *OsqueryNode) error {
if err := n.NewHistoryIPAddress(i); err != nil {
return fmt.Errorf("newNodeHistoryIPAddress %v", err)
}
// FIXME needs rewriting
//if err := geoLocationCheckByIPAddress(node.IPAddress); err != nil {
// return fmt.Errorf("geoLocationCheckByIPAddress %v", err)
//}
u := NodeHistoryUsername{
UUID: node.UUID,
Username: node.Username,
Expand Down