Funktionslogs speichern und anzeigen
Erfahren Sie, wie Sie Funktionslogs mit OCI Functions speichern und anzeigen.
Wenn eine Funktion aufgerufen wird, möchten Sie in der Regel auf die Logs der Funktion zur Fehlerbehebung zugreifen. Der Oracle Cloud Infrastructure-Loggingservice ist die Standardoption und die empfohlene Option für den Zugriff auf, die Suche und das Speichern von Funktionslogs. Wenn Sie Oracle Cloud Infrastructure Logging für eine Anwendung aktivieren, werden Standardaufruflogs erstellt, wenn Funktionen in der Anwendung aufgerufen werden. Informationen hierzu finden Sie unter Funktionslogs mit der Konsole in Oracle Cloud Infrastructure Logging aktivieren und anzeigen. Weitere Informationen zum Inhalt von Funktionslogs finden Sie unter Details zu Functions.
Alternativ kann es zu Situationen kommen, in denen Sie Funktionslogs an ein externes Loggingziel wie Papertrail senden möchten. Um Logs anstelle des Oracle Cloud Infrastructure-Loggingservice an ein externes Loggingziel zu senden, geben Sie mit der Fn-Projekt-CLI eine Syslog-URL an. Informationen hierzu finden Sie unter Mit Fn-Projekt-CLI-Befehlen eine Syslog-URL angeben.
- Für node.js:
console.log('Entering Hello Node.js function');
- Für java:
System.err.println("Entering Java Hello World Function");
- Für go:
fmt.Println("Entering Hello Go function")
Funktionslogs mit der Konsole in Oracle Cloud Infrastructure-Logging aktivieren und anzeigen
So aktivieren Sie Funktionslogs im Oracle Cloud Infrastructure-Loggingservice und zeigen sie an:
- Wählen Sie auf der Listenseite Anwendungen die Anwendung mit Funktionen aus, für die Sie Logs erstellen, aktivieren und anzeigen möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder der Anwendung benötigen, finden Sie weitere Informationen unter Anwendungen auflisten.
- So erstellen und aktivieren Sie ein neues Funktionslog im Oracle Cloud Infrastructure-Loggingservice:
- Wählen Sie unter Ressourcen die Option Logs aus, wählen Sie das
- Compartment: Das Compartment, in dem das neue Log erstellt werden soll. Standardmäßig ist dies das aktuelle Compartment.
- Loggruppe: Die Loggruppe, in der das neue Log erstellt werden soll. Wählen Sie eine vorhandene Loggruppe aus, oder wählen Sie:
- Standardloggruppe automatisch erstellen, um eine Standardloggruppe mit einem Standardnamen (DEFAULT_GROUP) zu erstellen, wenn diese nicht bereits vorhanden ist.
- Neue Loggruppe erstellen, um eine neue Loggruppe mit einem Namen und einer Beschreibung zu erstellen.
- Logname: Der Name des neuen Logs. Standardmäßig <application-name>>_invoke.
- Logaufbewahrung: Der Aufbewahrungszeitraum für Logdaten.
aus, und wählen Sie Log aktivieren aus, und geben Sie Folgendes an: - Wählen Sie Log aktivieren aus, um das neue Log zu erstellen (und die neue Loggruppe, falls Sie eine angegeben haben).
Weitere Informationen dazu finden Sie unter Logging für eine Ressource aktivieren.
- Wählen Sie unter Ressourcen die Option Logs aus, wählen Sie das
- Um ein vorhandenes Funktionslog zu aktivieren, wählen Sie unter Ressourcen die Option Logs aus, wählen das Menü Aktionen
und dann Log aktivieren aus.
- Um die Daten in einem vorhandenen Funktionslog anzuzeigen, wählen Sie unter Ressourcen die Option Logs aus. Wählen Sie dann in der Spalte Loggruppe den Namen der Loggruppe mit dem Log aus, das Sie anzeigen möchten.
Das Log wird auf der Seite Logdetails der Loggruppe geöffnet, auf der Sie Logdaten anzeigen sowie Logdaten nach Zeit sortieren und filtern können.
- Wählen Sie den Pfeil nach unten neben einem Logereignis, um Logdaten für dieses Ereignis anzuzeigen.
- Wählen Sie Mit Logsuche explorieren aus, um Logdaten zu suchen.
Tipp
Bei der Suche nach Logdaten können Sie das Feld data.opcRequestId
verwenden, um Logs nach Anforderungs-ID zu filtern. Wenn ein API-Deployment in API Gateway eine Funktion in einem OCI Functions-Backend aufruft, können Sie Logs anzeigen, die sich sowohl auf die API-Gateway-Anforderung als auch auf die OCI Functions-Anforderung beziehen, indem Sie dasselbe Feld data.opcRequestId
zusammen mit einem Platzhalter verwenden:
- Wählen Sie auf der Seite Loggingsuche den Pfeil nach unten neben einem Logereignis aus, um Logdaten für dieses Ereignis anzuzeigen.
- Wählen Sie im Funktionslog das Feld
"data.opcRequestId"
aus, und wählen Sie im Popup-Menü die Option Filterabgleich aus.Beispiel: Angenommen, das Funktionslog enthält das Feld
"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"
. Das Feld"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"
wird als Filter in die Seite Logsuche (Einfacher Modus) kopiert. - Wählen Sie auf der Seite Logsuche (Basismodus) die Option Erweiterten Modus anzeigen aus, und ersetzen Sie die zweite Hälfte des Feldwerts
"data.opcRequestId"
, der im Feld Abfrage angezeigt wird, durch den Platzhalter * (Sternchen).Beispiel: Damit
data.opcRequestId: '/01FJA5VCVM0000000000025M1Z/*'
gelesen wird - Wählen Sie Suchen aus.
Mit Fn-Projekt-CLI-Befehlen eine Syslog-URL angeben
Gelegentlich werden neue Versionen der Fn-Projekt-CLI veröffentlicht. Wir empfehlen Ihnen, regelmäßig zu überprüfen, ob die neueste Version installiert ist. Weitere Informationen finden Sie in Schritte zum Upgrade der Fn-Projekt-CLI.
Der Oracle Cloud Infrastructure-Loggingservice ist die Standardoption und die empfohlene Option für den Zugriff auf, die Suche und das Speichern von Funktionslogs.
Alternativ können Sie Funktionslogs an ein externes Loggingziel wie Papertrail senden, indem Sie stattdessen mit der Fn-Projekt-CLI eine Syslog-URL angeben. Beachten Sie, dass Sie zur Verwendung eines externen Loggingziels ein VCN mit öffentlichen Subnetzen und ein Internetgateway einrichten müssen (siehe VCN und Subnetze zur Verwendung mit OCI Functions erstellen, wenn diese noch nicht vorhanden sind).
So senden Sie Funktionslogs an ein externes Loggingziel, indem Sie die Syslog-URL festlegen:
- Melden Sie sich als Funktionsentwickler bei Ihrer Entwicklungsumgebung an.
-
Um eine neue Anwendung zu erstellen und anzugeben, dass alle Funktionen in der Anwendung ihre Logs an ein externes Loggingziel senden, geben Sie Folgendes ein:
fn create app <app-name> --syslog-url <logging-service-url> --annotation oracle.com/oci/subnetIds='["<subnet-ocid>"]'
Hierbei gilt:
<app-name>
ist der Name der neuen Anwendung. Geben Sie keine vertraulichen Informationen ein.<logging-service-url>
ist die Syslog-URL, an die Logs gesendet werden sollen.<subnet-ocid>
ist die OCID des öffentlichen Subnetzes (oder der bis zu maximal sechs Subnetze), in dem Funktionen ausgeführt werden sollen. Wurde ein regionales Subnetz definiert, sollten Sie vorzugsweise dieses Subnetz auswählen, um eine Failover-Implementierung in allen Availability-Domains zu vereinfachen. Wenn kein regionales Subnetz definiert wurde und Sie High-Availability-Anforderungen erfüllen müssen, wählen Sie mehrere Subnetze aus (setzen Sie jede OCID in doppelte Anführungszeichen im Format'["<subnet-ocid>","<subnet-ocid>"]'
. Es wird empfohlen, dass sich die öffentlichen Subnetze in derselben Region wie die Docker-Registry befinden sollten, die im Fn-Projekt-CLI-Kontext angegeben ist (siehe Fn-Projekt-CLI-Kontext für die Verbindung mit Oracle Cloud Infrastructure erstellen).
Beispiel:
fn create app acmeapp --syslog-url tcp://my.papertrail.com:4242 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaaaaacnh..."]'
Beachten Sie, dass die vorhandenen Syslog-URL-Details beibehalten werden, wenn Sie anschließend Oracle Cloud Infrastructure-Logging zum Speichern von Logs einrichten. Wenn Sie sich also später entschließen, das Senden von Funktionslogs an das externe Loggingziel fortzusetzen, müssen Sie Oracle Cloud Infrastructure-Logging einfach deaktivieren, und Logs werden erneut an die Syslog-URL gesendet.
-
Um eine vorhandene Anwendung zu aktualisieren und anzugeben, dass alle Funktionen in der Anwendung ihre Logs an ein externes Loggingziel senden, geben Sie Folgendes ein:
fn update app <app-name> --syslog-url <logging-service-url>
Hierbei gilt:
- Dabei ist
<app-name>
der Name der zu aktualisierenden Anwendung. <logging-service-url>
ist die Syslog-URL, an die Logs gesendet werden sollen.
Beispiel:
fn update app acmeapp --syslog-url tcp://my.papertrail.com:4242
- Dabei ist
-
Um eine vorhandene Anwendung zu aktualisieren und das für die Syslog-URL angegebene externe Loggingziel zu entfernen, geben Sie Folgendes ein:
fn update app <app-name> --syslog-url ''
Hierbei gilt:
- Dabei ist
<app-name>
der Name der zu aktualisierenden Anwendung.
Beispiel:
fn update app acmeapp --syslog-url ''
- Dabei ist
Zuvor unterstützte Loggingoptionen
In früheren OCI Functions-Releases (vor dem Release des Oracle Cloud Infrastructure Logging-Service) können Sie angeben, wo OCI Functions die Logs einer Funktion speichert, indem Sie eine "Logging Policy" für die Anwendung einrichten, die diese Funktion enthält. Zuvor konnten Sie mit der Konsole eine Logging-Policy einrichten, um:
-
Logs als Objekte in einem Speicher-Bucket in Oracle Cloud Infrastructure Object Storage zu speichern, indem Sie die OCI Logging-Option ausgewählt haben.
Um Funktionslogs in einem Speicher-Bucket anzuzeigen, muss der zugehörigen Gruppe mit den folgenden Identitäts-Policy-Anweisungen Zugriff erteilt worden sein:
Allow group <group-name> to manage object-family in compartment <compartment-name>
Allow group <group-name> to read objectstorage-namespaces in compartment <compartment-name>
(Wird normalerweise beim Konfigurieren des Mandanten für die Funktionsentwicklung erstellt. Siehe Policy-Anweisungen, die OCI Functions-Benutzern Zugriff auf Oracle Cloud Infrastructure Registry-Repositorys erteilen.)
- Logs zu speichern, indem Sie sie durch Auswahl der Option Syslog-URL an ein externes Loggingziel wie Papertrail gesendet haben.
Bei einer vorhandenen Anwendung, für die Sie bereits eine Logging-Policy eingerichtet haben, wird die obige Funktionalität weiterhin unterstützt, und die vorhandene Logging-Policy wird angewendet. Beachten Sie aber Folgendes:
- Mit der Konsole können Sie keine neue Logging-Policy einrichten oder vorhandene Logging-Policy bearbeiten.
- Wenn die vorhandene Logging-Policy vorgibt, Funktionslogs als Objekte in einem Speicher-Bucket in Oracle Cloud Infrastructure Object Storage zu speichern:
- Die Möglichkeit, Logs in Object Storage zu speichern, ist in einem zukünftigen Release veraltet und nicht mehr verfügbar.
- Es wird empfohlen, zur Speicherung von Logs zu Oracle Cloud Infrastructure Logging zu wechseln.
- Wenn Sie für die Speicherung von Logs zu Oracle Cloud Infrastructure Logging wechseln, können Sie die Logs nicht mehr in Object Storage speichern.
- In Object Storage gespeicherte Logs bleiben weiterhin bestehen (wobei jeder Logname wie bisher die OCID der zugehörigen Funktion enthält).
- Wenn die vorhandene Logging-Policy eine Syslog-URL angegeben hat:
- Wenn Sie für die Speicherung von Logs zu Oracle Cloud Infrastructure Logging wechseln, werden die vorhandenen Syslog-URL-Details beibehalten. Wenn Sie sich also später entschließen, das Senden von Funktionslogs an das externe Loggingziel fortzusetzen, müssen Sie Oracle Cloud Infrastructure-Logging einfach deaktivieren, und Logs werden erneut an die Syslog-URL gesendet.
- Wenn Sie die Syslog-URL in der vorhandenen Logging-Policy ändern möchten, müssen Sie sie mit der Fn-Projekt-CLI ändern.