Archive for the ‘Systemmonitoring’ Category

h1

SEO-Monitoring 2: Daten sammmeln

20. Februar 2008

Wie beschrieben, das Ziel ist über jene Schnittstelle, die auch der Benutzer einsetzt – also einen Webbrowser – zu erfassen, was Google bezüglich bestimmter Suchergebnisse anzeigt. Dies erledigt das Skript get_google.pl:

#!/usr/bin/perl -w
# get_google.pl -  query Google.at und speichere Ergebnis in eine Datei
# Rev. 0.6a # Copyright 2008 by Ingo Lantschner (ingo@boxbe.com)  # http://ingo.lantschner.name   # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.   # You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.   use strict;
use LWP::UserAgent;
use URI::Escape ('uri_escape');
use Time::localtime;
my $debug =1;
my @search = (	"foo+bar",
		"foo",
		"bar",
		); ## Suchbegriff hier!
my $path_prefix = "./google-test";
my $heute = localtime;
my $epochensekunden = time();
my $browser = LWP::UserAgent->new;
$browser->agent("Mozilla Firefox");

# Verzeichnis anlegen ( ./<path_prefix>/JJJJ-MM-TT/)
chdir "/Users/ingo/Sites/seo/SEO-Monitoring/Versuch2"; # wegen Aufruf durch Apple-Skript
my $datum = sprintf("%04d-%02d-%02d", $heute->year+1900, $heute->mon+1, $heute->mday);
printf "$datumn" if $debug > 1;
my $path = $path_prefix . "/" . $datum;
print "$pathn" if $debug > 1;
if ( -d $path ) {
	printf "Info: Verzeichnis $path existiert schon.n" if $debug > 0;
} else {
	mkdir $path
	  or die "Fehler: Kann Verzeichnis $path nicht anlegen: $!";
}

foreach	(@search) {
	print "nSuchberiff: $_n" if $debug > 1;
	my $store = $path . "/" . "$epochensekunden" . "_" . $heute->hour . "h" . $heute->min . "_" . "$_";
	my $i = 0; # Zähler für Seiten
	while ( ++$i < 11 ) {
		my $file = $store . "_S$i.html"; # Seitennummer an Dateiname anhängen
		print "Dateiname: $filen" if $debug > 0;
		if ( $i == 1 ) { # Seite 1
			my $response = $browser->get(
		  		'http://www.google.at/search?hl=de&q=' .
				uri_escape($_) .
				'&btnG=Suche&meta=',
				':content_file' => $file,
			);
			die "Error: ", $response->status_line
			 unless $response->is_success;
		} else { # Seiten 2 bis ... (http://www.google.at/search?q=apartment+wien&hl=de&start=10&sa=N)
			my $start = ($i - 1) * 10; # Startzahl: 10, 20, ... 100
			print "Start: $startn" if $debug > 1;
			my $response = $browser->get(
		  		'http://www.google.at/search?q=' . uri_escape($_) . '&hl=de&start=' . $start . '&sa=N',
				':content_file' => $file,
			);
			die "Error: ", $response->status_line
			 unless $response->is_success;
			}

		my $wartezeit = 6; # Warten nächste Seite
		print "Wartezeit auf nächste Seite $i: $wartezeitn" if $debug > 1;
		sleep $wartezeit;
	}
	my $wartezeit = 8; # Warten nach Suchbegriffwechsel
	print "Wartezeit zum nächsten Suchbegriff: $wartezeitn" if $debug > 1;
	sleep $wartezeit;
}

Hinweis: Vor dem Einsatz dieses Scripts, ist die Erlaubnis dazu von Google einzuholen!

Als Ergebnis erhalten wir im Verzeichnis, das mit

my $path_prefix = "./google-test";

definiert wurde jeden Tag ein neues Unterverzeichnis, das dann mit den HTML-Files gefüllt wird: Jede Abfrage (also jeweils 10 Suchergebnisse) in einer Datei. Das ist dann zum Parsen zwar eine echte Herausforderung, dafür hat diese Methode den Vorteil, dass sie auf den Voreinstellungen für Google beruht und daher die „User-Experience“ der meisten Benutzer exakt wiedergibt. Klar wäre es verlockend gewesen, sofort 100 Ergebnisse im Google anzeigen zu lassen. Nur verändert Google das Ranking auch abhängig davon, wie viele Ergebnisse je Seite man anzeigen lässt. Daher diese etwas mühsamere Methode.

