CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Mit Monitoring und Performanceanalysen BI schneller machen

Enterprise-Lösungen für Business Intelligence und Performance Management brauchen ein feingranulares Logging, um Lastverteilungen verfolgen, beurteilen und optimieren zu können. DeltaMaster unterstützt das asynchrone Logging und Traceing in Datenbanken – und analysiert sie auch gleich selbst.

Einrichtung

Datenbank

Zuerst benötigt man eine Datenbank für das Logging. Dazu erstellt man eine neue Datenbank und nennt diese Beispielsweise DeltaMaster_LogDB.

Im Anschluss führt man das SQL Skript LogDb.sql aus, welches sich in der ZIP Datei der Installation von Web oder Repository im Unterordner Tools befindet.

Der DeltaMaster Service Benutzer muss auf diese Datenbank Zugriff haben. Empfohlen wird die Datenbankrolle Logging, welche alle nötigen Rechte beinhaltet.

Da das Feature für DeltaMaster Web ist, lohnt sich ein genauerer Blick in die Installationsordner von DeltaMaster Webclient und DeltaMaster Service.

DeltaMaster Service

Im DeltaMaster Service Installationsverzeichnis gibt es die beiden Dateien DeltaMaster.Service.exe.config und NLog.config. In der erstgenannten Datei DeltaMaster.Service.exe.config benötigt man die Verbindungszeichenfolge zur soeben erstellten Datenbank unter

<configuration><connectionStrings>

analog zur Verbindungszeichenfolge der Repositorydatenbank:

<add name="Logging" connectionString="Verbindungszeichenfolge"/>

Weiterhin ist es erforderlich, dass der Logging Endpoint aktiviert wird, sprich nicht einkommentiert ist. Der Port ist dabei der gleiche wie beim Service Endpoint. In der zweiten Datei NLog.config muss nichts verändert werden, aber man kann das Level* in folgendem Ausdruck anpassen. Das höchste Loglevel ist Trace, welches man nun einstellt, um das Logging auf höchster Stufe zu erhalten:

<logger name="*" minlevel="Trace" writeTo="LogDatabaseDirect" />

 

*Die möglichen Levelwerte und ihre Auswirkungen findet man hier.

DeltaMaster Webclient

Auch im DeltaMaster Webclient Installationsverzeichnis gibt es zwei Dateien von Interesse, sie lauten Web.config und NLog.config. In der Datei Web.config muss der Logging Endpoint aktiviert sein. Auch hier gilt, dass dieser analog zum Service Endpoint konfiguriert sein muss, d. h. Port und zusätzlich auch die Identität gleich. In der Nlog.config-Datei muss der Service aktiviert, sprich auskommentiert, werden. In der gleichen Zeile kann auch das Level angepasst werden. Das höchste Loglevel ist Trace, welches man nun einstellt, um das Logging auf höchster Stufe zu erhalten:

<logger name="*" minlevel="Trace" writeTo="LogService_NetTcpBinding_DeltaMaster"></logger>

Sollte der Webclient auf mehrere DeltaMaster Services zugreifen, ist dies auch möglich. Diese Konfiguration ist aber nicht Bestandteil des vorliegenden Beitrags.

Go-Live

Nach der Änderung an der Datei DeltaMaster.Service.exe.config ist ein Durchstarten des DeltaMaster Service Dienstes erforderlich. Das ist auch genau der Moment, an dem das Logging gestartet wird. Ob das Logging aktiviert ist, kann man sofort mit der anhängenden Analysesitzung oder mit einer kurzen SQL-Abfrage erkennen:

SELECT TOP 1 * FROM [LogBase]

Ist das Logging aktiviert, werden nach dem Neustart des genannten Dienstes sofort Einträge geschrieben. Was aber tun, wenn keine Einträge vorhanden sind?

Fehleranalyse

Für die Fehleranalyse gibt es eine hilfreiche Unterstützung. In den NLog.config Dateien kann man noch ein internes Logging einrichten. Es empfiehlt sich, bei der Datei des DeltaMaster Services zu beginnen. Dazu erweitert man den Eintrag

<nlog xmlns=http://www.nlog-project.org/schemas/NLog.xsd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

um die Parameter

internalLogFile

und

internalLogLevel: <nlog internalLogFile="C:\temp\Log_DB.trace" internalLogLevel="Error" xmlns=http://www.nlog-project.org/schemas/NLog.xsd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

In dem Parameter

internalLogFile

gibt man das Verzeichnis inklusive Dateiname an, im Parameter

internalLogLevel

das Level, empfehlenswert ist hier das Level Error.

Loggingzeitraum beschränken

Gerade auf dem höchsten Loglevel kann die Datenbank sehr schnell sehr groß werden. Damit man das Log dynamisch auf z. B. die letzten sieben Tage beschränkt, ändert man in der Tabelle LogSetting für den Schlüssel Retention lediglich den Wert (Angabe in Tagen):

UPDATE [LogSetting] SET [ValueInt] = 7 WHERE [Key] = 'Retention'

Im Anschluss kann man die Prozedur sp_DeleteOldLogs in einen SQL-Server Agent Job einbinden. Sofern die Logdateien der Datenbank zu groß sind, kann man weiterhin nach dem Aufruf der Prozedur noch die Datenbank verkleinern:

DBCC SHRINKDATABASE(N'DeltaMaster_LogDB')

Einsatzszenarien

Wie bereits erwähnt, erhält man die Traces und Log Dateien mit zusätzlichen Informationen angereichert in einer Datenbank. Die Log Dateien enthalten hierbei die Datenbankabfragen und deren Ausführungszeiten, die Traces enthalten in der Regel Informationen über Logins, Logouts und sonstige Probleme.

Auf einem höheren Level enthalten die Traces auch die technischen Aktionen von DeltaMaster Web. Durch das Logging in der Datenbank werden die Aktionen des Webclients und des DeltaMaster Services miteinander in Beziehung gesetzt und sind nicht nur unabhängig voneinander auszuwerten, sondern stehen im direkten Bezug miteinander. Dabei erkennt man, wie lange eine einzelne Aktion gedauert hat.

Weiterhin lassen sich die Logs und Traces innerhalb der Datenbank einschränken, sodass man nicht den Überblick verliert. Während sich die höheren Logstufen im Dateisystem nur für einen Klick eines Benutzers einigermaßen lesen lassen, sprich kurz vor dem Klick die Dateien löschen und danach direkt wegsichern und dabei sicherstellen, dass niemand anderes gerade in DeltaMaster Web arbeitet, stellt das mit dem Datenbanklogging kein Problem mehr dar. Auch bei Problemen, die nicht ständig auftreten, kann man so das Tracing auf höchster Stufe bis zum Auftreten des Problems mitlaufen lassen und hat dieses dann auswertbar aufgezeichnet.
Da der Prozess asynchron stattfindet, hat dieser keine direkten Auswirkungen auf die Performance von DeltaMaster Web.

Dieses Feature stellt eine gute Unterstützung für die Performanceanalyse von DeltaMaster Web dar sowie auch für die Fehleranalyse, wenn auf die höheren Logstufen zugegriffen werden muss.