Herzlich willkommen auf dem Blog der exensio GmbH

exensio ist ein unabhängiges Software-Unternehmen von erfahrenen IT Beratern und Architekten. Zu unseren Kunden zählen namhafte deutsche Großunternehmen.

exensio verbessert das Kommunikations- und Informationsmanagement von Unternehmen. Auf Basis sinnvoller und zweckmäßiger Technologien erarbeiten wir flexible und übergreifende Lösungen für webbasierte Informationssysteme. Abhängig von den Kundenanforderungen realisieren wir Web Applikationen sowie Lösungen auf Basis von Web Content Management- und Portalsystemen. Integrativ, wirtschaftlich und anwenderfreundlich!

Hier gelangen Sie zur exensio GmbH.

Donnerstag, 16. April 2015

"Umsetzung von BI-Lösungen mit Unterstützung einer Suchmaschine" beim TDWI Roundtable Stuttgart

Nachdem ich bereits beim 6. OSBI Workshop in Offenburg einen Vortrag zur Umsetzung von BI-Lösungen mit Unterstützung einer Suchmaschine gab, wurde ich vom TDWI eingeladen einen erweiterten Vortrag hierzu zu halten. Nach einer kurzen Vorstellung des TDWI durch den Vorstand Marcus Pilz konnte ich vor ca. 30 Teilnehmern die Nutzung von Elasticsearch für Analyse-Szenarien näher bringen. Ein Live-Demo mit Kibana rundete den Vortrag ab.



Ambiente

Besonders erwähnenswert ist das Ambiente des Roundtable in der obersten Etage des Bahnhofsturm in Stuttgart. Neben einer spektakulären Aussicht über die gesamte Innenstadt versorgte das TDWI die Teilnehmer rundum mit einem kalten Buffet.

Freitag, 10. April 2015

Wie bekomme ich kurzfristig - über eine mobile Web App - Zugriff auf ein bestehendes Portal?

Es finden sich bestimmt unzählige Web-Applikationen (bspw. basierend auf Struts 1.0), die über keine Schnittstelle verfügen. Die Dokumentation ist - wie unsere Erfahrung aus Kundenprojekten zeigt - eher rudimentär. Vor einer kompletten Neuentwicklung schrecken viele Anwender demzufolge aus Kostengründen und nicht absehbaren Unwägbarkeiten zurück.

Web-Integration mittels Kapow-Software

Hier kommt die Sofware-Lösung von Kapow ins Spiel. Mit dieser kann eine Web-Seite mit Hilfe von Robots quasi ferngesteuert werden. Die Robots stellen automatisch ein Java bzw. REST/JSON-Interface zur Verfügung. Über diese Schnittstelle können jetzt neuartige moderne Frontends, die dem responsive Design Paradigma folgen auf die Alt-Systeme zugreifen. Diese User-Interfaces können in Form von hybriden (bspw. Ionic und AngularJS)  oder nativen Apps umgesetzt werden.

Bei Fragen zu diesem Thema können Sie sich gerne an uns wenden.

Mittwoch, 1. April 2015

Shellshock Analyse mit Elasticsearch, Logstash und Kibana

In diesem Blog Post will ich zeigen, wie einfach man Logdateien eines Webservers mit Elasticsearch, Logstash und Kibana (dem ELK Stack [1]) untersuchen kann. Dabei analysiere ich Angriffe, die die im September 2014 veröffentlichte Sicherheitslücke Shellshock [2] versuchen auszunutzen. Shellshock Angriffe machen sich eine Sicherheitslücke in der Bash Shell zu nutze. Über einen Webserver lässt sich die Lücke durch CGI-Skripte ausnutzen. Üblicherweise wird dabei der vom Client angegebene User-Agent manipuliert. Das Ergebnis möchte ich anhand der IP-Adressen geografisch sortieren und visualisieren.

Vorbereitung

Zuerst werden alle verfügbaren Logdateien vom Server geladen und zu einer großen Datei zusammengefügt. Der ELK-Stack ist bereits vorhanden. Mit der folgenden Konfigurationsdatei legen wir einen neuen Index an und lesen unsere Logdatei mit Logstash ein.

