Skip to main content

chap-checker

CI PyPI version Python 3.13+ License: AGPL v3 Documentation

A small command-line health-check and alerting tool for DHIS2 instances that integrate with chap-core via a DHIS2 route. Cron-friendly, with optional Slack / generic-webhook alerts on status transitions, a long-running daemon that exposes a browser dashboard (designed for a TV / kiosk) and a JSON state API, and a Textual TUI for the operator-at-a-desk view (locally or pointed at a remote daemon).

Documentation: https://dhis2-chap.github.io/chap-checker

Install

# One-shot run without installing (no PATH pollution):
uvx chap-checker --version
uvx chap-checker verify --url https://dhis2.example.com --token-env DHIS2_TOKEN

# Persistent install into uv's isolated tool environment:
uv tool install chap-checker
chap-checker --version

# Upgrade to the latest release later:
uv tool upgrade chap-checker

# Or, if you're embedding into another uv project:
uv add chap-checker

Quick start

The fastest path is chap-checker init, which drops a working chap-checker.toml (chmod 600) pointed at the public DHIS2 demo so you can verify the tool runs before adding your own instances:

chap-checker init
chap-checker verify           # OK on the play demo

Then edit chap-checker.toml. A typical config:

[instances.prod]
url = "https://dhis2.example.com"
username = "ops"
password_env = "PROD_PASS"
alerts = ["slack", "webhook"]

[alerts.slack]
webhook_url_env = "SLACK_WEBHOOK_URL"

[alerts.webhook]
url_env = "INCIDENT_BUS_URL"
headers = { "Authorization" = "Bearer ..." }

Discover the alert transports and copy-paste their TOML:

chap-checker alerts list                       # registry of available alerters with per-field comments
chap-checker alerts test --kind both           # fire a synthetic OK->FAIL + FAIL->OK pair

Ad-hoc verify against a single instance (no config needed):

# With a DHIS2 Personal Access Token (recommended on modern servers):
export PROD_TOKEN=...
chap-checker verify --url https://dhis2.example.com --token-env PROD_TOKEN

# Or with a password (Basic auth) read from a named env var:
export PROD_PASSWORD=...
chap-checker verify --url https://dhis2.example.com --username admin --password-env PROD_PASSWORD

--password / --token inline still works but is discouraged — the value lands in shell history and ps output. Omit both and you'll be prompted on a TTY. See chap-checker.toml.example for the full config template.

Surfaces

chap-checker tui          # Textual TUI: operator-at-a-desk view, in a terminal
chap-checker serve        # long-running daemon: browser dashboard at / + JSON state at /api/state
chap-checker tui --connect http://daemon-host:8765   # TUI as a thin client of a remote `serve`

Pair them: run chap-checker serve somewhere persistent (a small VM, the TV machine itself, systemd-supervised — see the server guide for the unit file). Pin a kiosk browser at the URL on the TV; operators at desks run chap-checker tui locally or chap-checker tui --connect http://daemon:8765 for the same numbers without spinning up their own check loop. Alerts fire from one place.

Built-in checks

Two namespaces — dhis2_* probes DHIS2 itself, dhis2_chap_* probes chap-core through the DHIS2 route. Each tile in the dashboard, each row in chap-checker checks list, each entry in the JSON output:

  • dhis2_ping/api/me
  • dhis2_system_info/api/system/info
  • dhis2_chap_route/api/routes?filter=code:eq:chap
  • dhis2_chap_ping/api/routes/chap/run/health
  • dhis2_chap_system_info/api/routes/chap/run/system/info
  • dhis2_chap_modeling_app/api/apps (matched by app_hub_id)
  • dhis2_chap_climate_app/api/apps (matched by app_hub_id)

Full reference + endpoint details: Checks.

Development

make install
make lint        # ruff + mypy + pyright
make test
make docs        # serve docs locally

See Development for repo layout and house rules.

Contributing

PRs welcome — start with CONTRIBUTING.md. The development guide on the docs site has the long version: https://dhis2-chap.github.io/chap-checker/guides/development/.

For security issues, see SECURITY.md — please don't open a public issue.

Contributors: github.com/dhis2-chap/chap-checker/graphs/contributors.

License

AGPL-3.0-or-later.

Download files

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

Source Distribution

chap_checker-0.8.3.tar.gz (808.2 kB view details)

Uploaded Source

Built Distribution

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

chap_checker-0.8.3-py3-none-any.whl (830.6 kB view details)

Uploaded Python 3

File details

Details for the file chap_checker-0.8.3.tar.gz.

File metadata

  • Download URL: chap_checker-0.8.3.tar.gz
  • Upload date:
  • Size: 808.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chap_checker-0.8.3.tar.gz
Algorithm Hash digest
SHA256 2f8780325ed49210d3e5586ec191daa5b3e1cad7a26fc8781f5e830b9f1817f7
MD5 f5aa365f0602a1de4e271a8951046754
BLAKE2b-256 a078a8bb2a19e5a2f0fbb3f7d78a06ccfda0afccb8528e7bd294f93e05e6b8b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for chap_checker-0.8.3.tar.gz:

Publisher: release.yml on dhis2-chap/chap-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chap_checker-0.8.3-py3-none-any.whl.

File metadata

  • Download URL: chap_checker-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 830.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chap_checker-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 64ec95e4445555ea0b0906e3dff96169fe577ebbfdf89b9de3b8ad90a150f2ca
MD5 3cf3d6d1b551a17f87b07bece5f9b2fe
BLAKE2b-256 044c468cc7cdadec05138f85f0f475eba870a950ebb689a8c54d15e9fe7d1484

See more details on using hashes here.

Provenance

The following attestation bundles were made for chap_checker-0.8.3-py3-none-any.whl:

Publisher: release.yml on dhis2-chap/chap-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.8.3 This release

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

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