diff --git a/server/service/service_osquery.go b/server/service/service_osquery.go index d5a2fd9848..983455ce44 100644 --- a/server/service/service_osquery.go +++ b/server/service/service_osquery.go @@ -7,6 +7,7 @@ import ( "strings" "time" + "github.com/go-kit/kit/log" hostctx "github.com/kolide/kolide-ose/server/contexts/host" "github.com/kolide/kolide-ose/server/kolide" "github.com/kolide/kolide-ose/server/pubsub" @@ -178,15 +179,15 @@ const hostDistributedQueryPrefix = "kolide_distributed_query_" // kolide.Host data model. This map should not be modified at runtime. var detailQueries = map[string]struct { Query string - IngestFunc func(host *kolide.Host, rows []map[string]string) error + IngestFunc func(logger log.Logger, host *kolide.Host, rows []map[string]string) error }{ "osquery_info": { Query: "select * from osquery_info limit 1", - IngestFunc: func(host *kolide.Host, rows []map[string]string) error { + IngestFunc: func(logger log.Logger, host *kolide.Host, rows []map[string]string) error { if len(rows) != 1 { - return osqueryError{ - message: fmt.Sprintf("expected 1 row but got %d", len(rows)), - } + logger.Log("component", "service", "method", "IngestFunc", "err", + fmt.Sprintf("detail_query_osquery_info expected single result got %d", len(rows))) + return nil } host.Platform = rows[0]["build_platform"] @@ -197,11 +198,11 @@ var detailQueries = map[string]struct { }, "system_info": { Query: "select * from system_info limit 1", - IngestFunc: func(host *kolide.Host, rows []map[string]string) error { + IngestFunc: func(logger log.Logger, host *kolide.Host, rows []map[string]string) error { if len(rows) != 1 { - return osqueryError{ - message: fmt.Sprintf("expected 1 row but got %d", len(rows)), - } + logger.Log("component", "service", "method", "IngestFunc", "err", + fmt.Sprintf("detail_query_system_info expected single result got %d", len(rows))) + return nil } var err error @@ -232,11 +233,11 @@ var detailQueries = map[string]struct { }, "os_version": { Query: "select * from os_version limit 1", - IngestFunc: func(host *kolide.Host, rows []map[string]string) error { + IngestFunc: func(logger log.Logger, host *kolide.Host, rows []map[string]string) error { if len(rows) != 1 { - return osqueryError{ - message: fmt.Sprintf("expected 1 row but got %d", len(rows)), - } + logger.Log("component", "service", "method", "IngestFunc", "err", + fmt.Sprintf("detail_query_os_version expected single result got %d", len(rows))) + return nil } host.OSVersion = fmt.Sprintf( @@ -258,11 +259,11 @@ var detailQueries = map[string]struct { }, "uptime": { Query: "select * from uptime limit 1", - IngestFunc: func(host *kolide.Host, rows []map[string]string) error { + IngestFunc: func(logger log.Logger, host *kolide.Host, rows []map[string]string) error { if len(rows) != 1 { - return osqueryError{ - message: fmt.Sprintf("expected 1 row but got %d", len(rows)), - } + logger.Log("component", "service", "method", "IngestFunc", "err", + fmt.Sprintf("detail_query_uptime expected single result got %d", len(rows))) + return nil } uptimeSeconds, err := strconv.Atoi(rows[0]["total_seconds"]) @@ -278,8 +279,12 @@ var detailQueries = map[string]struct { Query: `select * from interface_details id join interface_addresses ia on ia.interface = id.interface where broadcast != "" order by (ibytes + obytes) desc`, - IngestFunc: func(host *kolide.Host, rows []map[string]string) (err error) { - + IngestFunc: func(logger log.Logger, host *kolide.Host, rows []map[string]string) (err error) { + if len(rows) == 0 { + logger.Log("component", "service", "method", "IngestFunc", "err", + "detail_query_network_interface expected 1 or more results") + return nil + } networkInterfaces := []*kolide.NetworkInterface{} for _, row := range rows { @@ -393,7 +398,7 @@ func (svc service) ingestDetailQuery(host *kolide.Host, name string, rows []map[ return osqueryError{message: "unknown detail query " + trimmedQuery} } - err := query.IngestFunc(host, rows) + err := query.IngestFunc(svc.logger, host, rows) if err != nil { return osqueryError{ message: fmt.Sprintf("ingesting query %s: %s", name, err.Error()),