Apache APISIX integriert Google Cloud Logging zur Verbesserung der Log-Verarbeitung

API7.ai

December 22, 2021

Ecosystem

Apache APISIX-Google Cloud Logging cover

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

  1. Öffnen Sie Ihren Browser und besuchen Sie die Google Cloud-Startseite.
  2. Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich bei der Google Cloud-Konsole anzumelden.
  3. Klicken Sie im linken Menü der Google Cloud-Konsole auf "IAM & Admin > Create a Project", um mit der Erstellung eines Projekts zu beginnen. create a project
  4. Geben Sie einen Projektnamen ein, wählen Sie einen Organisationsnamen aus und klicken Sie auf "CREATE", um das Projekt zu erstellen. create a project-2
  5. Wenn das Projekt erfolgreich erstellt wurde, wird dies in der oberen rechten Ecke der Konsole angezeigt. project notification
  6. 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. view your project
  7. 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. start creating a service account
  8. Klicken Sie auf "CREATE SERVICE ACCOUNT", um das Dienstkonto zu erstellen. create a service account
  9. Geben Sie den Namen und die ID des Dienstkontos ein (die ID folgt normalerweise der Kontoerstellung) und klicken Sie dann auf "CREATE AND CONTINUE". create a service account-2
  10. 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. create a service account-3
  11. 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. service account information
  12. Klicken Sie in der letzten Spalte des Dienstkontos auf "Manage keys", um zur Schlüsselverwaltungsoberfläche zu gelangen. enter secret key management interface
  13. Klicken Sie auf "ADD KEY > Create new key", um mit der Erstellung eines neuen Schlüssels zu beginnen. create a new secret key
  14. 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. create a new secret key-2
  15. 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. Download your key

Apache APISIX konfigurieren

google-cloud-logging-Plugin aktivieren

Option 1: Schlüsseldatei hochladen und konfigurieren

  1. Laden Sie die private Schlüsseldatei auf den Apache APISIX-Knotenserver hoch.
  2. 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

  1. Öffnen Sie die private Schlüsseldatei.
  2. Konfigurieren Sie den Wert von project_id in google-cloud-logging.auth_config.project_id.
  3. Konfigurieren Sie den Wert von private_key in google-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

NameErforderlichStandardwertBeschreibung
auth_configNeinn/aGoogle Cloud Logging Private Key File. Entweder auth_config oder auth_file muss konfiguriert werden.
auth_config.private_keyJan/aGoogle Cloud Logging Private Key.
auth_config.project_idJan/aProjekt-ID des Google-Dienstkontos.
auth_config.token_uriNeinoauth2.googleapis.com/tokenDie URI des Token-Anfrage für das Google-Dienstkonto.
auth_config.entries_uriNeinlogging.googleapis.com/v2/entries
Google Log Service Write Log Entry API.
auth_config.scopesNein["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_fileNeinn/aPfad zur JSON-Datei des Google-Dienstkontos (entweder auth_config oder auth_file muss konfiguriert werden)
ssl_verifyNeinTRUESSL-Authentifizierung aktivieren, konfiguriert gemäß OpenResty-Dokumentation Optionen.
resourceNein{"type": "global"}Google überwachte Ressourcen, siehe MonitoredResource.
log_idNeinapisix.apache.org%2FlogsGoogle Log-ID, siehe: LogEntry.
max_retry_countNein0Maximale Anzahl von Wiederholungsversuchen, bevor der Eintrag aus der Verarbeitungspipeline entfernt wird.
retry_delayNein1Anzahl der Sekunden, die die Ausführung verzögert werden soll, wenn die Ausführung fehlschlägt.
buffer_durationNein60Die maximale Dauer (in Sekunden) des ältesten Eintrags im Batch, der zuerst verarbeitet werden muss.
inactive_timeoutNein10Maximale Zeit zum Aktualisieren des Puffers in Sekunden.
batch_max_sizeNein100Maximale Zeit zum Aktualisieren des Puffers in Sekunden.

Überprüfen, ob das Plugin normal läuft

  1. 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
    
  2. Öffnen Sie Ihren Browser und besuchen Sie die Google Cloud-Startseite.

  3. Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich bei der Google Cloud-Konsole anzumelden.

  4. Sehen Sie sich das Log der gesendeten Anfragen im Log-Browser an, und die zurückgegebenen Ergebnisse werden unten angezeigt. View the log

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

Tags: