Utilizzare i plug-in

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Edge Microgateway versione 3.3.x

Pubblico

Questo argomento è rivolto agli operatori Edge Microgateway che vogliono utilizzare plug-in esistenti che vengono installati con il microgateway. Inoltre, illustra l'arresto dei picchi e i plug-in delle quote (entrambi sono inclusi nell'installazione). Se sei uno sviluppatore che vuole sviluppare nuove come plug-in, consulta l'articolo sullo sviluppo personalizzati.

Che cos'è un plug-in Edge Microgateway?

Un plug-in è un modulo Node.js che aggiunge funzionalità a Edge Microgateway. Moduli plug-in seguono un pattern coerente e vengono archiviati in una posizione nota a Edge Microgateway, consentendo un microgateway per scoprirli e caricarli automaticamente. Edge Microgateway include diversi e anche creare plug-in personalizzati, come spiegato nella sezione Sviluppare plug-in personalizzati.

Plug-in esistenti in bundle con Edge Microgateway

Durante l'installazione vengono forniti diversi plug-in in Edge Microgateway. Le seguenti descrive alcuni dei plug-in di uso più comune.

Plug-in Abilitato per impostazione predefinita Descrizione
Analytics Invia i dati di analisi da Edge Microgateway ad Apigee Edge.
oauth Aggiunge il token OAuth e la convalida delle chiavi API a Edge Microgateway. Consulta la sezione Impostazioni e configurare Edge Microgateway.
quota No Applica la quota alle richieste a Edge Microgateway. Utilizza Apigee Edge per archiviare e gestire le quote. Consulta Utilizzo del plug-in della quota.
arresto No Protegge da picchi di traffico e attacchi DoS. Consulta la sezione Utilizzare il plug-in di arresto dei picchi.
intestazione-maiuscola No Un proxy di esempio commentato inteso come guida per aiutare gli sviluppatori a scrivere plug-in personalizzati. Vedi Plug-in di esempio per Edge Microgateway.
accumulate-request No Accumula i dati della richiesta in un singolo oggetto prima di passarli al successivo nella catena di plug-in. Utile per scrivere plug-in di trasformazione che devono operare su un singolo oggetto di contenuto della richiesta accumulato.
accumulate-response No Accumula i dati di risposta in un singolo oggetto prima di passarli a quello successivo nella catena di plug-in. Utile per scrivere plug-in di trasformazione che devono operare su un singolo oggetto di contenuto di risposta accumulata.
trasforma in maiuscolo No Trasforma i dati di richiesta o risposta. Questo plug-in rappresenta una best practice di un plug-in di trasformazione. Il plug-in di esempio esegue una trasformazione banale (converte i dati della richiesta o della risposta in lettere maiuscole); ma possono essere facilmente adattati eseguire altri tipi di trasformazioni, ad esempio da XML a JSON.
json2xml No Trasforma i dati di richieste o risposte in base alle intestazioni di tipo Accetta o Content-Type. Per dettagli, fai riferimento al plug-in documentazione in GitHub.
memoria-quota No Applica la quota alle richieste a Edge Microgateway. Archivia e gestisce le quote in la memoria.
controllo di integrità No Restituisce informazioni sul processo Edge Microgateway: utilizzo della memoria, utilizzo della CPU, E così via. Per usare il plug-in, chiama l'URL /healthcheck sul tuo perimetro Istanza microgateway. Questo plug-in è pensato come esempio per di implementare il tuo plug-in per il controllo di integrità.

Dove trovare i plug-in esistenti

I plug-in esistenti in bundle con Edge Microgateway si trovano qui, dove [prefix] è la directory del prefisso npm. Vedi Dov'è installato Edge Microgateway se non riesci a trovare questa directory.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Aggiunta e configurazione di plug-in

Per aggiungere e configurare i plug-in, segui questo pattern:

  1. Arresta il microgateway Edge.
  2. Apri un file di configurazione di Edge Microgateway. Per maggiori dettagli, vedi Modifiche alla configurazione delle opzioni.
  3. Aggiungi il plug-in all'elemento plugins:sequence del file di configurazione, come segue. I plug-in vengono eseguiti nell'ordine in cui appaiono nell'elenco.
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
  1. Configura il plug-in. Alcuni plug-in hanno parametri facoltativi che possono essere configurati nel di configurazione del deployment. Ad esempio, puoi aggiungere la stanza seguente per configurare l'arresto dei picchi . Consulta l'articolo Utilizzare il plug-in di arresto dei picchi per ulteriori informazioni.
    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
    
  1. Salva il file.
  2. Riavvia o ricarica Edge Microgateway, a seconda del file di configurazione modificato.

Configurazione specifica per il plug-in