Ausgewertet (parsing der HTML-Files) wird mit einem anderen Modul – diese Trennung halte ich für wichtig, weil so jederzeit auf die historischen Daten noch einmal zurück gegriffen werden kann.

Werbeanzeigen
h1

SEO-Monitoring 1: Grundlagen

19. Februar 2008

Platzierung im Google systematisch beobachten – Professionelles Monitoring für Whitehat-SEOs

Die letzten Wochen habe ich mich damit beschäftigt, Webseiten in der wohl wichtigsten Suchmaschine auffiindbar zu machen. Zu den veschiedenen Techniken und was davon erlaubt und was unerwünscht ist, existieren jede Menge Artikel im Netz – ich gehe hier auf dieses Thema nicht weiter ein.

Was mir gefehlt hat, war eine Möglichkeit, die Fortschritte und Rückschläge meiner Arbeit systematisch protokoliert zu haben und sie so auswerten zu können.

Auf Grund meiner Kenntnisse in Nagios und Perl, war es naheliegend diese Werkzeuge einzusetzen. Bei der Frage, wie ich an die Ergebnisse der Suchmaschine herankomme entschied ich mich letztendlich für Abfragen mittels Perlskript und LWP. Die von Google angebotenen Schnittstelle Ajax ist mir zu riskant, denn ich will die Rohdaten so bekommen, wie sie ein Benutzer auch sieht, der die Suchbegriffe in Google eintippt. Übrigens: Google möchte nicht, dass seine Server automatisiert abgefragt werden, ohne dass man sich dazu vorher die Erlaubnis holt. Das sollte man bedenken und es ist sicher sinnvoll, bezüglich der Häufigkeit der Abfragen Maß zu halten und die sleep-Funktion einzusetzen.

Aufbau:

Das System besteht aus zwei Teilen:

1. get_google.pl speichert die Ergebnisse der Abfragen als HTML-Dateien auf Festplatte. Abgefragt werden die ersten 100 Ergebnisse um den Fortschritt bei der Optimierung verfolgen zu können.

2. parse_google.pl liesst diese Dateien aus, sucht die zu überwachenden URLs und erstellt eine CSV-Datei mit Zeit und der Platzierung dieser URL. Berücksichtigt werden sowohl die Anzeigen (falls jemand Google-Ads verwendet) und die Suchergebnisse.

3. Eine dritte Komponente sollte erlauben, Änderungen an den optimierten Seiten und Google-Add-Kampagnen mit Zeitstempel zu erfassen um diese dann in die aus 2.) erstellten Grafiken und Übersichten einblenden zu können.

Soviel für heute, Details folgen demnächst.

h1

OpsMgr an Nagios …

9. August 2007

OpsMgr meldet an Nagios

System Center Operations Manager 2007 ist der von Microsoft vertriebene Systemmonitor. SCOM ist Nachfolger des MOM und seit kurzem verfügbar. Uns interessiert inwieweit dieser mit der bewährten Open Source Lösung Nagios interoperabel ist.

Na endlich, nach etlichen Irrwegen die wegen mangelnder Dokumentation des OpsMgr (Kurzname für den System Center Operations Manager oder SCOM2007) alle im Sande verliefen, haben wir nun einen gangbaren Weg gefunden, über den der OpsMgr dem Nagios den Zustand seiner Schäfchen signalisieren kann. Dazu wurde ein eigener SMTP-Handler entwickelt, der die vom OpsMgr versendeten Alert-Emails empfängt und an Nagios als Passivcheck übergibt.

SCOM(OpsMgr)-Nagios-Schnittstelle entwickelt in Zusammenarbeit mit der NTx BackOffice Consulting Group, 1010 Wien

h1

Ein kleiner, feiner Systemmonitor

22. Juli 2007

Nagios auf einer Soekris Box – geht das?

