Harden RTM endpoint adapter handling
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# RTM-Adapterregeln für Endpoint Reachability
|
||||
|
||||
## Anlass
|
||||
|
||||
Die ACC-Ausgabe vom 11.08.2026 zeigte `BizTalk Endpoint Reachability =
|
||||
UNKNOWN`, obwohl die eigentlichen Socket-Probes in wenigen Millisekunden
|
||||
abgeschlossen waren. Die Detailausgabe bestand überwiegend aus drei
|
||||
Adapterklassen, die der generische URI-Parser nicht fachgerecht einordnen
|
||||
konnte:
|
||||
|
||||
- Scheduling-Komponenten ohne externes Netzwerkziel,
|
||||
- kundenspezifische `DATABASE`-Adressen, nahezu ausschließlich Oracle,
|
||||
- WCF-SAP-Verbindungs-URIs mit Gateway- und SAProuter-Parametern.
|
||||
|
||||
Diese Fälle dürfen den RTM-Service weder mit Auflösungslücken noch mit
|
||||
Fehlalarmen belasten.
|
||||
|
||||
## Verbindliche Klassifizierung ab Version 2.2.7
|
||||
|
||||
### Scheduling
|
||||
|
||||
Adaptername oder Adresse mit `Schedule`/`Scheduler` wird vollständig als
|
||||
erwartbar ausgenommen. Es erfolgt keine Netzwerkprobe und kein UNKNOWN.
|
||||
|
||||
### DATABASE / Oracle
|
||||
|
||||
Nur die eindeutig erkennbare Form
|
||||
|
||||
```text
|
||||
Database://host[:port]/.../Oracle
|
||||
```
|
||||
|
||||
wird automatisch aufgelöst. Ein expliziter Port gewinnt; andernfalls wird
|
||||
TCP 1521 verwendet. Andere DATABASE-Anbieter oder nicht eindeutig lesbare
|
||||
Adressen werden erwartbar ausgenommen. Es wird kein UDP-Test erzeugt.
|
||||
|
||||
Oracle dokumentiert TCP 1521 als Standardadresse des Listeners und nimmt bei
|
||||
fehlender Portangabe im Easy-Connect-Format ebenfalls 1521 an:
|
||||
|
||||
- [Oracle: Configuring the Network Environment](https://docs.oracle.com/en/database/oracle/oracle-database/19/admqs/configuring-the-network-environment.html)
|
||||
- [Oracle: Configuring and Administering Oracle Net Listener](https://docs.oracle.com/en/database/oracle/oracle-database/21/netag/configuring-and-administering-oracle-net-listener.html)
|
||||
|
||||
### WCF-SAP
|
||||
|
||||
Microsoft dokumentiert `ListenerGwHost`, `ListenerGwServ` und `SAPROUTER` als
|
||||
Bestandteile der SAP-Verbindungs-URI. Der Parser verwendet in dieser
|
||||
Reihenfolge:
|
||||
|
||||
1. erster SAProuter-Hop aus `/H/host/S/port`,
|
||||
2. `ListenerGwHost` und `ListenerGwServ`,
|
||||
3. `GwHost` und `GwServ` als Fallback.
|
||||
|
||||
Numerische Dienste werden direkt übernommen. `sapgwNN` wird auf TCP `33NN`
|
||||
abgebildet. Fehlt bei einem SAProuter-Hop `/S/`, gilt der dokumentierte
|
||||
Standard TCP 3299. URI-Escapes werden vor der Auswertung dekodiert; Kennwörter,
|
||||
Program-ID, Pfade und Querystrings gelangen weiterhin nicht in Katalog, Log
|
||||
oder Checkmk-Ausgabe.
|
||||
|
||||
Quellen:
|
||||
|
||||
- [Microsoft Learn: Create the SAP system connection URI](https://learn.microsoft.com/en-us/biztalk/adapters-and-accelerators/adapter-sap/create-the-sap-system-connection-uri)
|
||||
- [SAP Help: Entries in the Services File](https://help.sap.com/docs/SLTOOLSET/6bc963751d0840f996c5c9d7a7f83473/bb9faaebe0c74a58bbcc259c83f59437.html)
|
||||
- [SAP Help: SAProuter Host and Port](https://help.sap.com/docs/SAP_NETWEAVER_AS_ABAP_FOR_SOH_740/e245703406684d8a81812f4c6334eb2f/486b5b0cb74c07bee10000000a42189d.html)
|
||||
|
||||
## Best-Effort statt Alarm
|
||||
|
||||
Automatisch abgeleitete DATABASE-/WCF-SAP-Ziele erhalten im lokalen Katalog
|
||||
`bestEffort="true"`. Sie werden normal dedupliziert und per TCP verbunden.
|
||||
|
||||
- Erfolg erhöht die getesteten und verfügbaren Zähler.
|
||||
- Timeout, DNS- oder Verbindungsfehler erhöht
|
||||
`biztalk_endpoints_best_effort_ignored`.
|
||||
- Der Fehler erscheint nicht als `unavailable=`, erzeugt keinen Warn-Logeintrag
|
||||
pro Minute und ändert den Checkmk-Status nicht.
|
||||
- Eine nicht ableitbare Adapteradresse zählt zu
|
||||
`biztalk_endpoints_expected_non_socket`, nicht zu `unresolved`.
|
||||
|
||||
Damit erfüllt der Check die gewünschte „versuchen, sonst ignorieren“-Semantik.
|
||||
Soll ein solches Ziel später verbindlich alarmieren, wird ein manueller
|
||||
Katalogeintrag mit `autoDiscovered="false"` und ohne
|
||||
`bestEffort="true"` hinterlegt. Reguläre automatisch erkannte Ziele bleiben
|
||||
ebenfalls streng: Ihre Nichterreichbarkeit ist weiterhin CRIT.
|
||||
|
||||
## Regression und Abnahme
|
||||
|
||||
Die automatisierten Tests decken Scheduler-Ausschluss, Oracle-Standard- und
|
||||
Explizitport, nicht unterstützte DATABASE-Anbieter, WCF-SAP-Gateway,
|
||||
URI-kodierten SAProuter, zielbasierte SAP-Konfiguration ohne ableitbaren Host,
|
||||
Geheimnisschutz und die nicht alarmierende Best-Effort-Ausgabe ab.
|
||||
|
||||
Für die Windows-/ACC-Abnahme nach Installation von 2.2.7:
|
||||
|
||||
1. Im Provider-Log muss der erzwungene Katalogabgleich erfolgreich sein.
|
||||
2. `BizTalk Endpoint Reachability` darf wegen Schedule, DATABASE oder WCF-SAP
|
||||
nicht mehr UNKNOWN werden.
|
||||
3. `biztalk_endpoints_unresolved` darf diese drei Klassen nicht enthalten.
|
||||
4. `biztalk_endpoints_best_effort` zeigt die tatsächlich abgeleiteten Oracle-
|
||||
und SAP-Ziele; nicht erreichbare davon erscheinen nur in
|
||||
`biztalk_endpoints_best_effort_ignored`.
|
||||
5. Ein absichtlich nicht erreichbares reguläres Testziel muss weiterhin CRIT
|
||||
auslösen, damit die strenge Standardalarmierung belegt bleibt.
|
||||
Reference in New Issue
Block a user