input {
    file {
        path => "access.log"
        start_position => "beginning"
        sincedb_path => ".sincedb_access_log"
    }
}
filter {
    urldecode {}
    grok {
        match     => ["message", "%{COMBINEDAPACHELOG}"]
    }
    date {
        match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        host => "localhost"
        port => 9201
        protocol => http
        index => "myIndex"
        template_name => "template"
        template => "template.json"
        template_overwrite => true
    }
}

Der Aufruf von Logstash zum Einlesen der Logdatei geschieht mit dem Kommando:
./logstash agent --verbose -f elasticsearch.conf

Die Konfigurationsdatei wendet im grok-Filter das Muster COMBINEDAPACHELOG auf jede Zeile der Logdatei an. Danach wird das Format des Zeitstempels vereinheitlicht und am Ende wird die Client IP aus der Logdatei geokodiert. Damit kann in Kibana auf die geoip-Felder zugegriffen werden. Die Daten stehen in Kibana im Index myIndex zur Verfügung.

Angriffsversuche finden

Bei der abgebildeten Suche wird nach agent: \/bin gesucht, da viele Angriffe einen Befehl aus /bin versuchen zu starten.

Fazit

Mit dem ELK-Stack hat man ein mächtiges Tool zur Hand, mit dem sich sehr einfach die Logdateien eines Webservers analysieren lassen. Damit ist man in der Lage schnell und flexibel auf aktuelle Situationen zu reagieren.
In meinem Beispiel habe ich den ELK-Stack als Tool zur gelegentlichen Verwendung eingesetzt. Viel ratsamer ist natürlich die Einrichtung als Dienst im Intranet, welcher Loginformationen von allen zu überwachenden Systemen kontinuierlich sammelt.


Links

[1] ELK Stack
[2] Sicherheitslücke Shellshock

Freitag, 6. März 2015

6. Workshop Open Source Business Intelligence

Beim 6. OSBI Workshop in Offenburg stand neben klassischen Business Intelligence Technologien am Nachtmittag, insbesondere das Thema BigData im Vordergrund. Der Workshop fand an der Hochschule Offenburg mit Teilnehmern aus den Bereichen Wissenschaft und Industrie statt.

Pavlo Baron machte in seiner Keynote unter anderem die interessante Aussage, dass es im BigData-Bereich mehr Technologien gibt als Anwendungsfälle. Die weiteren Vorträge werden auf der Workshop-Seite zum Download bereitgestellt, so dass ich hier nicht näher darauf eingehen möchte.
Ich durfte einen Vortrag zum Thema "Umsetzung von BI-Lösungen mit Unterstützung einer Suchmaschine" halten. Auf Basis von Elasticsearch zeigte ich mögliche Szenarien für den BI-Einsatz auf. Hierbei wurde speziell auf den Pharmamarkt eingegangen.



Fazit

Im Vergleich zu anderen Konferenzen/Workshops, die ich bisher besuchte, war die Teilnehmerzahl in Offenburg eher klein. Dies ist aber aus meiner Sicht durchaus sinnvoll, da zum einen mehr Raum für Diskussionen bleibt und nur Teilnehmer mit entsprechendem Interesse vor Ort sind.

Da der Workshop ausgebucht war spricht das Angebot für sich. Auch für nächstes Jahr ist der Workshop schon wieder in Planung und wird in Karlsruhe stattfinden.

Donnerstag, 26. Februar 2015

Migration - Java EE Applikationen, von Oracle WebLogic nach Apache Tomcat


Im Laufe der Jahre wurden für unsere Kunden aus der Pharmabranche neben Großprojekten auch viele kleine und mittlere Java EE Anwendungen umgesetzt. Diese werden produktiv mit komplexen WebLogic Server-Clustern betrieben.
Dieser Blogpost beschäftigt sich mit einigen Problematiken in der genannten Situation, den Anforderungen und mit der technischen Umsetzung.

