Sammelt ALFRED-Daten und verteilt sie an verschiedene Dienste weiter (Karte, Bot, Graphite, Knoten-Management, etc.)

Helge Jung 6a83ba86e4 adjust ALFRED data parsing to newer format -.- 8 years ago
contrib 6a4c392735 add local operation scripts 9 years ago
ffstatus 6a83ba86e4 adjust ALFRED data parsing to newer format -.- 8 years ago
.gitignore 6a4c392735 add local operation scripts 9 years ago
Readme.md 6a4c392735 add local operation scripts 9 years ago
batcave.py 2c1a916bc2 BaseStorage: add metric_handler callback to be used by Graphite 8 years ago
batcave.sublime-project ae8979e552 add Sublime project file 9 years ago
requirements.txt 081c8db017 add requirements.txt listing all necessary packages 9 years ago

Readme.md

BATCAVE

Batman / Alfred Transmission Collection, Aggregation & Value Engine

Dieser Daemon läuft auf einem Rechner der im Freifunk-Mesh hängt und fragt periodisch (Default = 15s) die Batman- und Alfred-Daten ab.

Die Daten werden aggregiert und können anschließend an mehrere Datensenken weitergegeben werden:

  • Knoten-Management (allgemeine Meta-Daten zu eigenen Knoten)
  • Graphite (Knoten-Graphen und Detail-Statistiken)

Zusätzlich besteht die Möglichkeit der Datenabfrage über eine HTTP-JSON-Schnittstelle.

Voraussetzungen

Installation

sudo apt-get install python-daemon python-redis python-requests
sudo ln -s "`pwd`/contrib/init-script.sh" /etc/init.d/ffstatus
echo "DAEMON_DIR=`pwd`" | sudo tee -a /etc/default/ffstatus
sudo update-rc.d ffstatus defaults
sudo update-rc.d ffstatus enable

Aufruf

Ohne Paramter startet die BATCAVE mit einem lokalen Storage (storage.dat im aktuellen Verzeichnis). Empfohlen wird jedoch die Verwendung von Redis als Storage-Backend. Hierzu ist dem Parameter -S mindestens der String "redis:" anzugeben. Optional folgen können - jeweils mit Doppelpunkt getrennt - der Redis-Hostname, -Port und -Kennwort; z.B. -S redis:localhost:6379:geheim.

usage: batcave.py [-h] [--logfile LOGFILE] [--interval INTERVAL] [-v] [-d]
                  [-n] [-A ALFRED_JSON] [-B BATADV_VIS] [-G GRAPHITE_HOST]
                  [--graphite-port GRAPHITE_PORT] [--dashing-url DASHING_URL]
                  [--dashing-token DASHING_TOKEN]
                  [--api-bind-host API_BIND_HOST]
                  [--api-bind-port API_BIND_PORT] [-S STORAGE]

Batman/Alfred Transmission Collection, Aggregation & Value Engine

optional arguments:
  -h, --help            show this help message and exit
  --logfile LOGFILE     path for log file
  --interval INTERVAL   data poll interval
  -v, --verbose         increase output verbosity
  -d, --no-detach       Don't detach (daemonize) ourself
  -n, --no-send         Fetch data but don't send it
  -A ALFRED_JSON, --alfred-json ALFRED_JSON
                        executable path for alfred-json
  -B BATADV_VIS, --batadv-vis BATADV_VIS
                        executable path for batadv-vis
  -G GRAPHITE_HOST, --graphite-host GRAPHITE_HOST
                        Graphite host
  --graphite-port GRAPHITE_PORT
                        Graphite port
  --dashing-url DASHING_URL
                        Dashing URL
  --dashing-token DASHING_TOKEN
                        Dashing's secret update token
  --api-bind-host API_BIND_HOST
                        API-Server Hostname
  --api-bind-port API_BIND_PORT
                        API-Server Port
  -S STORAGE, --storage STORAGE
                        Path where to store data or
                        "redis:[<host>[:<port>[:<password>]]]"

Lokaler Betrieb (nur sinnvoll für Entwickler)

Im contrib/ liegen mehrere Skripte für den lokalen Betrieb:

  • fetch-current-data.sh lädt aktuelle Rohdaten der Tools alfred-json, batctl und batadv-vis und speichert sie lokal ab.
  • run-local.sh startet die BATCAVE und leitet die Aufrufe statt zu den richtigen Tools in Helfer-Skripte im Verzeichnis um.