Table of contents
- 04.02.2013 - Quick monitoring script for commandline using google graph
- 04.02.2013 - Krimskrams, Goggelmoggel und Muggefugg
- 01.02.2013 - Modemtöne - jemand hat eine schöne Seite für die Geschichtsbücher hinzugefügt
- 01.02.2013 - Der kleine Sexismus
- 30.01.2013 - Wie richtiger Datenschutz vor Willkür schützt
Quick monitoring script for commandline using google graph
So, you need to setup a graph for something you maintain, for instance response time of a webserver, memory consumption of some process or open database handles. Fast.
You could use MRTG, if you've got it already running. But either way - to add a new graph there isn't really done fast. And what if you don't have MRTG? What about GNU Plot or Google Graph? Every tool like this needs handwork to be done before being able to produce usefull output. One needs more than the other.
Enter quickmon. This is a small script I wrote for the very purpose. It doesn't have any dependencies and therefore runs out-of-the-box. You supply it one or more shell commands and it generates a google graph page and a logfile where it maintains history. It is really not possible to create monitoring graphs any faster!
And as a plus, the tool itself doesn't require internet access. It can run anywhere, inside some protected DMZ or the like. Only the browser which is used to view the output page needs internet access to fetch the google graph JS-library. That's it.
So, first of all, grab a copy of the script from here.
Now, let's take a look at some examples:
quickmon.pl -n "google mx lookup responsetime" \
-t "google millisecs" \
-c "host -v -t MX google.com 8.8.8.8 | grep Received | awk '{print \$7}'" \
-l
In this example we monitor the response time of googles nameserver (when asked for its mx-record) in milliseconds. As you can see, there's one -t and one matching -c parameter. -t tells us what we are actually monitoring and -c is the shell command to be executed. In this example we're using host -v which prints the responsetime of a query in milliseconds. We fetch this value using the grep + awk after the pipe. Here's the output:

Here's another example:
quickmon.pl -n "google webserver response" \
-t "www.google.com" \
-c "wget -4 -q -O /dev/null www.google.com" \
-l
Note the difference to the previous one: we didn't put some grep + awk parser stuff into our shell command. If you do that, the script measures the time it takes to execute the command itself.
This is how it looks after some time:

How about having multiple items in a graph? No problem, you can pass multiple -t and -c parameters to the script. However, be careful to have always one -t for every -c. And: order matters.
quickmon.pl -n "webserver comparision" \
-t "www.google.com" -c "wget -4 -q -O /dev/null www.google.com" \
-t "www.facebook.com" -c "wget -4 -q -O /dev/null www.facebook.com" \
-t "www.apple.com" -c "wget -4 -q -O /dev/null www.apple.com" \
-l
Ok, quite a long commandline. Watch the matching -t and -c parameters. And here's the output:

