Query loki project logs
Reusable agent skills for local workflows and automation, including China workday checks and Codex session history tools.
npx -y skills add Sube-py/awesome-skills --skill query-loki-project-logsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Query Grafana Loki logs that are organized by labels such as `project_name` or `project`, `env`, and `filename`, where `filename` distinguishes `nginx`, `web`, `worker`, `stdout`, and `stderr` streams. Use when Codex needs to inspect logs with `logcli`, discover available projects or environments, list a project's log files, narrow to a specific component such as web or worker, or check a recent time window for errors in test or local environments.
SKILL.md
5.3 KB, as published. Nobody here has run it
Query Loki Project Logs
Use this skill to inspect Loki logs with the house convention:
project_nameidentifies the service or deployment and usually matches the git repository nameenvidentifies the deployment environment such asdev,test, orprodfilenameidentifies the concrete stream, such aspd_router-web-stderr.logorpd_router-nginx-stdout.log
The helper script is compatible with both:
- newer Loki setups that use
project_name - older Loki setups that still use
project
It auto-detects the project label unless --project-label or LOKI_PROJECT_LABEL is set.
If the user prefers dashboards over CLI triage, Grafana dashboards can use the same labels and keywords:
- project filter:
project_nameorproject - environment filter:
env - stream filter:
filename - free-text filter: the request path, trace keyword, or error signature
Quick Start
- Resolve the Loki address and credentials.
- List available project values.
- List available environment values if needed.
- List the target project's
filenamevalues. - Pick the stream that matches the question.
- Query the time window and summarize findings.
Prefer the helper script first:
export LOKI_ADDR="https://your-loki.example.com"
export LOKI_USERNAME="your-basic-auth-user"
export LOKI_PASSWORD="your-basic-auth-password"
python3 scripts/loki_project_logs.py projects --since 720h
python3 scripts/loki_project_logs.py envs --since 720h
python3 scripts/loki_project_logs.py files --project pdrouter --env test --since 24h
python3 scripts/loki_project_logs.py errors --project pdrouter --env test --component web --since 1h
Run these commands from the skill root directory.
The errors subcommand narrows to matching stderr streams by default.
When errors or query --component ... cannot find a filename inside the exact query window, the helper falls back to a 24h discovery window so quiet streams such as nginx stderr are still discoverable.
The helper also escapes --grep and --regex strings for LogQL, so patterns containing quotes or backslashes are safer to pass through the CLI.
If the script is not appropriate, use raw logcli commands from references/query-patterns.md.
Workflow
1. Resolve Loki
Prefer LOKI_ADDR from the current environment.
For deployments behind BasicAuth, also prefer LOKI_USERNAME and LOKI_PASSWORD.
If they are missing, the helper checks common shell config files such as ~/.zshrc for export LOKI_ADDR=....
Do not assume http://localhost:3100 is correct unless the user confirms it.
2. Discover Projects
List project label values before guessing names. This gives the set of known deployments in Loki for the chosen lookback window. In the current internal convention, the project value usually matches the git repository name.
3. Discover Environments
If the user did not specify the environment, list env values first.
Common values include dev, test, and prod.
4. Discover Streams
List filename values for the chosen project and environment.
Use the filename to distinguish the stream type:
*-web-stderr.log: application errors and Python tracebacks*-web-stdout.log: application request and info logs*-worker-stderr.log: worker exceptions*-worker-stdout.log: worker info logs*-nginx-stderr.log: nginx errors*-nginx-stdout.log: access logs or proxy outputinit.log: startup output
Use exact filenames when querying once the right stream is known.
5. Triage Errors
When the user asks whether there are errors:
- Start with
stderrfor the requested component. - Search for obvious error markers such as
ERROR,Exception,Traceback,panic,sqlalchemy.exc, andasyncpg.exceptions. - Pull a broader context query if the first pass shows stack traces or repeated failures.
- Report the result with exact timestamps, stream filename, and the dominant error type.
If the request is about web issues, check both:
*-web-stderr.logfor exceptions*-web-stdout.logfor the request path or surrounding request logs
If the request is about nginx, include both nginx streams because routing failures often show up in stdout access logs while configuration issues show up in stderr.
Response Pattern
When answering the user, include:
- Whether errors were found
- The exact time window used
- The project name
- The environment, if one was part of the query
- The exact filename(s) queried
- One or two representative error lines or a concise paraphrase
- A short root-cause hypothesis when the logs support it
Avoid claiming absence of errors unless you checked the relevant stream for the requested component.
Resources
- Scripted helper: scripts/loki_project_logs.py
- Query cookbook: references/query-patterns.md