Der Einzeiler-Skript der zeigt, wie es Ihrem Web-Server geht

Einträge pro Minute in httpd-Logdatei

$ sed -n 's/.*20[0-9][0-9]:\(.*\):.. +0.00.*/\1/p' "$@" | uniq -c

Nehmen wir an, Sie vermuten, dass eine Ihrer Web-Server nicht ordnungsgemäß funktioniert. Die Nutzer beschweren sich, dass einige Seiten nicht geladen werden. Sie lassen mit tail -f die Access-Log-Datei protokollieren. Die Einträge flitzen auf dem Bildschirm vorbei, also es sieht so aus, als würde der Server was ordentliches tun.
Aber Ihre Augen können zwischen 500 Einträge pro Minute und 5000 Einträge pro Minute nicht unterscheiden.
Wäre es nicht schön, sehen zu können, wieviele Log-Einträge pro Minute tatsächlich produziert werden?
Mit dem kleinen apache.byminute Skript – kein Problem.
Um den Skript in Ihrem bin-Verzeichnis mit dem obigen Kommandos zu kreieren, ein Terminalfenster öffnen und folgendes tun:

$ mkdir -p ~/bin
$ cat > ~/bin/apache.byminute
#!/bin/bash
sed -n 's/.*20[0-9][0-9]:\(.*\):.. +0.00.*/\1/p' "$@" | uniq -c
<CTRL-D>
$ chmod +x ~/bin/apache.byminute
$ export PATH=$PATH:~/bin
$ hash -r

Sie haben nun eine Bash-Shell-Skript-Datei namens apache.byminute erstellt und sie als ausführbaren Befehl auf der Kommandozeile zur Verfügung gestellt.
Die export PATH sollte in Ihre ~/.bash_profile Datei eingetragen werden, wenn nicht vorhanden. Beim nächsten Öffnen eines Terminals bzw. Neulogin, werden alle Kommandos in Ihrem bin auf der Kommandozeile verfügbar sein
Dieser Skript kann direkt mit ein Access-Log als Argument aufgerufen werden, z.B.:

$ apache.byminute /var/log/httpd/access_log

Dies würde Information zu allen Zugriffe auf den Web-Server ergeben. D.h. jeder Zugriff auf jede Art von Datei (php, js, css, html, jpeg, png usw.) wird gezählt.
Spezifischere und nützlichere Information wird ausgegeben, wenn das Kommando mit noch einem grep kombiniert wird, z.B.:

$ grep 'GET /wp-admin/admin.php' /var/log/httpd/apache_access.log | apache.byminute

Was genau geht hier vor?
Das grep Kommando sucht den regulären Ausdruck bzw. Zeichenmuster /wp-admin/admin.php in der Datei apache_access.log. Nur Zeilen, die dem Muster entsprechen, werden vom grep ausgegeben. Zeilen, die Zugriffe auf andere URLs protokollieren, werden nicht gezählt.
Das sed Kommando such den regulären Ausdruck

.*20[0-9][0-9]:\(.*\):.. +0.00.*

Das heißt, in der Folge werden gesucht:
1) eine beliebige Zeichenkette “.*
2) 20 gefolgt von zwei beliebigen Zeichen “20[0-9][0-9]
3) ein Doppelpunkt “:”
4a) eine beliebige Zeichenkette “\(.*\)
4b) Bei “\(.*\)“, die Backslash-Escaped-Klammern markieren ein Teil der Zeichenkette für die spätere Nutzung im zweiten Teil des sed-Ausdrucks. Das Substitutionsmuster “\1” wird genutzt, um nur das Teil der Zeichenkette auszugeben, dass dem Ausdruck innerhalb des Backflash-Escaped-Klammern entspricht
5) ein Doppelpunkt gefolgt von zwei beliebigen Zeichen gefolgt von einem Leerzeichen “:..
6) ein Pluszeichen, einen Null, ein beliebiges Zeichen und zwei Nullen “+0.00
7) und noch eine beliebige Zeichenkette “.*
Die Ausgabe davon sieht folgendermaßen aus:


20:57
20:57
20:57
20:57
...
20:57
20:58
20:58
20:58
...
20:58
20:59
20:59
20:59
20:59
21:00
21:00
...

Das sind jeweils die Uhrzeit jedes einzelnen ausgesuchten Log-Eintrags in hh:mm Format
Mit einem pipe wird diese Ausgabe durch uniq geleitet.  
Aber nicht irgendein beliebiges uniq.  Dieser uniq-Aufruf hat die Option -c, d.h. “zeige die gedoppelten Zeilen nur einmal, mit der Anzahl des Auftretens vor der Zeile”
So uniq -c könnte in diesem Fall folgendes ausgeben:


