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:
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"}]
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.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a06e2c4dc8be332e05cb7b62b8f957753a58ba0f1d306b9434b429cffc30a73 |
|
MD5 | 639c21238b25bb04a80d9458993b1523 |
|
BLAKE2b-256 | 05c416cfd187255e8e8abd8d07db727e0927f93da99a8a2e07036845384a0559 |