L.6 SwyxWare HealthMonitor konfigurieren
Der SwyxWare HealthMonitor ist ein separat in der VM zu installierender Windows-Dienst. Dieser Abschnitt beschreibt die Installation und Konfiguration dieses Dienstes.
2 Führen Sie die Windows PowerShell-Konsole als Administrator aus.
3 Erzeugen Sie ein Verzeichnis unterhalb von %program files%:
mkdir "$env:ProgramFiles\Swyx.Core.HealthMonitor"
4 Entpacken Sie die HealthMonitor-Dateien in dieses Verzeichnis:
Expand-Archive -Path Swyx.Core.HealthMonitor.zip -DestinationPath "$env:ProgramFiles\Swyx.Core.HealthMonitor"
5 Wechseln Sie in das Verzeichnis, in das Sie die Dateien entpackt haben und installieren Sie SwyxWare HealthMonitor mit einem der folgenden Befehle:
Für Verwendung mit VMware vSphere
./install-service.ps1
Für Verwendung mit Hyper-V Failover Cluster
./install-service.ps1 -EnableHyperVSupport
|
Der Parameter "-EnableHyperVSupport" konfiguriert den SwyxWare HealthMonitor Dienst, sodass er mit lokalen Administrationsrechten läuft. Das ist notwendig, weil Microsoft Windows die Benutzung der Hyper-V Heartbeat Integration Services nur Administratoren erlaubt.
|
Das Installations-Skript hat einige optionale Parameter, um die Installation anpassen zu können. In den meisten Fällen sind die Standardeinstellungen ausreichend. Eine Beschreibung der Optionen bekommen Sie mit der normalen PowerShell Hilfe-Funktion:
get-help ./install-service.ps1 -full
6 Passen Sie die Konfiguration des Dienstes wie im nächsten Abschnitt beschrieben an, bevor Sie den Dienst starten.
|
Ab SwyxWare Heath Monitor 1.2 können für die Standardeinstellungen die Schritte in diesem Abschnitt entfallen, da die Datei „appSettings.json“ automatisch vom Installationsskript angepasst wird.
|
1 Öffnen Sie die Konfigurationsdatei „appSettings.json“ in einem Texteditor.
2 Stellen Sie sicher, dass VSphereHeartbeat auf „true“ gesetzt ist.
3 Entfernen Sie die Kommentarzeichen (//) vor den Zeilen im Abschnitt Probes.
4 Ersetzen Sie in allen „destination“ Zeilen das Ziel „sip://example.com“ durch „sip://<server-ip>“. „<server-ip>“ ist dabei die IP-Adresse des SwyxServer.
Wenn Sie eine Installation mit mehreren Netzwerkschnittstellen haben und die SwyxWare Dienste fest auf eine der Schnittstellen konfiguriert haben (siehe
Netzwerkkarte(n)), benutzen Sie die IP-Adresse dieser Schnittstelle. Wenn Sie statt der IP-Adresse den Rechnernamen verwenden, benutzt HealthMonitor die erste von Windows zu dem Rechnernamen gelieferte IP-Adresse und nicht zwangsläufig die fest in SwyxWare konfigurierte.
5 Stellen Sie sicher, dass in der Probes Auflistung in der „appSettings.json“ für jeden installierten SwyxWare-Dienst ein Eintrag vorhanden ist. Wenn Sie einen Dienst nicht installiert haben, entfernen Sie ihn auch aus der Probes Auflistung.
Dienste, die per HTTP statt SIP überwacht werden, haben in der „appSettings.json“ Datei bei „destination“ eine HTTP statt SIP URL. Wenn der Dienst kein überprüfbares TLS-Zertifikat hat, können Sie für die Überwachung den TLS-Zertifikatscheck des HealthMonitors ausschalten. Dazu fügen Sie die Einstellung "skipTlsCheck":"true" hinzu.
Das Installationsskript passt die Dienst-Neustart-Optionen der SwyxWare Dienste in Windows an. Ein SwyxWare Dienst, der sich unerwartet beendet, wird nur einmal von Windows neu gestartet. Das Installationsskript passt nur die Dienste an, die in “Probes” in der appSettings.json konfiguriert sind. Lassen sie deshalb das Installationsskript erneut laufen, wenn sie Probes hinzufügen oder entfernen.
Das folgende Beispiel zeigt eine typische Konfiguration für einen Server mit der IP 10.0.0.1:
{
"HealthMonitorApp": {
"Prometheus": false,
"VSphereHeartbeat": true
"HyperVHeartbeat": false
},
"Probes": [
{
"Name": "server",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:5060",
"probingIntervalSeconds": 10,
"responseTimeoutMilliseconds": 5000
}
},
{
"Name": "uaCSTA",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:65012",
"probingIntervalSeconds": 10,
"responseTimeoutMilliseconds": 500
}
},
{
"Name": "linkmgr",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:65001",
"probingIntervalSeconds": 10,
"responseTimeoutMilliseconds": 500
}
},
{
"Name": "conferencemgr",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:5062",
"probingIntervalSeconds": 10
}
},
{
"Name": "phonemgr",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:65007",
"probingIntervalSeconds": 10
}
},
{
"Name": "swyxgate",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:5064",
"probingIntervalSeconds": 10
}
},
{
"Name": "ctiplus",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:65009",
"probingIntervalSeconds": 10
}
},
{
"Name": "faxserver",
"Type": "Network",
"Configuration": {
"destination": "sip://10.0.0.1:61000",
"probingIntervalSeconds": 10
}
},
{
"Name": "cds",
"Type": "Network",
"Configuration": {
"destination": "https://10.0.0.1:9100/ippbx/client/v1.0/login/systemhealth",
"probingIntervalSeconds": 10,
"responseTimeoutMilliseconds": 1000
}
}
],
"HealthRules": [
{
"ProbeName": "server",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 3
},
{
"ProbeName": "uaCSTA",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "linkmgr",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "conferencemgr",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "phonemgr",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "swyxgate",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "cds",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "pns",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "faxserver",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "ctiplus",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
},
{
"ProbeName": "ctiplus",
"MetricName": "swyx_number_of_failed_probes",
"LessThanOrEqual": 2
}
],
"Serilog": {
"MinimumLevel": {
"Default": "Information"
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate":
"{Timestamp:dd HH:mm:ss.fff} {Level:u4} {ThreadId} {SourceContext} {Message}{NewLine}{Exception}",
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
}
},
{
"Name": "File",
"Args": {
"path": "C:\\ProgramData\\Swyx\\Traces\\Swyx.Core.HealthMonitor.txt",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"outputTemplate":
"{Timestamp:dd HH:mm:ss.fff} {Level:u4} {ThreadId} {SourceContext,-50} {Message}{NewLine}{Exception}"
}
}
],
"Enrich": ["FromLogContext", "WithThreadId"]
},
"AllowedHosts": "*"
}