Nagios und Gluon

Hi, aktuell überwache ich meine FFRN APs über Nagios und die json Datei unter http://map.ffrn.de/nodes.json
Diese gibt es aber unter gluon ja nicht mehr wenn ich das richtig sehe …
Gibt es da schon eine Lösung oder bin ich zu schnell? :-)

Ich habe das bei mir angepasst und kann nachher mein neues Script hier posten.

Eigentlich hatte ich gehofft, dass ich die Knoten jetzt über IPv6 direkt monitoren kann, das funktioniert aber leider relativ schlecht (ist eine ganz andere Baustelle). Aktuell scheint die alte Lösung mit neuer Datei und neuer Struktur die beste Monitoring-Lösung zu sein.

Hi tobox, danke für die schnelle Info. Das wäre super von dir wenn Du es posten kannst :-)

THX …

Hi,
nodes.json gibt es immer noch. Aber jetzt unter
http://map.freifunk-rhein-neckar.de/data/nodes.json

Hier meine crontab-Einträge:

1,11,21,31,41,51 * * * * /usr/lib/nagios/plugins/update_freifunk_json.sh
@reboot /usr/lib/nagios/plugins/update_freifunk_json.sh

Der Inhalt des update-scripts:

#!/bin/sh

wget -q  -O /tmp/gluon-nodes.json_ http://map.ffrn.de/data/nodes.json && mv /tmp/gluon-nodes.json_ /tmp/gluon-nodes.json

Hier der Inhalt des Zabbix-Scriptes, mit dem ich den Client-Count monitore:

#!/usr/bin/python

import json
import sys
from optparse import OptionParser

parser = OptionParser()
parser.add_option("--hostname", dest="hostname", help="hostname")

(options, args) = parser.parse_args()

nodes_json = open('/tmp/gluon-nodes.json', 'r').read()
nodelist = json.loads(nodes_json)

clientcount=0

for mac in nodelist["nodes"]:
    node=nodelist["nodes"][mac]
    if str(node["nodeinfo"]["hostname"]).lower() == str(options.hostname).lower():
        if node["flags"]["online"] == True:
            clientcount=node["statistics"]["clients"]
        break

print(clientcount)

Da ich das Monitoring, ob ein Knoten online ist, oder nicht aktuell per IPv6 direkt mache, habe ich kein Nagios-Script dafür, das sollte ich aber aus dem Zabbix-Script trivial umschreiben lassen. Vielleicht kann ich das in der Mittagspause schnell machen.

Mit der heißen Nadel gestrickt, scheint aber zu gehen:

#!/usr/bin/python

import json
import sys
from optparse import OptionParser

parser = OptionParser()
parser.add_option("--hostname", dest="hostname", help="hostname")

(options, args) = parser.parse_args()

nodes_json = open('/tmp/gluon-nodes.json', 'r').read()
nodelist = json.loads(nodes_json)

clientcount=0

for mac in nodelist["nodes"]:
    node=nodelist["nodes"][mac]
    if str(node["nodeinfo"]["hostname"]).lower() == str(options.hostname).lower():
        if node["flags"]["online"] == True:
            print("OK: online")
            sys.exit(0)
        else:
            print("Critical: offline")
            sys.exit(2)
        break

print("Unkown")
sys.exit(3)
1 „Gefällt mir“

Also ich kann die Status-Seite (normal erreichbar über die IPv6 Adresse) auch über die WAN IP des Knotens erreichen, hierzu musste ich in der Datei “/etc/config/firewall” einen Eintrag, analog zu “ssh” erstellen und den Port auf 80 umstellen. Eine genaue Anleitung gibt es Hier

Grüße
Hermann