One last thing: You might have noticed the -l flag. If supplied, the script runs forever and executes the given commands once every second. That's enough for some quick graphing but sometimes you might need to create graphs for longer timescales, say some days or weeks. In such cases running once per second might be overkill. And executed this way, the script doesn't survive reboots. In such cases just add a cronjob, which executes the quickmon.pl script once every 5 minutes (or whatever you like) and leave the -l parameter. Example:
*/5 * * * * cd /home/user/tmp/ && /usr/local/bin/quickmon.pl -t "title" -c "command"
Beware the chdir call: quickmon.pl uses the current directory to write its logfile and the output page (index.html).
In case you want to take a look at a live sample, here you go: it is the webserver comparision described above, run every 5 minutes by cron.
Well. While this all might sound very cool, there's still one usecase where quickmon.pl could be too complicated. Let's recall: for every painted line in the output graph you have to provide a shell command which returns its value. What if you already have a source which returns such values all at once? Given the examples above it might look like we have to provide one -c parameter per value but each command has to split the same input source differently. That's odd. To say the least.
Take a look at this command output:
$ netstat -w 1 -I bge0 -q 1
input (bge0) output
packets errs idrops bytes packets errs bytes colls
9 0 0 828 8 0 9108 0
We've entered the netstat command which printed some stats about a specific network interface. Wouldn't it be good to feed quickmon directly with that output? The good news is: it's possible! Here's a quickmon call which catches some of those values - in and out bytes - to generate a graph from it:
while :; do netstat -w 1 -I bge0 -q 1 | egrep -v "(input|packets)"; done \
| quickmon.pl -t in-bytes -t out-bytes -p -n bge0 -f 3,6
There's a lot new stuff here, let's dig into it:
- We're calling the netstat command inside an infinite while loop, because otherwise it doesn't print to stdout but to our controlling terminal (which quickmon doesn't catch). This is freebsd specific. Behavior maybe different on other OSes.
- The egrep filters out the headings.
- We provide only 2 titles using -t, because we catch only field #3 and #6 (count starts from 0) by using the -f option.
- Option -p tells quickmon to watch a file. Since we didn't specify a filename, it uses STDIN, which is actually the output of our while loop.
And this is the output of the above after a while:

Nice, isn't it?
By default quickmon splits the input using whitespace. You might alter this behavior by supplying a different field-separator using the -F option.
Update 2015-10-18:
The script is now available on Github. The switch -l now has an optional parameter, the time in seconds to wait between loops, a float (i.e. .1 or 2.5 would be legal)Also, in pipe mode (-p) it's now possible to specify one title with a timestamp using format characters. So if your input file already contains a timestamp you can use that instead of generated ones.
Krimskrams, Goggelmoggel und Muggefugg
Update 2013-05-06:
Der beste Spruch über Merkel, den ich je gelesen hab:Nächstes Mal: Angela Merkel (obligatorisches Foto, wo sie diese Handgeste von ihrem Heimatplaneten macht
Update 2013-04-23:
FreiheitUpdate 2013-04-12:
Schöne Geschichte über den <blink> HTML tag von dem Mann, dessen Idee das war (der ihn aber letztlich nicht berbrochen hat) :)Update 2013-04-11:
Die Würde des Menschen ist unauffindbar.Update 2013-03-23:
Defcon 20: Bruce Schneier answers your questions. Sehr gut.Der beste Spruch kam, als er auf die Zunehmende Übermacht der Regierungen und Konzerne angesprochen wurde:
Manchmal ist das beste, das wir tun können, langsamer zu verlieren
Update 2013-02-13:
Ein wirklich cooles Projekt: Widerstand Zwecklos:Update 2013-02-04:
Haha, jemand hat einen Weg gefunden, der GEZ zu entkommen! Sehr schön. Obs klappt, steht allerdings auf einem anderen Blatt...Update 2013-02-04:
Realität ist das, was nicht verschwindet, wenn man aufhört daran zu glauben.Philip K. Dick
Modemtöne - jemand hat eine schöne Seite für die Geschichtsbücher hinzugefügt
Jeder, der schon in den 90ern online war, kennt diesen Sound, den das analoge Modem damals gemacht hat. Man wusste zwar, dass sich da die 2 Modems "unterhalten" über irgendwelche Verbindungsparameter, aber was genau die da reden - keine Ahnung.
Oona Räisänen hat sich der Aufgabe angenommen, das ganze mal zu visualisieren. Und WIE ihr das gelungen ist, ich bin völlig von den Socken.
Das waren noch Zeiten, hach! Was waren wir frei! Keine faschistischen Innenminister, keine Datensammler, keine Abmahner. Was ich nicht alles mit diesem Sound assoziiere :)
Sehr schön - dort in den Kommentaren gefunden - ist auch ein Chat-Transscript so einer Modemsession, auf modern gestylt:
Modem A: hey babe, you dtmf?
Modem B: u know it
Modem A: what u up 4 2nite? wanna v.8?
Modem B: i wanna ack u like my daddy net2phone use 2 ack me
Modem A: um ok... v.8 then
Modem B: lol jk, u comin?
Modem A: brt just gotta turn off echo suppressors n cancellers
Modem B: ok i wait
Modem B: my pcm is so modulated
Modem A: lol rly? u think u can handle V.90/V.92?
Modem B: D/A?
Modem A: ...D?
Modem B: wtf no, im not into that
Modem A: lol jk we can do V.42 LAPM if u want im down 4 nething
Modem A: up to 3429 o/c
Modem A: u know i give as good as i get, ne way u want it, loud or soft, high or low, fast or slow, i got all the time in the world 4 u babe, my clock source is internal
Modem B: of course no 3429. and same 4 me. except i might lose track of time, lol
Modem B: and honey if u with me we gon be makin sum NOISE
Modem B: 6db at LEAST u know how i like it
Modem A: lol i hear ya, 3200 all nite long, the way u get me goin maybe we even go 2 4800 lol
Modem A: set ur pre-emphasis filter params n put on that 1920 hz carrier frequency i got u
Modem A: im here baby
[SCRAMBLED]
Ich bin jedenfalls völlig begeistert!
Der kleine Sexismus
Ist ja allerorten heuer viel zum Thema #aufschrei zu lesen. Eben im Mikrocontrollerforum fiel mir der Spruch hier auf:
Kommentare sind was für Mädchen
Auf den ersten Blick nur eine unbedeutende Kleinigkeit. Aber wenn man genauer drüber nachdenkt, insbesondere dass man selbst hier und da mal solche Sprüche gebracht hat.
↷ 01.02.2013 🠶 #gesellschaft ⤒
Wie richtiger Datenschutz vor Willkür schützt
Die Augsburger Allgemeine betreibt ein Forum, in dem Menschen Zeitungsartikel diskutieren können. In einem dieser Artikel ging es um das politische Wirken von Ordnungsreferent Volker Ullrich, das einer der Benutzer wie folgt kommentiert hatte:
Dieser Ullrich verbietet sogar erwachsenen Männern ihr Feierabendbier ab 20.00 Uhr, indem er geltendes Recht beugt und Betreiber massiv bedroht!
Aufgrund dieses Kommentars fühlte sich Ullrich beleidigt und in seiner Ehre verletzt, was in Deutschland - so traurig das sein mag - rechtlich verfolgbar ist. Er erstattete Anzeige und das Amtsgericht Augsburg beauftragte die Polizei mit einer Durchsuchung der Redaktionsräume um an die Daten des Nutzers zu kommen, die nachher die Daten freiwillig herausgerückt hatten. So weit, so bekannt.
Nun wird vielerorts darauf hingewiesen, dass keineswegs der Politiker Ullrich einen Fehler gemacht hätte, indem er die Sache zur Anzeige gebracht hat, sondern das Amtsgericht Augsburg, das aufgrund dieser Anzeige eine Durchsuchung bei einem verfassungsrechtlich geschützen Organ in die Wege geleitet hatte.
Diese Ansicht ist in zweierlei Hinsicht falsch. Erstens ist es tatsächlich Ulrichs Anzeige, die den Stein ins Rollen brachte. Insofern ist er als der Verursacher einer Willkürjustiz zu betrachten. Er mag formaljuristisch im Recht gewesen sein (d.h. die Anzeige zu erstatten! Ob die Anzeige gerechtfertigt war, darf zu bezweifeln sein). Er hätte, als Person des öffentlichen Interesses, aber auch einfach auf eine Verfolgung verzichten können. Ein Schaden wäre ihm nicht entstanden. Niemand hätte von dem Forenbeitrag überhaupt Notiz genommen. Andererseits ist es auch nicht der Fehler des Amtsgerichts Augsburg, das den Durchsuchungsbeschluss ausgestellt hatte. Denn auch dies geschah im Rahmen geltenden Rechts. Hinzu kommt, dass wir in Deutschland bekanntermaßen keine unabhängige Justiz haben, sondern dass diese weisungsgebunden handelt. Diese Weisungen erhält die Justiz bei uns von der Exekutive, deren Mitglied Ullrich ist. Dieser Zustand ist für eine Demokratie zwar eine völlige Katastrophe, aber es ist eben so. Und insofern kann man einem Amtsgericht auch nicht dahingehend Vorwürfe machen.
Der eigentliche Adressat von Vorwürfen sollte die Augsburger Allgemeine sein. Der Fehler, den das Blatt gemacht hat, ist sehr einfach zu beschreiben: Verletzung des Datenschutzes. Wenn man als Presseorgan ein öffentliches Forum betreibt und den Benutzern nicht die Verwendung ihres Klarnamens vorschreibt, dann hat dieses Presseorgan auch dafür zu sorgen, dass das tatsächlich der Fall ist. Konkret heisst das, dass in einem solchen Setup keine IP-Adressen der Forenbenutzer geloggt werden dürfen, keine Emailadressen oder sonstige Daten, die ein Forenposting mit einer real existierenden Person in Verbindung bringen könnten. Davon abgesehen, ist es der Zeitung ohnehin verboten, solcherlei Daten aufzuzeichnen, da diese für die Zeitung nicht abrechnungsrelevant sind.
Hätte sich die Augsburger Allgemeine an diese einfachen Grundsätze gehalten, wäre sie gar nicht erst in die Lage geraten, die Daten eines Forennutzers an die Polizei herausgeben zu müssen, um eine Redaktionsdurchsuchung zu vermeiden. Vielmehr hätte sie die Herausgabe der Daten weiter verweigern können unter Verweis auf die öffentlichen Datenschutzrichtlinien. Hätte das Amtsgericht dann trotzdem auf einer Durchsuchung bestanden, um Daten zu finden, die es gar nicht gibt, DANN wäre das nicht nur Rechtsbeugung, sondern Rechtsbruch gewesen und die Zeitung hätte in jedem Fall sämtliche nachfolgenden Prozesse gegen das AG Augsburg und Ullrich mit Pauken und Trompeten gewonnen. Sie hätte als leuchtendes Beispiel für die Verteidigung der Pressefreiheit und Meinungsfreiheit dastehen können.
Aber so? In meinen Augen ist die Augsburger Allgemeine ein nicht vertrauenswürdiges Presseorgan. Sie denunzieren Dritte ohne Not an den Staat. Mit "Ohne Not" meine ich, dass dem Vorgang ja keine gerichtliche Verurteilung vorausgegangen ist. Und nur dann ist ein Bürger eines Verbrechens/Vergehens schuldig, bis dahin hat er als unschuldig zu gelten und ein Presseorgan sollte das verteidigen, anstatt es ad absurdum zu führen.
Sagen wir, ich wäre ein potentieller Informant und würde ein Presseorgan suchen, dem ich brisante Informationen über einen gewissen Herrn Ullrich in Augsburg zuspielen will. Wem würde ich wohl diese Informationen anvertrauen? Der Augsburger Allgemeinen? Auf allergarkeinen Fall! Die würden meinen Namen, Adresse, Telefonnummer und Email in ihrer Datenbank speichern und jedem dahergelaufenen Staatsvertreter aushändigen, der sie nur laut genug bedroht.
Dieses Einknicken der deutschen Presse gegenüber dem deutschen Staat, dessen Kontrolleur sie eigentlich zu sein hat, ist der Grund für ihren Niedergang. Und nicht irgendwelche Raubkopierer oder Suchmaschinen, denen sie mit ihrem Leistungsschutzrecht zu leibe rücken wollen. Und wenn ich mir das Verhalten der Augsburger Allgemeinen anschaue, muss ich sagen: es ist gut, dass eine solche Presse den Bach runtergeht.
Update 2013-03-21:
Und es kam, wie es kommen musste: Die Aktion war illegal, hat nun das Landgericht geurteilt. Die schlechte Nachricht: das Gericht hat sich nicht der Ansicht angeschlossen, ein Forenuser eines Presseorgans falle unter Zeugnisverweigerungsrecht. Das ist bitter und enttäuschend, aber ich habe nichts anderes erwartet in diesem Staat.Update 2013-02-13:
Thomas Stadler kommt zum gleichen Ergebnis:Wenn man dem Betreiber oder Mitarbeiter von Meinungsforen kein Zeugnisverweigerungsrecht zubilligen will, dann wird man ihnen künftig raten müssen, von der gesetzlichen Möglichkeit, Kommentare und Bewertungen anonym abgeben zu lassen, Gebrauch zu machen. Denn wer keine Informationen über die Person des Verfassers eines Kommentars hat, kann auch als Zeuge dazu keine Angaben machen.