Konfiguration
Die Konfiguration erfolgt in der Datei appsettings.json. Die nachfolgenden Unterkapitel beschreiben jeweils einen Toplevel-Eintrag.
Hinweis: Pfadangaben müssen mit doppelte Backslashes geschrieben werden.
Serilog
{
"Serilog": {
"MinimumLevel": {
"Default": "[LEVEL]"
},
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"rollingInterval": "Day",
"path": "[PATH]"
}
}
]
}
}
Dies ist die Serilog-Konfiguration. Serilog wird insbesondere für das File-Logging gebraucht.
MinimumLevel.Default
Folgende Log-Level werden unterstützt:
- Verbose
- Debug
- Information
- Warning
- Error
- Fatal
Die Log-Level Verbose
und Debug
sollten nur für Fehlersuche gesetzt werden, da die geloggte Menge gross werden kann.
WriteTo.Args.Path
Hier wird der Pfad zum Log-File gesetzt. Bsp.: C:\\temp\\logs-cmi-reporting-service\\cmi-reporting-service-.log
Weitere Konfigurationen
Weitere Konfigurationsmöglichkeiten siehe https://github.com/serilog/serilog-settings-configuration.
Telemetriedaten
Der Service bietet die Möglichkeit, Telemetriedaten zu senden. Informationen zur Konfiguration befinden sich hier
ForwardedHeaders
Der Service bietet die Möglichkeit, die Forwarded-Header zu verarbeiten. Informationen zur Konfiguration befinden sich hier
Mandant (Tenant)
{
"Tenants": {
"prod": {
"OwinPrivateUri": "https://metatool.cmiag.ch:10003",
"OpenIdConnectConfig": {
"StsUri": "https://sts.cmiag.ch/prod/identity",
"ClientId": "cmi-reporting-service"
}
}
}
}
In der "Tenants"-Sektion werden einzelne Mandanten als eigenständige JSON-Objekte innerhalb des "Tenants"-Objekts definiert. Der Schlüssel des jeweiligen Objekts entspricht dabei dem Namen des Mandanten. Hier ist ein Beispiel mit den Mandanten prod und test:
{
"Tenants": {
"prod": {
...
},
"test": {
...
}
}
}
Die Konfiguration der Mandanten kann auf zwei Arten erfolgen:
- Mit dem Schlüssel
Tenants
, wie im Beispiel sichtbar. Die einzelnen Mandanten werden in Subschlüsseln abgebildet, im Beispiel ist das der Mandantprod
. - Mit dem Schlüssel
TenantConfigurationDirectory
, wo ein Pfad zu einem Ordner angegeben werden kann. Die einzelnen Mandanten werden in einzelnen Dateien abgebildet, z.B.prod.json
. Der Inhalt der Datei entspricht dem Wert des Schlüssels des Mandanten.
OwinPrivateUri
URI unter der der Owin Private Port des CMI Servers erreicht werden kann.
OpenIdConnectConfig
Das OpenIdConnectConfig-Objekt muss mit den folgenden Properties abgefüllt werden:
StsUri
: URI unter der der STS erreicht werden kann, beinhaltet die Mandantenkennung gemäss Konfiguration STS. Beispiel.:https://sts3.cloud.ch/<MANDANT>/identity
ClientId
: ClientId, die im STS für den Reporting Service vergeben wurde. Die Minimalkonfiguration vom STS ist hier zu finden.
Datenbank
{
"DatabaseProvider": "MSSQL",
"ConnectionStrings": {
"MSSQL": "Server=localhost;Initial Catalog=reporting;User Id=sa;Password=supersecretpassword;Encrypt=False"
}
}
Der CMI Reporting Service speichert Informationen für sich und von den Mandanten in einer Datenbank ab.
Die einzelnen Konfigurationswerte sind:
DatabaseProvider
: Technologie der verwendeten Datenbank, es gibt die WerteMSSQL
undPostgreSQL
.ConnectionStrings
: Beinhaltet Connection-Strings. Es wird nur der Schlüssel berücksichtigt, der inDatabaseProvider
konfiguriert wurde und dieser muss zwingend angegeben werden.
Fonts
Per Default funktionieren nur die Fonts, welche auf dem System installiert sind. Wenn zusätzliche Fonts global für alle Tenants zur Verfügung gestellt werden sollen, gibt es die Möglichkeit, einen Ordner zu hinterlegen. In diesem Ordner können TrueType und OpenType Font-Dateien in einer flachen Struktur abgelegt werden.
Die Auswahl der Fonts im Designer stimmt nicht immer mit den tatsächlich auf dem Server verfügbaren überein.
Der konfigurierte Ordner wird überwacht und bei Änderungen neu geladen. Wird der konfigurierte Ordner geändert, so muss der Dienst neugestartet werden.
{
"FontDirectory": "C:\\CMI-GitHub\\cmi-reporting-service\\fonts"
}
Ist im Abschnitt
ReportingApi
dieUrl
konfiguriert, muss diese Einstellung im appsettings.json der Reporting Api konfiguriert werden. Die Einstellung hier hat nur einen Einfluss wenn dieUrl
nicht gesetzt ist.
ReportingApi
Entweder Url
oder BasePath
muss konfiguriert werden. Wenn Url
konfiguriert ist, wird BasePath
ignoriert.
Wird nur der BasePath
konfiguriert, wird erwartet, dass unter BasePath
die DLL CMI.Reporting.Service.Api.dll
liegt.
Wird Url
konfiguriert, wird erwartet, dass unter der Url der Service erreichbar ist, welcher CMI.Reporting.Service.Api.dll
bereitstellt.
{
"ReportingApi": {
"Url": "https://reporting.my.domain",
"BasePath": "CMI.Reporting.Service.Api"
}
}
Diverses
Backup
Da der CMI Reporting Service über eine eigene Datenbank verfügt, sollte diese in der Backup-Strategie berücksichtigt werden.