317 20:57
221 20:58
4 20:59
244 21:00

Das sagt uns, dass /wp-admin/admin.php 317 mal in der Minute beginnend mit 20:57 aufgerufen wurde, 221 mal um 20:58, nur 4 mal um 20:59 und 244 mal um 21:00.
Wenn man das Kommando über die Log-Dateien von ein paar Tagen laufen läßt, bekommt man ein Gefühl dafür, wieviel Traffic man in der Minute man normalerweise erwarten würde. Zeiten mit ungewöhnlich wenig oder viel Traffic sind leicht zu sehen. Lücken, d.h. Minuten ohne Einträge, sind auch leicht zu sehen. Wenn man normalerweise pro Minute Zahlen in den Hunderten sieht, und plötzlich sieht man nur zehn oder zwanzig, dann weiss man, dass irgendwas nicht stimmt. Wenn manche Zeiten in der falschen Reihenfolge ausgegeben werden, dann weiss man, dass die Verarbeitung mancher Zugriffe zu lange dauert.
Man kan den regulären Ausdruck des sed-Kommandos leicht ändern, um nur Stunden, bzw. Stunden, Minuten und Sekunden oder sogar Sekunden in Zehnerschritten darzustellen; das ideale Format ist abhängig von der Auslastung Ihres Servers.
Weil Sie mit grep gewappnet sind, können Sie Kommandos aufrufen um beliebige für Sie interessante Muster auszusuchen und zu zählen. Sie haben die enorme Flexibilität, nach vielen unterschiedlichen Mustern in kurzerster Zeit zu suchen. Sie können in Echtzeit sehen, wie es läuft, wenn Sie tail -f nutzen, um Einträge us der wachsenden Logdatei auszugeben und durch das Zähler-Kommando zu pipen:

$ tail -f access_log | grep 'wp-admin.php' | apache.byminute

Wie man sieht, man kann auf der Unix-Kommandozeile sehr mächtige Ad-Hoc-Werkzeuge mit nur ein oder zwei Code-Zeilen kreieren. Diese Art von Werkzeug ist in vielen unterschiedlichen Situationen anwendbar..
Bei der Analyse von Log-Einträge mit Zeitangabe (timestamp), sollte man sich an das Idiom gewöhnen
- Aussuche der interessante Einträge mit grep
- Nutzung von sed mit einem geeigneten regulären Ausdruck, um das unmittelbar interessante Muster herauszuschneiden
- Nutzung von uniq -c um das Vorkommen des interessanten Musters zu zählen

Popcorn, Nachos und Code!
Hamburg 29. und 30. September 2016 – code.talks
code.talks

Post

Posted by Donnerstag, der 18. August 2016 No Comments

Reelle-Welt Kontext für Ihre Apps

Die Idee der kleinen tragbaren digitalen Tags, ausgestattet mit einem ARM-Prozessor und einer Vielzahl von Sensoren, steckbar auf Gegenstände der realen Welt und auffindbar von jedem geeigneten Smartphone App, hatte meine Phantasie beflügelt. Also habe ich die Kreditkarte gezückt und US$99  für die noch nicht FCC-genehmigten Estimote Stickers Nearables Developer Kit mit zehn Vorproduktions-Bluetooth Low Energy Beacons übertragen.
Ich war ganz aufgeregt, mein erstes Paket von Estimote (TM) Stickers ( “real-world context for your Apps”) zu erhalten. Das war meine erste Begegnung mit Beacon-Technologie.
(more…)
Developers > Post

Posted by Donnerstag, der 14. Juli 2016 No Comments

Es kann mal vorkommen, dass MAMP den Webserver (httpd) nicht starten kann.

Bei mir war der Grund, dass OS X die eigene httpd gestartet hat.
Dies konnte ich sehen in dem ich versucht habe, MAMP’s httpd in einem Terminal zu starten:

