Ein Panel mit zusätzlichen Tools zur Überwachung und Untersuchung von Fehlern in Anwendungen und Integrationslösungen auf der InterSystems IRIS-Datenplattform, der Ensemble-Integrationsplattform und dem Caché DBMS oder die Geschichte eines anderen Fahrrads.
In diesem Artikel möchte ich über die Anwendung sprechen, die ich zusammen mit Standard-Administrationstools jeden Tag verwende, um Anwendungen und Integrationslösungen auf der InterSystems IRIS-Plattform zu überwachen und Fehler zu finden, wenn sie auftreten.
Die Lösung umfasst das Anzeigen und Bearbeiten globaler Arrays, das Ausführen von Abfragen (einschließlich JDBC/ODBC) und das Versenden von Suchergebnissen per E-Mail als komprimierte XLS-Dateien. Klassenobjekte mit Bearbeitungsmöglichkeit anzeigen. Mehrere einfache Diagramme für Systemprotokolle.
Dies ist eine CSP-Anwendung, die auf basiert
Bei Interesse schauen Sie sich bitte unten und in um
Alles begann mit der Untersuchung der Frage, wie Änderungen an Objekten in InterSystems IRIS, Ensemble und dem Caché DBMS protokolliert werden können.
Nach dem Lesen
Die resultierende Lösung wird als Panel-Unterklasse von %CSP.Util.Pane implementiert, die über ein Hauptbefehlsfenster und eine Schaltfläche „Ausführen“ sowie Einstellungen zur Befehlsverfeinerung verfügt.
Wenn Du eintrittst "?" Wir erhalten eine kurze Beschreibung dieser Befehle:
Globals
Mein häufigster Befehl ist die globale Anzeige. In der Regel handelt es sich dabei um ein globales Protokoll beim Debuggen Ihres eigenen oder fremden Projekts. Sie können es in umgekehrter Reihenfolge anzeigen oder indem Sie einen Filter sowohl auf den Link als auch auf die Daten anwenden. Gefundene Knoten können bearbeitet und gelöscht werden:
Sie können das gesamte Global löschen, indem Sie im Befehl nach dem Namen das Minus ^logMSW- eingeben.
Auf diese Weise können Sie jedoch nur Globals löschen, die mit ^log beginnen (Protokoll-Globals), d. h. Eine Einschränkung gegen versehentliches Löschen wurde implementiert.
Wenn Sie nach dem Namen „*“ eingeben, erhalten Sie eine Liste von Globals mit zusätzlichen Merkmalen. Das zweite „*“ fügt ein neues Feld „Allocated MB“ hinzu und ein weiteres Sternchen wird „Used MB“ sein. Diese Kombination aus zwei Berichten und die Aufteilung in „Sternchen“ dient dazu, den oft langen Bericht in belegte Blöcke zu unterteilen von großen Globals.
Von dieser Tabelle aus können Sie aktiven Links folgen, um das Global selbst anzuzeigen oder es auf die übliche Weise vom Verwaltungsportal aus anzuzeigen/zu bearbeiten, indem Sie im Feld „Berechtigung“ auf R oder W klicken.
Anfragen
Konvertieren eines Berichts in das Excel-Format
Die am zweithäufigsten verwendete Funktion ist die Abfrageausführung. Geben Sie dazu die SQL-Anweisung als Befehl ein.
Das Wichtigste, was mir im Standard-Systemverwaltungsportal gereicht hat, war die Ausführung von Abfragen auf im DBMS konfigurierten JDBC/ODBC-Quellen und die Ausgabe der Ergebnisse im XLS-Format, die Archivierung und der Versand der Datei per E-Mail. Dazu müssen Sie in meinem Tool vor der Ausführung des Befehls das Kontrollkästchen „In Excel-Datei herunterladen“ aktivieren.
Diese Funktion spart mir im Alltag viel Zeit und ich integriere vorgefertigte Module erfolgreich in neue Anwendungen und Integrationslösungen.
Dazu müssen Sie jedoch zunächst den Pfad zum Erstellen von Dateien auf dem Server und die Anmeldeinformationen des Benutzers und des Mailservers konfigurieren. Dazu müssen Sie wiederum die Knoten der globalen Programmeinstellungen ^%App.Setting bearbeiten .
Berichte global speichern
Sehr oft ist es notwendig, die Ergebnisse der Berichtsausführung global zu speichern. Dazu verwende ich folgende Verfahren:
Für JDBC:
##class(App.sys).SqlToDSN
Für ODBC:
##class(App.sys).SaveGateway
Für SQL-Ausdrücke:
##class(App.sys).SaveSQL
Zur Anfrage:
##class(App.sys).SaveQuery
Zum Beispiel, wenn im Panel der Befehl
xec do ##class(App.sys).SaveQuery("%SYSTEM.License:Counts","^GN",0)
Speichern wir das Ergebnis der Anfrage zur Lizenznutzungszählung im Array ^GN, und Sie können mit dem Befehl sehen, was im Panel gespeichert wurde: result ^GN("%SYSTEM.License:Counts",0)
Erweiterte Funktionsmodule
Und die zweite Verbesserung, die meine Arbeit stark vereinfacht und automatisiert hat, ist die Implementierung der Möglichkeit, beim Generieren jeder Abfragezeile speziell geschriebene Module auszuführen. Auf diese Weise kann ich in einem Durchgang neue Funktionen in den Bericht integrieren, beispielsweise aktive Links für zusätzliche Datenoperationen.
Beispiel 1: Arbeiten mit der App.Parameter-Klasse
Erstellen Sie einen Parameter mit dem „Tabellennavigator“
Bearbeiten Sie einen Parameter über „Optionen“
Beispiel 2: Global über den Link „Verlauf“ anzeigen
Graphen
Inspiriert durch den Artikel [9] und um das Wachstum von Datenbanken zu visualisieren, wurde eine Seite erstellt, die ein monatliches Diagramm der Datenbankgrößen anzeigt, die aus der iris.log-Datei (cconsole.log) mithilfe von „Expand“-Datensätzen rückwirkend vom aktuellen Tag erstellt wurden.
Als Beispiel wurde auch ein Ereignisgraph in InterSystems IRIS erstellt, der ebenfalls aus der Protokolldatei generiert wird:
Links zu Materialien:
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
Vielen Dank an die Autoren dieser und anderer Artikel, die mir bei der Erstellung dieses Tools geholfen haben.
PS: Dieses Projekt befindet sich in der Entwicklung und viele Ideen wurden noch nicht umgesetzt. In naher Zukunft habe ich Folgendes vor:
1. Anwendungsvorlage auf dem Framework
2. Automatische Dokumentation des Codeformats
Source: habr.com