Apache APISIX integriert Google Cloud Logging zur Verbesserung der Log-Verarbeitung
API7.ai
December 22, 2021
Logging ist eine wichtige Infrastruktur für verteilte Systeme. Es kann Entwicklern helfen, den Status des Dienstbetriebs zu beobachten, die Effizienz der Fehlerbehebung und Diagnose zu verbessern sowie mehrdimensionale Analysen durchzuführen, um die Gesamtstabilität und Betriebseffizienz des Systems zu steigern.
Google Cloud Logging ist ein Echtzeit-Log-Management-Dienst, der von Google Cloud bereitgestellt wird und EB-große Speicher-, Such-, Analyse- und Alarmierungsdienste bietet. Der Log-Browser von Google Cloud Logging ermöglicht es Ihnen, Logs einfach und effizient zu durchsuchen, zu sortieren und zu analysieren. Darüber hinaus bietet Google Cloud Logging gespeicherte Abfragen und umfangreiche grafische Funktionen, um die Ergebnisse der Log-Filterung abrufbar und intuitiver darzustellen.
Apache APISIX hat bereits die Integration von HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS) und vielen anderen Open-Source- und Cloud-Logging-Dienstlösungen unterstützt.
Kürzlich hat Apache APISIX auch die Unterstützung für Google Cloud Logging hinzugefügt, was den Benutzern eine neue Logging-Lösung bietet, wenn sie Apache APISIX als Gateway verwenden: Verwenden Sie google-cloud-logging, um Apache APISIX-Anforderungslogs an den Google Cloud Logging-Dienst zur Analyse und Speicherung weiterzuleiten.
Wenn das Plugin aktiviert ist, wird Apache APISIX die Anforderungskontextinformationen in der Log-Phase nehmen und in Google Cloud Loggings LogEntry serialisieren, dann die serialisierten Log-Daten in die Batch-Warteschlange einreihen. Wenn die Batch-Warteschlange einen vom Benutzer festgelegten Zeit- oder Eintragsschwellenwert erreicht, werden die Log-Daten über die Google Cloud API an den Google Cloud Logging-Dienst weitergeleitet.
Dieser Artikel erklärt, wie der Google Cloud Logging-Dienst in Apache APISIX konfiguriert und verwendet wird.
Google Cloud konfigurieren
- Öffnen Sie Ihren Browser und besuchen Sie die Google Cloud-Startseite.
- Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich bei der Google Cloud-Konsole anzumelden.
- Klicken Sie im linken Menü der Google Cloud-Konsole auf "IAM & Admin > Create a Project", um mit der Erstellung eines Projekts zu beginnen.
- Geben Sie einen Projektnamen ein, wählen Sie einen Organisationsnamen aus und klicken Sie auf "CREATE", um das Projekt zu erstellen.
- Wenn das Projekt erfolgreich erstellt wurde, wird dies in der oberen rechten Ecke der Konsole angezeigt.
- Klicken Sie im Fenster, um das Projekt auszuwählen, oder wählen Sie den Projektoperationspfad in der oberen Navigationsleiste der Konsolen-Startseite. Nach der Auswahl des Projekts werden Sie zur Konsolen-Startseite weitergeleitet, wo Sie bereits Daten über das aktuelle Projekt in der oberen Navigationsleiste und die Projektinformationen im Informationszentrum sehen können.
- Nachdem Sie das Projekt erstellt haben, müssen Sie ein Dienstkonto für das Projekt erstellen. Gehen Sie zurück zur Google Cloud-Konsolen-Startseite und klicken Sie im linken Menü auf "IAM & Admin > Service Account", um mit der Erstellung eines Dienstkontos zu beginnen.
- Klicken Sie auf "CREATE SERVICE ACCOUNT", um das Dienstkonto zu erstellen.
- Geben Sie den Namen und die ID des Dienstkontos ein (die ID folgt normalerweise der Kontoerstellung) und klicken Sie dann auf "CREATE AND CONTINUE".
- Klicken Sie auf "Role" und geben Sie "Logging Admin" in das Suchfeld ein, um diese Rolle zu suchen, und wählen Sie "Logging Admin" als Rolle aus.
- Klicken Sie auf "DONE", um die Erstellung des Dienstkontos abzuschließen und zur Dienstkontostartseite zu gelangen. Jetzt können Sie das soeben erstellte Konto und seine Details in der Liste sehen.
- Klicken Sie in der letzten Spalte des Dienstkontos auf "Manage keys", um zur Schlüsselverwaltungsoberfläche zu gelangen.
- Klicken Sie auf "ADD KEY > Create new key", um mit der Erstellung eines neuen Schlüssels zu beginnen.
- Wählen Sie auf der Popup-Seite den Schlüsseltyp als "JSON" aus und klicken Sie dann auf "CREATE", um einen neuen Schlüssel zu erstellen.
- Die privaten Schlüsselinformationen werden automatisch über Ihren Browser in das standardmäßige Downloads-Verzeichnis Ihres Systems heruntergeladen. Wenn Sie das google-cloud-logging-Plugin aktivieren, müssen Sie die Informationen in diesem privaten Schlüssel verwenden. Bitte speichern Sie die private Schlüsseldatei.
Apache APISIX konfigurieren
google-cloud-logging-Plugin aktivieren
Option 1: Schlüsseldatei hochladen und konfigurieren
- Laden Sie die private Schlüsseldatei auf den Apache APISIX-Knotenserver hoch.
- Konfigurieren Sie den Dateipfad in
google-cloud-logging.auth_file
, wie unten gezeigt:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
"google-cloud-logging":{
// Google Cloud Logging Private Key File
"auth_file":"/path/to/apache-apisix-fcafc68c2f41.json",
// Maximale Anzahl von Einträgen pro Batch-Warteschlange.
"batch_max_size": 1,
// Maximale Zeit zum Aktualisieren des Puffers in Sekunden.
"inactive_timeout": 10
}
}
}'
Option 2: Konfigurationen in JSON deklarieren
- Öffnen Sie die private Schlüsseldatei.
- Konfigurieren Sie den Wert von
project_id
ingoogle-cloud-logging.auth_config.project_id
. - Konfigurieren Sie den Wert von
private_key
ingoogle-cloud-logging.auth_config.private_key
. Wie unten gezeigt:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
"google-cloud-logging":{
// Google Cloud Logging Private Key File
"auth_config":{
"project_id":"apache-apisix",
"private_key":"-----BEGIN RSA PRIVATE KEY-----your private key-----END RSA PRIVATE KEY-----"
},
// Maximale Anzahl von Einträgen pro Batch-Warteschlange.
"batch_max_size": 1,
// Maximale Zeit zum Aktualisieren des Puffers in Sekunden.
"inactive_timeout": 10
}
}
}'
Parameter
Name | Erforderlich | Standardwert | Beschreibung |
---|---|---|---|
auth_config | Nein | n/a | Google Cloud Logging Private Key File. Entweder auth_config oder auth_file muss konfiguriert werden. |
auth_config.private_key | Ja | n/a | Google Cloud Logging Private Key. |
auth_config.project_id | Ja | n/a | Projekt-ID des Google-Dienstkontos. |
auth_config.token_uri | Nein | oauth2.googleapis.com/token | Die URI des Token-Anfrage für das Google-Dienstkonto. |
auth_config.entries_uri | Nein | logging.googleapis.com/v2/entries | Google Log Service Write Log Entry API. |
auth_config.scopes | Nein | ["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"] | Zugriffsbereich des Google-Dienstkontos, siehe: OAuth 2.0 Scopes for Google APIs |
auth_file | Nein | n/a | Pfad zur JSON-Datei des Google-Dienstkontos (entweder auth_config oder auth_file muss konfiguriert werden) |
ssl_verify | Nein | TRUE | SSL-Authentifizierung aktivieren, konfiguriert gemäß OpenResty-Dokumentation Optionen. |
resource | Nein | {"type": "global"} | Google überwachte Ressourcen, siehe MonitoredResource. |
log_id | Nein | apisix.apache.org%2Flogs | Google Log-ID, siehe: LogEntry. |
max_retry_count | Nein | 0 | Maximale Anzahl von Wiederholungsversuchen, bevor der Eintrag aus der Verarbeitungspipeline entfernt wird. |
retry_delay | Nein | 1 | Anzahl der Sekunden, die die Ausführung verzögert werden soll, wenn die Ausführung fehlschlägt. |
buffer_duration | Nein | 60 | Die maximale Dauer (in Sekunden) des ältesten Eintrags im Batch, der zuerst verarbeitet werden muss. |
inactive_timeout | Nein | 10 | Maximale Zeit zum Aktualisieren des Puffers in Sekunden. |
batch_max_size | Nein | 100 | Maximale Zeit zum Aktualisieren des Puffers in Sekunden. |
Überprüfen, ob das Plugin normal läuft
-
Führen Sie den folgenden Befehl aus, um eine Anfrage an Google Cloud Logging zu senden.
curl -i http://127.0.0.1:9080/logging.do HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Date: Fri, 10 Dec 2021 09:57:52 GMT Server: APISIX/2.11.0 Hello, Google Cloud Logging
-
Öffnen Sie Ihren Browser und besuchen Sie die Google Cloud-Startseite.
-
Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich bei der Google Cloud-Konsole anzumelden.
-
Sehen Sie sich das Log der gesendeten Anfragen im Log-Browser an, und die zurückgegebenen Ergebnisse werden unten angezeigt.
google-cloud-logging-Plugin deaktivieren
Sie können den google-cloud-logging-Konfigurationsblock entfernen, um das Plugin zu deaktivieren, wenn Sie es nicht mehr verwenden.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
}
}'
Zusammenfassung
Dieser Artikel beschreibt die detaillierten Schritte zur Integration von Apache APISIX und Google Cloud Logging. Wir hoffen, dass dieser Artikel Ihnen ein klareres Verständnis für die Verwendung von Google Cloud Logging in Apache APISIX vermittelt und die nachfolgende praktische Umsetzung erleichtert.
Apache APISIX ist nicht nur bestrebt, seine eigene hohe Leistung aufrechtzuerhalten, sondern legt auch großen Wert auf den Aufbau einer Open-Source-Ökologie. Derzeit verfügt Apache APISIX über 10+ Logging-bezogene Plugins und unterstützt die Integration mit den wichtigsten Open-Source-Logging-Projekten der Branche.
Wenn Sie Bedarf an der Integration mit anderen Logs haben, besuchen Sie das GitHub von Apache APISIX und hinterlassen Sie Ihre Vorschläge über ein Issue; oder abonnieren Sie die Mailingliste von Apache APISIX und teilen Sie Ihre Gedanken per E-Mail mit.
Verwandte Artikel
Apache APISIX integriert SkyWalking für eine umfassende Log-Verarbeitung
Apache APISIX & RocketMQ unterstützt die API-Log-Überwachung