Puoi eseguire l'override dei parametri del plug-in specificati nel file di configurazione creando un specifica per il plug-in in questa directory:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

dove [prefix] è la directory del prefisso npm. Vedi Dov'è installato Edge Microgateway se non riesci a trovare questa directory.

plugins/<plugin_name>/config/default.yaml. Ad esempio, puoi inserire questo blocco in plugins/spikearrest/config/default.yaml, che sostituiranno qualsiasi altro di configurazione.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Usare il plug-in di arresto dei picchi

Il plug-in per l'arresto dei picchi protegge dai picchi di traffico. Limita il numero di richieste elaborati da un'istanza Edge Microgateway.

Aggiunta del plug-in di arresto dei picchi

Consulta la sezione Aggiunta e configurazione di plug-in.

Configurazione di esempio per arresto dei picchi

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

Opzioni di configurazione per arresto dei picchi

  • timeUnit: la frequenza con cui viene reimpostata la finestra di esecuzione dell'arresto dei picchi. Valori validi sono il secondo o il minuto.
  • allow: il numero massimo di richieste da consentire durante il valore timeUnit. Consulta Inoltre, se esegui più istanze di processi.
  • bufferSize: (facoltativo, valore predefinito = 0) se bufferSize > 0, picco di arresto memorizza questo numero di richieste in un buffer. Non appena viene visualizzata la "finestra" di esecuzione successiva si verifica, le richieste presenti nel buffer verranno elaborate per prime. Consulta anche la sezione Aggiunta di un buffer.

Come funziona l'arresto dei picchi?

L'arresto dei picchi è un modo per proteggersi in generale dai picchi di traffico e non come un per limitare il traffico a un numero specifico di richieste. Le tue API e il tuo backend possono gestire quantità di traffico e il criterio di arresto dei picchi ti aiuta a ridurre il traffico verso gli importi generali desiderato.

Il comportamento di arresto del picco di runtime è diverso da ciò che ci si potrebbe aspettare di vedere nel al minuto o al secondo inseriti.

Ad esempio, supponi di specificare una frequenza di 30 richieste al minuto, come segue:

spikearrest:
   timeUnit: minute
   allow: 30

Durante il test, potresti pensare di poter inviare 30 richieste in un secondo, a condizione che vengano inviate entro un minuto. Tuttavia, l'impostazione non viene applicata in questo modo. Se ci pensi, 30 richieste entro un periodo di 1 secondo potrebbe essere considerato un piccolo picco in alcuni ambienti.

Che cosa succede effettivamente, allora? Per prevenire comportamenti simili a picchi, l'arresto dei picchi agevola le dividendo le impostazioni in intervalli più piccoli, come segue:

Tariffe al minuto

Le tariffe al minuto vengono semplificate in intervalli di secondi consentiti per le richieste. Ad esempio, 30 di richieste al minuto vengono semplificate in questo modo:

60 secondi (1 minuto) / 30 = intervalli di 2 secondi o circa 1 richiesta ogni 2 secondi. R una seconda richiesta entro 2 secondi non andrà a buon fine. Inoltre, la 31a richiesta entro un minuto non andrà a buon fine.

Tariffe al secondo

Le frequenze al secondo vengono semplificate nelle richieste consentite in intervalli di millisecondi. Ad esempio: 10 richieste al secondo vengono semplificate in questo modo:

1000 millisecondi (1 secondo) / 10 = intervalli di 100 millisecondi o circa 1 richiesta consentita ogni 100 millisecondi . Una seconda richiesta entro 100 ms avrà esito negativo. Inoltre, un'undicesima richiesta al secondo non riesce.

Quando viene superato il limite

Se il numero di richieste supera il limite nell'intervallo di tempo specificato, l'arresto dei picchi restituisce questo messaggio di errore con stato HTTP 503:

{"error": "spike arrest policy violated"}

Aggiunta di un buffer

Hai la possibilità di aggiungere un buffer al criterio. Supponiamo che tu abbia impostato il buffer su 10. Quando superi l'arresto dei picchi, l'API non restituisce subito un errore limite. Le richieste vengono invece memorizzate nel buffer (fino al numero specificato) e le richieste memorizzate nel buffer elaborati non appena è disponibile la successiva finestra di esecuzione appropriata. Il valore predefinito bufferSize è 0.

Se esegui più Edge Micro processi

Il numero di richieste consentite dipende dal numero di processi worker Edge Micro che sono in esecuzione. L'arresto dei picchi calcola il numero consentito di richieste per processo worker. Per impostazione predefinita, il numero di processi Edge Micro equivale al numero di CPU sulla macchina in cui è installato. Tuttavia, puoi configurare il numero di processi worker quando avvii Edge Micro utilizzando l'opzione --processes nel comando start. Ad esempio, se vuoi che l'arresto dei picchi si attivi per 100 richieste in un determinato periodo di tempo e se avvii Edge Microgateway con l'opzione --processes 4, quindi imposta allow: 25 nel configurazione dell'arresto dei picchi. Riassumendo, la regola empirica è impostare la configurazione allow sul valore "conteggio / numero di processi di arresto dei picchi desiderato".

