Skip to main content

Monitor batch pipelines via API and send email alerts for failures and missed runs

Project description

Pipeline Batch Monitor

Monitor batch jobs from CSV, check status via API, and email alerts for failures, missed runs, long-running jobs, and missing API data.

Version: see VERSION file.

Quick start (development)

cp .env.example .env          # edit with real SMTP/API credentials
./pipeline-monitor setup      # create .venv + dependencies
./pipeline-monitor validate   # check .env, CSV, Python
./pipeline-monitor run-once   # single test cycle
./pipeline-monitor run        # continuous local run

Same commands via Make: make setup, make validate, make run-once, make build.

Package workflow (build → deploy → use)

One CLI drives the full lifecycle:

./pipeline-monitor <command>
Command Purpose
setup Create .venv, install requirements.txt
validate Validate .env, jfl_batch.csv, syntax
run Run locally (foreground, continuous)
run-once One monitoring cycle (cron/debug)
build Create dist/pipeline-status-mailer-<version>.tar.gz + dist/latest.tar.gz
install Production install from source (+ systemd, needs sudo)
deploy Install from tarball (needs sudo)
status systemctl status
logs Follow journal or app log

1. Build release package

On your build machine (with .env configured for validation only — secrets are not bundled by default):

./pipeline-monitor validate
./pipeline-monitor build

Output:

  • dist/pipeline-status-mailer-1.0.0.tar.gz
  • dist/latest.tar.gz (copy of latest build)
  • MANIFEST.txt inside the package (file list + SHA256)

Private pipeline (bundle .env — handle tarball as secret):

./pipeline-monitor build --with-env

2. Copy to target server

scp dist/latest.tar.gz user@prod-server:/tmp/

3. Deploy on target server

ssh user@prod-server
tar -xzf /tmp/latest.tar.gz -C /tmp
cd /tmp/pipeline-status-mailer-*
cp .env.example .env && vi .env
sudo ./pipeline-monitor install --user inferyx --group inferyx

One-step deploy (from dev machine with .env present, copies .env into package during deploy):

sudo ./pipeline-monitor deploy dist/latest.tar.gz --user inferyx --group inferyx

On server after install:

sudo ./pipeline-monitor status
sudo ./pipeline-monitor logs
/opt/pipeline-status-mailer/pipeline-monitor run-once

See package/INSTALL.md inside the release tarball for server-side notes.

Default production paths

Item Path
Application /opt/pipeline-status-mailer
Python venv /home/inferyx/monitoring
Config /opt/pipeline-status-mailer/.env
Batches /opt/pipeline-status-mailer/jfl_batch.csv
systemd unit pipeline-status-mailer.service

Batch CSV (jfl_batch.csv)

Column Required Description
Name Yes Batch name for API
Frequency Yes Daily, Hourly, Monthly, Continuous, …
ExpectedStartTime Scheduled e.g. 9:30, 7:20:00, or 09:00,12:00
AvgExecutionTime Recommended e.g. 10 mins, 1 Hr
ExpectedDayOfMonth Monthly Day 1–31 (default 1)

Monthly example:

batch_monthly_finance_close,Monthly,9:30,10 mins,1

Configuration

Required in .env (see .env.example):

  • SMTP: PIPELINE_SMTP_*, PIPELINE_MAIL_TO, PIPELINE_FROM_NAME
  • API: PIPELINE_API_BASE_URL, PIPELINE_API_TOKEN, PIPELINE_API_TOKEN_HEADER
  • PIPELINE_DEVOPS_EMAIL

Optional tuning:

Variable Default
PIPELINE_CHECK_INTERVAL 60
PIPELINE_SCHEDULE_GRACE_MINUTES 5
PIPELINE_POST_RUN_GRACE_MINUTES 60

Email templates: config.py.

Project layout

Monitor/
  pipeline-monitor      # Main CLI (build / deploy / run)
  pipeline_status_mailer.py
  config.py
  jfl_batch.csv
  .env.example
  VERSION
  Makefile
  scripts/
    lib/common.sh
    build_release.sh
    deploy_release.sh
    install_pipeline_status_mailer.sh
    validate_env.sh
    setup_python_env.sh
    run_with_venv.sh
  package/INSTALL.md
  dist/                 # Created by build

Publish to PyPI (pip install)

Package name: inferyx-monitoring

Full step-by-step guide: docs/PYPI_PUBLISHING.md

Quick publish:

pip install build twine
make pip-build          # creates dist/*.whl and dist/*.tar.gz
make pip-check
make pip-test-upload    # optional: TestPyPI first
make pip-upload         # production PyPI (needs token)

Install from PyPI:

pip install inferyx-monitoring
mkdir ~/pipeline-monitor && cd ~/pipeline-monitor
inferyx-monitoring --init-config
vi .env jfl_batch.csv
inferyx-monitoring --once --work-dir .

Makefile shortcuts

make setup validate build
make install    # sudo install from source
make deploy     # sudo deploy dist/latest.tar.gz
make status logs clean
make pip-build pip-upload   # PyPI release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inferyx_monitoring-1.0.0.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inferyx_monitoring-1.0.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file inferyx_monitoring-1.0.0.tar.gz.

File metadata

  • Download URL: inferyx_monitoring-1.0.0.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for inferyx_monitoring-1.0.0.tar.gz
Algorithm Hash digest
SHA256 59d8fb6bc883ec12bd4e26eda35d16f3cc7188ab05a37bb4ae1345d0cfbae23c
MD5 c2d06e63f5f183ce41eb1259a2e4c8bc
BLAKE2b-256 7a9ed0eb31f35688818d17f7cdb942670d03017e8e3807cfcc389665385bdccb

See more details on using hashes here.

File details

Details for the file inferyx_monitoring-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for inferyx_monitoring-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f4e31b239f7c485412b15d2194f16dbbd63f21fe7c28442371529357e48e267
MD5 f2048b25de66400c440594488b75b5d6
BLAKE2b-256 3a91d6fd5af0b9a0074d0bafbacb82fea84033e00c0ae2b538603224b738da49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page