Kategorien
(Kostenlose) Services E-Business Essentials Workflow

Open Ticket Request System OTRS: Perfekter Kundensupport mit Open Source

Kundenanfragen zu bearbeiten kann sehr mühselig sein. Je mehr es werden, desto unübersichtlicher gerät die Aufgabe. Ein Ticketsystem muss her. Es kategorisiert und filtert und hilft bei Anfragen über die verschiedensten Kanäle. Systeme dafür gibt es viele. Gerade in letzter Zeit haben Cloud-Dienste wie Zendesk oder Desk.com enorm zugelegt. Doch schon bevor an die Cloud überhaupt zu denken war, gab es mit dem Open Ticket Request System (OTRS) eine zuverlässige Lösung als Ticketsystem. Mit ein bisschen Hintergrundwissen ist OTRS noch heute eine sehr solide und praktikable Lösung.

otrs-teaser

Ein Leichtgewicht ist OTRS nicht gerade. Viele Megabyte Perl-Code, Installationspakete für verschiedene Betriebssysteme und eine Oberfläche, die nicht unbedingt an die pure Moderne erinnert. Zweifelsfrei ist OTRS nichts, was ein unbedarfter Anwender einfach mal so ausprobiert. Zu unrecht. Auch wenn OTRS auf den ersten Blick nicht einfach zugänglich erscheint, sind die Schritte dahin einfacher, als zuerst gedacht. Und mit ein bisschen Hintergrundwissen zusätzlich, bietet OTRS nach wie vor eine große Funktionalität – ohne auf die Cloud vertrauen zu müssen.

otrs

Erste Schritte

Ein paar E-Mails zu Tickets ordnen und zur leichten Bearbeitung aufbereiten – die Aufgabe klingt eigentlich überschaubar. Ist sie jedoch nicht. Technisch ist es eine Herausforderung, viele Aktionen gleichzeitig auszuführen, mit Mailservern zu kommunizieren und dann noch für den Benutzer eine gute Arbeitsoberfläche zu bieten. Entsprechend umfangreich wuchs über die Jahre das Paket von OTRS und braucht den notwendigen Untergrund für die perfekte Funktion. Grundsätzlich läuft das Ticketsystem auf fast jedem Webspace mit Perl und Cronjobs. Viel Spaß wird die Anwendung dort jedoch nicht machen. Schon die Entwickler empfehlen einen Server mit mindestens 2 GB RAM und entsprechend großer Festplatte. Aus eigener Erfahrung kann ich sagen, dass auch 4 GB für ein kleines Projekt auf keinen Fall schaden. Schließlich werden regelmäßig E-Mails vom Mailserver abgeholt und aufwendig nach zuvor festgelegten Regeln einsortiert. Das saugt besonders das RAM gerne einmal leer und macht die Oberfläche bei fehlender Leistung sehr behäbig.

Auch bei den Betriebssystemen ist OTRS als Perl-Applikation offen – optimalerweise sollte jedoch SUSE oder RedHat verwendet werden. Die Entwickler haben sich schon mit frühen Versionen für diese Betriebssysteme entschieden und stellen auch nur für diese fertige Installationspakete bereit. Auf anderen Plattformen lässt sich OTRS natürlich über den Source Code installieren. Das ist jedoch nur eine Aufgabe für wirklich erfahrene Administratoren. Neben der Applikation muss der Webserver konfiguriert, ein eigener OTRS-Nutzer eingerichtet und CronJobs manuell hinzugefügt werden. Das ist eine manchmal absolut zeitraubende Aufgabe, die bei jedem Update wieder zu Problemen führen kann. Mit den Installationspaketen ist man auch bei häufigen Updates auf der sicheren Seite. In nicht einmal fünf Minuten ist die Anwendung komplett verfügbar – eine Zwangsfestlegung auf RedHat oder SUSE, die sich wirklich lohnt.

Einstieg

