Das Projekt gliedert sich aus sechs großen Komponenten. Vier davon bilden das Frontend, eines das Backend und der Client oder auch Data Collector. Das Frontend wurde mit Angular entwickelt, das Backend mit asp .net und der Data Collector mit einem gewöhnlichen C# Konsolenprogramm.
• Frontend – Admin
Die Admin Komponente des Frontend, gibt dem Administrator die Möglichkeit die einzelnen Data Collector zu konfigurieren. Konkret kann der Benutzer Programme und Suchmuster für Programme erstellen, löschen und verändern. Zu einem Suchmuster gehört immer ein regulärer Ausdruck (Regex), ein Logdatei Pfad bzw. die Konsole und ein je nach Anwendungsfall individuell wählbares Log-Level (Info, Warning, Error).
• Frontend – Analyse
Die Analyse Komponente des Frontend, bietet den Anwender die Möglichkeit zu erkennen, wann bzw. warum das Programm abgestürzt ist. Möglich gemacht wird dies mit Grafiken in denen sich sofort erkennen lässt, wann bestimmte Suchmuster häufiger auftreten als andere. Der Nutzer kann dabei den Zeitraum individuell bestimmen und die Grafiken und Statistiken werden sofort angepasst. Außerdem können auch ganze Data Collectors genauer unter die Lupe genommen werden. KPIs, wie zum Bespiel der Speicher- bzw. Arbeitsspeicherverbrauch lassen sich sofort auf einen Blick erkennen und werden relativ in Prozent und absolut angezeigt.
• Frontend – Dashboard Konfiguration
Weiters bietet das Frontend die Möglichkeit Dashboards individuell je nach belieben zu bearbeiten. Der Nutzer kann dann z.B. für jede Produktionshalle ein eigenes Dashboard erstellen und bekommt so nur die für ihn relevanten Informationen angezeigt. Die Zeit, nach dem das Programm rot bzw. gelb angezeigt wird, wenn es sich nicht meldet, lässt sich auch in der Dashboard Konfiguration einstellen. Dies bietet den Vorteil, dass ein essentielles Programm z.B. schon nach fünf Minuten rot werden kann, während ein eher unwichtigeres Programm erst nach einer viertel Stunde gelb wird. Die Suchmuster werden, wenn sie übereinstimmen, für eine bestimmte Zeit auch am Dashboard angezeigt. Diese Zeit lässt sich auch individuell je nach Suchmuster konfigurieren.
• Frontend – Dashboard
Das Dashboard setzt die Aufgaben, die durch die Dashboard Konfiguration gestellt wurden, um. Es zeigt also genau die Programme und Suchmuster an, die für das spezifische Dashboard gefordert wurden. Um die Zustände möglichst schnell dem User mitteilen zu können ist das Dashboard mittels einer SignalR mit dem Backend verbunden. Mit dieser Technologie werden die neuen Daten in Echtzeit an das Dashboard übermittelt. Somit zeigt das Dashboard immer den aktuellen Stand an. Vor allem, falls ein Programm abstürzt, ist es sehr wichtig, dass das Programm im Dashboard sofort rot wird.
Die Programme sind im Dashboard nach Data Collectors unterteilt, also jedes Programm wird in der Box des zugehörigen Data Collectors angezeigt. Da das Dashboard für den Einsatz in Werkshallen optimiert werden sollte, wurde darauf geachtet, dass immer alle Daten auf einem Bildschirm sichtbar sind, ohne scrollen zu müssen.
• Backend
Das Backend ist für die Datenverwaltung verantwortlich und persistiert alle Daten. Die Daten können entweder direkt von den Data Collectors über RabbitMQ kommen oder von den Konfigurationsmöglichkeiten am Frontend. Diese Daten werden dann über eine REST – Schnittstelle und über SignalR dem Frontend bereitgestellt. Da alle Schnittstellen sehr gut dokumentiert wurden, bietet das Backend auch tolle Erweiterungsmöglichkeiten falls gewisse Frontend Funktionen programmiert, werden sollten.
• Data Collector
Der Data Collector ist das Das Herz des PCMS. Er sammelt die Daten und übernimmt alle Überwachungs und Kontrollfunktionen. Die Kommunikation der Daten funktioniert rein über die RabbitMQ. Grundsätzlich ist der Data Collector ein Client, der auf jedem PC installiert werden muss, auf dem sich Programme befinden, die überwacht werden sollen. Nach der Konfiguration durch das Frontend wechselt der Data Collector in einen Programmzyklus bei dem alle x Millisekunden alle Logfiles/Konsolen oder Programm abstürze überprüft werden. Die Programmzykluslänge kann über eine Konfigurationsdatei eingestellt werden, um die Bedürfnisse verschiedener User treffen zu können. Das Auslesen der Konsolen löst der Data Collector über ein Zwischenprogramm. Somit ist es nicht nötig, dass der Data Collector das zu überwachende Programm selbst startet.
Das Ergebnis ist ein System, welches funktioniert und für unseren Auftraggeber einen erheblichen Mehrwert bietet. In Summe wurden 1100 Stunden an der Diplomarbeit gearbeitet. Aufgeteilt auf 900 Stunden Programmieren und Testen und 200 Stunden für das Schreiben des theoretischen Teils. Einen Großteil der Programmierarbeiten konnten wir im Sommer vor Ort bei der Firma implementieren.
Anhänge:
Voting Link:
Partner Maturaprojekt-Wettbewerb