$ cd /Applications/MAMP/bin
$ sudo ./startApache.sh
(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

Erin Aufruf von lsof hat dies bestätigt.

$ sudo lsof -iTCP -sTCP:LISTEN -P -n | grep :80
httpd 576 root 5u IPv6 0x9f5f81c483ca9e1f 0t0 TCP *:80 (LISTEN)
httpd 582 _www 5u IPv6 0x9f5f81c483ca9e1f 0t0 TCP *:80 (LISTEN)

Die Ausgabe zeigt zwei httpd-Prozesse mit den Prozess-Ids 576 und 582.

Um zu verhindern, dass OS X den eigenen httpd startet, das folgende Kommando im Terminal eingeben:

$ sudo apachectl stop

Dies sorgt dafür, dass

  • httpd gestoppt wird
  • beim nächsten Neustart kein httpd gestartet wird

Nach dem nächsten Neustart kann man MAMP nutzen, um sowohl httpd wie auch mysqld zu starten.

Developers > Post

Posted by Sonntag, der 29. Mai 2016 No Comments

Nachdem ich das Flipping Blocks Game programmiert und an der Oberfläche der Unity3D-Fähigkeiten gekratzt habe, habe ich begonnen ein bisschen mit der Unity-Physikfunktionalität zu experimentieren, um die Plattform besser kennen zu lernen. Unity nimmt einem so viel von der Schwerstarbeit ab, dass ich mit etwa 150 Zeilen C#-Code eine nette 3D Schwarmsimulation realisieren konnte, basierend auf ein paar einfachen Regeln:

  • versuche, dem Leiter zu folgen,
  • nicht zu nah an die Nachbarn kommen,
  • bremse, wenn Du zu schnell fliegst,
  • nicht zu weit von der Kamera wegfliegen (nur der Leiter)

Ihre Hardware muss dabei relativ hart arbeiten. Ich kann sehr lange zuschauen, es ist ziemlich faszinierend.

Klicken Sie hier, um die Unity-WebGL-Version zu sehen.

Post

Posted by Dienstag, der 26. Januar 2016 No Comments

Mike Paget bei Thumthink Ltd und Peter Evans bei appMotivate veröffentlichten am 3. Dezember 2015 das neue Spiel “Flipping Blocks” in dem Apple App Store.

flipping-blocks-appstore

Das unglaublich abwechslungsreiches Spiel wird Sie fesseln, frustrieren und begeistern!

Entwickelt auf dem Unity3d Spiele-Plattform, mit einem Slim Framework REST API PHP-Backend installiert auf Google App Engine und Google Cloud SQL, das Spiel läuft auf iPhone und iPad ab iOS 8.

Download Flipping Blocks

Developers > Post

Posted by Freitag, der 4. Dezember 2015 No Comments

Jede App braucht ein paar Dutzend grafische Assets (Bildschirmsymbole, Splashscreens usw.).

Einen schönen Überblick dazu findet man bei Appcelerator auf der Seite “Icons and Splash Screens

Gehen Sie ein, wenn Sie mit der ganzen Arbeit der Erstellung dieser Symbole konfrontiert sind? Ich schon.

Besonders bei den Bildschirmsymbolen (“Icons”) braucht man oft das identische Bild in mehreren unterschiedlichen Ausführungen für iOS und Android. Statt diese alle in händischer Frickelarbeit zu erstellen, kann man sie aus einer Vorlage automatisch generieren lassen, und zwar bei MakeAppIcon. Einfach die (am liebsten) 1024×1024 große Vorlage in PNG, JPEG, oder PSD-Format hoch laden, arbeiten lassen und in wenig Zeit landet eine Email mit ZIP-Datei-Anhang mit allen notwendigen Varianten der Symbole im Postfach.

Das spart Zeit, Geld und Frust. Dafür bin ich den netten Kollegen bei FileSquare sehr dankbar!

Developers > Post

Posted by Montag, der 6. Januar 2014 No Comments

dc13-out-front-IMG_1390

Das waren zwei sehr intensive Tage mit 112 Redner und 1480 Teilnehmer der deutschen Entwickler-Szene. Es hat viel Spaß gemacht, ich habe eine Menge interessante Vorträge erlebt und einige nette und interessante Menschen kennengelernt.

Es gab viele Highlights und wenig zu beanstanden.

(more…)

Developers > Post

Posted by Montag, der 11. November 2013 No Comments

3. Developer Conference 2013 mit mehr als 114 Speakern und bereits 1.300 angemeldeten Teilnehmern

Insgesamt rund 1.500 Teilnehmer werden am 7. und 8. November 2013 in Hamburg erwartet. Vorträge von international renommierten Entwicklern und wegweisenden Start-ups stellen das Programm.

Hamburg – Für das Speaker-Line-up der diesjährigen Developer Conference in den Sälen des Cinemaxx-Kinos am Dammtor-Bahnhof konnte das Veranstalterteam Chef-Entwickler von Unternehmen wie Amazon und Microsoft ebenso gewinnen wie echte Shootingstars der Start-up-Szene. Mit dabei sind IT-Strategen, darunter Alexander Grosse von soundcloud und Jesper Richter-Reichhelm von Wooga, Inkubatoren wie Project A Ventures und Freigeister wie Amélie Anglade, Mitgründerin der Open TechSchool.

(more…)

Post

Posted by Mittwoch, der 6. November 2013 No Comments

appMotivate bietet

  • Consulting
  • Konzipierung
  • Projektmanagement
  • Programmierung

Letzter Blog-Artikel