Viele Funktionen verwirren. Mit dem richtigen Fokus ist der Weg von der ersten Installation bis zur ersten Ansicht des Tickets jedoch nicht weit. Grundsätzlich ist die Aufteilung ganz einfach: E-Mails werden als Ticket in eine Queue eingefügt und können von Agenten abgearbeitet werden. Sieht die Administrationsoberfläche beim ersten Blick noch sehr unübersichtlich aus, werden für einen ersten Startlauf dennoch nur einige Punkte benötigt. Zunächst wird eine neue Gruppe mit beliebigem Namen erstellt. Mit der Funktion „Agenten <-> Gruppen“ kann im Anschluss einfach ein vorhandener Agent – wie der Administrator – zu einer Gruppe hinzugefügt werden.

admin-area

Allein mit lediglich einer angelegten Gruppe wird OTRS nicht funktionieren. Zunächst muss noch eine Queue angelegt werden, die später die gestellten Supportanfragen sammelt. Nach einem Klick auf „Queue hinzufügen“, lässt sich die Queue benennen. Hier kann auch die gerade eben erstellte Gruppe ausgewählt werden, damit jedes Mitglied der Gruppe, die in dieser Queue einsortierten Tickets auch wirklich bearbeiten kann. Zurück auf der Admin-Oberfläche kann endlich unter dem Punkt „PostMaster E-Mail Konten“ die Verknüpfung zwischen dem Mailserver und OTRS hergestellt werden. Per IMAP oder POP3 ruft OTRS in regelmäßigen Abständen Mails ab. Mit der Sortierung nach ausgewählter Queue, landet jede E-Mail aus einem bestimmten E-Mail-Account auch sicher in der richtigen Queue. Je nach persönlichem Geschmack lassen sich noch ausgeklügeltere Sortierungsregeln unter „PostMaster Filter“ entwerfen und einbinden. So können je nach Empfängeradresse sogar Mails aus ein und demselben E-Mail-Konto verschiedenen Queues sehr einfach zugeordnet werden.

admin-queue

Das sollte es für den ersten Schritt auch schon gewesen sein. Spätestens nach ein paar Minuten landen von nun an alle E-Mails aus dem Postfach direkt in OTRS und lassen sich von dort bearbeiten. Dank übertragener ID werden sehr zuverlässig Nachfragen automatisch einem bestimmten Ticket zugeordnet. OTRS ist dabei insgesamt sehr robust und selbst bei vielen E-Mails geht keine Anfrage unter.

dashboard

Fazit

OTRS ist noch in Zeiten von bekannten und beliebten Cloud-Diensten eine echte Alternative für die reibungslose Bearbeitung von Tickets. Einmal hinter die starre Oberfläche geblickt, ermöglicht OTRS auch Neueinsteigern eine gute Bedienung und ist für die Zukunft gerüstet. Reinschauen lohnt sich schon ab wenigen Tickets pro Monat. Gerade wer seine Daten gerne auf den eigenen Servern lagert oder besondere Anbindungen benötigt, wird mit OTRS auf Dauer durch eine offene und belastbare Architektur viel Freude haben.

(dpe)

Kategorien
E-Business Workflow

Cron Jobs für Einsteiger bildhaft erklärt via Sheldon Cooper

Immer wiederkehrende Aufgaben wie Sicherungen des Datenbestands oder das Archivieren von Logfiles selbst zu erledigen, wäre ebenso öde wie unzuverlässig. Zu schnell geraten langweilige Routineaufgaben in Vergessenheit – nicht nur bei Nerds und Geeks, denen gerne nachgesagt wird, sie meiden redundante Abläufe wie die Schweinepest oder Kloputzen. Glücklicherweise gibt es Cron Jobs, die Webworkern im Allgemeinen und Nerds im Besonderen wiederkehrende Aufgaben abnehmen.

Den Prototypen des vollkommenen Nerds haben die Macher der Fernsehserie The Big Bang Theory geschaffen. Sheldon Cooper argumentiert, er müsse nur einmal Spaß haben, um dann mit anderen Aufgaben fortfahren zu können. Das sei genauso wie mit Finnisch: Diese Sprache werde er schließlich auch nicht ein zweites Mal lernen – einmal genüge vollkommen.


Nerds wie Sheldon Cooper hassen Redundanz und planen sorgfältig – QUELLE: Screenshot

