feat:新增自动化拉取并汇总分析数据功能

This commit is contained in:
nnbcccscdscdsc
2026-03-24 16:05:14 +08:00
parent 9503862eda
commit f0d297f272
5 changed files with 411 additions and 1 deletions

View File

@@ -23,6 +23,8 @@ func (f *stringListFlag) Set(value string) error {
func main() {
var inputPaths stringListFlag
outputPath := flag.String("output", "latency-summary.jsonl", "output JSONL file for summarized latency metrics")
// shared-max-offset 是一个可选参数,用于在对齐输入文件的 per-file max message_id 后,排除掉最新的共享 message_id 以外的记录。它指定了要排除的共享 message_id 的数量。
sharedMaxOffset := flag.Uint64("shared-max-offset", 1, "number of newest shared message IDs to exclude after aligning inputs by per-file max message_id")
flag.Var(&inputPaths, "input", "raw latency JSONL file path; can be provided multiple times")
flag.Parse()
@@ -30,10 +32,16 @@ func main() {
log.Fatal("at least one -input raw latency log file is required")
}
events, err := latencylog.LoadEventsFromFiles(inputPaths)
events, sharedMaxMessageID, err := latencylog.LoadEventsFromFilesWithSharedMaxOffset(inputPaths, *sharedMaxOffset)
if err != nil {
log.Fatalf("load raw latency logs: %v", err)
}
// sharedMaxMessageID 可能为 nil表示没有可用的共享 message_id 截止值(例如因为输入文件中没有共享消息)。在这种情况下,我们将继续处理所有事件,但会记录一个警告。
if sharedMaxMessageID != nil {
log.Printf("using shared message_id cutoff <= %d (shared-max-offset=%d)", *sharedMaxMessageID, *sharedMaxOffset)
} else {
log.Printf("no shared message_id cutoff available after applying shared-max-offset=%d", *sharedMaxOffset)
}
summaries := latencylog.SummarizeEvents(events)
if err := latencylog.WriteSummariesJSONL(*outputPath, summaries); err != nil {