Problematik und der Wunsch nach einem Plattformumzug


Im Vergleich zu Apache Tomcat ist Oracle WebLogic ein Applikationsserver mit einem großen Funktionsumfang und hohem Konfigurationsaufwand. Insbesondere für kleine und mittlere Applikationen sind die beiden folgenden wirtschaftlichen Faktoren interessant:
  • Lizenzkosten: Während bei WebLogic Servern Lizenzkosten für Development-, QA-, Test- und Produktionsumgebung zu zahlen sind, ist Tomcat ein Open-Source Produkt und damit überall kostenfrei verfügbar.
  • Wartungsaufwände: Das Deployment, die Bereitstellung und Zuweisung von System-Ressourcen und die Vorgehensweise bei der Konfiguration ist bei WebLogic in der Regel umfangreicher, aber gleichzeitig auch komplexer und zeitintensiver als bei Tomcat.
Für unsere Kunden waren wir die Problemstellungen angegangen und haben dabei für jedes einzelne Projekt die Machbarkeit eines Umzuges geprüft, Lösungsvarianten bewertet und ggf. umgesetzt.

Anforderungen


Die wohl größte Anforderung an die Migration waren WebLogic-Container spezifische Implementierungen und Konfigurationen. Während die Konfigurationen mit überschaubaren Aufwänden angepasst werden konnten, mussten für die Container-spezifischen Implementierungen einige Code-Änderungen eingebaut werden.
Eine Anwendung ist auch dann nur Bedingt für eine Migration geeignet, falls sie z.B. EJBs verwendet. Tomcat selbst ist ein schlanker Servlet-Container ohne EJB-Unterstützung. Damit EJBs auch unter Tomcat funktionieren, muss mindestens eine weitere Komponente, wie Apache TomEE, aufgesetzt werden.

Technische Umsetzung


Viele der migrierten Applikationen nutzen eine SSO-Lösung unter Verwendung des Microsoft IIS Server und bieten gleichzeitig eine explizite Login-Seite. Das heißt Nutzer der Anwendungen müssen im Normal-fall kein Passwort eingeben, um sich beim System anzumelden.

Der IIS Server nimmt die Requests entgegen und leitet die Informationen über den aktuell angemeldeten Windows-User an den Servlet-Container weiter. Falls diese Informationen aus irgendeinem Grund nicht weitergeleitet werden können, so wird der Nutzer auf eine Login-Seite weitergeleitet. Dort kann er sich mit seinem vertrauten Windows-Login und Passwort anmelden.

Damit der geschilderte Vorgang auch unter Tomcat funktioniert, müssen in den Anwendungen vorhandene Implementierungen überarbeitet. Dazu gehören z.B. die Erweiterung des Spring Security Moduls mit Anbindung des Windows Active Directory Services.
Die WebLogic Login API für die Authentifizierung mit Login/Password wurde ebenfalls durch äquivalente Funktionen mit Spring Security ersetzt.

Die Art und Weise zur Bereitstellung von JNDI-Ressourcen für die Anwendung, wie beispielsweise die DataSource oder die MailSession, mussten für Tomcat angepasst werden.
Des Weiteren müssen auf die Unterschiede in der Bereitstellung des JDBC-Treibers und Java Mail Abhängigkeiten beachtet werden. So dürfen Anwendungen, die eine Tomcat Mail-Session verwenden, keine mail.jar und activation.jar im Verzeichnis WEB-INF/lib enthalten. Stattdessen sollten die Bibliotheken in das Verzeichnis $CATALINA_HOME/lib kopiert werden.

Fazit

Auch wenn die zu migrierenden Anwendungen einige Container-spezifische Abhängigkeiten enthalten, kann es unter Umständen Sinn machen, eine Anpassung (nicht nur Migration) durchzuführen.

Die Kunden sparen nicht nur Betriebskosten durch entfallende Lizenzkosten. Durch einheitliche, projektübergreifende Konfigurationen und Deploymentprozesse lassen sich auch Synergieeffekte erzielen. Auch die größere Unabhängigkeit von einem einzelnen Plattform-Hersteller kann als Vorteil gewertet werden.


