|
<< Click to Display Table of Contents >> Navigation: PASLOG - Loggen > PASLOG - C# Client / Knife |
Diese Anwendung stellt in Zusammenhang mit RabbitMQ und einer PostgreSQL Datenbank die Basisstruktur für das zukünftige Logging meiner Anwendungen zur Verfügung.
Die Anwendung arbeitet unter .Net Core 8 und ist in C# geschrieben worden. Sie arbeitet unter Windows und Linux.
Die Anwendung hat mehrere Funktionalitäten.
Über den Befehl "dbcheck" kann das Programm einen Kontaktversuch mit der Datenbank durchführen.
./pas_psql_logger dbcheck --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432
Über den Befehl "dbdrop" kann das Programm die notwendigen Strukturen in einer erreichbaren Datenbank löschen.
./pas_psql_logger dbdrop --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432
Über den Befehl "dbcreate" kann das Programm die notwendigen Strukturen in einer erreichbaren Datenbank anlegen. Zur Speicherung wird eine partitionierte Tabelle mit vielen Unterpartitionen genutzt. Die Partitionierung erfolgt mit 4 Tabellen pro Monat. Dabei bestimmt der Parameter "months", wieviele Monate angelegt werden sollen. Dabei zählt der aktuelle Monat immer mit. Bei months = 3 wird also aktuelle Monate und zwei zusätzliche Monate angelegt
./pas_psql_logger dbcreate --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --months 3
Über den Befehl "dbmaint" kann das Programm weitere Partitionierungen anlegen. Dazu muß man die Option --months definieren mit der Anzahl der Monate, für Tabellen angelegt werden sollen. Der aktuelle Monat zählt dabei immer mit. Bei z.B. einer 2 werden die Tabellen für den aktuellen Monate und dem nächsten Monat angelegt.
./pas_psql_logger dbmaint --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --months=2
Über den Befehl "dbgc" kann das Programm nicht mehr notwendige Partitionen löschen. Dabei lässt das System die Monate unangetastet, die über die Variable months definiert werden. Hat dieser Parameter den Wert 2, dann wird der aktuelle Monat und ein Monat davor nicht verändert.
./pas_psql_logger dbgc --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --months=2
Über den Befehl "dbmsg" kann das Programm Testnachrichten in die Datenbnak schreiben. Dabei können die so erzeugten Nachrichten über einen Zeitraum verteilt werden. Diese Testdaten sollen dazu genutzt werde, um Oberflächen in Superset definieren zu können.
./pas_psql_logger dbmsg --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --months=2 --count=100000 --tsize=100
Über den Befehl "dbcatimsg" kann das Programm spezielle LOG-Meldungen in die Datenbank schreiben. Der Erfolgscode ist dabei "501".
./pas_psql_logger dbcatimsg --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --months=2 --count=100000 --tsize=100
Über den Befehl "mqmsg" kann das Programm Testnachrichten an RabbitMQ senden. Dabei können die so erzeugten Nachrichten über einen Zeitraum verteilt werden. Diese Testdaten sollen dazu genutzt werden, um Oberflächen in Superset definieren zu können. Dieser Befehl kann in Testumgebungen mit einer anderen Instanz des Programmes arebiten, dass den Befehl dbserver ausführt.
./pas_psql_logger mqmsg --mqserver=127.0.0.1 -mqexchange=amq.topic --mqpassword=... --count=100000 --months=2
Über den Befehl "mqcreate" kann das Programm Basisstrukturen auf dem RabbitMQ Server anlegen.
./pas_psql_logger mqcreate --mqserver=127.0.0.1 -mqexchange=amq.topic --mqpassword=... --mquser=mquser --mqqueue=logqueue --mqvhost=/ --mqrkey=evlog --verbose
Über den Befehl "dbservice" wird das Programm im Serverdienst gestartet. Es verbindet sich mit RabbitMQ und einer relationalen Datenbank und verschiebt die LOG-Meldungen in die Datenbank.´
Folgende Optionen müssen dabei gesetzt sein:Das Programm benötigt dabei die folgenden Informationen (neben den Datenbakinformationen s.o.)
./pas_psql_logger dbservice --mqserver=nextgeneration.gessgroup.de --mquser=... --mqpassword=... --mqqueue=edb_log --dbserver=127.0.0.1 -dbname=paslog --dbpassword=... --dbport=5432 --tsize=100 --verbose --debug
•mqserver: Adresse des RabbitMQ Servers
•mquser: Benutzername im RabbitMQ Server
•mqpassword: Passwort beim Einloggen in den RabbitMQ Servers
•mqqueue: In welcher Queue werden die LOG-Daten erwartet
•dbserver: Adresse des Datenbankservers
•dbname: Name der Datenbank, in die LOGs abgelegt werden
•dbpassword: Kennwort beim Zugriff auf die Datenbank
•dbport: Port des Datenbankservers
•tsize: Transaktionsgröße beim Schreiben der Daten in die Datenbank
•debug: Alle Nachrichten werden mit debug=true geloggt
•verbose: Zusätzliche Informationen werden auf der Konsole ausgegeben
Wenn das Programm lokal eine Datei "settings.txt" findet, dann liest es diese Datei (zeilenweise)) und füllt die folgenden Werte (in der Reihenfolge - bei einer Leerzeile wird der Eintrag übersprungen):
•mqserver
•mquser
•mqpassword
•mqqueue
•mqexchange
•mqroutingkey
•mqvhost
•dbserver
•dbname
•dbuser
•dbpassword
•dbport
•tsize
•minForwardLevel
•forwardRoutingKey
Die obigen Befehle können in CRONtabs eingetragen werden, damit die Tabellen automatisch gepflegt werden. Alte Tabellen werden ggfs. gelöscht, neue ggfs. angelegt.
00 00 * * * cd /datadisk/apps/paslog-binaries ; ./pas_psql_logger dbmaint --months=3
00 01 * * * cd /datadisk/apps/paslog-binaries ; ./pas_psql_logger dbgc --months=3