Utilizzare il plug-in della quota

Una quota specifica il numero di messaggi di richiesta che un'app è autorizzata a inviare a un'API nel corso di un'ora, un giorno, una settimana o un mese. Quando un'app raggiunge il limite di quota, le successive Le chiamate API vengono rifiutate. Consulta anche Qual è la differenza tra arresto e quota di picco?

Aggiunta del plug-in della quota

Consulta la sezione Aggiunta e configurazione di plug-in.

Configurazione dei prodotti in Apigee Dispositivi periferici

Puoi configurare le quote nella UI di Apigee Edge in cui configuri i prodotti API. Devi sapere che contiene il proxy microgateway-aware che vuoi limitare con una quota. Questo a un'app sviluppatore. Quando effettui chiamate API autenticate utilizzando nell'app per sviluppatori, la quota verrà applicata a queste chiamate API.

  1. Accedi al tuo account organizzazione Apigee Edge.
  2. Nella UI di Edge, apri il prodotto associato al proxy microgateway-aware a cui a cui vuoi applicare la quota.
    1. Nella UI, seleziona Prodotti dal menu Pubblica.
    2. Apri il prodotto contenente l'API a cui vuoi applicare la quota.
    3. Fai clic su Modifica.
    4. Specifica l'intervallo di quota nel campo Quota. Ad esempio, 100 richieste ogni un minuto. Oppure 50.000 richieste ogni 2 ore.

  1. Fai clic su Salva.
  2. Assicurati che il prodotto sia aggiunto a un'app sviluppatore. Ti serviranno le chiavi di questa app per effettuare di chiamate API autenticate.

Configurazione di esempio per la quota

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

Opzioni di configurazione per la quota

Per configurare il plug-in quota, aggiungi l'elemento quotas al file di configurazione. come mostrato nell'esempio seguente:

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
    isHTTPStatusTooManyRequestEnabled: true
...
Opzione Descrizione
bufferSize

(Numero intero) La configurazione bufferSize consente di regolare la frequenza di Edge Microgateway sincronizza il conteggio delle quote con Apigee Edge. Per comprendere bufferSize, considera la seguente configurazione di esempio:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

Per impostazione predefinita, il microgateway sincronizza il suo contatore delle quote con Apigee Edge ogni 5 secondi se l'intervallo di quota è impostato su "minute". La configurazione precedente indica che se l'intervallo di quota è impostato nel prodotto API su "minuto", Edge Il Microgateway si sincronizzerà con Edge per ottenere il conteggio delle quote attuali dopo ogni 500 richieste o dopo 5 secondi, a seconda dell'evento che si verifica per primo. Per ulteriori informazioni, consulta Informazioni su come vengono conteggiate le quote.

Ora consentita le unità di misura sono: minute, hour, day, week, month e default.

isHTTPStatusTooManyRequestEnabled

Configura il plug-in della quota in modo che restituisca uno stato di risposta HTTP 429 anziché lo stato 403 in caso di violazione della quota.

Valore predefinito: false. Per impostazione predefinita, o se il flag è impostato su false, quota restituisce lo stato HTTP 403 quando viene superata la quota.

Se il flag viene impostato su true, la quota restituisce lo stato HTTP 429 quando viene superata la quota.

Per modificare lo stato restituito HTTP predefinito in 429, utilizza la seguente configurazione:

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
...
failOpen Quando questa funzionalità è abilitata, se si verifica un errore di elaborazione della quota o se la quota viene applicata a Edge non riesce ad aggiornare i contatori delle quote remoti, la quota verrà elaborato in base ai conteggi locali solo fino alla successiva quota remota riuscita la sincronizzazione. In entrambi i casi, viene impostato un flag quota-failed-open dell'oggetto della richiesta.

Per abilitare la quota "fail open" imposta la seguente configurazione:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId Imposta questo flag su true per abilitare il logging del file MP ID (processore messaggi) nelle risposte delle quote.

Per utilizzare questa funzionalità, devi impostare la seguente configurazione:

edgemicro:
...
quotas:
  useDebugMpId: true
...

Se viene impostato useDebugMpId, le risposte della quota da Edge conterranno l'ID MP e verrà registrato da Edge Microgateway. Ad esempio:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis Se impostato su true, il plug-in utilizza Redis per l'archivio di supporto della quota. Per maggiori dettagli, consulta Utilizzo di un archivio di backup Redis per la quota.

