====Oracle ORDS 22 - Monitoring mit der ORDS Instance API==== **Aufgabe** Überwachung des ORDS mit der **ORDS Instance API** , ab der Version ORDS 20.4 zwar möglich funktioniert aber am Ende nur ab der Version "Oracle REST Data Services 22.4.0.r3401044". Zuvor gab es in den älteren Versionen einen Bug (ORDS Instance API Not Showing Pools After Upgrade To 22.1 (Doc ID 2910068.1)). Laut Doku und Blog von Kris ist das recht einfach zu implementieren, leider ist das aber bei 22 noch nicht so recht dokumentiert, d.h. erstmal Rätzeln wie so oft mit dem ORDS, bestehende Doku ist für die Version 21. Ab 22 ändert sich da ja viel, siehe auch => [[prog:oracle_apex_upgrade|Oracle ORDS 22 / Apex auf den neuesten Stand halten - Upgrade Apex / ORDS/ Tomcat / Apache unter Linux]] Ablauf: * Aktiveren * User anlegen * ORDS neu starten * URL über curl testen Die Umgebung ist in folgender Weise eingerichtet => [[prog:oracle_apex_20_2_install_windows_19c_linux_8|Oracle Apex 21.1 / ORDS 21.2 / Tomcat 9 / Apache 2.4 / Varnish mit der Oracle Datenbank 19c unter Oracle Linux 8 - Installation]] ---- ===Aktivieren=== Der Parameter dazu lautet : **instance.api.enabled** Im ORDS 22 sollen ja nun alle Parameter für das "ords" Hilfsprogramm in /bin konfiguriert werden. Testen wir das mal: cd $ORDS_HOME/bin ./ords --config /srv/ords/config/ config set --global instance.api.enabled true ORDS: Release 22.3 Production on Fri Oct 28 21:58:13 2022 Copyright (c) 2010, 2022, Oracle. Configuration: /srv/ords/config/ The setting named: instance.api.enabled is not a recognized configuration setting. Run: ords config info to get a list of known configuration settings The global setting named: instance.api.enabled was set to: true Mit dem Kommando wird der Wert in die pool.xml eingetragen wenn das "--global" fehlt! Prüfen ob der Parameter auch in der "settings.xml" in der ORDS Konfiguration hinzugefügt wurde! vi settings.xml Saved on Tue Sep 13 16:16:24 UTC 2022 false true siehe auch How to enable ORDS Instance API ? (Doc ID 2890153.1) ---- ===User=== Damit ein User die API verwenden kann muss er die Rolle "System Administrator" besitzen! Ein User für das Interface wiederum kann über das ORDS Tool angelegt werden: ./ords --config /srv/ords/config/ config user add manager "Listener Administrator,System Administrator,SQL Administrator" ORDS: Release 22.2 Production on Fri Oct 28 20:27:34 2022 Copyright (c) 2010, 2022, Oracle. Configuration: /srv/ords/config/ Enter the password for manager: Confirm password: Created user manager in file /srv/ords/config/global/credentials ---- ===Restart Tomcat== **als root** [root@apex01 ~]# systemctl stop tomcat.service [root@apex01 ~]# systemctl start tomcat.service ---- === Test Aufruf === API Beschreibung über: http:///ords/_/instance-api/stable/metadata-catalog/openapi.json. URLS: * /ords/_/instance-api/stable/database-pools-cache/ * /ords/_/instance-api/stable/database-pools-cache/{pool},{type} * /ords/_/instance-api/stable/database-pools-cache/{pool},{type},{service} * /ords/_/instance-api/stable/status API kann dann aufgerufen werden, bringt in meiner Umgebung aber erst aber der Version 22.4.0.r3401044 ein Ergebnis curl --user manager:oracle http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/ { "items": [ { "id": "|default|lo|", "created": "2023-01-11T15:24:22.276854503Z", "validity": "valid", "borrowedConnectionsCount": 0, "availableConnectionsCount": 10, "links": [ { "rel": "self", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/default,lo" } ] } ], "links": [ { "rel": "self", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/" }, { "rel": "describedby", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/metadata-catalog/" } ] } curl --user manager:oracle http://10.10.10.90:8080/ords/_/instance-api/stable/status { "invalid_pools_count" : 0, "valid_pools_count" : 1, "links" : [ { "rel" : "self", "href" : "http://10.10.10.90:8080/ords/_/instance-api/stable/status" }, { "rel" : "describedby", "href" : "http://10.10.10.90:8080/ords/_/instance-api/stable/metadata-catalog/" }, { "rel" : "related", "href" : "http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/" } ] curl --user manager:oracle http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/default,lo { "id": "|default|lo|", "created": "2023-01-11T15:24:22.276854503Z", "validity": "valid", "lifecycleState": "running", "borrowedConnectionsCount": 0, "availableConnectionsCount": 10, "statistics": { "FCFProcessingInfo": "", "FCFProcessingInfoProcessedOnly": "", "abandonedConnectionsCount": 0, "availableConnectionsCount": 10, "averageBorrowedConnectionsCount": 1, "averageConnectionWaitTime": 0, "borrowedConnectionsCount": 0, "connectionRepurposeCount": 0, "connectionsClosedCount": 0, "connectionsCreatedCount": 10, "cumulativeConnectionBorrowedCount": 1, "cumulativeConnectionReturnedCount": 1, "cumulativeConnectionUseTime": 60, "cumulativeConnectionWaitTime": 0, "cumulativeFailedConnectionWaitCount": 0, "cumulativeFailedConnectionWaitTime": 0, "cumulativeSuccessfulConnectionWaitCount": 1, "cumulativeSuccessfulConnectionWaitTime": 0, "failedAffinityBasedBorrowCount": 0, "failedRCLBBasedBorrowCount": 0, "labeledConnectionsCount": 0, "peakConnectionWaitTime": 0, "peakConnectionsCount": 0, "pendingRequestsCount": 0, "remainingPoolCapacityCount": 40, "shardConnectionStats": {}, "successfulAffinityBasedBorrowCount": 0, "successfulRCLBBasedBorrowCount": 0, "totalConnectionsCount": 10 }, "links": [ { "rel": "self", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/default,lo" }, { "rel": "collection", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/database-pools-cache/" }, { "rel": "describedby", "href": "http://10.10.10.90:8080/ords/_/instance-api/stable/metadata-catalog/" } ] ==Problem "valid_pools_count" : 0 und database-pools-cache items ist leer == Funktioniert aber irgendwie nicht so recht, ein Pool ist definitiv da, APEX kann in dieser Umgebung aufgerufen werden. in der DB sind auch Verbindungen sichtbar: SYS@GPIDB-apex01>select count(*) from v$session where username = 'ORDS_PUBLIC_USER'; COUNT(*) ------------ 10 Bug ist dann ab 22.4.0.r3401044 gefixt: In folgenden Forum danach gefragt => https://community.oracle.com/tech/developers/discussion/4498037/ords-22-1-enabling-and-protecting-instance-api und => https://community.oracle.com/tech/developers/discussion/4506590/ords-22-ords-instance-api-instance-api-enabled-is-enabled-but-shows-no-data/p1?new=1 ---- ====Quellen==== Oracle Doku: * https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/22.2/ordig/deploying-and-monitoring-oracle-rest-data-services.html Blogs: * https://krisrice.io/2021-01-19-Instance-API/ * https://community.oracle.com/tech/developers/discussion/4498037/ords-22-1-enabling-and-protecting-instance-api * https://peterobrien.blog/2021/10/11/ords-pool-usage-chart-with-apex/ * http://apexugj.blogspot.com/2021/02/ords-co.html