Darüberhinaus hat Sheldon jedoch auch einen strikten Zeitplan, wann und wo er die leider unvermeidbaren redundanten Aufgaben erledigt. Wäre Sheldon ein unixoider Server – und wer die Serie kennt, weiß, dass das kein allzu abwegiger Gedanke ist – würde er diesem Plan sicherlich mithilfe des cron-Dienstes folgen.

Was ist cron

Cron ist ein so genannter Daemon. Das ist bei Unix und bei unixartigen Betriebssystemen wie Linux und Mac OS X eine Jobsteuerung, die im Hintergrund möglichst ressourcenschonend wiederkehrende Aufgaben ausführt. Häufig führen Cron Jobs Programme aus, die entscheidend dazu beitragen, dass ein System funktionsfähig bleibt.

Neben cron sind zum Beispiel httpd (antwortet als Webserver auf http-Anfragen) und syslogd (legt Nachrichten von Programmen in Logdateien ab) bekannte Unix-Daemons, die wie cron ebenfalls im Serverbereich eine große Rolle spielen. Typische Aufgaben von cron sind beispielsweise das Erstellen von Backups und das Löschen oder Verschieben von Logdateien, aber auch automatisiert veröffentlichte Blogposts lassen sich damit im Handumdrehen realisieren.

Das Ganze läuft wie gesagt nicht nur unter Unix, sondern unter anderem auch unter Mac OS X oder Linux. Das kommt uns sehr gelegen, da sich dieser Artikel vor allem an Einsteiger wendet, wollen wir nicht gleich an einem Live-Webserver mit Root-Zugriff herumspielen, sondern bewegen uns lieber auf sicherem Terrain und probieren cron auf dem eigenen Rechner aus. Windows-Benutzer sind leider etwas benachteiligt, können sich aber natürlich eine Linux-Distribution in einer virtuellen Maschine installieren. Eine weitere Alternative ist die lokale Installation eines Webservers – etwa WampServer – auf Windows (Anmerkung der Redaktion).

Dann sind wir auch schon startbereit, denn cron ist sowohl auf dem Mac als auch unter Linux bereits vorinstalliert.

Der Name „cron“ ist abgeleitet von Chronos, dem griechischen Gott der Zeit. „cron-Daemon“ drückt also schon perfekt aus, was cron macht: Nach zeitlichen Mustern im Hintergrund Befehle aufrufen. Die entsprechenden Anweisungen erteilen wir indirekt über crontabs, das sind benutzereigene Tabellen, in denen die Cron-Befehle gespeichert sind.

Crontabs

Wir werden nun am Beispiel der fiktiven Serienfigur Sheldon Cooper einen Wochenplan als Cron Jobs anlegen. Dazu editieren wir eine bestimmte Textdatei, die crontab (cron-Tabelle). Der einfachste Weg, einen solchen crontab zu öffnen, ist der Befehl crontab -e, den wir einfach in die Konsole eintippen. Eventuell sehen wir in der sich öffnenden Datei schon eine Zeile, in der etwa folgendes steht:

# m h dom mon dow command

Es handelt sich hierbei um eine grobe und zugegebenermaßen sehr kryptische Bedienungsanleitung. Übersetzt würde die Zeile vielleicht so lauten:

# Minute Stunde Tag Monat Wochentag Kommando

Es wird schon durchschaubarer. Am besten wird die Syntax aber an einem Beispiel klar. Wir nehmen uns dazu wieder Dr. Sheldon Cooper und seinen Wochenplan vor: Jeden Samstag um exakt 20:15 Uhr ist Waschtag.

15 20 * * 6 laundrynight

In Prosaform würde dies lauten, dass Sheldon immer zur fünfzehnten Minute und zwanzigsten Stunde an jedem Wochentag mit der Nummer 6 den Befehl laundrynight ausführt. Die Woche beginnt für cron mit dem Sonntag, welcher die Nummer 0 hat. Jeder weitere Tag wird bis 6, dem Samstag, hochgezählt. Beim Monat und dem „Monatstag“ werden keine Einschränkungen vorgenommen, was durch das Sternchen ausgedrückt wird. Wie in anderen Sprachen handelt es sich hier um eine Wildcard, ein Platzhalter, der alle an dieser Stelle möglichen Werte repräsentiert.