Freitag, 13. Februar 2015

Analyse von Suchanfragen mit Elasticsearch, Logstash und Kibana

Für einen unserer Kunden haben wir ein Portal erstellt, das eine Suchemaschine nutzt. Im Laufe der Zeit sammelten sich einige Anforderungen des Kunden an, die sich auf die Suchmaschine und die Ergebnisse auswirkten. Es wurden z.B. alle Suchergebnisse nach dem Erstellungsdatum sortiert oder bestimmte Dokumententypen wurden standardmäßig aus der Suche ausgeschlossen. Zur Verbesserung der Qualität der Suchergebnisse haben wir die Verwendung der Suche und der Filter analysiert. Alle Suchanfragen wurden bisher schon in einer Log-Datei erfasst und können damit nachträglich analysiert werden. Um unserem Kunden zu zeigen, welches Potential in einer statistischen Auswertung steckt, haben wir mit Elasticsearch, Logstash und Kibana 4 (dem sogenannten ELK-Stack) eine einfache Visualisierung der Suchanfragen erstellt.

Der erste Schritt ist Logstash so zu konfigurieren, dass es die Suchbegriffe aus den vorhandenen Log-Dateien extrahiert. In der Log-Datei wird die Solr-Query in URL-Form gespeichert. Mit dem urldecode- und dem kv-Filter von Logstash kann der Query-Teil einer URL zerlegt werden. Anschließend können mit den Filtern mutate und ruby die Suchbegriffe normalisiert und sortiert werden. Das ist hilfreich um unterschiedliche Suchbegriffe wie "2012 Reisekosten" und "reisekosten 2012" als eine Suche nach dem gleichen Begriff zu erkennen.

Logstash legt die Suchanfragen als Dokumente in Elasticsearch ab. Mit Kibana wird daraus ein ansehnliches Dashboard, das es einem einfach macht nach bestimmten Kriterien zu filtern. So kann z.B. der Zeitbereich interaktiv gewählt werden und alle Auswertungen aktualisieren sich sofort. Außerdem können alle Suchbegriffe angezeigt werden, bei denen ein bestimmter Filter in der Suche aktiviert war.


Kibana Dashboard
Zu sehen sind von links nach rechts:
Suchanfragen pro Tag, Dauer bis Suchanfrage beantwortet wurde
Häufigste Suchbegriffe, Verteilung der Suchanfragen auf Tageszeit, Gesamtzahl der Suchanfragen

Kibana 4 unterstützt außerdem Sub-Aggregationen, um z.B. die 5 häufigsten Suchbegriffe für einen Filter anzuzeigen. Auf den folgenden Grafiken sind für jeden der 20 häufigsten Filter jeweils die 5 häufigsten Suchbegriffe als unterschiedlich farbige Teile der Balken dargestellt. Es lässt sich ohne weitere Analyse feststellen, dass die drei häufigsten Filter signifikant oft mit nur einem einzigen Suchbegriff zusammen verwendet werden.


Kibana Visualisierung der häufigsten Filter mit den jeweils 5 häufigsten Suchbegriffen als Segmente der Balken

Als Tooltip werden Details zu den einzelnen Segmenten der Balken angezeigt. In diesem Fall einer der 5 häufigsten Suchbegriffe die zusammen mit dem beliebtesten Filter verwendet wurden.

Bewegt man die Maus über einen Suchbegriff, wird anschaulich gezeigt, bei welchen Filtern dieser unter den Top 5 ist
Mit Statistiken dieser Art kann sich der Kunde schnell einen Überblick verschaffen, wie die Suche benutzt wird, welche Begriffe häufig gesucht werden oder welche Filter nie verwendet werden. Durch die Verwendung von Elasticsearch, Logstash und Kibana ist es möglich, die Statistik ständig mit aktuellen Daten zu erweitern. So kann ohne weiteren Aufwand beobachtet werden, ob Änderungen an der Suche die gewünschten Auswirkungen zeigen.