Skip to main content

Kedro hook to trace system resources (Memory, CPU, Disk I/O, Network, Swap) during pipeline execution via pluggable sinks

Project description

PyPI Python License Ruff uv ty prek

kedro-psutil-telemetry

A Kedro hook that continuously samples system resources in a background thread during pipeline execution and dispatches metrics to pluggable sinks (console, MLflow, or your own).

Full documentation at saemeon.github.io/kedro-psutil-telemetry

Installation

pip install kedro-psutil-telemetry

That's it. Kedro auto-discovers the hook via entry points — no settings.py changes needed. Metrics are logged to the console at the default 1-second interval.

With MLflow support:

pip install kedro-psutil-telemetry[mlflow]

Usage

Zero-config (auto-discovery)

Install the package and run your pipeline. Kedro registers the hook automatically with default settings (console logging, 1s interval, all metrics enabled).

Custom configuration

To change the sink, interval, or any metric, register the hook explicitly in settings.py:

from kedro_psutil_telemetry import PipelinePsutilTelemetry, mlflow_sink

HOOKS = (
    PipelinePsutilTelemetry(
        sink=mlflow_sink,  # log to MLflow instead of console
        interval=2.0,      # sample every 2 seconds
    ),
)

Manual registration takes precedence — Kedro won't double-register the hook.

Metrics

All metrics are tagged with the currently-running node name and use the configurable prefix (default: "pipeline").

Metric Description
{prefix}.mem.rss_mb RSS memory of main process + children (MB)
{prefix}.mem.swap_mb System swap usage (MB)
{prefix}.cpu.percent System-wide CPU utilisation (%)
{prefix}.io.read_mb Disk read since last sample (MB)
{prefix}.io.write_mb Disk write since last sample (MB)
{prefix}.net.sent_mbs Network bytes sent per second (MB/s)
{prefix}.net.recv_mbs Network bytes received per second (MB/s)

A peak-RSS and peak-CPU summary is logged at the end of every run.

All options

HOOKS = (
    PipelinePsutilTelemetry(
        sink=mlflow_sink,      # or a list of sinks, or your own callable
        interval=2.0,          # sample every 2 seconds (default: 1.0)
        prefix="pipeline",     # metric name prefix (default: "pipeline")
        include_children=True, # include child processes (default: True)
        cpu=False,             # disable a metric by passing False
        net_sent=False,
        disk_read="my.reads",  # rename a metric by passing a string
    ),
)

Custom Sinks

Any callable matching (name: str, value: float, step: int, tags: dict | None) -> None works as a sink:

def my_sink(name, value, step, tags=None):
    print(f"{name}={value:.2f} @ step {step} node={tags.get('node')}")

HOOKS = (PipelinePsutilTelemetry(sink=my_sink),)

License

MIT

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

kedro_psutil_telemetry-0.0.2.tar.gz (213.2 kB view details)

Uploaded Source

Built Distribution

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

kedro_psutil_telemetry-0.0.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file kedro_psutil_telemetry-0.0.2.tar.gz.

File metadata

  • Download URL: kedro_psutil_telemetry-0.0.2.tar.gz
  • Upload date:
  • Size: 213.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kedro_psutil_telemetry-0.0.2.tar.gz
Algorithm Hash digest
SHA256 835ae9e31fbf3007c76ba1a5e98e4b7d9f5deb8e40becc945a882a4e1768449a
MD5 5ee7e9a43fceeb069db2d507ea1435d7
BLAKE2b-256 29c064b336b6e6aabc11fad7e3a785494787117b8dfb44a4ccba0b782d42e35b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kedro_psutil_telemetry-0.0.2.tar.gz:

Publisher: publish.yml on saemeon/kedro-psutil-telemetry

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

File details

Details for the file kedro_psutil_telemetry-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for kedro_psutil_telemetry-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dd3c7961026f5e96140892edde8c07529a96c103c7851f1d8c98c026a8876763
MD5 6f8c1dbf0d3a0455d7e6d87bfa9d481b
BLAKE2b-256 9e8bb7145bc6bce78caee0139b019477e82a887d2b7379d38946fb126bd17a2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for kedro_psutil_telemetry-0.0.2-py3-none-any.whl:

Publisher: publish.yml on saemeon/kedro-psutil-telemetry

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

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