REST-API-Logerfassung einrichten
Mit Oracle Log Analytics können Sie eine kontinuierliche REST-API-basierte Logerfassung aus Endpunkt-URLs einrichten, die mit Logmeldungen antworten. Die REST-API-Logquelle muss mit einer API konfiguriert werden, die mit den Logmeldungen antwortet, die innerhalb des in der Anforderung angegebenen Zeitrahmens generiert wurden.
Dies ist eine empfohlene Methode, wenn Sie die kontinuierliche Logerfassung aus Umgebungen, Plattformen oder Anwendungen wie OCI-Services, Fusion Apps, ERP-Anwendungen oder anderen Anwendungen automatisieren möchten, die Logs über eine API ausgeben. Es sind Makros verfügbar, die in der Quelldefinition verwendet werden können, um eine Logzeit zum Starten der Logerfassung anzugeben, einen Offset zum Iterieren und Erfassen von Daten über Seitenergebnisse eines Logendpunkts anzugeben und Logs über ein Erfassungsfenster oder einen Zeitrahmen zu erfassen.
Sie können auch eine REST-API-Quelle verwenden, um Logs von SOAP-APIs über HTTP oder HTTPS zu erfassen. Konfigurieren Sie für SOAP-APIs POST-Endpunkte mit einer SOAP-XML-Payload, verwenden Sie application/xml oder den für die API erforderlichen Inhaltstyp, und verwenden Sie XML-Parser- oder Unterparsereinstellungen, um Logdatensätze aus der SOAP-Antwort zu extrahieren.
Gesamtablauf für das Erfassen von Logs mit REST-API-basierter Quelle
Im Folgenden werden allgemeine Aufgaben zum Erfassen von Loginformationen über die REST-API-basierte Quelle aufgeführt:
-
Installieren Sie den Management Agent auf einem Host, auf dem http- oder https-Zugriff auf den Endpunktserver besteht. Siehe Kontinuierliche Logerfassung mit Management Agent einrichten.
- Um eine Verbindung zwischen dem Management Agent und der REST-API-Quelle zu autorisieren, konfigurieren Sie zuerst die API-Zugangsdaten im Zugangsdatenspeicher des Agent. Siehe Management Agent-Quellzugangsdaten.
-
Erstellen Sie die Entity in Oracle Log Analytics, um den protokollierenden Host darzustellen. Siehe Entity zur Darstellung der protokollierenden Ressource erstellen.
-
Erstellen Sie einen geeigneten Parser, um die Logeinträge zu verarbeiten, die als Antwort von der API bereitgestellt werden. Siehe Parser erstellen.
Bei SOAP-API:
- Verwenden Sie einen XML-Parser, wenn die SOAP-Antwort die Logfelder direkt enthält.
- Wenn die SOAP-Antwort codierten und komprimierten Inhalt wie BI Publisher reportBytes enthält, ordnen Sie das XML-Feld zu, und konfigurieren Sie Unterparseraktionen wie Base64-Decodierung oder Base64-Decodierung und -Entpackung, bevor Sie den extrahierten Inhalt parsen.
-
Erstellen Sie eine REST-API-Quelle, indem Sie die REST-API-Endpunkte definieren. Siehe REST-API-Quelle erstellen
-
Verknüpfen Sie die Entity mit der Quelle. Siehe Neue Quellen-Entity-Verknüpfung konfigurieren
Informationen zum End-to-End-Ablauf der Aufnahme von Fusion Applications-Auditlogs finden Sie unter Fusion Applications-Auditlogs aufnehmen.
Die folgenden Aspekte müssen für die SOAP-API-Sammlung berücksichtigt werden:
- Inhalt im PDF- oder ZIP-PDF-Format wird nicht unterstützt.
- Abruf und Neuassemblierung von gemischten Berichten werden nicht unterstützt.
- Die XML-Namespace-Verarbeitung erfordert möglicherweise, je nach SOAP-Antwort, die Option Namespace ignorieren des Parser oder den XPath ohne Namespace.
REST-API-Quelle erstellen
Oracle Log Analytics stellt bereits eine von Oracle definierte Logquelle für die REST-API-Logerfassung bereit. Prüfen Sie, ob Sie die verfügbare von Oracle definierte REST-API-Quelle oder einen beliebigen von Oracle definierten Parser verwenden können. Wenn nicht, verwenden Sie die folgenden Schritte, um eine neue Logquelle zu erstellen:
Wenn Sie vor dem Start einen neuen Parser erstellen müssen, der für Ihre Logs geeignet ist, schließen Sie ihn ab. Siehe Parser erstellen.
-
Öffnen Sie das Navigationsmenü, und klicken Sie auf Observability and Management. Klicken Sie unter Log Analytics auf Administration.
Die Administrationsressourcen werden im linken Navigationsbereich unter Administration aufgeführt. Klicken Sie auf Quellen.
-
Die Seite Quellen wird geöffnet. Klicken Sie auf Quelle erstellen.
Das Dialogfeld "Quelle erstellen" wird angezeigt.
-
Geben Sie im Feld Name den Namen für die Logquelle ein.
-
Wählen Sie in der Liste Quelltyp die Option REST-API aus.
-
Klicken Sie auf Entitytyp, und wählen Sie den Entitytyp aus, der Ihre Anwendung am besten identifiziert.
-
Klicken Sie auf Parser, und wählen Sie einen geeigneten Parser für den Logtyp aus, den Sie erfassen möchten.
-
Fügen Sie auf der Registerkarte Endpunkte Endpunkte in der Reihenfolge hinzu, in der sie ausgeführt werden müssen. Klicken Sie auf Logendpunkt hinzufügen, um entweder einen Log-Endpunkt oder einen Initialisierungsendpunkt hinzuzufügen. Klicken Sie für mehrere Logs auf Listenendpunkt für mehrere Logs hinzufügen, wenn ein Endpunkt eine Liste mit Elementen zurückgibt und ein untergeordneter Logendpunkt Details für jedes Element erfassen muss.
Verwenden Sie Initialisierung für Setupaufrufe wie Anmelden, Abrufen von Sessiontokens oder Erstellen von Containern. Endpunktantworten der Initialisierung können von späteren Endpunkten referenziert werden, werden jedoch nicht als Logdatensätze erfasst. Platzieren Sie Initialisierungsendpunkte vor den Endpunkten, die ihre Antwortwerte verwenden. HTTP-Cookies werden an nachfolgende Endpunkte weitergegeben.
-
Um einen einzelnen Endpunkt anzugeben, klicken Sie auf Logendpunkt hinzufügen. Das Dialogfeld "Protokollendpunkt hinzufügen" wird geöffnet.
Stellen Sie folgende Informationen bereit:
-
Wählen Sie den Logendpunkttyp aus:
- Wählen Sie Log aus, wenn die Endpunktantwort Logdatensätze enthält, die erfasst werden sollen.
- Wählen Sie Initialisierung aus, wenn der Endpunkt Werte für spätere Endpunkte abruft, z.B. ein Sessiontoken. HTTP-Cookies werden an nachfolgende Endpunkte weitergegeben.
Hinweis
Stellen Sie sicher, dass Sie die abgerufenen Werte, wie z.B. das Sessiontoken, speichern, um sie beim Ausführen anderer Endpunkte im Workflow verwenden zu können.
-
Geben Sie den Logendpunktnamen ein.
-
Erstellen Sie die Log-URL, um die Logs regelmäßig zu erfassen. Siehe Logendpunkt-URL unter Endpunkttypen.
-
Wählen Sie die API-Methode GET oder POST aus.
Wenn Sie POST gewählt haben, geben Sie die POST-Payload ein, und geben Sie den Anforderungsinhaltstyp an, der von der API benötigt wird:
application/json,text/plain,text/javascript,text/htmloderapplication/xml. Geben Sie für SOAP-APIs den SOAP-Envelope in die POST-Payload ein, und verwenden Sie den Inhaltstypapplication/xml, wie für den Endpunkt erforderlich. Informationen zur Verwendung von USERNAME/PASSWORD-Makros in Ihrer POST-Payload finden Sie unter USERNAME- und PASSWORD-Makros. -
Geben Sie optional die Logproxyserver-URL an.
-
Klicken Sie optional auf Anforderungsheader anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um alle Anforderungsheader in Form von Name-Wertpaaren anzugeben.
-
Klicken Sie optional auf Abfrageparameter anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um Abfrageparameter in Form von Name-Wert-Paaren anzugeben.
-
Wählen Sie im Abschnitt Zugangsdaten den Logzugangsdatentyp aus. Siehe Zugangsdatentyp für REST-API-Logerfassung auswählen.
Wenn die POST-Payload
USERNAMEoderPASSWORDenthält, geben Sie im Abschnitt Zugangsdaten den Zugangsdaten für die USERNAME/PASSWORD-Makros an. Der Management Agent ersetzt diese Makros zum Erfassungszeitpunkt durch Werte aus den ausgewählten Zugangsdaten. -
Um die eingegebenen Konfigurationsinformationen zu validieren, klicken Sie auf Validieren. Wenn Fehler vorliegen, beheben Sie sie.
Klicken Sie auf Änderungen speichern.
-
-
Um einen Endpunkt anzugeben, der eine JSON- oder XML-Antwort mit den Informationen zum Generieren mehrerer Logendpunktanforderungen zurückgibt, klicken Sie auf Listenendpunkt für mehrere Logs hinzufügen. Das Dialogfeld "Listenendpunkt für mehrere Logs hinzufügen" wird geöffnet.
-
Registerkarte Listenendpunkt konfigurieren:
-
Geben Sie den Namen des Loglistenendpunkts ein.
-
Erstellen Sie die Loglisten-URL, um die Informationen zu den Logdateien abzurufen. Siehe URL für Loglistenendpunkt unter Endpunkttypen. Beispiel:
https://example.org/fetchlogfiles_data -
Geben Sie optional die Logproxyserver-URL an.
-
Wählen Sie die API-Methode GET oder POST aus.
Wenn Sie POST gewählt haben, geben Sie die POST-Payload ein, und geben Sie den Anforderungsinhaltstyp an, der von der API benötigt wird:
application/json,text/plain,text/javascript,text/htmloderapplication/xml. Geben Sie für SOAP-APIs den SOAP-Envelope in die POST-Payload ein, und verwenden Sie den Inhaltstypapplication/xml, wie für den Endpunkt erforderlich. Informationen zur Verwendung von USERNAME/PASSWORD-Makros in Ihrer POST-Payload finden Sie unter USERNAME- und PASSWORD-Makros.Das folgende XML-Payload-Beispiel zeigt die Verwendung von Sessiontoken, das aus dem Initialisierungsendpunkt extrahiert wurde:
<sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</sessionToken> -
Klicken Sie optional auf Anforderungsheader anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um alle Anforderungsheader in Form von Name-Wertpaaren anzugeben.
-
Klicken Sie optional auf Abfrageparameter anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um Abfrageparameter in Form von Name-Wert-Paaren anzugeben.
-
Wählen Sie im Abschnitt Zugangsdaten den Logzugangsdatentyp aus. Siehe Zugangsdatentyp für REST-API-Logerfassung auswählen.
Wenn die POST-Payload
{USERNAME}oder{PASSWORD}enthält, geben Sie im Abschnitt Zugangsdaten den Zugangsdaten für die USERNAME/PASSWORD-Makros an. Der Management Agent ersetzt diese Makros zum Erfassungszeitpunkt durch Werte aus den ausgewählten Zugangsdaten. -
Klicken Sie auf Weiter.
-
-
Registerkarte Logendpunkt konfigurieren:
-
Geben Sie die Beispielantwort von Loglistenendpunkt an. Verwenden Sie für JSON-Antworten JSONPath-Variablen. Verwenden Sie für XML- oder SOAP-Antworten XPath-Variablen.
Dies ist das JSON-Beispiel für die Antwort, die Sie für den Loglistenendpunkt erhalten würden, den Sie auf der vorherigen Registerkarte angegeben haben. Beispiel:
{ "totalSize": 4, "records": [ {"id": "firstId", "type": "firstType"}, {"id": "secondId", "type": "secondType"} ] }Im obigen Beispiel kann der JSON-Pfad
records[*].idin der Endpunkt-URL verwendet werden. Weitere Details zu JSON-Pfadvariablen finden Sie unter Variablen für REST-API-Logerfassung.Dies ist ein XML-Beispiel für SOAP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/"> <soapenv:Body> <ns:getItemsResponse> <ns:getItemsResult> <ns:string>Widget</ns:string> <ns:string>Gadget</ns:string> </ns:getItemsResult> </ns:getItemsResponse> </soapenv:Body> </soapenv:Envelope>Beispiel für XPath-Variable:
{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string} -
Geben Sie den Logendpunktnamen ein.
-
Erstellen Sie die Log-URL, Anforderungsheader, Formularparameter oder POST-Payload, indem Sie Variablen aus der Listenendpunktantwort einbeziehen. Verwenden Sie JSONPath für JSON-Antworten und XPath für XML- oder SOAP-Antworten. Siehe Logendpunkt-URL unter Endpunkttypen. Beispiel:
https://example.org/fetchLogs?time={START_TIME}&id={testLogListEP:$.records[*].id} -
Wählen Sie die API-Methode GET oder POST aus.
Wenn Sie POST gewählt haben, geben Sie die POST-Payload ein, und geben Sie den Anforderungsinhaltstyp an, der von der API benötigt wird:
application/json,text/plain,text/javascript,text/htmloderapplication/xml. Geben Sie für SOAP-APIs den SOAP-Envelope in die POST-Payload ein, und verwenden Sie den Inhaltstypapplication/xml, wie für den Endpunkt erforderlich.Diese Logendpunkt-Payload kann sowohl frühere Initialisierungsendpunktwerte als auch das aktuelle Element aus dem Listenendpunkt referenzieren.
Beispiel für eine XML-Payload für den POST-Aufruf, der das Sessiontoken und den Listenendpunkt referenziert:
<ns:getItemDetail> <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken> <ns:itemName>{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}</ns:itemName> </ns:getItemDetail> -
Geben Sie optional die Logproxyserver-URL an.
-
Klicken Sie optional auf Anforderungsheader anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um alle Anforderungsheader in Form von Name-Wertpaaren anzugeben.
-
Klicken Sie optional auf Abfrageparameter anzeigen, um den Abschnitt einzublenden, und klicken Sie auf Hinzufügen, um Abfrageparameter in Form von Name-Wert-Paaren anzugeben.
-
Wählen Sie im Abschnitt Zugangsdaten den Logzugangsdatentyp aus. Siehe Zugangsdatentyp für REST-API-Logerfassung auswählen.
-
Klicken Sie auf Weiter.
-
-
Registerkarte Prüfen und hinzufügen: Die Konfigurationsinformationen, die in den vorherigen Registerkarten angegeben wurden, werden validiert. Prüfen Sie die Liste der URLs, von denen die Logs erfasst werden.
Wenn Fehler vorliegen, beheben Sie sie.
Stellen Sie sicher, dass Initialisierungsendpunkte vor Endpunkten angezeigt werden, die sie referenzieren, und dass jeder Loglistenendpunkt über einen untergeordneten Logendpunkt verfügt, der die Datensätze erfasst.
Klicken Sie auf Speichern.
-
-
-
Klicken Sie auf Quelle erstellen.
Endpunkttypen
Endpunkt der Logliste: Wenn Sie beim Erstellen der REST-API-Logquelle auf Listenendpunkt für mehrere Logs hinzufügen klicken, können Sie den Endpunkt der Logliste angeben, der eine Liste der Elemente zurückgibt. Der Endpunkt der Logliste muss eine JSON- oder XML-Antwort mit JSONPath für JSON und XPath für XML zurückgeben. Mit JSONPath oder XPath kann eine Liste von Logendpunkt-URLs erstellt werden, um die Logs zu erfassen. Geben Sie die Variablen an, die zum Erstellen der Liste der Logendpunkte aus der Antwort erforderlich sind. Außerdem können Sie die Makros {START_TIME} und {CURR_TIME} verwenden, um die entsprechenden Zeitwerte dynamisch in die URL einzufügen.
Logendpunkt: Wenn Sie beim Erstellen der REST-API-Logquelle auf Logendpunkt hinzufügen klicken, können Sie einen der beiden Typen von Logendpunkt hinzufügen. Der Logendpunkttyp kann einer dieser beiden sein: Initialisierung und Log. Der Endpunkt Initialisierung ruft Werte, wie ein Sessiontoken, für spätere Endpunkte ab. Der Endpunkt Initialisierung extrahiert keine Logdatensätze. Elemente aus ihrer Antwort können in nachfolgenden Endpunkten verwendet werden. Der Log-Endpunkt wird zum Erfassen von Logs aus einem bestimmten REST-API-Endpunkt in regelmäßigen Abständen verwendet. Sie können die Makros {START_TIME}, {CURR_TIME} und {TIME_WINDOW} verwenden, um die entsprechenden Zeitwerte dynamisch in die URL einzufügen. Das Makro {OFFSET} kann zur Unterstützung der Paginierung verwendet werden. Sie können auch JSON-Pfadvariablen aus der Antwort des Endpunktaufrufs der Logliste verwenden, um bestimmte Eigenschaften zu ersetzen.
{START_TIME}: So geben Sie die Zeit an, ab der die Logs erfasst werden müssen{OFFSET}: Zur Verarbeitung der paginierten Logerfassung{CURR_TIME}: So geben Sie die aktuelle Uhrzeit an{TIME_WINDOW}: So geben Sie ein Erfassungsintervall oder eine Dauer an{USERNAME}und{PASSWORD}: Für SOAP-APIs, die Benutzernamen- und Kennwortwerte in der POST-Payload erfordern. Der Management Agent ersetzt die Makros zum Erfassungszeitpunkt durch Werte aus den konfigurierten Zugangsdaten.
Weitere Informationen zur Verwendung der Makros finden Sie unter START_TIME Macro, CURR_TIME Macro, OFFSET Macro und TIME_WINDOW Macro.
Weitere Informationen zur Verwendung der Variablen aus der Endpunktantwort der Logliste, die in der Logendpunkt-URL angegeben werden kann, Beispiele für JSONPath und XPath sowie die Verwendung von Variablenfiltern finden Sie unter Variablen für REST-API-Logerfassung.
START_TIME-Makro
Geben Sie mit dem Makro START_TIME die Zeit an, ab der die Logs erfasst werden müssen.START_TIME-Makro kann in einer Endpunkt-URL, Formularparametern oder POST-Payload verwendet werden.
Das folgende Beispiel zeigt die Endpunkt-URL, die Logs erfasst, die größer als ein vom Makro START_TIME angegebener Zeitstempel sind:
https://example.org/fetchLogs?sortBy=timestamp&sortOrder=ascending&filter=timestamp+gt+{START_TIME:yyyy-MM-dd'T'HH:mm:ss.SSSZ}Syntax:
{START_TIME<+nX>:<epoch | timestamp format supported by SimpleDateFormat java class>.TZ=<timezone name>}-
n ist der Zeitwert des Datumsbereichs. X wird in Tagen (D), Stunden (h), Minuten (m), Monaten (M), Jahr (Y) ausgedrückt.
-
+nXist die Anzahl der Tage, Stunden, Minuten, Monate oder Jahre, die zur Startzeit hinzugefügt werden sollen. Es ist optional. Beispiel: +3D. -
Die unterstützten Zeitformate entsprechen denen der JAVA-Klasse SimpleDateFormat. Das Standardzeitformat ist
yyyy-MM-dd'T'HH:mm:ss.SSSZ. Beispiel: 2001-07-04T12:08:56.235-0700.Die Angabe des
epoch- oder Zeitformats ist optional. Wenn eine Epoche angegeben ist, wird das Makro durch einen Epochen-Millisekundenwert ersetzt.Die von SimpleDateFormat unterstützten Zeitstempelformate finden Sie unter Java Platform Standard Ed. 8: Class SimpleDateFormat.
-
TZgibt die Zeitzone des Zeitstempels an. Sie ist nicht anwendbar, wenn die Epoche bereits bereitgestellt wurde. Das unterstützte Format entspricht den aus 3 Buchstaben bestehenden IDs in der java-Klasse TimeZone, z.B. UTC. -
Sie können mehrere Instanzen dieses Makros in die URL aufnehmen.
-
Beispiele:
{START_TIME:yyyy-MM-dd'T'HH:mm:ss.SSS.TZ=UTC}{START_TIME:epoch}
Der Wert des Makros START_TIME wird auf eine der folgenden Arten bestimmt:
-
Wenn die Erfassung zum ersten Mal für einen Endpunkt beginnt, ist
START_TIMEdas historische Datum, das auf der Agent-Collection-Eigenschaft Historische Daten basiert. Der Standardwert dieser Eigenschaft ist30 days, d.h. der Wert des Zeitstempels liegt 30 Tage vor dem aktuellen Zeitstempel. -
Wenn das Feld Zeit im Parser festgelegt ist, entspricht der Wert von
START_TIMEin den nachfolgenden Log-Collections dem Höchstwert des extrahierten Zeitstempelwerts in der vorherigen Log-Collection. -
Wenn das Feld Zeit nicht aus den Logdatensätzen extrahiert wird, indem es im Parser festgelegt wird, ist der aktuelle Zeitstempel der Wert
START_TIME.
Wenn in der API Filter vorhanden sind, verwenden Sie greater than equal to anstelle von greater than, um sicherzustellen, dass alle Logdatensätze mit demselben Zeitstempel hochgeladen werden.
CURR_TIME-Makro
Verwenden Sie das Makro CURR_TIME, um die aktuelle Zeit in die REST-API-Endpunkt-URL, die Formularparameter und die POST-Payload einzufügen.
Das folgende Beispiel zeigt die Endpunkt-URL, die das Makro CURR_TIME im Abfrageparameter verwendet:
https://example.org/fetchLogs?sortBy=timestamp&sortOrder=ascending&time={CURR_TIME:yyyy-MM-dd'T'HH:mm:ss.SSSZ}-
Das Format für die Verwendung des Makros entspricht dem
START_TIME-Makro. -
Sie können mehrere Instanzen dieses Makros in die URL aufnehmen.
OFFSET-Makro
Verwenden Sie das Makro OFFSET für Endpunkte, die paginierte Antworten bereitstellen, oder um das Offsetverhalten in einer API-Antwort zu verarbeiten. Das Makro OFFSET kann in der REST-API-Endpunkt-URL, den Formularparametern und der POST-Payload verwendet werden, um mehrere Seiten oder Blöcke in einem einzelnen Logerfassungszyklus abzurufen.
Format: {OFFSET(<start value>, <increment>)}
-
Mit dem Makro
OFFSETwerden Daten über paginierte Ergebnisse eines bestimmten Logendpunkts iterativ aufgerufen und erfasst, um alle verfügbaren Datensätze abzurufen. Der anfängliche REST-API-Anforderungsaufruf beginnt mit dem Startwert und wird bei jedem nachfolgenden Aufruf um den Wert Inkrement erhöht. Diese rekursiven indexbasierten Aufrufe werden gestoppt, wenn keine weiteren Logeinträge gefunden werden. Der Ausgleich wird nicht in den nächsten Abnahmezyklus übertragen. Er beginnt mit dem Standardwert oder Anfangswert in jedem Abnahmerhythmus. -
Im obigen Format ist der Startwert der Anfangswert für den Index, und der Standardwert ist
0. Sie können optional den Startwert angeben.Mögliche Werte: Positive Ganzzahl einschließlich 0
-
Im obigen Format gibt Erhöhen den Wert an, der dem Startwert bei nachfolgenden Aufrufen hinzugefügt werden soll. Standardwert ist
1. Sie können optional den Wert Erhöhen angeben.Mögliche Werte: Nur positive Ganzzahl. 0 ausschließen.
-
Sie können nur eine Instanz dieses Makros in die URL aufnehmen.
Die folgenden Beispiele zeigen verschiedene Möglichkeiten zur Verwendung des Makros OFFSET:
-
{OFFSET}Verwendet Standardwerte Startwert = 0, Erhöhen = 1.
-
{OFFSET(5)}Startwert = 5, Erhöhung = 1 (Standard)
-
{OFFSET(5,2)}Startwert = 5, Erhöhen = 2
Das folgende Beispiel zeigt die Endpunkt-URL, die das Makro OFFSET verwendet:
https://example.org/fetchLogs?startIndex={OFFSET(0,1000)}&count=1000Im obigen Beispiel gibt OFFSET(0,1000) an, dass der Startwert beim ersten Aufruf 0 und bei nachfolgenden Aufrufen um 1000 erhöht ist. Wenn das Makro OFFSET interpretiert wird, lautet die Endpunkt-URL für mehrere Aufrufe daher wie folgt:
Erster Anruf: https://example.org/fetchLogs?startIndex=0&count=1000
Zweiter Aufruf: https://example.org/fetchLogs?startIndex=1000&count=1000
TIME_WINDOW-Makro
Geben Sie mit dem Makro TIME_WINDOW das Erfassungsintervall an, über das die Logs erfasst werden sollen. Sie kann in der REST-API-Endpunkt-URL verwendet werden, um Logs über Minuten, Stunden oder Tage abzurufen, unabhängig davon, wie das Agent-Erfassungsintervall ist. Beispiel: Wenn das Zeitfenster 1d (ein Tag) und das Agent-Intervall 10 Minuten beträgt, erfolgt die nachfolgende Logerfassung erst nach einem Tag.
Im folgenden Beispiel wird das Logerfassungsintervall für 6 Stunden festgelegt, indem TIME_WINDOW in der Endpunkt-URL als 6h angegeben wird:
https://example.org/fetchLogs?timewindow={TIME_WINDOW(6h)}Format: {TIME_WINDOW(<number><timeunit>)}
Im oben genannten Format:
-
Zahl: Die Ziffer ist größer als Null.
-
timeunit:
hfür Stunden,dfür Tage,mfür Minuten. Der Standardwert istd(Tage).
Stellen Sie sicher, dass das Agent-Erfassungsintervall kleiner als das angegebene Zeitfenster ist. Sie können das Makro TIME_WINDOW nur einmal im Endpunkt verwenden.
USERNAME- und PASSWORD-Makros
Geben Sie für SOAP-APIs, für die Werte für Benutzername und Kennwort in der POST-Payload erforderlich sind, {USERNAME} und {PASSWORD} in den SOAP-XML-Envelope ein. Wenn ein Makro vorhanden ist, geben Sie den Zugangsdatennamen für die USERNAME/PASSWORD-Makros im Abschnitt Zugangsdaten des Endpunkts an. Der Management Agent ersetzt die Makros zum Erfassungszeitpunkt durch Werte aus den konfigurierten Zugangsdaten.
Dies ist getrennt von der Basisauthentifizierung oder Tokenauthentifizierung auf Endpunktebene.
Wenn für die SOAP-API Benutzername und Kennwort erforderlich sind, dürfen Sie nur die Makros {USERNAME} und {PASSWORD} in die POST-Payload aufnehmen. Sie dürfen die Makros nicht durch die tatsächlichen Werte für Benutzername und Passwort ersetzen. Die Werte werden aus den konfigurierten Zugangsdaten erfasst.
Beispiel für eine SOAP-XML-Payload für einen POST-Aufruf mit den oben genannten Makros:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/">
<soapenv:Header/>
<soapenv:Body>
<ns:login>
<ns:username>{USERNAME}</ns:username>
<ns:password>{PASSWORD}</ns:password>
</ns:login>
</soapenv:Body>
</soapenv:Envelope>Variablen für REST-API-Logerfassung
Verwenden Sie Variablen, um Werte aus einer vorherigen Endpunktantwort zur Laufzeit in eine spätere Endpunktanforderung zu ersetzen. Variablen können in URL-, Formularparametern, POST-Payload oder HTTP-Anforderungsheaderwerten verwendet werden. Verwenden Sie für REST-Antworten JSONPath-Ausdrücke. Verwenden Sie für XML- oder SOAP-Antworten XPath-Ausdrücke.
Wenn eine Endpunktanforderung von einem Wert eines früheren Endpunkts abhängt und dieser frühere Endpunkt nicht erfolgreich ist, wird der abhängige Endpunkt nicht aufgerufen, und Logmeldungen werden nicht von diesem abhängigen Endpunkt erfasst.
Format der Variablen in einem späteren Endpunkt:
{<endpoint_name>:<JSONPath or XPath expression>}Verwenden Sie für JSON-Antworten JSONPath-Ausdrücke wie $.records[*].id. Verwenden Sie für XML- oder SOAP-Antworten XPath-Ausdrücke wie /Envelope/Body/loginResponse/loginResult.
-
Im obigen Format ist
endpoint_nameder Name des früheren Endpunkts, dessen Antwort den Wert angibt. Bei SOAP-Abläufen kann dies ein Initialisierungsendpunkt sein, z.B. ein Anmeldeendpunkt oder ein Loglistenendpunkt.Bei JSONPath-Ausdrücken ist der Filter
(<filter_field_name>=<value>)optional. Nur das Attribut, das derfilter_field_nameentspricht, wird aus der JSON-Antwort ausgewählt und im späteren Endpunkt verwendet. Beispiel:https://www.example.com/log/{foo:$.items[*].links[*].href(rel='self')}Ein detailliertes Beispiel für den Filter finden Sie unter Beispiel fürJSONPath-Filter.
Beispiele für XPATH-Ausdrücke finden Sie unter SOAP/XPATH-Beispiele.
-
JSON- und XML-Antwortinhalt kann zum Abrufen von Variablenwerten verwendet werden. Verwenden Sie JSONPath für JSON-Antworten und XPath für XML- oder SOAP-Antworten.
-
Die gleiche Variable kann mehrmals angegeben werden.
-
Variablen können sich auf frühere Endpunkte beziehen, die gültige Quellen für spätere Endpunktwerte sind. Verwenden Sie Initialisierungsendpunkte für Setupwerte, wie Sessiontoken. Verwenden Sie Logliste-Endpunkte für Werte, die untergeordnete Log-Endpunktanforderungen steuern.
-
Die folgenden JSON-Pfadformate werden unterstützt: Einfacher JSONPath, Array JSONPath und Multiple-Array JSONPath.
-
Verwenden Sie für SOAP-Antworten mit XML-Namespaces das XPath-Format, das vom XML-Parser und Endpunktvariablen-Resolver unterstützt wird. Wenn der Parser- oder Variablen-Resolver so konfiguriert ist, dass Namespaces ignoriert werden, schreiben Sie den XPath ohne Namespace-Präfixe.
Einfacher JSONPath
Wenn die JSON-Antwort mehrere Ebenen verschachtelter Elemente enthält, können Sie den JSON-Pfad als spezielle Notation von Knoten und deren Verbindungen zu den nachfolgenden untergeordneten Knoten angeben.
Verwenden Sie im folgenden Beispiel den JSON-Pfad $.foo.abc, um result als Ausgabe abzurufen:
{
"foo" :
{
"abc" : "result"
}
}
Verwenden Sie im folgenden Beispiel den JSON-Pfad $.*.id, um die Ausgabe ["id1", "id3"] abzurufen, oder $.*.*, um die Ausgabe ["id1", "id2", "id3"] abzurufen:
{
"foo" : {
"id" : "id1"
},
"foo2" : {
"ID" : "id2",
"id" : "id3"
}
}
Verwenden Sie im folgenden Beispiel den JSON-Pfad $.foo.*, um die Ausgabe ["id1", "value1"] abzurufen:
{
"foo" : {
"id" : "id1",
"abcd" : "value1"
},
"foo2" : {
"id" : "id2"
}
}
Array-JSONPath
Wenn die JSON-Antwort ein Array von Objekten enthält, aus denen Daten extrahiert werden müssen, geben Sie den Namen des Arrayobjekts an, und extrahieren Sie mit [] die geeigneten Elemente innerhalb dieses Arrayobjekts. Beispiel: Die folgende JSON-Antwort enthält zwei Arrays der Objekte records und item:
{
"records": [
{"id": "firstId", "type":"firstType"},
{"id":"secondId", "type":"secondType"}
],
"items": [
{"name":"firstName", "field":"value"},
{"name":"secondName", "field":"value"},
{"name":"thirdName", "field":"value"}
]
}
-
Geben Sie den JSON-Pfad
$.records[0].idan, umfirstIdals Ausgabe abzurufen,$.records[1].id, umsecondIdals Ausgabe abzurufen, oder$.records[*].id, umidaus allen JSON-Objekten abzurufen. Im letzten Fall ist die Ausgabe eine Liste der Zeichenfolgen["firstId", "secondId"]. -
Sie können Bedingungen auch im JSON-Pfad mit
()angeben. Um im obigen Beispielidnur von denrecordsabzurufen, dietypealsfirstTypeaufweisen, verwenden Sie den JSON-Pfad$.records[*].id(type='firstType').
Multiple-Array-JSONPath
Beachten Sie folgendes Beispiel:
Für die Endpunkt-URL der Logliste getlist:
https://www.example.com/url_list
JSON-Antwort auf Loglistenendpunkt:
{
"records": [ { "id": "firstId", "type": "firstType" }, { "id": "secondId", "type": "secondType" } ],
"items": [ { "name": "firstName", "field": "value" }, { "name": "secondName", "field": "value" }, { "name": "thirdName", "field": "value" } ]
}
Logendpunkt-URL (verweist auf Variablen aus getlist):
https://www.example.com/{getlist:$.records[*].id}/{getlist:$.items[*].name}
Mit den Variablen {getlist:$.records[*].id} und {getlist:$.items[*].name} generiert der Agent die Logendpunkte unten mit allen Kombinationen der beiden Arrayfelder ["firstId", "secondId"] und ["firstName", "secondName", "thirdName"]:
-
https://www.example.com/firstId/firstName -
https://www.example.com/secondId/firstName -
https://www.example.com/firstId/secondName -
https://www.example.com/secondId/secondName -
https://www.example.com/firstId/thirdName -
https://www.example.com/secondId/thirdName
Beispiel für JSONPath-Filter
Betrachten Sie die folgende JSON-Antwort vom Loglistenendpunkt foo:
{
"items": [
{
"BusinessEventCode": "JournalBatchApproved",
"CreationDate": "2019-07-27T17:19:19.261+00:00",
"links": [
{
"rel": "self",
"href": "/erpBusinessEvents/self/100100120766717"
},
{
"rel": "canonical",
"href": "/erpBusinessEvents/rel/100100120766717"
}
]
}
]
}
Betrachten Sie nun das folgende Beispiel für einen Logendpunkt:
https://www.example.com/log/{foo:$.items[*].links[*].href(rel='self')}
Im obigen Beispiel wird der Pfadparameter durch das Arrayelement $.items[*].links[*].href aus der JSON-Antwort des Loglistenendpunkts foo ersetzt, und eine zusätzliche Bedingung wird angegeben, um nur rel='self' auszuwählen.
Für die obige JSON-Antwort generiert der Agent den folgenden Logendpunkt:
https://www.example.com/log/erpBusinessEvents/self/100100120766717
SOAP/XPath-Beispiele
Verwenden Sie XPath-Ausdrücke, wenn ein früherer Endpunkt XML oder SOAP-XML zurückgibt.
-
Beispiel für die Initialisierungsendpunktantwort:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/"> <soapenv:Body> <ns:loginResponse> <ns:loginResult>abc123</ns:loginResult> </ns:loginResponse> </soapenv:Body> </soapenv:Envelope> -
Beispielvariable, die in einer späteren POST-Endpunkt-Payload verwendet wird:
<ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken> -
Beispielantwort für Loglistenendpunkt:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/"> <soapenv:Body> <ns:getItemsResponse> <ns:getItemsResult> <ns:string>Widget</ns:string> <ns:string>Gadget</ns:string> </ns:getItemsResult> </ns:getItemsResponse> </soapenv:Body> </soapenv:Envelope> -
Beispiel für untergeordnete Logendpunkt-POST-Payload:
<ns:getItemDetail> <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken> <ns:itemName>{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}</ns:itemName> </ns:getItemDetail>
Zugangsdatentyp für REST-API-Logerfassung auswählen
Um eine Verbindung zwischen dem Agent und der REST-API-Quelle zu autorisieren, konfigurieren Sie zuerst die API-Zugangsdaten im Zugangsdatenspeicher des Agent. Nachdem Sie die Quellzugangsdaten im Management Agent-Service auf Agent-Seite konfiguriert haben, können Sie diese Informationen beim Erstellen der REST-API-Logquelle verwenden.
Informationen zum Konfigurieren der Quellzugangsdaten im Management Agent-Service, damit der Management Agent Daten von Ihrem logemittierenden Host erfassen kann, finden Sie unter Quellzugangsdaten für Management Agent.
Geben Sie beim Hinzufügen des Logendpunkts oder Loglistenendpunkts die Zugangsdateninformationen im Workflow an, indem Sie den Logzugangsdatentyp auswählen. Wählen Sie eine der folgenden Optionen:
- Keine
- Basisauthentifizierung: Geben Sie den Logzugangsdatennamen der Zugangsdaten an, die Sie im Management Agent-Service erstellt haben.
- Statisches Token: Geben Sie den Logzugangsdatennamen der Zugangsdaten an, die Sie im Management Agent-Service erstellt haben.
- Dynamisches Token (OAuth 2.0):
Geben Sie den Tokenzugangsdatennamen des Tokens an, das Sie im Management Agent-Service erstellt haben. Geben Sie außerdem die Tokeninformationen an, wie Tokenendpunktname, Tokenendpunkt-URL, Berechtigungstyp und optional Geltungsbereich.
Wenn der Tokenproxy mit dem des Logendpunkts identisch ist, aktivieren Sie das Kontrollkästchen Proxy identisch mit Logendpunkt. Wenn nicht, deaktivieren Sie das Kontrollkästchen, und geben Sie die Tokenproxyserver-URL an.
Zuordnung von Zugangsdatentypen zum Authentifizierungstyp:
| Authentifizierungstyp | Zugangsdatentyp bei Management Agent | Zugangsdateneigenschaften |
|---|---|---|
| Basisauthentifizierung | HTTPSBasicAuthCreds | HTTPSUserName, HTTPSPassword |
| HTTPSCreds | HTTPSUserName, HTTPSPassword, ssl truststore-Eigenschaften | |
| Statisches Token | HTTPSTokenCreds | HTTPSToken, HTTPSTokenType, SSL-Truststore-Eigenschaften (optional) |
| Dynamisches Token | HTTPSBasicAuthCreds | HTTPSUserName, HTTPSPassword |
| HTTPSCreds | HTTPSUserName, HTTPSPassword, ssl truststore-Eigenschaften |
Die folgenden Informationen sind in den ssl truststore-Eigenschaften enthalten:
-
"
ssl_trustStoreType": Speichertyp, z.B.JKS. -
"
ssl_trustStoreLocation": Der Pfad des Truststores -
"
ssl_trustStorePassword": Truststore-Kennwort (optional)
Beachten Sie die folgenden Aspekte zu den Attributen in der Zugangsdaten-JSON:
-
source: Der Wert muss lacollector.la_rest_api lauten -
name: Jeder geeignete Name für die Zugangsdaten in einem der folgenden Formate.- <cred_name>.<entity_name>: Zugangsdatenname mit Entityname
- <cred name>: Nur Zugangsdatenname
Der Agent sucht nach dem Namen im ersten Format. Wird der Name nicht gefunden, wird im zweiten Format nach dem Namen gesucht.
-
type: Dies muss einer der Werte sein, die in der Spalte Zugangsdatentyp bei Management Agent in der obigen Tabelle der Zugangsdatentypen angegeben sind.
Siehe Beispiele für Zugangsdaten-JSON.
Beispiele für Zugangsdaten-JSON
Beispiel für Basisauthentifizierung mit Benutzername und Kennwort über HTTPS mit vertrauenswürdigem Host:
{
"source":"lacollector.la_rest_api",
"name":"ExampleRestAPICreds",
"type":"HTTPSBasicAuthCreds",
"description":"These are HTTPS (BasicAuth) credentials.",
"properties":
[
{ "name":"HTTPSUserName", "value":"CLEAR[admin]" },
{ "name":"HTTPSPassword", "value":"CLEAR[myHTTPSPassword]" }
]
}
Beispiel für Basisauthentifizierung mit SSL-Zertifikaten, Benutzernamen und Kennwort über HTTPS, indem Sie Zertifikate explizit angeben:
{
"source":"lacollector.la_rest_api",
"name":"ExampleRestAPICreds",
"type":"HTTPSCreds",
"description":"These are HTTPS (BasicAuth) credentials.",
"properties":
[
{ "name":"HTTPSUserName", "value":"CLEAR[admin]" },
{ "name":"HTTPSPassword", "value":"CLEAR[myHTTPSPassword]" },
{ "name":"ssl_trustStoreType", "value":"JKS" },
{ "name":"ssl_trustStoreLocation", "value":"/scratch/certs/mycert.keystore" },
{ "name":"ssl_trustStorePassword", "value":"mySSLPassword" }
]
}
Beispiel für Token über HTTPS mit vertrauenswürdigem Host:
{
"source":"lacollector.la_rest_api",
"name":"ExampleRestAPICreds",
"type":"HTTPSTokenCreds",
"description":"These are HTTPS (Token) credentials.",
"properties":
[
{ "name": "HTTPSToken", "value": "CLEAR[token value]" },
{"name": "HTTPSTokenType", "value": "CLEAR[Bearer]" }
]
}
Beispiel für Token über HTTPS mit explizit bereitgestellten Zertifikaten:
{
"source":"lacollector.la_rest_api",
"name":"ExampleRestAPICreds",
"type":"HTTPSTokenCreds",
"description":"These are HTTPS (Token) credentials.",
"properties":
[
{ "name": "HTTPSToken", "value": "CLEAR[token value]" },
{"name": "HTTPSTokenType", "value": "CLEAR[Bearer]" },
{ "name":"ssl_trustStoreType", "value":"JKS" },
{ "name":"ssl_trustStoreLocation", "value":"/scratch/certs/mycert.keystore" },
{ "name":"ssl_trustStorePassword", "value":"mySSLPassword" }
]
}
Fusion Applications-Auditlogs aufnehmen
Führen Sie diese Schritte aus, um die Fusion Applications-Auditlogs zu erfassen. Eine Liste der verfügbaren von Oracle definierten Quellen für Fusion Applications finden Sie unter Von Oracle definierte Quellen.
Themen:
Voraussetzungen
-
Fusion Applications-Auditlogs-APIs: Details zur Verwendung und Funktionalität der Auditlogs-API finden Sie in der REST-API-Dokumentation für Fusion Applications.
-
Zugriff auf Fusion Applications: Sie benötigen gültige Zugangsdaten und Berechtigungen für den Zugriff auf die Fusion Applications-Instanz.
-
Identifizieren Sie die folgenden Endpunkte und den Proxy (optional):
login_url: Die Basis-URL Ihrer Fusion Applications-Instanzpod_url: Die Basis-URL Ihrer Fusion Applications-Instanzproxy_url: (Optional) Die URL, die eine Anforderung an den Proxyserver sendet
Einzelheiten zu den URLs finden Sie unter Dokument-ID 2661308.1 in Oracle My Support.
- REST-API-Zugriff für Fusion Applications: Stellen Sie sicher, dass der API-Zugriff aktiviert und die erforderlichen Rollen/Berechtigungen zugewiesen sind.
Auditlogerfassung aus Fusion Applications einrichten
-
Fusion Applications-Basis-URL validieren:
- Validieren Sie die Fusion Applications-Zugangsdaten, indem Sie sich bei der Benutzeroberfläche anmelden.
- Analysieren Sie optional die Netzwerktraceaufrufe, um die Basis-URL zu validieren.
- Stellen Sie sicher, dass der Audit-API-Zugriff aktiviert ist.
-
Erforderliche IAM-Policys erstellen: Kontinuierliche Logerfassung mit Management-Agents zulassen
-
Installieren Sie den Management Agent auf einem Host, auf dem http- oder https-Zugriff auf die Fusion Applications-Instanz/den Fusion Applications-Server hat. Stellen Sie sicher, dass das Log Analytics-Plug-in während der Installation bereitgestellt wird. Siehe Management-Agents installieren.
-
API-Zugangsdaten im Zugangsdatenspeicher des Agent konfigurieren:
Der Speicherort des Verzeichnisses /bin hängt davon ab, wie der Management Agent bereitgestellt wird:
-
Für Management-Agents, die über das Oracle Cloud Agent-Plug-in auf Compute-Instanzen ausgeführt werden, befindet sich das Skript unter
/var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/bin. -
Für Management-Agents, die Sie manuell installiert haben, befindet sich das Skript unter
/opt/oracle/mgmt_agent/agent_inst/bin.
Navigieren Sie zum entsprechenden /bin-Verzeichnis für Ihr Setup, um die Zugangsdaten-JSON-Datei zu erstellen. Das folgende Beispiel zeigt die Werte in der Datei fapps.json:
{ "source": "lacollector.la_rest_api", "name": "FA-CREDS", "type": "HTTPSBasicAuthCreds", "description": "These are HTTPS (BasicAuth) credentials.", "properties": [ { "name": "HTTPSUserName", "value": "USER" }, { "name": "HTTPSPassword", "value": "PASS" } ] }Fügen Sie die FA-CREDS-Zugangsdaten zum Zugangsdatenspeicher des Agent hinzu:
cat fapps.json | ./credential_mgmt.sh -s logan -o upsertCredentialsEinzelheiten zum Konfigurieren der API-Zugangsdaten im Zugangsdatenspeicher des Agent finden Sie unter Management Agent-Quellzugangsdaten.
-
-
Prüfen Sie, ob der Fusion Applications-API-Endpunkt von der Instanz aus erreicht werden kann, in der der Agent installiert ist. Sie können Tools wie curl verwenden, um die Prüfung durchzuführen.
-
Entity erstellen: Erstellen Sie eine Entity vom Typ
Oracle Fusion Applications, und fügen Sie Eigenschaftswerte fürlogin_urlundpod_urlhinzu. Fügen Sie bei Bedarf auch den Wert fürproxy_urlhinzu. Siehe Entity zur Darstellung der protokollierenden Ressource erstellen. -
Quelle konfigurieren: Geben Sie eine geeignete von Oracle definierte Quelle für Fusion Applications-Auditlogs an, die Sie verwenden können. Bei Bedarf können Sie ein Duplikat der vorhandenen Quelle erstellen und bearbeiten. Siehe Quelle bearbeiten.
- Stellen Sie sicher, dass die Zugangsdaten korrekt im Logendpunkt der Quelle referenziert werden.
- Fügen Sie gegebenenfalls Proxy zu Logendpunkten hinzu.
-
Datenerfassung auf Agent-Seite planen: Verknüpfen Sie die Quelle mit der Entity, um die Datenerfassung zu planen. Verwenden Sie den Management Agent, um die Fusion Applications-Audit-APIs regelmäßig aufzurufen und Daten an Log Analytics zu übertragen. Siehe Neue Quellen-Entity-Verknüpfung konfigurieren
-
In Log Explorer prüfen und validieren: Prüfen Sie, ob die Logs im Log Explorer ordnungsgemäß erfasst und analysiert werden. Siehe Daten mit Diagrammen und Kontrollen visualisieren.