Die kurze Antwort – ja es geht! Die längere: Ja es geht aber, … Doch berichten wir der Reihe nach.

Nagios, der Open Source Monitor für alles was irgendwie elektrisch messbar ist läuft wie man weiss auf jeder Art von UNIX. Die üblichen Plattformen sind Server – seien sie nun virtuell oder physische Kraftbrocken. Bei vielen Implementation würde man mit einem Pentium III und 128 MB Arbeitsspeicher auskommen – damit lassen sich hunderte Hosts überwachen. Doch so einen Server wird man kaum noch bekommen, weshalb man öfter mal auf virtuelle Server umsteigt. Und hier beginnt das Problem, denn der Systemmonitor als Alarmanlage der IT sollte so unabhängig wie nur möglich betrieben werden.

Wo ist hier der Lüfter?

Also machte ich mich auf die Suche nach einer Hardware, die supereinfach und stabil konstruiert ist. Das heißt: Keine Lüfter, keine Festplatten, keine unnötigen Steckkontakte und minimaler Stromverbrauch, so dass wir das Ding aus einem Akku betreiben können. Fündig wurde ich bei Soekris, einer Plattform mit Zielgruppe Netzwerdevices.

Nagios Box Hardware (in meinem Büro in Wien)

Software

Auf der Box wird ein Linux installiert und Nagios 3.0 das zur Zeit als Alpha Version vorliegt. Dazu kommen die rrdtools und drraw für die Trendanalyse und einige angepasste Nagios-Plugins.
Nagios Box Software

Erfahrungen

Die ersten Erfahrungen sind gemischt: Eine kleine Anzahl von Hosts und Diensten lässt sich damit überwachen. Bei ca. 10 Hosts a 5 Services steht die CPU-Auslastung bei 80% und die Load klettert auf über 1. Leider ist in der Nagios-Alpha ein Bug, der verhindert, dass der embedded Perl-Interpreter kompiliert wird. Somit sind wir auf das externe Perl angewiesen und das kostet eben hübsch Performance.

Stabilität

Mit rrdtool und drraw scheint die Last auf Dauer zu heftig zu sein – alle 2 Wochen stürzt das System ab. Das ist nicht akzeptabel. Nimmt man die Komponenten für die Trendanalyse der Box wieder ab und lässt nur das Nagios darauf laufen, so läuft das System wie ein Glöckerl – über Monate hinweg. Und nebenbei hostet es auch noch meinen Mailserver am Wiener Standort.

Weitere Tests wären spannend, wenn der EPN-Interpreter des Nagios wieder kompilierbar ist – das ist er in der derzeitigen Alphaversion von Nagios 3 nicht.

h1

SCOM 2007 (OpsMgr) – meine ersten Eindrücke

11. Juli 2007

Microsoft Operationsmanager MOM hat einen Nachfolger bekommen, den System Center Operations Manager 2007 (kurz SCOM2007 oder OpsMgr)

Die Oberfläche

Der System Center Operations Manager (OpsMgr) präsentiert sich mit einer Konsole, von der aus alles erledigt werden kann: Einrichten, Überwachen, Tunen. Er stellt definierte Rollen für Zugriff und Berechtigungen zur Verfügung und bindet sehr intensiv das Active Directory ein. AD wird konsultiert für Discovery, Benutzerkonten, Agent Configuration, die auf OU-Ebene durchgeführt werden kann.

OpsMgr RAM Usage

„Self Tuning Thresholds“ erleichtern die Arbeit des Nachjustierens der Schwellwerte. Erstaunlich ist der Ressourcenverbrauch: 2 GB RAM sind weg wie nix. Wenn ich da an meinen Nagios auf der Soekrisbox denke …

Überwachen

Model-Based Architecture

Mit der Service Modeling Language (SML) würde ein echter W3C Standard mit tatsächlich breiter Unterstützung und offener Spezifikation zur Verfügung stehen.

System Modeling Language

Leider basiert die derzeitige Version des OpsMgr aber auf einer Vorversion dieses Standards. Mit SML könnten Services und Health-Models herstellerübergreifend konstruiert werden. Der Lieferant einer UPS könnte dann für alle SML-basierenden Operations Manager eine Monitoring-Schnittstelle liefern.

