Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu
Apigee X. info
Edge Microgateway, Version 3.0.x
Zielgruppe
Dieses Thema richtet sich an Edge Microgateway-Betreiber, die vorhandene Plug-ins verwenden möchten, die mit dem Microgateway installiert wurden. Außerdem werden die Plug-ins „Spike Arrest“ und „Kontingent“ ausführlich in behandelt (beide sind in der Installation enthalten). Wenn Sie Entwickler sind und neue Plug-ins entwickeln möchten, lesen Sie den Artikel Benutzerdefinierte Plug-ins entwickeln.
Was ist ein Edge Microgateway-Plug-in?
Ein Plug-in ist ein Node.js-Modul, das Edge Microgateway Funktionen hinzufügt. Plug-in-Module folgen einem einheitlichen Muster und werden an einem Speicherort gespeichert, der Edge Microgateway bekannt ist. So kann das Microgateway sie automatisch erkennen und laden. Edge Microgateway enthält mehrere vorhandene Plug-ins. Sie können auch benutzerdefinierte Plug-ins erstellen, wie unter Benutzerdefinierte Plug-ins entwickeln beschrieben.
Vorhandene Plug-ins, die in Edge Microgateway enthalten sind
Bei der Installation von Edge Microgateway werden mehrere vorhandene Plug-ins bereitgestellt. Dazu gehören:
| Plug-in | Standardmäßig aktiviert | Beschreibung |
|---|---|---|
| Analytics | Ja | Sendet Analysedaten von Edge Microgateway an Apigee Edge. |
| oauth | Ja | Fügt Edge Microgateway die OAuth-Token- und API-Schlüsselvalidierung hinzu. Weitere Informationen finden Sie unter Setting up and configuring Edge Microgateway. |
| quota | Nein | Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Verwendet Apigee Edge zum Speichern und Verwalten der Kontingente. Weitere Informationen finden Sie unter Kontingent-Plug-in verwenden. |
| spikearrest | Nein | Schützt vor Trafficspitzen und DoS-Angriffen. Weitere Informationen finden Sie unter Spike Arrest-Plug-in verwenden. |
| header-uppercase | Nein | Ein auskommentierter Beispielproxy, der als Leitfaden für Entwickler zum Schreiben benutzerdefinierter Plug-ins dient. Weitere Informationen finden Sie unter Edge Microgateway-Beispiel-Plug-in. |
| accumulate-request | Nein | Führt Anfragedaten in einem einzelnen Objekt zusammen, bevor sie an den nächsten Handler in der Plug-in-Kette übergeben werden. Nützlich zum Schreiben von Transformations-Plug-ins, die mit einem einzelnen, zusammengefassten Anfrageninhaltsobjekt arbeiten müssen. |
| accumulate-response | Nein | Führt Antwortdaten in einem einzelnen Objekt zusammen, bevor sie an den nächsten Handler in der Plug-in-Kette übergeben werden. Nützlich zum Schreiben von Transformations-Plug-ins, die mit einem einzelnen, zusammengefassten Antwortinhaltsobjekt arbeiten müssen. |
| transform-uppercase | Nein | Transformiert Anfragen- oder Antwortdaten. Dieses Plug-in stellt eine Best-Practice Implementierung eines Transformations-Plug-ins dar. Das Beispiel-Plug-in führt eine einfache Transformation durch (konvertiert Anfragen- oder Antwortdaten in Großbuchstaben). Es kann jedoch problemlos angepasst werden, um andere Arten von Transformationen durchzuführen, z. B. von XML zu JSON. |
| json2xml | Nein | Transformiert Anfragen- oder Antwortdaten basierend auf Accept- oder Content-Type-Headern. Weitere Informationen finden Sie in der Plug-in -Dokumentation auf GitHub. |
| quota-memory | Nein | Erzwingt ein Kontingent für Anfragen an Edge Microgateway. Speichert und verwaltet Kontingente im lokalen Speicher. |
| healthcheck | Nein | Gibt Informationen zum Edge Microgateway-Prozess zurück, z. B. zur Arbeitsspeichernutzung und CPU-Nutzung, usw. Wenn Sie das Plug-in verwenden möchten, rufen Sie die URL /healthcheck in Ihrer Edge Microgateway-Instanz auf. Dieses Plug-in soll als Beispiel dienen, mit dem Sie Ihr eigenes Systemdiagnose-Plug-in implementieren können. |
Vorhandene Plug-ins finden
Vorhandene Plug-ins, die in Edge Microgateway enthalten sind, finden Sie hier. [prefix]
ist das npm Präfixverzeichnis. Informationen zum Speicherort von Edge Microgateway finden Sie unter
Wo ist Edge Microgateway installiert?.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Plug-ins hinzufügen und konfigurieren
Folgen Sie diesem Muster, um Plug-ins hinzuzufügen und zu konfigurieren:
- Beenden Sie Edge Microgateway.
- Öffnen Sie eine Edge Microgateway-Konfigurationsdatei. Weitere Informationen finden Sie unter Konfigurationsänderungen für Optionen vornehmen.
- Fügen Sie das Plug-in dem Element
plugins:sequenceder Konfigurationsdatei hinzu, wie unten gezeigt. Plug-ins werden in der Reihenfolge ausgeführt, in der sie in dieser Liste aufgeführt sind.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- Konfigurieren Sie das Plug-in. Einige Plug-ins haben optionale Parameter, die Sie in der
Konfigurationsdatei konfigurieren können. Sie können beispielsweise den folgenden Abschnitt hinzufügen, um das Spike Arrest
Plug-in zu konfigurieren. Weitere Informationen finden Sie unter Spike Arrest-Plug-in verwenden.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- Speichern Sie die Datei.
- Starten Sie Edge Microgateway neu oder laden Sie es neu, je nachdem, welche Konfigurationsdatei Sie bearbeitet haben.
Plug-in-spezifische Konfiguration
Sie können die in der Konfigurationsdatei angegebenen Plug-in-Parameter überschreiben, indem Sie in diesem Verzeichnis eine Plug-in-spezifische Konfiguration erstellen:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
Dabei ist [prefix] das npm-Präfixverzeichnis. Informationen zum Speicherort von Edge Microgateway finden Sie unter
Wo ist Edge Microgateway installiert?.
plugins/<plugin_name>/config/default.yaml. Sie können diesen
Block beispielsweise in plugins/spikearrest/config/default.yaml einfügen. Dadurch werden alle anderen
Konfigurationseinstellungen überschrieben.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Spike Arrest-Plug-in verwenden
Das Spike Arrest-Plug-in schützt vor Trafficspitzen. Es drosselt die Anzahl der Anfragen, die von einer Edge Microgateway-Instanz verarbeitet werden.
Spike Arrest-Plug-in hinzufügen
Weitere Informationen finden Sie unter Plug-ins hinzufügen und konfigurieren.
Beispielkonfiguration für Spike Arrest
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
Konfigurationsoptionen für Spike Arrest
- timeUnit: Wie oft das Ausführungsfenster für Spike Arrest zurückgesetzt wird. Gültige Werte sind „second“ oder „minute“.
- allow: Die maximale Anzahl von Anfragen, die während der timeUnit zulässig sind. Weitere Informationen finden Sie unter Wenn Sie mehrere Edge Micro Prozesse.
- bufferSize: (optional, Standardwert = 0) Wenn bufferSize > 0, speichert Spike Arrest diese Anzahl von Anfragen in einem Puffer. Sobald das nächste Ausführungsfenster auftritt, werden die gepufferten Anfragen zuerst verarbeitet. Weitere Informationen finden Sie unter Puffer hinzufügen.
Wie funktioniert Spike Arrest?
Mit Spike Arrest können Sie sich vor Trafficspitzen schützen, ohne den Traffic auf eine bestimmte Anzahl von Anfragen zu beschränken. APIs und das Back-End können eine bestimmte Menge an Traffic bewältigen. Die Spike Arrest-Richtlinie hilft Ihnen dabei, den Traffic auf die gewünschte allgemeine Menge zu begrenzen.
Das Laufzeitverhalten von Spike Arrest unterscheidet sich von dem, was Sie von den Literalwerten pro Minute oder pro Sekunde erwarten können.
Angenommen, Sie geben eine Rate von 30 Anfragen pro Minute an:
spikearrest: timeUnit: minute allow: 30
Beim Testen denken Sie vielleicht, dass Sie 30 Anfragen in 1 Sekunde senden können, solange sie innerhalb einer Minute eingehen. So erzwingt die Richtlinie die Einstellung jedoch nicht. Wenn Sie darüber nachdenken, könnten 30 Anfragen innerhalb einer Sekunde in einigen Umgebungen als Mini-Spike betrachtet werden.
Was geschieht dann tatsächlich? Um ein anstiegsartiges Verhalten zu verhindern, glättet Spike Arrest den zulässigen Traffic, indem die Einstellungen in kleinere Intervalle unterteilt werden:
Raten pro Minute
Raten pro Minute werden in Anfragen geglättet, die in Intervallen von Sekunden zulässig sind. Beispiel: 30 Anfragen pro Minute werden so geglättet:
60 Sekunden (1 Minute) / 30 = 2-Sekunden-Intervalle oder etwa 1 Anfrage alle 2 Sekunden. Eine zweite Anfrage innerhalb von 2 Sekunden schlägt fehl. Außerdem schlägt eine 31. Anfrage innerhalb einer Minute fehl.
Raten pro Sekunde
Raten pro Sekunde werden in Anfragen geglättet, die in Intervallen von Millisekunden zulässig sind. Beispiel: 10 Anfragen pro Sekunde werden so geglättet:
1.000 Millisekunden (1 Sekunde) / 10 = 100-Millisekunden-Intervalle oder etwa 1 Anfrage alle 100 Millisekunden. Eine zweite Anfrage innerhalb von 100 Millisekunden schlägt fehl. Außerdem schlägt eine 11. Anfrage innerhalb einer Sekunde fehl.
Wenn das Limit überschritten wird
Wenn die Anzahl der Anfragen das Limit innerhalb des angegebenen Zeitintervalls überschreitet, gibt Spike Arrest diese Fehlermeldung mit dem HTTP-Status 503 zurück:
{"error": "spike arrest policy violated"}Puffer hinzufügen
Sie haben die Möglichkeit, der Richtlinie einen Puffer hinzuzufügen. Angenommen, Sie legen den Puffer auf 10 fest. Die API gibt nicht sofort einen Fehler zurück, wenn Sie das Spike Arrest -Limit überschreiten. Stattdessen werden Anfragen gepuffert (bis zur angegebenen Anzahl) und die gepufferten Anfragen werden verarbeitet, sobald das nächste geeignete Ausführungsfenster verfügbar ist. Der Standardwert für bufferSize ist 0.
Wenn Sie mehrere Edge Micro Prozesse ausführen
Die Anzahl der zulässigen Anfragen hängt von der Anzahl der ausgeführten Edge Micro-Worker-Prozesse ab,
die ausgeführt werden. Spike Arrest berechnet die zulässige Anzahl von Anfragen pro Worker-Prozess. Standardmäßig entspricht die Anzahl der Edge Micro-Prozesse der Anzahl der CPUs auf dem Computer, auf dem Edge Micro installiert ist. Sie können die Anzahl der Worker-Prozesse jedoch konfigurieren, wenn Sie Edge Micro
mit der --processes Option im start Befehl starten. Wenn Spike Arrest beispielsweise bei 100 Anfragen in einem bestimmten Zeitraum ausgelöst werden soll und Sie Edge
Microgateway mit der Option --processes 4 starten, legen Sie allow: 25 in der
Spike Arrest-Konfiguration fest. Zusammenfassend lässt sich sagen, dass Sie den allow Konfigurationsparameter
auf den Wert „gewünschte Anzahl für Spike Arrest / Anzahl der Prozesse“ festlegen sollten.
Kontingent-Plug-in verwenden
Ein Kontingent gibt die Anzahl der Anfragenachrichten an, die eine App im Verlauf einer Stunde, eines Tages, einer Woche oder eines Monats an eine API senden darf. Wenn eine App das Kontingentlimit erreicht hat, werden nachfolgende API-Aufrufe abgelehnt. Weitere Informationen finden Sie unter Was ist der Unterschied zwischen Spike Arrest und Kontingent?.
Kontingent-Plug-in hinzufügen
Weitere Informationen finden Sie unter Plug-ins hinzufügen und konfigurieren.
Produktkonfiguration in Apigee Edge
Sie konfigurieren Kontingente in der Apigee Edge-Benutzeroberfläche, wo Sie API-Produkte konfigurieren. Sie müssen wissen welches Produkt den Microgateway-fähigen Proxy enthält, den Sie mit einem Kontingent einschränken möchten. Dieses Produkt muss einer Entwickler-App hinzugefügt werden. Wenn Sie API-Aufrufe ausführen, die mit Schlüsseln in der Entwickler-App authentifiziert werden, wird das Kontingent auf diese API-Aufrufe angewendet.
- Melden Sie sich im Organisationskonto Ihrer Apigee Edge-Organisation an.
- Öffnen Sie in der Edge-Benutzeroberfläche das Produkt, das mit dem Microgateway-fähigen Proxy verknüpft ist, auf den Sie das Kontingent anwenden möchten.
- Wählen Sie in der Benutzeroberfläche im Menü „Veröffentlichen“ die Option Produkte aus.
- Öffnen Sie das Produkt, das die API enthält, auf die Sie das Kontingent anwenden möchten.
- Klicken Sie auf Bearbeiten.
- Geben Sie im Feld „Kontingent“ das Kontingentintervall an. Beispiel: 100 Anfragen pro
Minute. Oder 50.000 Anfragen alle 2 Stunden.

