diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2025-12-29 14:12:10 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2025-12-30 10:19:29 +0000 |
| commit | d32f762a1f4d1a1e4bd4b116b42b5cd263892f71 (patch) | |
| tree | c49ab26255f582a917d5731d4d5c38a68f61d1b7 /dashboard | |
| parent | 4bf5d6ba7e5aa0e65f6b7928ac2ebc8f64e9db80 (diff) | |
dashboard/app: filter out some entries from the error log
Don't show package update errors, they happen in hundreds every day.
Don't show internal datastore bugs (these are not our bugs).
Diffstat (limited to 'dashboard')
| -rw-r--r-- | dashboard/app/main.go | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/dashboard/app/main.go b/dashboard/app/main.go index a2025215e..0c2c655c3 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -19,7 +19,6 @@ import ( "strings" "time" - "cloud.google.com/go/logging" "cloud.google.com/go/logging/logadmin" "github.com/google/syzkaller/dashboard/dashapi" "github.com/google/syzkaller/pkg/debugtracer" @@ -2433,14 +2432,13 @@ func invalidateJobLink(c context.Context, job *Job, jobKey *db.Key, restart bool func formatLogLine(line string) string { const maxLineLen = 1000 - line = strings.ReplaceAll(line, "\n", " ") line = strings.ReplaceAll(line, "\r", "") if len(line) > maxLineLen { line = line[:maxLineLen] line += "..." } - return line + "\n" + return line } func fetchErrorLogs(c context.Context) ([]byte, error) { @@ -2448,9 +2446,7 @@ func fetchErrorLogs(c context.Context) ([]byte, error) { return nil, nil } - const ( - maxLines = 100 - ) + const maxLines = 100 projID := os.Getenv("GOOGLE_CLOUD_PROJECT") adminClient, err := logadmin.NewClient(c, projID) @@ -2462,16 +2458,23 @@ func fetchErrorLogs(c context.Context) ([]byte, error) { lastWeek := time.Now().Add(-1 * 7 * 24 * time.Hour).Format(time.RFC3339) iter := adminClient.Entries(c, logadmin.Filter( - // We filter our instances.delete errors as false positives. Delete event happens every second. - // Also, ignore GKE logs since it streams all stderr output as severity=ERROR. - fmt.Sprintf(`(NOT protoPayload.methodName:v1.compute.instances.delete)`+ - ` AND (NOT resource.type="k8s_container") AND timestamp > "%s" AND severity>="ERROR"`, - lastWeek)), - logadmin.NewestFirst(), - ) + fmt.Sprintf(` + timestamp > "%s" AND severity>="ERROR" + -- Ignore GKE logs since it streams all stderr output as severity=ERROR. + AND (NOT resource.type="k8s_container") + -- Filter our instances.delete errors as false positives. Delete event happens every second. + AND (NOT protoPayload.methodName:v1.compute.instances.delete) + -- Let somebody else monitor datastore bugs (also see #6069). + AND (NOT textPayload:"datastore_v3: INTERNAL_ERROR") + -- GetPackageUpdates is something related to package updates on GCE machines. + -- They are happening in hundreds every day. + AND (NOT jsonPayload.message:"packages.GetPackageUpdates()") + -- CloudBuild don't look like errors, there is nothing that suggests that's an error. + AND (NOT protoPayload.methodName:"google.devtools.cloudbuild.v1.CloudBuild.CreateBuild") + `, lastWeek)), logadmin.NewestFirst()) - var entries []*logging.Entry - for len(entries) < maxLines { + var lines []string + for len(lines) < maxLines { entry, err := iter.Next() if err == iterator.Done { break @@ -2479,11 +2482,6 @@ func fetchErrorLogs(c context.Context) ([]byte, error) { if err != nil { return nil, err } - entries = append(entries, entry) - } - - var lines []string - for _, entry := range entries { requestLog, isRequestLog := entry.Payload.(*proto.RequestLog) if isRequestLog { for _, logLine := range requestLog.Line { @@ -2509,6 +2507,7 @@ func fetchErrorLogs(c context.Context) ([]byte, error) { buf := new(bytes.Buffer) for i := len(lines) - 1; i >= 0; i-- { buf.WriteString(lines[i]) + buf.WriteByte('\n') } return buf.Bytes(), nil } |
