Lo stato di Google App Engine controlla l’app di spam

Ho distribuito un’app di nodejs in esecuzione sul runtime Flex di Google App Engine utilizzando la seguente configurazione di app.yaml :

 runtime: nodejs env: flex health_check: enable_health_check: True check_interval_sec: 20 timeout_sec: 4 unhealthy_threshold: 2 healthy_threshold: 2 

Secondo la documentazione del controllo dello stato di salute, i controlli di /_ah/health dovrebbero colpire l’ /_ah/health ogni 20 secondi. Tuttavia, ho notato che la mia app viene sottoposta a spamming con questi controlli di integrità più volte al secondo, anche se l’app risponde con 200 codice di stato:

inserisci la descrizione dell'immagine qui

Qualche idea sul perché questo sta accadendo?

Sfortunatamente sembra che abbiamo un bug sui nostri documenti. Oggi, infatti, le app vengono sottoposte a controlli sanitari abbastanza frequenti.

Il motivo è molte volte, ma in generale ogni VM verrà colpita da 3 * 2 diversi controlli di integrità all’intervallo di ricorrenza specificato (di default, molto aggressivo, 1 secondo). La ragione di questo è 2 tipi di controllo dello stato di salute (autohealer e LB) e 3 di ciascuno per motivi di disponibilità.

Detto questo, stiamo attualmente lavorando a una nuova forma di controlli di integrità che verrà rilasciata molto presto e che dovrebbe risolvere questo e altri problemi con il comportamento di controllo dello stato esistente (almeno rendere i gestibili più gestibili e dare più opzioni di ottimizzazione agli utenti) .

Rimanete sintonizzati!

Non ho una soluzione al problema di root. Ma se lo spamming sta rendendo imansible usare il log per lo scopo previsto, come per me, ecco un lavoro da risolvere:

  1. Abilita i ‘Filtri log avanzati’ (la piccola freccia in giù accanto al campo di ricerca in Stackdriver Logging)

  2. Aggiungi questo alla query di ricerca

    NOT textPayload : (health)

Eseguo anche NodeJS in GAE Flex env. Anche i controlli dello stato stavano inviando spam al log del server. Le seguenti poche cose mi hanno aiutato a ridurle:

  1. Anche se la documentazione di google ( https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#health_checks ) dice che la configurazione di healthcheck non è richiesta, ho impostato comunque la ridurre la frequenza delle chiamate di controllo sanitario.
  2. Utilizzare il “Filtro log avanzato” per rimuovere la registrazione del controllo sanitario dalla visualizzazione se sono troppo fastidiosi.
  3. La documentazione di Google ( https://cloud.google.com/appengine/docs/flexible/nodejs/how-instances-are-managed ) dice che non è necessario implementare un gestore per la verifica dello stato di salute, l’ho implementato esplicitamente in ogni caso. Ho aggiunto un gestore per l’endpoint “/ _ah / healthcheck” nel server express.js e ho il percorso nella parte superiore del file app.js, quindi le richieste di healthcheck vengono immediatamente soddisfatte. Ciò ha contribuito a ridurre alcuni rumori causati dalle richieste di controllo dello stato di accesso nella logica espressa delle app.

Usa il filtro avanzato e pronuncia “NON _ah / salute”.

Anche la rimozione del registro nginx.request aiuterà.