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 details)

Uploaded Source

Built Distribution

lifeguard-1.5.2-py3-none-any.whl (42.3 kB view details)

Uploaded Python 3

File details

Details for the file lifeguard-1.5.2.tar.gz.

File metadata

  • Download URL: lifeguard-1.5.2.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for lifeguard-1.5.2.tar.gz
Algorithm Hash digest
SHA256 e245167ab7944acc2fe8ed3949eeae1b1534ac2e6f3cf061cb4a216ce50f1f9f
MD5 a59b886ece93a5f06cf8d4f25dca4a2c
BLAKE2b-256 535e2d4ebc5a1af996ceee9623e70c4e834933ff48b36e77225596731978286b

See more details on using hashes here.

File details

Details for the file lifeguard-1.5.2-py3-none-any.whl.

File metadata

  • Download URL: lifeguard-1.5.2-py3-none-any.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for lifeguard-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3db66a581f2c35747c342f01683d5a4e7b8c338a26c7bfd002d2f8549cdeca4f
MD5 5fd8033d124b45da83c815aabd3a5725
BLAKE2b-256 57918a461b0f8a3968084e18328e1d99404aa43847c002320c3bcb6268396ddd

See more details on using hashes here.

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