Skip to main content

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

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;
}

image image image image image

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


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.14.tar.gz (11.5 kB view details)

Uploaded Source

File details

Details for the file sre-bot-0.1.14.tar.gz.

File metadata

  • Download URL: sre-bot-0.1.14.tar.gz
  • Upload date:
  • Size: 11.5 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

Hashes for sre-bot-0.1.14.tar.gz
Algorithm Hash digest
SHA256 ad8b0736fdce22c6c3347c3f435a080415a3fdb1fc87ae8a82356132c0c1f379
MD5 12b630b24662b9182b38fe6ccaeca9a3
BLAKE2b-256 cc5bcf213b134539caec35f3060e3544f3af81c7647c606578053558cc78b798

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