xml.png

Zum Teil (sehr zögerlich) machen das auch manche Hersteller, indem sie sogenannte Management Packs zur Verfügung stellen. Diese kommen als sealed packages, also verschlüsselt in den OpsMgr. Die Verschlüsselung hat lt. MS den Hintergrund, dass es sonst laufend zu Fehlern käme, wenn die Admins in dem Management Packs herumbasteln würden. „Soso“, sag ich da nur und frage mich, inwieweit denn diese Managementpacks dann auch für andere Monitoringprodukte verwendbar sind – das ist bis jetzt jedenfalls im Dunkeln.

Enduserperspektive

Eine schöne Sache: Webseiten zum Beispiel können regelmäßig auf deren Verfügbarkeit hin geprüft werden. Sogar nach Schlüsselwörtern in dem empfangenen HTML-Code kann gesucht werden. Das erlaubt ungeahnte Einsatzzwecke: Abfrage bei http://wetter.orf.at und Alarm immer wenn „Regen“ (w/o the quotes, wie es in der MS-Knowledbase heißen würde) gefunden wurde ergibt einen elektronischen Wetterfrosch mit 2 GB Hauptspeicherbedarf.

Im Ernst: Diese als Syntetic Transactions bezeichneten „gescripteten Enduser“ können von verschiedenen „watcher-nodes“ aus ihr Checks durchführen. Das ist ein feine Sache zumal auch komplexere Checks mit „http post“ (Passworteingabe) möglich sind.

Maintanance Mode

Objekte können in Maintanance Mode gesetzt werden. Ab dann werden alle Alerts werden unterdrückt und die Downtime fließt dann nicht in die Verfügbarkeitsstatistik ein.

Interoperabilität

Wie schaut es, abgesehen von dem bisher nicht eingelösten Versprechen sich an einen W3C-Standard zu halten, sonst mit der Interoperabilität aus?

SNMPv2 wird unterstützt, die Version v1 nur mit einem nachzuinstallierenden Patch und v3 wurde angekündigt ohne konkreten Termin. Und tatsächlich, man kann Abfragen (snmp get) starten. Inwieweit diese auch nutzbar sind, wird man sich noch ansehen müssen. Auch SNMP Traps können empfangen und verarbeitet werden.

Bereits der MOM konnte Logfiles von syslog-Clients auswerten. Das kann der OpsMgr auch – nur wie das gehen soll, ist leider nicht so einfach in Erfahrung zu bringen. Wir warten also auf die dazu nötige Doku.

Zusammenfassung

Der OpsMgr ist wohl einfacher als der MOM 2005 zu bedienen: Er hat nur noch eine Konsole und ist weitestgehend in das AD-integriert. Die Self-Tuning-Tresholds sind ein echter Timesaver – aber nur wenn man eine reinrassige MS-Umgebung hat und darauf verzichtet, die darunter liegenden Netzwerkkomponenten überwachen zu wollen.

Theoretisch wäre er offener als der MOM 2005; der W3C-Standard für die Management Packs und SNMP v2, sowie die Integration von Syslogs und Webservices machen Hoffnung. Sehr fraglich ist aber beim derzeitigen Stand der Dokumentation, inwieweit diese wirklich nutzbar sind. Hier tut sich unter Umständen ein interessanter Markt für Firmen auf, die über Knowhow mit alternativen Monitoren wie Nagios haben und für das Thema Interoperabilität aufgeschlossen sind.

Erschreckend finde ich den Ressourcenbedarf. Alleine was an Serverpower nötig ist, um den OpsMgr zu betreiben ist gewaltig. Prüfen würde ich auch, inwieweit die Kommunikation zwischen Agenten und Zentralserver nicht merkbar das Netz belastete; deren Kommunikation erfolgt auf TCP-Basis.

Das eigentliche Drama ist aber die fehlende Dokumentation, ohne die anspruchsvollere Anwendungen, die beispielsweise Netzwerkkomponenten wie Switches und Firewalls mit einschließen, schwer möglich sind.

Link

http://www.w3.org/Submission/2007/SUBM-sml-20070321/