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:
# please use python3.9 or higher
python3.9 -m venv /var/lib/sre-bot
. /var/lib/sre-bot/bin/activate
pip install wheel
pip install sre-bot
# to install systemd service
sre install
Completion for user root in bash
Per default ubuntu deactivates ~/.bashrc bash-completion. Uncomment the lines please.
First steps
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/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.1.12.tar.gz
(11.3 kB
view details)
File details
Details for the file sre-bot-0.1.12.tar.gz
.
File metadata
- Download URL: sre-bot-0.1.12.tar.gz
- Upload date:
- Size: 11.3 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 | 6ed52af5c8a359d4b56003bb6bc04303dd432c2769876a659ba21fef0b277f4e |
|
MD5 | 0c1189c7fc316c530d52a617e618039e |
|
BLAKE2b-256 | d6bb11eed3788ac730ee8df8e8020ac2b79f0e829067b9596ddefd01997d11b3 |