Application to monitor your systems and give you the security to sleep peacefully at night
Project description
Lifeguard
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:
import requests
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.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(
"pudim_is_alive",
NORMAL,
{status: result.status_code},
{"notification": {"notify": True}},
)
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"}]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for lifeguard-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 390c80dba4a1ba3eb4abc49a336852dbfd7d593b8ef3278f369f6e0fdd67ec1a |
|
MD5 | 1b9daec7375e5c3dbb4031ae2b2a2be4 |
|
BLAKE2b-256 | 8cc74c2c1a0b6f5073b11805dad40259000757f5503a3a117fcdfd23dad95d5d |