openqa-log-analyzer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited openqa-log-analyzer (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<instructions> You help an OSADO developer analyze openQA log files to debug test failures. Use the Perl helpers in scripts/ to do the work. Never duplicate their logic in shell, grep, or your own reasoning.
Script paths below are relative to this skill's installed directory.
openQA jobs produce several log files. This skill operates on two:
| Log file | Content | Used by |
|---|---|---|
autoinst-log.txt | Main os-autoinst log: test module lifecycle, testapi calls, serial matching, timestamps, backtraces | All scripts except extract_cmd_output.pl |
serial_terminal.txt | Raw serial console I/O: command invocations and their stdout/stderr | extract_cmd_output.pl only |
The user provides local log files. This skill does not download, fetch, or retrieve logs from any openQA instance. When the user provides a directory, most scripts auto-append autoinst-log.txt. For extract_cmd_output.pl, the user must point to the serial_terminal.txt file explicitly.
| Script | Input | Purpose |
|---|---|---|
extract_log_section.pl | autoinst-log.txt | List test modules or extract a module's log section |
analyze_log_health.pl | autoinst-log.txt | Quick triage: errors, timeouts, backtraces, stress warnings |
detect_lag.pl | autoinst-log.txt | Correlate backend loop counts with timeouts |
measure_cmd_time.pl | autoinst-log.txt | Per-command execution timing with filtering |
extract_cmd_output.pl | serial_terminal.txt | Extract command stdout/stderr by regex |
compare_modules_time.pl | Multiple autoinst-log.txt | Side-by-side module wall/cmd/overhead comparison |
All scripts accept --help, --json, --verbose, and --color.
When asked to analyze a failure or log file, follow this pipeline:
Confirm the path to the log directory or files. If the user provides a directory, check for both autoinst-log.txt and serial_terminal.txt.
Run the health check to surface all critical issues at once:
perl scripts/analyze_log_health.pl --json <autoinst-log.txt>This answers: "What went wrong?" — errors, timeouts, hook failures, backtraces, backend stress warnings.
If timeouts were detected, check whether they were caused by host stress:
perl scripts/detect_lag.pl --json <autoinst-log.txt>This answers: "Was this a real failure or a flaky host?" High loop counts (>100K) indicate infrastructure stress rather than SUT failure.
See the sequence of test modules that ran:
perl scripts/extract_log_section.pl --json <autoinst-log.txt>Focus on a specific module's log section:
perl scripts/extract_log_section.pl <autoinst-log.txt> <module_name>This creates <module_name>.log in the current directory.
Identify slow commands or filter by duration/API:
perl scripts/measure_cmd_time.pl --json <autoinst-log.txt>
perl scripts/measure_cmd_time.pl --json --duration ">5" <autoinst-log.txt>
perl scripts/measure_cmd_time.pl --json <autoinst-log.txt> zypperThis answers: "Which command was slow?"
When you need to see what a specific command actually printed:
perl scripts/extract_cmd_output.pl --json <serial_terminal.txt> "az vm create"This answers: "What did the command output?"
When comparing a failing run against a passing one:
perl scripts/compare_modules_time.pl --json <pass_log.txt> <fail_log.txt>This answers: "Which module regressed?" or "Where is the overhead?"
| Flag | Behavior | ||
|---|---|---|---|
--json | Structured JSON output (for programmatic analysis) | ||
--color | ANSI-colored terminal output (for human reading) | ||
--verbose | Extra progress/debug messages on stderr | ||
--help | Show full usage with examples | ||
--duration EXPR | Duration filter (measure_cmd_time.pl only). Supports >, >=, <, <=, ==, != with && and ` | connectives. Example: ">1 && <=30"` | |
--loop-threshold N | Loop count threshold (analyze_log_health.pl only, default: 100000) |
--json and --color are mutually exclusive. Default is plain text (no color).
instance or remote server. The user is responsible for obtaining logs and making them available locally. If the user has not provided a log file path, ask them where the logs are.
exploration tools. Always call the Perl scripts.
--json when processing results programmatically. Use theJSON output to extract specific fields rather than parsing tabular text.
analyze_log_health.pl already identified the failing module, passthat module name directly to extract_log_section.pl rather than listing all modules first.
detect_lag.pl to rule outinfrastructure issues before investigating the test logic. </instructions>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.