Skip to content

noor-malaika/pymonitor

Repository files navigation

PyMonitor

A Prometheus-like monitoring server built in Python.

Setup

  1. Install Docker and start ClickHouse:

    sudo systemctl start docker
    sudo systemctl enable docker
    sudo usermod -aG docker $USER
    # Logout and login again
    docker compose up -d
  2. Install dependencies:

    pip install -e .
  3. Create config file scrape_config.json:

    {
      "jobs": [
        {
          "name": "demo",
          "targets": ["http://localhost:9090/metrics"]
        }
      ],
      "scrape_interval": 10
    }
  4. Run the scraper:

    python -m pymonitor.scrape.scrape_targets
  5. Run the API server:

    python -m pymonitor.main

Query API

Query metrics at http://localhost:8000/api/v1/query_range?query=cpu_usage&start=1731177600&end=1731181200

Service Discovery

PyMonitor supports service discovery for finding scrape targets. Configure via environment variables:

  • PYMONITOR_JOB: Job name (default: "default")
  • PYMONITOR_DISCOVERY_MODE: "static", "file", or "dns" (default: "static")
  • PYMONITOR_TARGETS: Comma-separated list of endpoints (for static mode)
  • PYMONITOR_SCRAPE_INTERVAL: Scrape interval in seconds (default: 60)

Example usage:

PYMONITOR_JOB=demo PYMONITOR_DISCOVERY_MODE=static PYMONITOR_TARGETS="http://localhost:9090/metrics" python -m pymonitor.scrape.scrape_targets

For DNS/file-based discovery, see src/pymonitor/service_discovery/discovery.py.

Repo Structure

  • All source code is under src/pymonitor/
  • Ready for packaging (see pyproject.toml)

About

A Prometheus-like monitoring server built in Python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages