Skip to main content

The Modular Autonomous Discovery for Science (MADSci) Event and Logging Manager.

Project description

MADSci Event Manager

Handles distributed logging and events throughout a MADSci-powered Lab.

MADSci Event Manager Architecture Diagram

Features

  • Centralized logging from distributed lab components
  • Event querying with structured filtering
  • Arbitrary event data support with standard schema
  • Python logging-style log levels
  • Alert notifications (email, etc.)

Installation

See the main README for installation options. This package is available as:

Dependencies: MongoDB database (see the example_lab)

Usage

Quick Start

Use the example_lab as a starting point:

# Start with working example
docker compose up  # From repo root
# Event Manager available at http://localhost:8001/docs

# Or run standalone
python -m madsci.event_manager.event_server

Manager Setup

For custom deployments, create an Event Manager definition:

madsci manager add -t event_manager

See example_event.manager.yaml for configuration options.

Client

You can use MADSci's EventClient (madsci.client.event_client.EventClient) in your python code to log new events to the event manager, or fetch/query existing events.

from madsci.client.event_client import EventClient
from madsci.common.types.event_types import Event, EventLogLevel, EventType

event_client = EventClient(
    event_server="https://127.0.0.1:8001", # Update with the host/port you configured for your EventManager server
)

event_client.log_info("This logs a simple string at the INFO level, with event_type LOG_INFO")
event_client.info("This does the same thing")
event = Event(
    event_type="NODE_CREATE",
    log_level=EventLogLevel.DEBUG,
    event_data="This logs a NODE_CREATE event at the DEBUG level. The event_data field should contain relevant data about the event (in this case, something like the NodeDefinition, for instance)"
)
event_client.log(event)
event_client.log_warning(event) # Log the same event, but override the log level.

# Get the 50 most recent events
event_client.get_events(number=50)
# Get all events from a specific node
event_client.query_events({"source": {"node_id": "01JJ4S0WNGEF5FQAZG5KDGJRBV"}})

event_client.alert(event) # Will force firing any configured alert notifiers on this event

Alerts

The Event Manager provides some native alerting functionality. A default alert level can be set in the event manager definition's alert_level, which will determine the minimum log level at which to send an alert. Calls directly to the EventClient.alert method will send alerts regardless of the alert_level.

You can configure Email Alerts by setting up an EmailAlertsConfig (madsci.common.types.event_types.EmailAlertsConfig) in the email_alerts field of your EventManagerSettings.

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

madsci_event_manager-0.5.0rc3.tar.gz (42.1 kB view details)

Uploaded Source

Built Distribution

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

madsci_event_manager-0.5.0rc3-py3-none-any.whl (41.5 kB view details)

Uploaded Python 3

File details

Details for the file madsci_event_manager-0.5.0rc3.tar.gz.

File metadata

  • Download URL: madsci_event_manager-0.5.0rc3.tar.gz
  • Upload date:
  • Size: 42.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.26.0 CPython/3.9.23 Linux/6.11.0-1018-azure

File hashes

Hashes for madsci_event_manager-0.5.0rc3.tar.gz
Algorithm Hash digest
SHA256 a4516eaf3707b9113dfb4653e36874bfb636e7a93db2d94840d32b276129c3b8
MD5 3b76a48dd6b8518f1155ab01db4f5e39
BLAKE2b-256 7e3505d47480d11fbca3b591e2dd68d2c172a6a115a209244b4a04fb2a6ba9c4

See more details on using hashes here.

File details

Details for the file madsci_event_manager-0.5.0rc3-py3-none-any.whl.

File metadata

File hashes

Hashes for madsci_event_manager-0.5.0rc3-py3-none-any.whl
Algorithm Hash digest
SHA256 3f28e7b704baaee6f3404de90095560401e6db8433cf2b741c1803fa97e14993
MD5 4e2843c58f35912c2b72ca1d3d3191fa
BLAKE2b-256 ce87c958e7584f4ce83f18da4b3b5ce1d3a584da4e70281286b14c1befcc2dfc

See more details on using hashes here.

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