Wöchentliche Halo-Session in der Nerds Community  QUELLE: Screenshot

Schauen wir uns einen weiteren Fall an. Sheldon und die drei anderen Nerds halten jeden Mittwoch um 20:00 Uhr eine gemeinsame Halo-Session ab. Da es für die Verdeutlichung einer bestimmten Eigenheit der cron-Syntax dienlich ist, nehmen wir ferner an, dass diese Halo-Session zusätzlich immer am Siebten jedes Monats stattfindet.

15 20 7 * 3 halonight

Würden wir im Gegensatz dazu annehmen, dass Halo-Night nicht am Dritten jedes Monats, sondern nur am dritten Oktober zusätzlich zu jedem Samstag stattfände, hätten wir ein Problem, denn das lässt sich nicht so einfach umsetzen. Vermuten würde man eine Kombination wie diese:

15 20 7 10 3 halonight

Doch das wird nicht funktionieren. Stattdessen wäre Halo-Night zwar am 3. Oktober, aber zusätzlich nicht jeden Mittwoch im Jahr, sondern nur die vier oder fünf Mittwoche im Oktober. Sheldon wäre darüber nicht sehr glücklich.

Aber woran liegt das? Nun, man könnte sagen, dass die Monats- und Wochentagangaben mit OR verknüpft sind. Das bedeutet, dass sich diese beiden Bedingungen insofern nicht ins Gehege kommen, als dass der obere Ausdruck sowohl für den siebten Tag im Monat als auch für den dritten in der Woche zutrifft. Und nicht, dass der Ausdruck nur für den siebten Tag im Monat, der gleichzeitig der dritte der Woche ist, gilt; was einer AND-Verknüpfung entspräche. Eine solche AND-Verknüpfung besteht aber zwischen dem Monat und dem Monatstag und zwischen dem Monat und dem Wochentag. So gilt folgender Ausdruck nur für die Freitage, welche im Juni liegen:

15 20 * 6 5 dosomething

Ganz schön kompliziert, denkt man sich. Doch eigentlich ist das System recht intuitiv und nur das Erklären lässt die grauen Zellen rauchen. Trotzdem hier zur Veranschaulichung noch eine Skizze, die nochmals die Verknüpfungen verdeutlicht.

# m h  dom mon dow  command
#       |   |   |
#       |   |   |
#       -AND-   |
#       |   |   |
#       |   |   |
#       |   -AND-
#       |       |
#       |       |
#       ----OR---

Bei dieser ASCII-Skizze handelt es sich um einen reinen Kommentar und sie kann deshalb auch als Gedankenstütze direkt ins crontab übernommen werden.

Weitere Feineinstellungen

Ein Cron Job besteht also aus sechs Argumenten, die jeweils mit Leerzeichen voneinander abgegrenzt sind. Ab dem fünften Leerzeichen wird alles Darauffolgende als Kommando interpretiert, das bedeutet, wir können in die Kommandos selbst so viele Leerzeichen packen wie wir wollen, ohne dass dadurch der Cron Job invalide wird.

# Jeden Freitag ist Vintage Video Game Night:
0 19 * * 5 videogamenight --flavour vintage

Interessant ist das vor allem auch dann, wenn wir mit einem Cron Job mehrere Aufgaben erledigen möchten. In dem Fall hängen wir die einzelnen Kommandos einfach mit einer &&-Verknüpfung aneinander.

Launen und Marotten?

In Sheldons Leben gibt es auch ein klein wenig Willkür, aber natürlich ist auch diese zeitlich streng geregelt. So trinkt er heiße Schokolade nur in Monaten, die im Namen ein „r“ enthalten. cron bietet für solche Bedingungen eine verkürzte Notationsmöglichkeit.

* * * 1,2,3,4,9,10,11,12 * hotchocolatetime

Zufälligerweise liegen diese Monate in einer Reihe, so dass wir uns auch einer weiteren Vereinfachung bedienen können:

* * * 1-4,9-12 * hotchocolatetime

