Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:ords_instance_api

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 ⇒ 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 ⇒ 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:

./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
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Saved on Tue Sep 13 16:16:24 UTC 2022</comment>
<entry key="database.api.enabled">false</entry>
<entry key="instance.api.enabled">true</entry>
</properties>

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://<server>/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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
prog/ords_instance_api.txt · Zuletzt geändert: 2023/01/11 16:36 von gpipperr