Archive for Juli, 2009

Twitter Development – Benutzerinformationen

Teil 3 von 10 in der Blogserie Twitter Development

twitter-tIm ersten Teil der Serie haben wir Verbindung mit Twitter aufgenommen. Alle Merkmale eines Benutzers und auch dessen Profils sind in Twitter via API zugänglich. Das heisst sämtliche Informationen, welche im Webinterface angezeigt werden, darüber hinaus jedoch auch die die Einstellung des Profils wie Farben, Hintergrundbild und ob der Benutzer z.B. den Benachrichtigungsdienst von Twitter aktiviert hat.

twitter page 150x150 Twitter Development   Benutzerinformationen

Soweit das Profil des Benutzers nicht geschützt ist (Der Status kann nur von autorisierten Freunden eingesehen werden), sind diese Informationen für alle Twitter-Benutzer verfügbar.

Auch in diesem Beispiel wäre keine Implementierung einer eigenen Methode notwendig um die benötigten Informationen zu ermitteln. Die Kapselung erleichtert jedoch die nachfolgenden Beispiele.

So einfach geht die Implementierung:

package org.netways.api.twitter;

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;

public class TwitterFunctions {

Twitter twitter;

public TwitterFunctions(String user, String password) {
twitter = new Twitter(user, password);
}

public User getUserInfo(String username) throws TwitterException {
User user = twitter.getUserDetail(username);
return user;
}
}

Die Ermittlung der Benutzerinformationen geht über die Funktion getUserDetail, welche die Übergabe des Twitter-Namens voraussetzt.

package org.netways.api.twitter;

import twitter4j.User;

public class TwitterApi {

/**
* @param args
*/
public static void main(String[] args) {
try {
TwitterFunctions tf = new TwitterFunctions("netways", "password");

User user = tf.getUserInfo("aplusk");
System.out.println("Name: " + user.getName());
System.out.println("Screenname: " + user.getScreenName());
System.out.println("Web: " + user.getURL());
System.out.println("Description: " + user.getDescription());
System.out.println("Location: " + user.getLocation());
System.out.println("Last Status: " + user.getStatusText());
System.out.println("Followers: " + user.getFollowersCount());
System.out.println("Following: " + user.getFriendsCount());
} catch (Exception e) {
System.err.println(e.toString());
}
}
}

Anschließend schreiben wir die ermittelten Daten einfach auf die Konsole:

Name: netways
Screenname: netways
Web: http://blog.netways.de
Description: Open Source IT Infrastructure
Location: Germany, Nürnberg
Last Status: New blog post: NETWAYSGrapherV2 RC3 veröffentlicht http://bit.ly/1wbXDH
Followers: 159
Following: 161

Zum Beweis noch der Output des Benutzers mit den meisten Followern (die Description ist echt lesenswert ;-) ):

Name: ashton kutcher
Screenname: aplusk
Web: http://blahgirls.com
Description: I make stuff, actually I make up stuff, stories mostly, collaborations of
thoughts, dreams, and actions. Thats me.
Location: here
Last Status: it was a little hot today  http://bit.ly/oy5TI
Followers: 2839413
Following: 184

Während wir noch daran arbeiten Ashton mit unserem NETWAYS Twitter Account zu übertreffen, geht es in den nächsten beiden Blogposts um die Beziehung zwischen Twitter-User.

Nur noch heute den Early Bird schnappen!

Frühbucherpreis nur noch heute

Die Open Source Monitoring Conference rückt immer näher und wie auch schon in den vergangenen Jahren haben wir bereits jetzt, noch fast 3 Monate vor Veranstaltungsbeginn, schon einen Großteil der Plätze vergeben.  Wer also dabei sein möchte, sollte nicht lange zögern und sich nur noch heute den Frühbucherpreis sichern. Ansonsten freuen wir uns sehr auf ein tolles abwechslungsreiches Vortragsprogramm mit unter anderem:

Das vollständige Programm finden Sie auf der Monitoring Conference Website.

Bis bald in Nürnberg!

=================

Wann:  28. – 29. Oktober 2009

Wo: Nürnberg, Holiday Inn

Was: Alles rund um das Thema Open Source Monitoring und Nagios

Infos: http://www.netways.de/osmc

