Data collector / executor - Site Reliability Framework
Project description
Remote bot on machines to auto collect data *
- collect data
- execute triggers
Setup
Recommended way is to use a virtual-env like:
python3 -m venv /var/lib/sre-bot
. /var/lib/sre-bot/bin/activate
pip install wheel
pip install sre-bot
First steps
sre install-service
sre add-bot-path ./bots
sre new test-bot.py
/etc/sre/sre.conf
{
"bots-paths": [
"/home/sre/autobots/bots",
"/home/sre/autobots/test-bots"
],
"broker": {
"ip": "address of mqtt broker",
"port": 1883, # optional
},
"name": "myhost1",
"log_level": "error"
"log_file": "/var/log/sre/.log",
# used for webhook trigger
"http_address": "0.0.0.0",
"http_port": 8520,
}
Making a new bot
sre new my-bot1
HOSTNAME = "my-virtual-host1" # optional otherwise configured default host
SCHEDULERS = ["*/10 * * * * *"] # optional - used when run is given up to seconds
def run(client):
# requires SCHEDULERS!
client.publish('house/bulb5', payload='off', qos=2)
def on_message(client, msg, payload=None):
if '/restart/machine1' in msg.topic:
...
Calling a webhook
- call http://address:port/trigger/mymachine/restart and a msg with topic "mymachine/restart" is sent
- useful together with zabbix
Example: Zabbix Trigger
Setup Zabbix
// Insert this in the script section of mediatype webhook
try {
Zabbix.Log(4, 'Autobot webhook: ' + value);
var params = JSON.parse(value),
req = new CurlHttpRequest(),
resp;
if (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
}
req.AddHeader('Content-Type: application/html');
resp = req.Post(params.URL, JSON.stringify(params));
if (req.Status() != 200) {
throw 'Response code: ' + req.Status();
}
return true;
}
catch (error) {
Zabbix.Log(3, error);
throw 'Failed with error: ' + error;
}
Make a new bot
import json
def on_message(client, msg, payload=None):
if 'trigger/zabbix' in msg.topic:
data = json.loads(msg.payload.decode('utf-8'))
if data.get('OPDATA') == 'restart_queuejobs' and data.get("ERROR") == "1":
client.publish("restart_queuejobs")
Example: Setup Mosquitto for mqtt with docker
version: '3'
services:
mosquitto:
image: eclipse-mosquitto:1.6
ports:
- 1883:1883
restart: unless-stopped
install directly
pip3 install git+https://github.com/marcwimmer/sre-bot
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
sre-bot-0.0.21.tar.gz
(11.0 kB
view details)
File details
Details for the file sre-bot-0.0.21.tar.gz
.
File metadata
- Download URL: sre-bot-0.0.21.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5752fabd21c1359b81853ba286650d6b12754b4295bd1533eb1a4f2cea2f51b |
|
MD5 | 7e6c4f640d321faca7dd4c331d10bd3d |
|
BLAKE2b-256 | 94195bb9586676bde7c5a3c97bab735bdf695f1f4e42c45b1ded93e187a91e27 |