Per-domain Nginx log analytics with hybrid static reports and live insights.
Find a file
2025-07-18 00:05:47 -05:00
scripts Update last_dt during log import 2025-07-17 23:58:50 -05:00
templates Update requirements and AGENTS instructions 2025-07-17 00:17:46 -05:00
tests Add idempotent import test 2025-07-18 00:03:03 -05:00
.gitignore Update requirements and AGENTS instructions 2025-07-17 00:17:46 -05:00
AGENTS.md Unify import script 2025-07-17 23:40:59 -05:00
LICENSE Initial commit 2025-07-16 22:42:28 -05:00
README.md doc: clarify log import behavior 2025-07-18 00:05:31 -05:00
requirements.txt Update requirements and AGENTS instructions 2025-07-17 00:17:46 -05:00
run-import.sh Unify import script 2025-07-17 23:40:59 -05:00

ngxstat

Per-domain Nginx log analytics with hybrid static reports and live insights.

Generating Reports

Use the generate_reports.py script to build aggregated JSON and HTML files from database/ngxstat.db.

Create a virtual environment and install dependencies:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Then run one or more of the interval commands:

python scripts/generate_reports.py hourly
python scripts/generate_reports.py daily
python scripts/generate_reports.py weekly
python scripts/generate_reports.py monthly

Reports are written under the output/ directory. Each command updates the corresponding <interval>.json file and produces an HTML dashboard using Chart.js.

Importing Logs

Use the run-import.sh script to set up the Python environment if needed and import the latest Nginx log entries into database/ngxstat.db.

./run-import.sh

This script is suitable for cron jobs as it creates the virtual environment on first run, installs dependencies and reuses the environment on subsequent runs.

The importer handles rotated logs in order from oldest to newest so entries are processed exactly once. If you rerun the script, it only ingests records with a timestamp newer than the latest one already stored in the database, preventing duplicates.