Routinen für Zwangsneurotiker


Keimfreiheit à la Sheldon Cooper – QUELLE: Screenshot

Sheldon hätte wohl am liebsten alles absolut steril, so auch seine Hände, was der Grund dafür ist, dass er sich diese andauernd wäscht. Nehmen wir an, das Händewaschen passiert alle zehn Minuten. Wie drücken wir das in einem Cron Job aus? Ganz einfach:

*/10 * * * * washhands

In jeder Minute, die ein Vielfaches der Zehn ist, wird washhands ausgeführt. Das funktioniert natürlich auch mit Stunden, Tagen und Monaten.

Immer am dritten Donnerstag – Cron Jobs und Regeln

Für Sheldon und seine Kumpels gibt es genau einen Tag im Monat, an dem etwas Unvorhersehbares passieren kann. Dieser Tag nennt sich Anything-can-happen-thursday und findet immer am dritten Donnerstag im Monat statt. Im Gegensatz zu seinen Freunden findet Sheldon diese Gewohnheit eher überflüssig, was auf seine Furcht vor Überraschungen zurückzuführen ist.

Vielleicht ist seine Abneigung gegen die Regel aber auch schlicht darin begründet, dass man diese nicht in einem Cron Job ausdrücken kann. Man kann sich zwar im Kommando-Bereich einen Workaround schaffen, doch grundsätzlich gibt es eine solche Regeldeklaration in cron nicht. Man kann also mit cron nicht alle erdenklichen Aufgaben abdecken.

Asynchrone Aufträge übernimmt Daemon anacron

Wenn Sheldon einmal verschlafen sollte und erst um neun Uhr aufsteht – somit seine geplante Frühstückszeit verpasst, müsste er bis zum Mittagessen hungern, denn der Cron Job wird nur zur definierten Zeit ausgeführt, wenn das System aktiv ist. Termine werden niemals nachgeholt. Solche asynchronen Aufträge lassen sich beispielsweise mit dem verwandten Daemon anacron lösen.

Im Server-Bereich ist dieser Daemon eher unrelevant, da Server sowieso nach Möglichkeit eine Uptime von 99,99% haben sollten. Der heimische Rechner wird aber nicht den ganzen Tag laufen. Für die Regelung des privaten Zeitplans ist anachron also in manchen Fällen vielleicht die bessere Wahl.

Beispiele mit Realweltbezug

Entfernen wir uns zum Schluss von nerdigen Serienhelden und schauen uns Beispiele an, die etwas mehr Bezug zur realen Welt haben. Die einfachste Möglichkeit, jeden Sonntagabend ein Backup zu machen, wäre so möglich:

0 22 * * 0 datum=`date -I` ; tar -zcf backup_$datum.tgz ./public_html

Dieser Cron Job erstellt automatisch ein gepacktes Archiv des Ordner public_html. Die Variable $datum ist dabei Teil des Dateinamens und ganz praktisch, wenn wir später ein Backup aus einem ganz bestimmten Zeitraum suchen.

Aber wir wollen nicht nur unsere Dateien auf dem Webspace sichern, sondern auch die MySQL-Datenbank:

0 4 * * * date=`date -I` ; mysqldump -u DBUSER -p DBPASS –all-databases | gzip >/irgendwo/mysqlbackup_$date.sql.gz

Es wird jeden Tag morgens um vier Uhr ein Backup aller Datenbanken des Users DBUSER mit dem Passwort DBPASS angelegt. Auch hier wird alles in ein Archiv gepackt, das wieder das Datum als Teil des Dateinamens enthält.

Scripte automatisch laufen lassen

Was man auch immer wieder hört, ist, dass viele nach einer Möglichkeit suchen, ein bestimmtes Skript automatisch zu einer bestimmten Zeit ausführen zu lassen. Mit Cron Jobs ist das die denkbar einfachste Übung:

0 0 * * 1 /pfad/zum/skript.php

Die skript.php kann nun beispielsweise eine wöchentliche Linkliste ins Blog stellen und veröffentlichen, ohne dass wir mittels seltsamer PHP-Workarounds selbst Hand anlegen müssen.

(mm),