Skip to content

pyth-network/pyth-observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7328160 · Apr 14, 2025
May 7, 2024
Apr 14, 2025
Apr 14, 2025
Nov 15, 2024
Jan 3, 2023
Nov 15, 2024
Jun 26, 2023
Jan 31, 2024
May 17, 2024
Nov 15, 2024
Nov 11, 2022
Apr 14, 2025
Apr 14, 2025
Nov 11, 2022
Nov 15, 2024
May 9, 2024

Repository files navigation

Pyth Observer

Observe Pyth on-chain price feeds and run sanity checks on the data.

Usage

Container images are available at https://github.com/pyth-network/pyth-observer/pkgs/container/pyth-observer

To run Observer locally, you will need:

  • Python 3.10 (pyenv is a nice way to manage Python installs, and once installed will automatically set the version to 3.10 for this project dir via the .python-version file).
  • Poetry, which handles package and virtualenv management.

Install dependencies and run the service:

$ poetry env use $(which python) # point Poetry to the pyenv python shim
$ poetry install
$ poetry run pyth-observer

Use poetry run pyth-observer --help for documentation on arguments and environment variables.

To run tests, use poetry run pytest.

Configuration

See sample.config.yaml for configuration options.

Event types are configured via environment variables:

  • DatadogEvent

    • DATADOG_EVENT_SITE - Division where Datadog account is registered
    • DATADOG_EVENT_API_KEY - API key used to send requests to Datadog API
  • LogEvent

    • LOG_EVENT_LEVEL - Level to log messages at
  • TelegramEvent

    • TELEGRAM_BOT_TOKEN - API token for the Telegram bot
    • OPEN_ALERTS_FILE - Path to local file used for persisting open alerts
  • ZendutyEvent

    • ZENDUTY_INTEGRATION_KEY - Integration key for Zenduty service API integration
    • OPEN_ALERTS_FILE - Path to local file used for persisting open alerts

Alert Thresholds

  • Alert thresholds apply to ZendutyEvent and TelegramEvent (resolution only applies to zenduty)
  • Checks run approximately once per minute.
  • These thresholds can be overridden per check type in config.yaml
    • alert_threshold: number of failures in 5 minutes >= to this value trigger an alert (default: 5)
    • resolution_threshold: number of failures in 5 minutes <= this value resolve the alert (default: 3)

Finding the Telegram Group Chat ID

To integrate Telegram events with the Observer, you need the Telegram group chat ID. Here's how you can find it:

  1. Open Telegram Web.
  2. Navigate to the group chat for which you need the ID.
  3. Look at the URL in the browser's address bar; it should look something like https://web.telegram.org/a/#-1111111111.
  4. The group chat ID is the number in the URL, including the - sign if present (e.g., -1111111111).

Use this ID in the publishers.yaml configuration to correctly set up Telegram events.