scripts | ||
static/icons | ||
templates | ||
tests | ||
.gitignore | ||
AGENTS.md | ||
LICENSE | ||
README.md | ||
reports.yml | ||
requirements.txt | ||
run-analysis.sh | ||
run-import.sh | ||
run-reports.sh | ||
setup.sh |
ngxstat
ngxstat
is a lightweight log analytics toolkit for Nginx. It imports access
logs into an SQLite database and renders static dashboards so you can explore
per-domain metrics without running a heavy backend service.
Requirements
- Python 3.10+
- Access to the Nginx log files (default:
/var/log/nginx
)
The helper scripts create a virtual environment on first run, but you can also set one up manually:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Importing Logs
Run the importer to ingest new log entries into database/ngxstat.db
:
./run-import.sh
Rotated logs are processed in order and only entries newer than the last imported timestamp are added.
Generating Reports
To build the HTML dashboard and JSON data files use run-reports.sh
which runs
all intervals in one go:
./run-reports.sh
The script calls scripts/generate_reports.py
internally to create hourly,
daily, weekly and monthly reports. Per-domain reports are written under
output/domains/<domain>
alongside the aggregate data. Open
output/index.html
in a browser to view the dashboard.
If you prefer to run individual commands you can invoke the generator directly:
python scripts/generate_reports.py hourly
python scripts/generate_reports.py daily --all-domains
Analysis Helpers
run-analysis.sh
executes additional utilities that examine the database for
missing domains, caching opportunities and potential threats. The JSON output is
saved under output/analysis
and appears in the "Analysis" tab of the
dashboard.
./run-analysis.sh
Serving the Reports
The generated files are static. You can serve them with a simple Nginx block:
server {
listen 80;
server_name example.com;
root /path/to/ngxstat/output;
location / {
try_files $uri $uri/ =404;
}
}
Restrict access if the reports should not be public.
Running Tests
Install the development dependencies and execute the suite with pytest
:
pip install -r requirements.txt
pytest -q
All tests must pass before submitting changes.
Acknowledgements
ngxstat uses the following third‑party resources:
- Chart.js for charts
- DataTables and jQuery for table views
- Bulma CSS for styling
- Icons from Free CC0 Icons by Jon Hicks (CC0 / MIT)
- Typer for the command-line interface
- Jinja2 for templating
The project is licensed under the GPLv3. Icon assets remain in the public domain via the CC0 license.