Happy Sysadmin Day – heute zum 10. Mal

Wie immer am letzten Freitag im Juli ist es heute wieder soweit: Es ist System Administrator Appreciation Day. Dieses Jahr sogar bereits zum 10. mal. Der Tag wurde im Jahr 2000 von Ted Kekatos erfunden. Er sah eine Werbeanzeige von HP, in der sich die User mit Blumen und Geschenkkörben bei ihrem Admin bedankten, weil er neue Drucker installiert hatte.  Sinn des Tages ist, den Admins, die sonst ihre Arbeit still im Hintergrund erledigen, einmal im Jahr zu danken. uf004476 Happy Sysadmin Day   heute zum 10. MalNatürlich feiern wir an dieser Stelle auch unsere System-Administratoren Martin, Bernd, Stefan und Georg, die unsere IT super im Griff haben und jeden Tag einen tollen Job machen. We do  appreciate you!

Project of the month: A check plugin to check checks

T Mobile logo Project of the month: A check plugin to check checksJuly 2009: With over 200 services checks on each of their many hosts, T-Mobile admins were receiving more than the average barrage of alerts. As with any large and complex environment, too much detail can be counter productive.

So a plugin was needed, which could gauge a critical level of alerts for a specific service type. In effect it would summarise checks at Critical/Unknown, Warning, OK levels, and send an alert only once a significant level was reached. Check_cluster was unworkable, as it required each of the 200+ service names to be configured.  Check_multi was also inappropriate for the very same reason – too much unnecessary configuration work.

Beyond evaluating a critical level, the plugin needed to prioritise groups of service groups between hosts, sending a higher alert for group fallouts. Flexibility was naturally also important; it had to allow T-Mobile to arbitrarily choose the monitored service checks by service group or by regular expression on the service name. To top it off, the plugin would also need to integrate into their new NETWAYSGrapherv2.

Within 10 days, Birger presented check_ndo.pl, to meet all these needs. By calling up the Nagios database, the plugin could not only filter service groups but also retrieve status information, making it an simple, elegant piece of code. And the good news is, he will release it soon for all to download under GPL at www.MonitoringExchange.org. We’ll keep you posted.

Nagios & GeekTool – RRD als Hintergrundbild

GeekTool ist ein kleines schickes Tool für den Mac, um die Ausgabe von Bildern, Logs oder Scripts als Hintergrund auf dem Desktop einzublenden.

geektool 150x150 Nagios & GeekTool   RRD als Hintergrundbild

Nach der Installation des Tools bietet ein zusätzliches PrefPane in den Systemeinstellungen die Möglichkeit Gruppen und deren Objekte anzulegen.

Um ein NagiosGrapher-RRD als Hintergrund einzublenden ist lediglich der Link der PNG-Darstellung in die Picture-URL einzutragen und ein entsprechenden Refresh-Intervall einzustellen.

Beispiel:

http://guest:guest@nagios.demo.netways.de/nagios/cgi-bin/rrd2-system.cgi?host=f1-http;service=HTTP;width=720;height=250;type=AVERAGE;title=1%20Current;start=-21600;end=1248853060;imageformat=png

Schon erscheint der Graph an der gewünschten Stelle des Bildschirms.

Neben der Anzeige von Bildern, kann auch die Ausgabe eines Scripts oder Commands nützlich sein. Zur Anzeige des aktuellen Monatskalenders genügt folgendes Command:

cal

Ja, mehr ist es nicht.

Bei Erstellung eines Links auf cal mit dem Namen ncal und der Option -w bekommt auch noch die Kalenderwochen präsentiert. Für mich ein Killerfeature.

screen 300x115 Nagios & GeekTool   RRD als Hintergrundbild

SMS versenden – aber möglichst günstig

Teil 4 von 5 in der Blogserie Nagios Notifications

Um den Admin auch Nachts und am Wochenende zu alarmieren, gibt es zu SMS eigentlich kaum eine Alternative. Handy hat inzwischen jeder und nichts ist kompatibler mit allen Endgeräten. Im Vergleich zu den letzten Jahren, kommen SMS inzwischen auch vergleichsweise zuverlässig an, wenn das Nagios System nicht gerade an Weihnachten oder Sylvester ein Probleme melden will.

