Skip to main content

Application to monitor your systems and give you the security to sleep peacefully at night

Project description

Lifeguard

Build Status Lifeguard Core Publish PyPI version

Examples of Usage

See a complete example at: https://github.com/LifeguardSystem/lifeguard-example

Settings File

In the root of project should be exists a file called lifeguard_settings.py like the example:

"""
Lifeguard Settings
"""
import lifeguard_mongodb
# other dependecies

# Plugins modules
PLUGINS = [
    lifeguard_mongodb,
    # other plugins
]

# You can execute code in the lifeguard startup process
def setup(_lifeguard_context):
    pass

Create a validation

To create a validation you should create a file into validations directory. The file should ends with _validation.py. Example:

from lifeguard import NORMAL, PROBLEM, change_status
from lifeguard.actions.database import save_result_into_database
from lifeguard.actions.notifications import notify_in_single_message
from lifeguard.http_client import get
from lifeguard.logger import lifeguard_logger as logger
from lifeguard.validations import ValidationResponse, validation


@validation(
    "check if pudim is alive",
    actions=[save_result_into_database, notify_in_single_message],
    schedule={"every": {"minutes": 1}},
)
def pudim_is_alive():
    status = NORMAL
    result = requests.get("http://pudim.com.br")
    logger.info("pudim status code: %s", result.status_code)

    if result.status_code != 200:
        status = change_status(status, PROBLEM)

    return ValidationResponse(
        status,
        {status: result.status_code},
    )

Starting with version 1.3.0, it is possible to create validations using yaml files. The file should ends with _validation.yaml. See the example:

validations:
  - validation_name: "validation_name"
    description: "description of validation"
    actions:
      - lifeguard.actions.database.save_result_into_database
    schedule:
      every:
        minutes: 1
    settings:
      notification:
        update_thread_interval: 3600
    execute:
      command: path.to.module.function
      args:
        - "arg1"
        - "arg2"

Validation Actions

Action is a simple python function with only 2 arguments: a validation response and a dict called settings. These settings are the parameter called settings in validation.

def custom_action(validation_response, settings):
    pass

Builtin validations can be found in Wiki.

Create a custom controller

To create a custom controller with decorators see the example

import json

from lifeguard.controllers import controller


@controller("/hello/<name>")
def hello(name):
    return json.dumps({"name": name})

This file should be in the controllers directory and should ends with _controller.py.

Init Lifeguard

Execute: lifeguard

To init only web server: lifeguard --no-scheduler

To init only scheduler: lifeguard --no-server

Settings

To see all settings avaiable run command:

lifeguard -d

Builtin Endpoints

Recover Status

To get global status and all validations.

GET /lifeguard/status/complete

{

    "status": "NORMAL",
    "validations": [
        {
            "validation_name": "pudim",
            "status": "NORMAL",
            "details": {
                "NORMAL": 200
            },
            "settings": {
                "notification": {
                    "notify": true
                }
            },
            "last_execution": "2021-06-15T10:46"
        },
        {
            "validation_name": "my site",
            "status": "NORMAL",
            "details": {
                "NORMAL": 200
            },
            "settings": {
                "notification": {
                    "notify": true
                }
            },
            "last_execution": "2021-06-15T10:46"
        }
    ]
}

To get global status and only non normal validations.

GET /lifeguard/status

{

    "status": "PROBLEM",
    "validations": [
        {
            "validation_name": "my site",
            "status": "PROBLEM",
            "details": {
                "NORMAL": 200
            },
            "settings": {
                "notification": {
                    "notify": true
                }
            },
            "last_execution": "2021-06-15T10:46"
        }
    ]
}

Authentication

Builtin Methods

Basic Authentication

Set users in lifeguard context like in the example:

# in lifeguard_settings.py
from lifeguard.auth import BASIC_AUTH_METHOD

def setup(lifeguard_context):
    lifeguard_context.auth_method = BASIC_AUTH_METHOD
    lifeguard_context.users = [{"username": "test", "password": "pass"}]

Cors

To enable cors use the following settings:

# in lifeguard_settings.py
def setup(lifeguard_context):
    lifeguard_context.cors_settings = {r"/*": {"origins": "*"}}

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

lifeguard-1.5.2.tar.gz (31.2 kB view hashes)

Uploaded Source

Built Distribution

lifeguard-1.5.2-py3-none-any.whl (42.3 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