Munin: iptables Plugin – Graphen für jede Chain

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Ganz simpel: Ein Plugin, dass für jede Chain einen Graph generiert und die Anzahl der Einträge.

So siehts aus

iptablesMuninGraph

Funktionen

Das Plugin liest alle Chains von iptables aus. Für jede Chain wird dann ein Graph generiert, der die Anzahl an hinterlegten Regeln darstellt.

Mehr bietet das Plugin auch nicht. Muss es aber ja auch nicht.

Installation

Wenn man sich an die Konvention hält installiert man es wie folg (alles über Root):

  1. Kopieren des Codes in die Zwischenablage
  2. Im Terminal des Nodes: Bevorzugten Texteditor öffnen, Code hineinposten, Speichern unter /usr/share/munin/plugins mit einem bevorzugten Namen
  3. Wieder im Terminal des Nodes: ln -s /usr/share/munin/plugins/ /etc/munin-node/plugins/ && service munin-node restart

Zusätzlich muss noch folgender Abschnitt in die Datei (am besten am Ende) munin-node unter /etc/munin/plugin-conf.d/ eingefügt werden:

[<vergebener Name>]
user root
group root

Hinweis: muss natürlich (ohne die spitzen Klammern) durch den Namen der Datei (ohne Dateiendung) ersetzt werden.

Nach der nächsten Aktualisierung wird bereits ein Bild generiert, allerdings sind die ersten Werte NAN (Not a number) und danach __. Nach der dritten Aktualisierung stimmen dann die Werte. Dieser „Fehler“ liegt nicht auf meiner Seite. Nach 20 Minuten erkennt man schon die einzelnen Graphen.

Das Plugin hat keine speziellen Abhängigkeiten. Die Bash wird durch die String-Funktionen benätigt. Ein Wechsel zur SH ist nicht so leicht, kann aber gemacht werden. Natürlich muss iptables installiert und zugreifbar sein.

Der Code

Folgenden Code lizensiere ich unter der GPL:

#!/bin/bash

KNOWN_CHAINS=`iptables -n -L | grep "Chain" | awk '{print $2}'`

case $1 in
    config)

        ## Configure the plugin

        # Basic graph values
        echo "graph_vlabel Rules per chain"
        echo "graph_title Rules of each chain"
        echo "graph_category Network"
        echo "graph_scale no"
        echo "graph_info Shows how much entrys for each chain in iptablesa are stored"

        # Prepare a 'line' for each chain
        for currentChain in $KNOWN_CHAINS
        do

            # Print 'labels' for each chain            
            echo "${currentChain//-/}.label $currentChain"
            echo "${currentChain//-/}.type GAUGE"
            echo "${currentChain//-/}.min 0"

        done
    ;;

    autoconf)

        # Print yes if the plugin think it can be run otherwise no
        echo "yes"

    ;;
    *)
        # Fetch the data
        for currentChain in $KNOWN_CHAINS
        do

            # Print value
            echo "${currentChain//-/}.value `iptables -S $currentChain | wc -l`"

        done

    ;;
esac

Changelog

Datum Grund der Änderung
21.07.2013 Veröffentlicht

Du hast einen Kommentar, einen Wunsch oder eine Verbeserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.

🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg)
Zurück