3194571738 970b4a62fb o SMS versenden   aber möglichst günstigUm die SMS technisch zu versenden gibt es inzwischen unzählige Möglichkeiten: Vom speziellen SMS Dienstleister über ISDN Dialup, bis hin zu eigenen SMS Modems. In diesem Artikel soll es aber nicht darum gehen, was die besten Methode ist eine SMS Benachrichtigung zu implementieren, sondern welche Methode am einfachsten und am kostengünstigsten eingerichtet werden kann: Inzwischen bieten alle vier deutschen GSM Anbieter ihren Kunden eine eMail2SMS Schnittstelle. Nach der einmaligen Freischaltung per SMS braucht man nur noch eine eMail an seine persönliche SMS E-Mail Adresse zu senden und hat das ganze nur Sekunden später als SMS auf dem Handy. Schneller und billiger kommt man nicht zu den SMS.

Wir funktioniert das ganze nun?

Ganz einfach. Aus der nachfolgenden Tabelle sucht man sich die passenden Daten zu seinem Mobilfunkanbieter und schickt den Aktivierungstext per SMS an die angegebene Nummer. Danach bekommt man vom Provider eine Bestätigungs-SMS zuruck und das Gateway ist freigeschaltet. Um eine SMS zu verschicken, benutzt man einfach die angebenene E-Mail Adresse und ersetzt xxx mit der Mobilnummer inkl. Vorwahl, also beispielsweise 01721234567@vodafone-sms.de.

Vodafone T-Mobile E-Plus O2
Nummer 3400 8000 7676245 6245
Aktivierung OPEN OPEN START OPEN
Deaktivierung CLOSE CLOSE STOP STOP
Preis 0,20 EUR 0,19 EUR 0,20 EUR 0,19 EUR
E-Mail Adresse xxx@vodafone-sms.de xxx@t-mobile-sms.de xxx@smsmail. eplus.de xxx@o2online.de

Bei E-Plus muss der komplette Inhalt der Nachricht in der Betreff Zeile der E-Mail stehen. Die anderen Anbieter verwenden Betreff und Inhalt der E-Mail und hängen beides in der SMS einfach hintereinander.

Auch wenn die Einrichtung dieser SMS Benachrichtigungen schnell und einfach funktioniert, sollen die Nachteile auch nicht verschwiegen werden: Im Fehlerfall muss Ihr Nagios Server immer noch eine E-Mail an einen externen Empfänger senden können und das verlangt eine Vielzahl funktionierender Systeme. Es müssen Internetanbindung, Mailserver, DNS, Firewall und vermutlich viele andere Komponenten noch verfügbar sein und gerade bei einem Ausfall ist das nicht immer sicher. Dazu kommen die vergleichsweise hohen Kosten pro SMS. Wenn der Nagios Server nicht optimal konfiguriert ist, kann es gut sein, dass Nagios bei einem Switchausfall mehrere Hundert SMS versenden will. Und das würde schnell sehr teuer für den Handybesitzer werden, denn diese SMS werden vom Empfänger bezahlt. Wenn man auf Nummer sicher gehen will, kommt man also an einem eigenen SMS Gateway kaum vorbei. Will man allerdings nur mal schnell SMS in Betrieb nehmen, ist die vorgestellte Lösung sicher eine gangbare Alternative.

Weekly snap: From Twitter, Prowl or Goo, to Grapher & birthday no. 2

weekly snap July 20-24 achieved remarkable blogging frenzy, confirming Julian’s statistics as we hit the 2nd Blog anniversary on Monday.  In suit, Julian posted part 3 of his Nagios Notifications series with a look at Prowl – a Growl client for iPhone and a run down on how to push Nagios alerts to them.

Keeping with the series, Bernd E rattled off the first 2 posts of his Twitter Development series, attributing the newest worldwide fad’s success to its simple and complete API. He started with a how-to on building connections with Twitter4J, the most complete and active Java API for Twitter he could find. But before all of this, Bernd gave an insider tip for the MySQL lazy to identify and eliminate bottlenecks via a handy little perl script called MySQL Tuner.

