zur Server-Automation - SOS

Werbung
Software- und Organisations-Service GmbH
MONITORING JOB SCHEDULER
JOB SCHEDULER
zur Server-Automation
Technische Beschreibung
Januar 2006
Software- und Organisations-Service GmbH · Giesebrechtstr. 15 · D-10629 Berlin · Telefon (030) 86 47 90-0 · Telefax (030) 8 61 33 35
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
2
Inhaltsverzeichnis
1
2
3
4
5
6
Zielsetzung
Lizenzierung, Download, Dokumentation
Anmeldung
Startseite
Menü Job Scheduler
Aufträge für Managed Jobs
6.1 Jobs in Job-Ketten
6.2 Job/ Job-Kette Launch Backups
6.2.1 Job in der Job-Kette Launch Backups definieren
6.2.2 Aufträge für den Job Launch Backups definieren
6.3 Job-Kette Launch Custom Reports
6.3.1 Job in der Job-Kette Launch Custom Reports definieren
6.3.2 Aufträge für die Job-Kette Launch Custom Reports definieren
7 Datenbankverbindungen bereitstellen
8 Job- und Auftragstypen erstellen
Software- und Organisations-Service GmbH
3
3
4
4
6
9
10
10
11
12
16
16
19
25
26
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
1
3
Zielsetzung
Der MONITORING JOB SCHEDULER ist die Implementierung des JOB SCHEDULERS für regelmäßig wiederkehrende
Aufgaben der Systemadministration, die sich standardisieren lassen, z.B.
Überwachen mehrerer verbundener Job Scheduler
Zentrale Verwaltung von Aufträgen für mehrere Job Scheduler
Überwachung der zur Verfügung stehenden Systemkapazität (Memory, Disk Space) eines Servers
Löschen temporärer Dateien
Logfile Verwaltung
Backups der Datenbank und des File Systems
Database Maintenance, z.B. Reorganisation von Indizes
Erstellung und Versand von Reports
Ausführung von kundenspezifischen Skripten
Für diese wiederkehrenden Aufgaben wird der MONITORING JOB SCHEDULER mit sofort einsatzbereiten Standard-Jobs ausgeliefert, die lediglich für die eigene Umgebung konfiguriert bzw. für besondere Anwendungen
angepasst werden müssen. Die JOB SCHEDULER Dokumentation sowie die Dokumentation der MANAGED JOBS
wird an dieser Stelle vorausgesetzt.
2
Lizenzierung, Download, Dokumentation
Der JOB SCHEDULER steht als Open Source Software unter der GNU-Lizenz GPL zur Verfügung.
Download, Dokumentationen sowie weitere Hinweise finden Sie unter
http://www.sos-berlin.com/scheduler
bzw. unter
http://sourceforge.net/projects/jobscheduler.
Die Auslieferung des MONITORING JOB SCHEDULERS wird von SOS GmbH nach den Bedürfnissen individueller
Kundenkreise angepasst. Wir senden auf Anfrage Installationspakete für Windows, Linxu und Solaris mit den
entsprechenden Job-Implementierungen zu bzw. übernehmen die Installation.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
3
4
Anmeldung
Nach der Installation ist der MONITORING JOB SCHEDULER unter der URL
http://<hostname>/sos_scheduler/scheduler_login.php
zu erreichen, Sie können sich zunächst mit dem Mandanten sos und dem Benutzernamen admin anmelden –
ohne Kennwort:
4
Startseite
Nach der Anmeldung sehen Sie im linken Frame ein Menü mit den zentralen Funktionen, im Frame rechts
läuft die Web-Oberfläche zum Monitoring eines JOB SCHEDULERs.
Sie können beliebig viele Job Scheduler gleichzeitig registrieren und über diese Oberfläche überwachen. Ein
blauer Header-Balken steht jeweils für einen Job Scheduler, weist dessen ID, Port und Status aus.
Um einen Job Scheduler für die Überwachung durch den MONITORING JOB SCHEDULER zu registrieren, muss in
der XML Konfigurationsdatei des überwachten Job Schedulers folgender Eintrag vorhanden sein:
<config
main_scheduler
Software- und Organisations-Service GmbH
= "localhost:4444">
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
5
Mit dem Eintrag wird vereinbart, dass der überwachte Job Scheduler sich beim MONITORING JOB SCHEDULER an
Host localhost auf Port 4444 registriert. Der überwachte Job Scheduler baut automatisch die Verbindung auf
bzw. stellt sie automatisch wieder her, falls der MONITORING JOB SCHEDULER neu gestartet wurde. Es können
beliebig viele Job Scheduler registriert werden.
Falls mehrere Job Scheduler überwacht werden, kann mit den Symbolen
nen Job Scheduler minimiert bzw. wiederhergestellt werden.
Per Klick auf
das Fenster für jeweils ei-
wird ein Job Scheduler in einem eigenen Fenster geöffnet.
Bei aktivierter Checkbox
kunden aktualisiert.
wird die Monitor-Oberfläche eines Job Schedulers alle 5 Se-
Per Klick auf den menu-Link werden für diesen Job Scheduler alle Funktionen zum Starten, Stoppen und Anhalten angeboten:
Der MONITORING JOB SCHEDULER hat eine eigene Benutzerverwaltung, in der Sie Benutzergruppen, Benutzer
sowie deren Rollen und Rechte einrichten können:
Dokumentationen stehen unter dem Menüpunkt Dokumentation in verschiedenen Formaten (HTM, PDF, XML)
zur Verfügung:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
5
6
Menü Job Scheduler
Im Menü Job Scheduler stehen 4 Funktionen zur Verfügung:
Mit Job-Kontrolle Verarbeitung erreichen Sie die klassische Web-Oberfläche zur Kontrolle der Jobs des überwachenden Job Schedulers. Falls weitere Job Scheduler registriert sind, die überwacht werden sollen, werden diese hier mit ID und Port aufgeführt.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
7
Unter dem Menüpunkt Job-Auslastung sehen Sie eine Übersicht der MANAGED JOBS. Es wird jeweils die Anzahl offener Aufträge, Eingangs-, Ausgangs- und Fehlerstatus dargestellt.
Ein Klick auf den Job-Link startet den Job.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
8
Die Job-Historie bündelt die Protokolle aller Jobs in einer Übersicht. Protokolle können zu bestimmten Jobs
oder aus einem bestimmten Zeitraum gesucht werden.
Werden keine Jobs explizit über die Listbox ausgewählt, dann werden Protokolle aller Jobs aus dem angegebenen Zeitraum dargestellt, die aktuellsten zuerst.
Das Symbol
öffnet das Protokoll, mit dem Symbol
kann das Protokoll aus der Historie entfernt werden.
Der Menüpunkt Monitoring öffnet die Monitor-Oberfläche – diese Ansicht ist beim Aufruf von
http://<hostname>/sos_scheduler/scheduler_login.php nach der Anmeldung per Default aktiviert.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
6
9
Aufträge für Managed Jobs
MANAGED JOBS werden nicht wie üblich über die XML-Konfigurationsdatei des Job Schedulers konfiguriert,
sondern können über die Web-Oberfläche definiert werden. Alle für die Ausführung notwendigen Informationen
werden in einer Datenbank gehalten und können zur Laufzeit des Job Schedulers über die Web-Oberfläche
aktualisiert werden.
Bitte beachten Sie zu technischen Details die Dokumentation MANAGED JOBS .
Für zentrale Aufgaben wird eine Reihe vordefinierter Jobs ausgeliefert:
Job
Aufgabe
Launch Backups
Skripte zur partiellen Sicherung oder Vollsicherung von Datenbank oder File System ausführen
Launch Database Statements
SQL-Statements oder SQL-Prozeduren in einer Datenbank
ausführen
Launch Database Reports
per SQL Daten aus einer Datenbank auslesen, diese als Report
aufbereiten und als eMail versenden
Launch Custom Reports
per SQL Daten aus einer Datenbank auslesen, diese als Report
aufbereiten und als eMail versenden
Launch Executable Files
Ausführbare Dateien auf dem Server starten
Jeder Job kann für ähnliche Aufgaben mehrere Aufträge des gleichen Typs enthalten. Aufträge können eine
eigene Startzeit-Konfiguration besitzen, also unabhängig von einander zeitgesteuert gestartet werden.
Da nur Jobs innerhalb von Job-Ketten Aufträge verarbeiten, ist für jeden Job eine Job-Kette definiert, die nur
diesen einen Job enthält. Die Job-Kette ist in diesem Fall ein Container für einen einzelnen Job, dem beliebig
viele Aufträge der gleichen Art zugeordnet sein können.
Die Art des Auftrags wird durch den Job- bzw. Auftragstyp festgelegt und gilt damit für alle Aufträge in einer
Job-Kette.
Im Menü Workflow werden die Job-Ketten, ihre Jobs und Aufträge sowie die Art der Jobs und Aufträge definiert. Außerdem können an dieser Stelle unterschiedliche Datenbankverbindungen für die Jobs, die diese benötigen, bereitgestellt werden.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
10
6.1 Jobs in Job-Ketten
Wählen Sie aus dem Menü Workflow den Eintrag Job-Ketten/ Jobs/ Aufträge – Sie sehen eine Liste mit den
bereits definierten Job-Ketten für die bereitgestellten MANAGED JOBS:
Die ausgelieferten Job-Ketten enthalten jeweils einen Job gleichen Namens:
Job-Kette
Job
Launch Backups
Launch Database Statements
Launch Database Reports
Launch Custom Reports
Launch Executable Files
Launch Backup
Launch Database Statement
Launch Database Report
Launch Customized Report
Launch Executable File
Neben den ausgelieferten Job-Ketten können Sie mit dem Link neue Job-Kette selbst Job-Ketten definieren.
Sie haben auch die Möglichkeit, mit der Web-Oberfläche Standard-Jobs zu erstellen, die von einer Job-Kette
unabhängig sind. Die Konfiguration eines auf diese Weise erstellten Standard-Jobs wird ebenfalls in der Datenbank gespeichert ist dem Job Scheduler anschliessend bekannt.
Im folgenden wird am Beispiel der Job-Kette Launch Backups der Zusammenhang von Job-Kette, Job und
Aufträgen erläutert.
6.2 Job/ Job-Kette Launch Backups
Die Job-Kette Launch Backups enthält Aufträge zum Sichern von Datenbank und File System.
Öffnen Sie die Job-Kette Launch Backups:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
11
Die Job-Kette hat einen internen Namen, einen Titel für die Web-Oberfläche und ggf. eine Beschreibung.
Eine Job-Kette kann gesperrt werden, der zugehörige Job bzw. die Aufträge werden nicht mehr ausgeführt.
Bedeutung der Buttons:
Speichern
... unter
... unter mit Baum
Neustarten
Abbrechen
Zurücksetzen
Entfernen
Aufträge entfernen
Geänderte Definition der Job-Kette in der Datenbank speichern
Definition der Job-Kette unter einem anderen Namen in der Datenbank speichern
Definition der Job-Kette mit allen Jobs und Aufträgen in der Datenbank speichern
Speichern und Job-Kette mit geänderter Konfiguration neu starten
Bearbeiten abbrechen
Änderungen seit dem letzten Speichern zurücknehmen
Job-Kette entfernen
Alle Aufräge einer Job-Kette entfernen
Die Bedeutung der Buttons gilt im wesentlichen auch für Jobs und Aufträge, Besonderheiten werden im Folgenden erwähnt.
Unterhalb der Job-Kette gibt es ein Ordner-Symbol für Aufträge und ein Ordner-Symbol für Jobs.
6.2.1
Job in der Job-Kette Launch Backups definieren
Der Ordner Jobs enthält den einzigen Job der Job-Kette Launch Backups. Eine Job-Definition verfügt über Titel, Beschreibung und einen Job-Typ. Abhängig vom Job-Typ werden weitere Parameter, d.h. Formularfelder
in der Web-Oberfläche zur Verfügung gestellt.
Zuweisung des Job-Typs
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
12
Einem Job wird ein Job-Typ aus der Liste der verfügbaren Job-Typen zugewiesen:
Details zu den Job-Typen siehe Dokumentation MANAGED JOBS.
Da für die Aufträge zum Sichern von Datenbank oder File System Skripte aufgerufen werden, ist der Job
Launch Backups vom Typ Executable File.
Ein Job kann eine eigene Startzeit-Konfiguration (run time) haben. Da die explizite Startzeit individuelll für jeden Auftrag dieses Jobs festgelegt wird, ist an dieser Stelle nur die Zeit definiert, innerhalb der Job überhaupt
laufen darf:
<run_time let_run = "yes"
begin
= "00:00"
end
= "24:00"/>
D.h. der Job kann jederzeit laufen.
Ein Job kann gesperrt werden, dann werden keine Aufträge dieses Jobs mehr verarbeitet.
Für jeden Job kann die Anzahl der Prozesse festgelegt werden, die der Job Scheduler parallel zur Verfügung
stellt, wenn Aufträge gleichzeitig eintreffen, im Beispiel sind 2 Prozesse eingestellt. Sollten ggf. zwei Aufträge
zur Datensicherung die gleiche Startzeit haben, können sie auf diese beiden Prozesse verteilt werden. Sollen
Aufträge gleicher Startzeit dieses Jobs nicht parallel, sondern nacheinander ausgeführt werden, darf nur 1
Prozess zugelassen werden.
Die max. Leerlaufzeit enthält die Dauer in Sekunden nach der Job sich beendet, wenn keine weiteren Aufträge
anstehen. Der Job wird zur Startzeit eines neuen Auftrags automatisch wieder gestartet. Die Angabe 0 vereinbart, dass sich der Job nach Abarbeitung der anstehenden Aufträge sofort beendet.
Die max. Verarbeitungszeit enhält die Dauer in Sekunden, die ein Job höchstens verbrauchen darf. Die Angabe 0 erlaubt eine beliebig lange Verarbeitungszeit.
Jobs in Job-Ketten haben üblicherweise einen Eingangs- und einen Ausgangsstatus – dabei ist der Ausgangsstatus des einen Jobs der Eingangsstatus für den nächsten Job. In den hier ausgelieferten Jobs spielt das keine Rolle, weil hier Job-Ketten lediglich einen Job haben. Per Definition ist bei allen Jobs dieser Art der Eingangsstatus auf 0 und der Ausgangsstatus auf 100 festgelegt. Der Fehlerstatus ist der Ausgangsstatus +
1000, also 1100.
Gegebenenfalls können Jobs über eigene Aufrufparameter und Skripte verfügen, die mit der Funktion Parameter verwaltet werden.
6.2.2
Aufträge für den Job Launch Backups definieren
Der Ordner Aufträge enthält alle Aufträge, die für den Job Launch Backups erstellt wurden:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
13
Jeder Auftrag hat den gleichen Auftragstyp wie der Job-Typ des Jobs Launch Backups: Executable File.
Das heisst, die Definition des Auftrags- bzw. Job-Typs erfolgt nur einmal an zentraler Stelle.
Konkret sind im Beispiel verschiedene Aufträge für partielle und volle Sicherung verschiedener Datenbankobjekte sowie partielle und volle Sicherung des Dateisystems für verschiedene Mandanten eingerichtet.
Jeder Job kann einen eigenen Skriptaufruf, eigene Auftragsparameter und eine eigene
Startzeit haben.
Dies wird am Beispiel der Einstellungen für den Job Oracle Full Export: DOD erläutert:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
14
Jeder Auftrag hat immer einen Namen, einen Titel und einen Auftragstyp, der aus der Liste der vorhandenen
Auftragstypen gewählt werden kann.
Da es sich beim Auftrag, eine Datenbanksicherung auszuführen, um einen Auftrag vom Typ Executable File
handelt, steht ein Formularfeld für den Programmaufruf zur Verfügung, in diesem Fall der Name des auszuführenden Skripts.
Für den Auftrag wird die Startzeit für eine Vollsicherung festgelegt, z. b. jeden Sonnabend um 21:00
<run_time>
<weekdays>
<day day="6">
<period single_start = "21:00"/>
</day>
</weekdays>
</run_time>
Bedeutung der Buttons:
... und anwenden
... und starten
testen
Konfiguration in der Datenbank speichern und dem Job Scheduler übergeben
Speichern, anwenden und Auftrag starten
Auftrag ohne Speichern mit dieser Konfiguration starten
Mit dem Button Bearbeiten erhalten Sie ein Formular mit den Auftragsparametern:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
15
Für jeden Auftrag können
Parameter aus den zentralen Einstellungen (settings) für diesen Auftragstyp
frei an dieser Stelle einstellbare Parameter (nicht aus settings)
festgelegt werden.
Hilfetexte zur Verfügung.
Für die Parameter aus den Einstellungen stehen mit dem Link
Aufträge für den Job Launch Backups haben keine weiteren lokalen Parameter.
In der Regel müssen die Parameter-Werte der Standard-Auslieferung an dieser Stelle nicht geändert werden.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
16
6.3 Job-Kette Launch Custom Reports
6.3.1
Job in der Job-Kette Launch Custom Reports definieren
Der Job Launch Customized Report in der Job-Kette Launch Custom Reports führt SQL-Statements für eine
angegebene Datenbankverbindung aus und bereitet das Ergebnis im XML-Format auf. Aus dem XML-Format
wird ein Report im HTML-Format erstellt und per eMail an ggf. mehrere Empfänger versendet.
Aufträge für diesen Job basieren im Prinzip auf dem gleichen SQL-Statement, unterscheiden sich aber durch
den Zeitraum, über den ein Report erstellt werden soll: tägliche Statistik, monatliche Statistik, Jahresstatistik.
Der Job-Typ ist in diesem Fall Customized Report.
Da SQL ausgeführt werden soll, muss eine Datenbankverbindung gewählt werden (siehe hierzu auch das Kapitel Datenbankverbindungen bereitstellen).
Hinweis: die hier gewählte Verbindung muss mit einem Datenbankbenutzer erfolgen, der ausreichende Rechte
hat – u.a. Tabellen lesen, erstellen und entfernen (es werden temporäre Tabellen erstellt, die nach Fertigstellen des Reports wieder gelöscht werden).
Das auszuführende SQL für die Reporterstellung steht im Formularfeld SQL-Statement. Der Code wird am
besten mit einem Editor bearbeitet, getestet und anschließend hier eingefügt.
Es folgt das vollständige Code-Beispiel für einen Report mit dem Datenbanksystem Oracle:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
17
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
DECLARE c number; BEGIN SELECT COUNT(*) INTO c FROM USER_TABLES WHERE
"TABLE_NAME"='TMP_REPORT_SETTINGS'; IF c = 0 THEN EXECUTE IMMEDIATE '
CREATE TABLE TMP_REPORT_SETTINGS ("DATE_FROM" DATE, "DATE_TO" DATE)
'; END IF; END;
/
DELETE FROM TMP_REPORT_SETTINGS;
INSERT INTO TMP_REPORT_SETTINGS ("DATE_FROM", "DATE_TO") VALUES (NULL, NULL);
UPDATE TMP_REPORT_SETTINGS SET
"DATE_FROM" = (SELECT NVL(MIN("CREATION_DATE"), CURRENT_DATE)
FROM ORDERS
WHERE TRUNC("CREATION_DATE") >= TRUNC(${scheduler_order_report_date_from})
AND TRUNC("CREATION_DATE") <= TRUNC(${scheduler_order_report_date_to})),
"DATE_TO" = (SELECT ${scheduler_order_report_date_to} from dual);
SELECT TO_CHAR("DATE_FROM", 'dd.mm.yyyy') AS "DATED_FROM", TO_CHAR("DATE_TO",'dd.mm.yyyy') AS
"DATED_TO" FROM TMP_REPORT_SETTINGS;
/* variable dated */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable count_orders */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "PRIORITY"='URGENT'
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable urgent_orders */
SELECT "REQUESTER_ID", COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS)
GROUP BY "REQUESTER_ID";
/* variable requesters */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "ORDER_STATE"=500
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable delivered_orders */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "ORDER_STATE"=800
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable booked_orders */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "ORDER_STATE">1000 AND "ORDER_STATE"<2000
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable failed_orders */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "ORDER_STATE">2000
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable delayed_orders */
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
18
SELECT "REJECTED_REASON", SUBSTR("REJECTED_REASON", 1, INSTR("REJECTED_REASON", '->', 1, 1)-1) AS
"REJECTED_CODE", COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "ORDER_STATE">1000 AND "ORDER_STATE"<2000
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS)
GROUP BY "REJECTED_REASON", SUBSTR("REJECTED_REASON", 1, INSTR("REJECTED_REASON", '->', 1, 1)-1)
ORDER BY SUBSTR("REJECTED_REASON", 1, INSTR("REJECTED_REASON", '->', 1, 1)-1);
/* variable rejected_reasons */
SELECT "REQUESTER_GROUP", COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS)
GROUP BY "REQUESTER_GROUP"
ORDER BY "REQUESTER_GROUP";
/* variable requester_groups */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "POSTAL_COUNTRY"='DE'
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable german_orders */
SELECT COUNT(*) AS "COUNT"
FROM ORDERS
WHERE "POSTAL_COUNTRY"<>'DE'
AND "CREATION_DATE" >= (SELECT "DATE_FROM" FROM TMP_REPORT_SETTINGS)
AND "CREATION_DATE" <= (SELECT "DATE_TO" FROM TMP_REPORT_SETTINGS);
/* variable foreign_orders */
DROP TABLE TMP_REPORT_SETTINGS;
Das SQL-Grundgerüst für alle Aufträge befindet sich an zentraler Stelle der Job-Definition. Jeder der Aufträge
für den Job führt diesen Code aus, allerdings mit unterschiedlichen Werten für die lokalen Auftragsparameter
scheduler_order_report_date_from
scheduler_order_report_date_to
Auftragsparameter werden in SQL-Scripten in der Form ${parameter} verwendet, hier z.B. ${scheduler_order_report_date_from}. Sie werden automatisch zum Zeitpunkt der Job-Ausführung substituiert.
Aus den Parametern des Beispieles wird der Berichtszeitraum im SQL-Statement auftragsspezifisch zusammengesetzt:
tägliche Statistik
scheduler_order_report_date_from
scheduler_order_report_date_to
CURRENT_DATE
CURRENT_DATE
monatliche Statistik
scheduler_order_report_date_from
scheduler_order_report_date_to
TRUNC(ADD_MONTHS(CURRENT_DATE,-1),'MONTH')
LAST_DAY(ADD_MONTHS(CURRENT_DATE,-1))
Jahresstatistik
scheduler_order_report_date_from
scheduler_order_report_date_to
TO_DATE(TO_CHAR(CURRENT_DATE, 'yyyy') || '-01-01', 'yyyy-mm-dd')
TO_DATE(TO_CHAR(CURRENT_DATE, 'yyyy') || '-12-31', 'yyyy-mm-dd')
Das Ergebnis der jeweiligen Abfragen des Reports wird automatisch auf Variablen zur Verfügung gestellt, die
im der SQL-Abfrage in der Form /* variable variable_name */ eingefügt werden. Die Namen der Variablen können frei vergeben werden, sie werden mit diesen Namen im HTML-Muster des Reports angesprochen.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
6.3.2
19
Aufträge für die Job-Kette Launch Custom Reports definieren
Die Job-Kette Launch Custom Reports enthält ähnliche Aufträge des gleichen Auftragstyps Customized Reports:
Als Beispiel die Konfiguration des Auftrags Monthly Order Report SBB:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
20
Der Auftrag soll jeweils am Monatsersten gestartet werden, deshalb wird die Startzeit wie folgt konfiguriert:
<run_time>
<monthdays>
<day day="1">
<period single_start = "07:00"/>
</day>
</monthdays>
</run_time>
Es muss eine Datenbankverbindung für einen Benutzer mit ausreichenden Rechten gewählt werden, da eine
temporäre Tabelle erstellt und ansschliessend gelöscht werden muss.
Über den Button Bearbeiten erreichen Sie die Auftragsparameter.
Im oberen Teil des Formulars stehen die Parameter aus den zentralen Einstellungen für den Auftrags- bzw.
Job-Typ, die durch -Symbole dokumentiert sind:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
21
Insbesondere werden hier Angaben zur eMail, dem Inhalt und Betreff, der eMmail-Adresse, CC-Adresse und
BCC-Adresse gespeichert.
Die Aufbereitung der XML-Daten eines Reports im HTML-Format erfolgt über einen Mustertext (template),
dessen Pfad im Feld scheduler_order_report_template angegeben werden kann.
Der HTML-Report kann im Body der eMail oder als Anhang versendet werden.
Sie können einstellen, ob im Fall fehlender Ergebnisse überhaupt eine Report-eMail gesendet werden soll.
Im unteren Teil des Formulars stehen die Auftragsparameter, die nicht aus den Einstellungen für den Job-Typ
stammen: die hier vergegebenen Namen werden im SQL-Statement des Jobs mit den hier angegebenen Werten substituiert – in der Folge kann für jeden Auftrag das gleiche SQL ausgeführt werden, parametrisiert mit
den Werten für den Berichtszeitraum.
Die Gestaltung des Mustertextes für den Report kann mit einem beliebigen HTML-Editor erfolgen. Der Mustertext kann Variablen enthalten, die zur Ausführungszeit des Jobs substituiert werden bzw. mit einer ScriptSprache, hier JavaScript, verarbeitet werden:
•
Variablen werden in der Form $(variable) im laufenden HTML-Markup verwendet
•
Script-Bestandteile werden mit den Zeichen <% und %> geklammert. Innerhalb dieser Zeichen kann mit
JavaScript bedingte Verarbeitung bzw. die Ausgabe der Abfrageergebnisse in Schleifen programmiert
werden.
Es folgt das Beispiel eines Standard-Reports für die im vorigen Kapitel vorgestellte Abfrage:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>DOD Order Report</title>
<style type="text/css">
BODY
{ font-family: "Arial" sans-serif; width: from-canvas; height: from-canvas; margin: 0.5em 0; }
H2
{ margin: 5 0 5 0; }
P
{ font-size: 10pt; font-family: "Arial", "sans-serif"; font-weight: normal; }
TABLE.report
{ font-family: "Arial", "sans-serif"; font-size: 10pt; background-color:#FFFFFF;
border: thin solid #A8C0D7; border-style: ridge; border-width: 2px; border-collapse: collapse; }
TH.report
{ background-color: #A8C0D7; color: #FFFFFF; }
</style>
</head>
<body>
<% var i = 0; %>
<table width="100%" border="0">
<tr>
<td width="5%"> </td>
<td width="90%">
<h2>$(scheduler_order_report_subject)</h2>
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
22
<p><strong>Bestellungen von $(dated[0]["dated_from"]) bis
$(dated[0]["dated_to"])</strong></p>
<table width="100%" class="report" border="1px" cellpadding="5" cellspacing="1">
<tr>
<th class="report" align="left" colspan="2">DOD Bestellungen</th>
</tr>
<tr>
<td width="30%">Anzahl Bestellungen</td>
<td width="70%">$(count_orders[0]["count"])</td>
</tr>
<tr>
<td>davon: Eilbestellungen</td>
<td>$(urgent_orders[0]["count"])</td>
</tr>
<% for(i=0; i<requesters.length; i++ ) { %>
<tr>
<td>Zugangssystem: $(requesters[i]["requester_id"])</td>
<td>$(requesters[i]["count"])</td>
</tr>
<% } %>
<tr>
<td>Gelieferte Bestellungen</td>
<td>$(delivered_orders[0]["count"])</td>
</tr>
<tr>
<td>Gebuchte Bestellungen</td>
<td>$(booked_orders[0]["count"])</td>
</tr>
</table>
<p> </p>
<table width="100%" class="report" border="1px" cellpadding="5" cellspacing="1">
<tr>
<th class="report" align="left" colspan="2">Fehlerhafte Bestellungen</th>
</tr>
<tr>
<td width="30%">negative quittierte</td>
<td width="70%">$(failed_orders[0]["count"])</td>
</tr>
<tr>
<td width="30%">zurückgestellte</td>
<td width="70%">$(delayed_orders[0]["count"])</td>
</tr>
<% for(i=0; i<rejected_reasons.length; i++ ) { %>
<tr>
<td width="30%">davon: Abweisungsgrund $(rejected_reasons[i]["rejected_code"])</td>
<td width="70%">$(rejected_reasons[i]["count"])   <font style="font-size:
8pt;">($(rejected_reasons[i]["rejected_reason"]))</font></td>
</tr>
<% } %>
</table>
<p> </p>
<table width="100%" class="report" border="1px" cellpadding="5" cellspacing="1">
<tr>
<th class="report" align="left" colspan="2">Aufgeschlüsselte Bestellungen</th>
</tr>
<% for(i=0; i<requester_groups.length; i++ ) { %>
<tr>
<td width="30%">Bestellungen Kundengruppe $(requester_groups[i]["requester_group"])</td>
<td width="70%">$(requester_groups[i]["count"])</td>
</tr>
<% } %>
<tr>
<td width="30%">Inlandsbestellungen</td>
<td width="70%">$(german_orders[0]["count"])</td>
</tr>
<tr>
<td width="30%">Auslandsbestellungen</td>
<td width="70%">$(foreign_orders[0]["count"])</td>
</tr>
</table>
</td>
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
23
<td width="5%"> </td>
</tr>
</table>
</body>
</html>
Die in der SQL-Abfrage des vorigen Kapitels enthaltenen Variablen /* variable variable_name */ enthalten jeweils das Abfrageergebnis in Form eines zweidimensionalen JavaScript-Arrays: die erste Dimension enthält die jeweiligen Sätze des Abfrageergebnisses, die zweite Dimension enthält die Feldnamen in Kleinschreibung. Bspw. wird auf ein Feld count_orders der Abfrage für die Gesamtzahl der Bestellungen in der Form
$(count_orders[0]["count"]) zugegriffen. Die Abfrage liefert immer nur einen Satz, daher wird konstant
das erste (=0) Element des JavaScript-Arrays verwendet.
Liefert eine Abfrage mehrere Ergebnissätze, dann werden diese in Form von Schleifen mit HTML-Markup ausgegeben. Bspw. wird mit der Script-Sequenz
<% for(i=0; i<rejected_reasons.length; i++ ) { %>
<tr>
<td width="30%">davon: Abweisungsgrund $(rejected_reasons[i]["rejected_code"])</td>
<td width="70%">$(rejected_reasons[i]["count"])   <font style="font-size:
8pt;">($(rejected_reasons[i]["rejected_reason"]))</font></td>
</tr>
<% } %>
über die Ergebnissätze der ersten Dimension des JavaScript-Arrays iteriert, um jeweils die Anzahl zurückgewiesenen Bestellungen aufgeschlüsselt nach Abweisungsgrund auszugeben.
Der Mustertext des HTML-Reports wird im Dateisystem abgelegt, und der Dateiname mit Pfad in der Einstellung scheduler_order_report_template angegeben. Dateinamen können relativ zum Installationsverzeichnis
des MONITORING JOB SCHEDULERS angegeben werden.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
24
Das Ergebnis des vorgestellten HTML-Reports sieht folgendermaßen aus:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
7
25
Datenbankverbindungen bereitstellen
Mit dem Menü Workflow->Datenbankverbindungen der Web-Oberfläche erhalten Sie folgendes Formular zur
Verwaltung der Datenbankverbindungen:
Im Formular können vorhandene Datenbankverbindungen aus der Liste ausgewählt, bearbeitet und übernommen werden. Neue Datenbankverbindungen geben Sie in das Formular ein und wählen die Funktion Übernehmen.
Die Datenbankverbindungen werden nur einmal an zentraler Stelle erfasst und können den einzelnen Jobs und
Aufträgen anschließend zugeordnet werden. Die Auswahlliste der Datenbankverbindungen steht in den Formularen der Job- und Auftragsdefinition zur Verfügung.
Änderungen an Datenbankverbindungen wirken sich sofort aus ohne dass die einzelnen Job- oder Auftragsdefinitionen nochmals aufgerufen oder gespeichert werden müssten.
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
8
26
Job- und Auftragstypen erstellen
Der MONITORING JOB SCHEDULER enthält eine Reihe vordefinierter Job- und Auftragstypen, deren Implementierung in der Auslieferung enthalten ist. Sie erreichen sie über das Menü Workflow->Auftragstypen:
Die Auftragstypen werden an zentraler Stelle erfasst und den einzelnen Jobs und Aufträgen anschließend zugeordnet. Die Auswahlliste der Auftragstypen steht in den Formularen der Job- und Auftragsdefinition zur Verfügung.
Im Formular können vorhandene Auftragstypen aus der Liste ausgewählt, bearbeitet und übernommen werden. Neue Auftragstypen geben Sie in das Formular ein und wählen die Funktion Übernehmen. Für einen neuen Auftragstypen muss eine Implementierung in Form eines Scripts angegeben werden, das in den Sprachen
Java, JavaScript, Perl oder VBScript realisiert ist. In der Abbildung ist das Beispiel einer Java-Klasse aufgenommen, die Teil der Auslieferung ist.
Eigene Java-Klassen können beliebig implementiert und hier zugewiesen werden. Das Java-Archiv (.jar), in
dem die Klasse aufgenommen ist, muss dem Job Schedulers zum Startzeitpunkt in der Konfigurationsdatei
config/factory.ini bekanntgegeben werden, z.B. für das Archiv /mypath/sample.jar in der Form:
[java]
class_path = /mypath/sample.jar;/scheduler/lib/sos.connection.jar;…
Änderungen an Auftragstypen wirken sich erst nach dem Speichern der einzelnen Jobs oder Aufträge bzw.
nach Neustart des Job Scheduler aus.
Folgende Auftragstypen sind in der Auslieferung enthalten:
Software- und Organisations-Service GmbH
Februar 2006
MONITORING JOB SCHEDULER – Job Scheduler zur Server-Automation
•
27
Auftragstyp: Executable File
Der Typ wird zum Starten ausführbarer Programme und Scripte (shell) verwendet. Bei Verwendung
dieses Typs muss lediglich der Name des auszuführenden Programms im Job oder Auftrag angegeben werden.
•
Auftragstyp: Database Statement
Der Typ dient zum Ausführen von SQL-Statements in einer Datenbank; dies kann den Aufruf von Datenbank-Prozeduren oder beliebigem SQL-Statements beinhalten. Jobs oder Aufträge dieses Typs
muss lediglich der Inhalt der SQL-Statements übergeben werden.
•
Auftragstyp: Database Report
Der Typ erzeugt standardisierte Datenbank-Reports aus SQL-Statements. Jobs oder Aufträge dieses
Types wird ein SQL-Statement übergeben, dessen Ergebnis in einem Standardformat (HTML) erzeugt
und ggf. per Mail übersendet wird.
•
Auftragstyp: Customized Report
Der Typ erweitert den Database Report um die Möglichkeit, eigene Layouts für Reports zu definieren.
•
Auftragstyp: File Transfer: Send
Der Typ wird für den automatisierten Versand von Dateien per FTP verwendet.
•
Auftragstyp: File Transfer: Receive
Der Typ wird für die automatisierte Annahme von Dateien per FTP verwendet.
Software- und Organisations-Service GmbH
Februar 2006
Herunterladen