Informazioni su come vengono conteggiate le quote

Per impostazione predefinita, il microgateway sincronizza il suo contatore delle quote con Apigee Edge ogni 5 secondi se l'intervallo di quota è impostato su "minute". Se l'intervallo è impostato su un livello superiore a "minuto", ad esempio "settimana" o "mese", il periodo di aggiornamento predefinito è di 1 minuto.

È importante notare che specifichi gli intervalli di quota nei prodotti API definiti su Apigee Edge. Gli intervalli di quota specificano quante richieste sono consentite per un minuto, un'ora, un giorno, una settimana o un mese. Ad esempio, il prodotto A potrebbe avere un intervallo di quota 100 richieste al minuto e il Prodotto B potrebbe avere un intervallo di quota di 10.000 richieste all'ora.

YAML del plug-in quota di Edge Microgateway configurazione non imposta la quota interval; ma offre un modo per regolare la frequenza con cui un gateway Edge Microgateway l'istanza sincronizza la propria quota con Apigee Edge.

Ad esempio, supponiamo che esistano tre prodotti API definiti in Apigee Edge con intervalli di quota specificati:

  • Il prodotto A ha una quota di 100 richieste al minuto
  • Il prodotto B ha una quota di 5000 richieste all'ora
  • Il prodotto C ha una quota di 1000.000 richieste al mese

Tenendo a mente queste impostazioni delle quote, come dovrebbe fare il plug-in quota di Edge Microgateway devono essere configurate? La best practice consiste nel configurare Edge Microgateway con intervalli di sincronizzazione che sono inferiori agli intervalli di quota definiti nei prodotti API. Ad esempio:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

Questa configurazione definisce i seguenti intervalli di sincronizzazione per i prodotti API descritti in precedenza:

  • Il prodotto A è impostato sul "minuto" intervallo di tempo. Edge Microgateway si sincronizzerà con Edge dopo ogni 50° richiesta o ogni 5 secondi, a seconda dell'evento che si verifica per primo.
  • Il prodotto B è impostato sull'"ora" intervallo di tempo. Edge Microgateway si sincronizzerà con Edge dopo ogni 2000 richieste o 1 minuto, a seconda dell'evento che si verifica per primo.
  • Il prodotto C è impostato sul "mese" intervallo di tempo. Edge Microgateway si sincronizzerà con Edge dopo per ogni singola richiesta o per 1 minuto, a seconda dell'evento che si verifica per primo.

Ogni volta che un'istanza del microgateway si sincronizza con Edge, conteggio quota è impostato sul conteggio della quota recuperata.

Le impostazioni di bufferSize ti consentono di modificare il modo in cui viene impostato il conteggio della quota sincronizzato con Edge. In situazioni di traffico elevato, le impostazioni di bufferSize Consenti la sincronizzazione del contatore di buffer prima che venga attivata la sincronizzazione predefinita basata sul tempo.

Informazioni sull'ambito della quota

Il conteggio delle quote è limitato a un ambiente di un'organizzazione. Per raggiungere questo ambito, Edge Microgateway crea un identificatore della quota che è una combinazione di "org + env + appName + productName".

Utilizzo di un archivio di backup Redis per la quota

Per utilizzare un archivio di backup Redis per la quota, utilizza la stessa configurazione utilizzata per Funzionalità di sincronizzazione. Di seguito è riportata la configurazione di base necessaria per utilizzare Redis per quota di spazio di archiviazione:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
Per maggiori dettagli sui parametri edgemicro.redis*, consulta Utilizzo del sincronizzatore.

Test del plug-in della quota

Quando la quota viene superata, viene restituito al client lo stato HTTP 403, insieme messaggio seguente:

{"error": "exceeded quota"}

Qual è la differenza tra l'arresto dei picchi e la quota?

È importante scegliere lo strumento giusto per il lavoro da svolgere. Configurazione dei criteri per le quote Il numero di messaggi di richiesta che un'app client è autorizzata a inviare a un'API nel corso del corso di un'ora, un giorno, una settimana o un mese. Il criterio per le quote applica i limiti di consumo sulle app client e mantenere un contatore distribuito che rilevi le richieste in entrata.

Utilizza un criterio per le quote per applicare contratti aziendali o SLA (accordi sul livello del servizio) con sviluppatori e partner, anziché che per la gestione operativa del traffico. Ad esempio, una quota potrebbe essere utilizzata per limitare il traffico un servizio senza costi, pur consentendo l'accesso completo ai clienti paganti.

Utilizza l'arresto dei picchi per proteggerti da picchi improvvisi nel traffico delle API. Di solito, l'arresto dei picchi utilizzate per contrastare possibili attacchi DDoS o altri attacchi dannosi.