In between, Marius distracted us with a new addictive Linux game known as World of Goo, but thankfully after pre-releasing NETWAYSGrapher RC3. He highlighted massive improvements to the collector load and memory consumption and announced a new RRD-XML import to simplify the migration of existing data. Check it out, packed and ready for download at netways.org.

To top it off, Christian F updated us on the upcoming OSMC (aka Nagios Conference) program with an impressive list of speakers from the Nagios community inland and abroad. He reminded us to submit a paper or register before 31 July, because as you know: the early bird catches the 100€ discount.

Twitter Weekly Updates for 2009-07-26

Twitter Development – Verbindung aufbauen

Teil 2 von 10 in der Blogserie Twitter Development

twitter-tTwitter ist ein sehr populärer Micro-Blogging Dienst, der seinen Erfolg großteils den vielen rund um ihn entstandenen Tools und Programmen zu verdanken hat. Vor allem, weil die Nutzung von Twitter durch die bereitgestellten API Funktionen besoners leicht ist.

Diese kleine Serie widmet sich der Verwendung der Java-API Twitter4J von Yusuke Yamamoto. Twitter4J schien mir die vollständigste und aktivste Java API für Twitter zu sein, aber der grundsätzliche Ansatz ist wohl API-übergreifend.

Die verwendete Funktionsweise zur Autorisierung der Benutzer ist ergänzend einen tiefergehenden Blick wert und basiert auf OAuth, welches die Freigabe von Informationen ohne Austauch von Benutzer und Passwort ermöglicht. Einen ausführlichen Beginners Guide gibt es bei Hueniverse.

Im ersten Beispiel bauen wir mal die Verbindung zu Twitter auf, was so einfach ist, dass sich die Definition einer eigenen Klasse eigentlich nicht lohnt, aber es soll auf Basis dieser Klassen in der Serie weiter gehen.

package org.netways.api.twitter;

import twitter4j.RateLimitStatus;
import twitter4j.Twitter;
import twitter4j.TwitterException;

public class TwitterFunctions {

	Twitter twitter;

	public TwitterFunctions(String user, String password) {
		twitter = new Twitter(user, password);
	}

	public int getHourlyLimit() throws TwitterException {
		RateLimitStatus rls = twitter.rateLimitStatus();
		return rls.getHourlyLimit();
	}

	public int getRemainingHits() throws TwitterException {
		RateLimitStatus rls = twitter.rateLimitStatus();
		return rls.getRemainingHits();
	}
}

Anschließend lassen wir uns unter Verwendung der Klasse RateLimitStatus gleich noch zurückgeben, ob wir noch ein paar Versuche frei haben, die Twitter-Services in Anspruch zu nehmen. Nachdem das aktuelle Limit vor kurzem von 100 auf 150 Calls erhöht wurde, haben wir also noch ein wenig Luft für weitere Übungen.

package org.netways.api.twitter;

public class TwitterApi {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TwitterFunctions tf = new TwitterFunctions("netways", "password");

			System.out.println("Hourly Limit: "+tf.getHourlyLimit());
			System.out.println("Free Limit: "+tf.getRemainingHits());
		} catch (Exception e) {
			System.err.println(e.toString());
		}
	}
}

Der nächsten Blog-Post widmet sich den vorhandenen Userattributen und und Möglichkeiten zur Weiterverarbeitung.

Goo’s für die Pause

Endlich mal ein Spiel unter Linux was einen richtigen Suchtfaktor besitzt. Viele gibt es wahrscheinlich nicht, aber Word of Goo ist für den Zeitvertreib zwischendurch genau das richtige.

Es sind kleine Wesen welche sich ihren Weg durch die Welt bahnen um von einem Rohr aufgesaugt zu werden. Es gibt verschiedene Goos mit unterschiedlichen physischen Eigenschaften. Manche kann man zu Ketten verbinden oder zu stehenden Konstrukten aufbauen und sie sind anfällig für Wind und Schwerkraft.

Vom einfachen Hinderniss bis zum komplexen Aufbau ist an abwechslungsreichen Landschaften alles dabei. Oft erschließt sich der Weg erst nach ein paar mal hinschauen.

Kostenlos ist das Spiel nicht, aber der Preis ist mehr als fair.

Ich sage: Weiter so! Wir brauchen mehr solche Spiele für Linux!