Skip to main content

A Pythonic implementation of the Phi-Accrual failure detector

Project description

failure-detector

A Pythonic implementation of the Phi-Accrual Failure Detector.

Phi-Accrual Failure Detectors detect system outages by statistically modeling inter-arrival times of heartbeat (ping) messages over time. The system is declared as unavailable once heartbeats are significantly delayed compared to those recently observed.

Usage

Install with pip:

$ pip install failure-detector

Detecting network outages works roughly as follows:

from failure_detector import PhiAccrualFailureDetector

detector = PhiAccrualFailureDetector(
    # suspicion threshold for which the detector declares the system unavailable
    threshold=7.0,
    # initial estimate of the mean heartbeat inter-arrival time (20ms)
    mean_estimate=20.0,
    # A lower bound on the standard-deviation of heartbeat inter-arrival 
    # times. The computation of the phi-value uses #max(min_stddev, sample 
    # stddev); this prevents the estimated distribution from collapsing when 
    # e.g., all sampled heartbeats are equal
    mean_stddev=3.0,
    # size of the sample buffer of previous heartbeat inter-arrival times
    num_samples=30
)

while True:

    # perform heartbeat every second
    time.sleep(1)
    heartbeat_ms = ... # ping some endpoint

    if not detector.evaluate(heartbeat_ms):
        # report system as unavailable

    else:
        # add to sample buffer 
        detector.observe(heartbeat_ms)

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

failure_detector-0.1.1.tar.gz (3.6 kB view hashes)

Uploaded Source

Built Distribution

failure_detector-0.1.1-py3-none-any.whl (4.5 kB view hashes)

Uploaded Python 3

Supported by

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