- Klicken Sie auf Speichern.
- Achten Sie darauf, dass das Produkt einer Entwickler-App hinzugefügt wird. Sie benötigen die Schlüssel aus dieser App, um authentifizierte API-Aufrufe auszuführen.
Beispielkonfiguration für Kontingente
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
Konfigurationsoptionen für Kontingente
Fügen Sie das Element quotas der Konfigurationsdatei hinzu, um das Kontingent-Plug-in zu konfigurieren
Beispiel:
edgemicro:
home: ../gateway
port: 8000
max_connections: -1
max_connections_hard: -1
logging:
level: info
dir: /var/tmp
stats_log_interval: 60
plugins:
dir: ../plugins
sequence:
- oauth
- quota
quotas:
bufferSize:
hour: 20000
minute: 500
month: 1
default: 10000
useDebugMpId: true
failOpen: true
useRedis: true
redisHost: localhost
redisPort: 6379
redisDb: 1
...| Option | Beschreibung |
|---|---|
buffersize |
(Ganzzahl) Die Puffergröße, die für das angegebene Zeitintervall festgelegt werden soll. Zulässige Zeiteinheiten sind: hour, minute, day, week, month und default. (Hinzugefügt: Version 3.0.9) |
failOpen |
Wenn diese Funktion aktiviert ist und ein Fehler bei der Kontingentverarbeitung auftritt
oder die Anfrage „Kontingent anwenden“ an Edge die Remote-Kontingentzähler nicht aktualisieren kann, wird das Kontingent
nur anhand der lokalen Zählungen verarbeitet, bis die nächste erfolgreiche Remote-Kontingent
Synchronisierung erfolgt. In beiden Fällen wird im Anfrageobjekt das Flag quota-failed-open gesetzt. (Hinzugefügt: Version 3.0.9)
Wenn Sie die Funktion „Kontingent fehlgeschlagen“ aktivieren möchten, legen Sie die folgende Konfiguration fest: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
Setzen Sie dieses Flag auf true, um die Protokollierung der MP
(Message Processor)-ID
in Kontingentantworten zu aktivieren. (Hinzugefügt: Version 3.0.9)
Wenn Sie diese Funktion verwenden möchten, müssen Sie Ihren edgemicro: ... quotas: useDebugMpId: true ...
Wenn {
"allowed": 20,
"used": 3,
"exceeded": 0,
"available": 17,
"expiryTime": 1570748640000,
"timestamp": 1570748580323,
"debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
} |
useRedis |
(Boolesch) Setzen Sie den Wert auf true, um das Redis-Kontingentdatenbankmodul zu verwenden. Wenn
festgelegt ist, ist das Kontingent auf die Edge Microgateway-Instanzen beschränkt, die
eine Verbindung zu Redis herstellen. Andernfalls ist der Kontingentzähler global. Standardwert: false
(das Modul redis-volos-apigee wird verwendet) (Hinzugefügt: Version 3.0.10) |
redisHost |
Der Host, auf dem Ihre Redis-Instanz ausgeführt wird. Standardwert: 127.0.0.1 (Hinzugefügt: Version 3.0.10) |
redisPort |
Der Port der Redis-Instanz. Standardwert: 6379 (Hinzugefügt: Version 3.0.10) |
redisDb |
Die zu verwendende Redis-Datenbank. Standardwert: 0 (Hinzugefügt: Version 3.0.10) |
Kontingentbereich
Die Kontingentanzahl ist auf ein API-Produkt beschränkt. Wenn eine Entwickler-App mehrere Produkte hat, ist das Kontingent auf jedes einzeln beschränkt. Um diesen Bereich zu erreichen, erstellt Edge Microgateway eine Kontingent-ID, die eine Kombination aus "appName + productName" ist.
Kontingent-Plug-in testen
Wenn das Kontingent überschritten wird, wird dem Client der HTTP-Status 403 zusammen mit der folgenden Meldung zurückgegeben:
{"error": "exceeded quota"}Was ist der Unterschied zwischen Spike Arrest und Kontingent?
Es ist wichtig, das richtige Tool für die jeweilige Aufgabe auszuwählen. Mit Kontingentrichtlinien wird die Anzahl der Anfragenachrichten konfiguriert, die eine Client-App im Verlauf einer Stunde, eines Tages, einer Woche oder eines Monats an eine API senden darf. Die Kontingentrichtlinie erzwingt Nutzungsbeschränkungen für Clientanwendungen, die einen verteilten Zähler zur Verfügung stellen, der eingehende Anfragen erhöht.
Verwenden Sie eine Kontingentrichtlinie, um Geschäftsverträge oder SLAs mit Entwicklern und Partnern zu erzwingen, anstatt für die operative Trafficverwaltung. Mit einem Kontingent können Sie beispielsweise den Traffic für einen kostenlosen Dienst beschränken und gleichzeitig zahlenden Kunden uneingeschränkten Zugriff gewähren.
Spike Arrest schützt vor plötzlichen Spitzen im API-Traffic. Spike Arrest wird in der Regel verwendet, um mögliche DDoS- oder andere böswillige Angriffe abzuwehren.