Utilizzo del monitoraggio e della registrazione di Stackdriver per ottenere una migliore visibilità sullo stato della tua applicazione

In questo codelab, imparerai a utilizzare Stackdriver per monitorare e rivedere le metriche e i log delle prestazioni per i servizi Google Cloud e le VM.

In questo codelab imparerai a:

  • Acquisisci familiarità con la home page di Stackdriver.
  • Comprendere dashboard e grafici.
  • Crea un controllo di uptime.
  • Crea un criterio di avviso semplice.
  • Lavorare con gli incidenti di avviso.
  • Naviga nel visualizzatore log.

Qual è la tua esperienza con Stackdriver?

Monitoraggio: che cos'è? Non ho mai utilizzato Stackdriver prima d'ora, ma ho esperienza nel monitoraggio delle applicazioni. Ho provato Stackdriver, ma non ho approfondito.

Configurazione dell' ambiente self-paced

Se non hai ancora un Account Google (Gmail o Google Apps), devi crearne uno.

Accedi alla console di Google Cloud Platform (console.developers.google.com) e crea un nuovo progetto:

Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud. In questo codelab verrà chiamato PROJECT_ID.

Molto importante: visita la pagina Compute Engine per avviare l'abilitazione dell'API Compute Engine:

e poi: Compute → Compute Engine → Istanze VM

La prima volta che esegui questa operazione, viene visualizzata una schermata con il messaggio "Compute Engine si sta preparando. L'operazione potrebbe richiedere uno o più minuti". Puoi continuare ad accedere a Google Cloud Shell di seguito, ma non puoi creare VM finché questa operazione non viene completata.

Svolgerai la maggior parte del lavoro da Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud. Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di sviluppo di cui avrai bisogno e offre una home directory permanente da 5 GB. Apri Google Cloud Shell facendo clic sull'icona in alto a destra dello schermo:

Infine, utilizzando Cloud Shell, imposta la zona e la configurazione del progetto predefinite:

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

Puoi anche scegliere zone diverse. Ulteriori informazioni sulle zone sono disponibili nella documentazione sulle aree geografiche e le zone.

In questa sezione creerai istanze Compute Engine che eseguono nginx+ utilizzando Cloud Launcher. Avremo bisogno di queste istanze per dimostrare il monitoraggio e gli avvisi. Puoi creare un'istanza Compute Engine dalla console grafica o dalla riga di comando. Questo lab ti guiderà attraverso le righe di comando.

Ora iniziamo.

Utilizza gcloud per impostare l'ID progetto:

$ gcloud config set project PROJECT_ID



Poi, assicurati di copiare e incollare questo testo così com'è:

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

Verranno visualizzati messaggi di avviso relativi alle dimensioni del disco e poi il seguente output man mano che vengono create le VM:

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

Prendi nota di EXTERNAL_IP, ti servirà in seguito.

Il completamento di queste operazioni potrebbe richiedere alcuni minuti.

Per impostazione predefinita, Google Cloud Platform consente solo pochi accessi alle porte. Poiché accederemo presto a Nginx, attiviamo la porta 80 nella configurazione del firewall:

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

Verrà creata una regola firewall denominata allow-80 con i seguenti valori predefiniti:

  • L'elenco dei blocchi di indirizzi IP autorizzati a effettuare connessioni in entrata (--source-ranges) è impostato su 0.0.0.0/0 (Ovunque).
  • L'elenco dei tag istanza che indicano l'insieme di istanze sulla rete che possono accettare connessioni in entrata è impostato su nessuno, il che significa che la regola firewall è applicabile a tutte le istanze.

Esegui gcloud compute firewall-rules create --help per visualizzare tutti i valori predefiniti.

Dopo aver creato la prima istanza, puoi verificare se nginx è in esecuzione e accessibile andando alla pagina http://EXTERNAL_IP/, dove EXTERNAL_IP è l'IP pubblico di nginx-plus-1 e dovresti essere in grado di visualizzare la pagina di Nginx:

Puoi anche visualizzare le istanze in esecuzione digitando:

$ gcloud compute instances list

Google Stackdriver è una potente soluzione di monitoraggio che integra vari strumenti per facilitare il monitoraggio e l'analisi delle applicazioni basate sul cloud. Puoi utilizzare Stackdriver per visualizzare le metriche delle prestazioni, impostare e ricevere avvisi, aggiungere metriche e dashboard personalizzate, visualizzare log e tracce e configurare dashboard integrate, tutto da un'unica posizione centrale.

I passaggi successivi ti guideranno nell'attivazione di Stackdriver e nell'utilizzo della console.

Per impostazione predefinita, Google Stackdriver è attualmente in versione beta e non è abilitato per i nuovi progetti. Per attivarlo, vai alla barra di navigazione a sinistra e fai clic su "Monitoraggio" (potrebbe essere necessario scorrere verso il basso per trovarlo).

Nella schermata successiva, fai clic su "Attiva monitoraggio" e attendi un minuto per l'attivazione.

Una volta attivato, i contenuti cambieranno e vedrai il testo riportato di seguito. Fai clic su "Vai a Monitoraggio" per iniziare a esplorare. Dovrai accedere con Google e poi passare alla console Stackdriver per il tuo progetto, dove potrai eseguire e analizzare le attività correlate al monitoraggio.

Familiarizziamo con la home page.

  1. Il menu in alto: utilizzalo per selezionare diverse visualizzazioni / contesti e accedere a tutte le azioni di Stackdriver disponibili.
  2. Dashboard: si tratta di dashboard di metriche ed eventi monitorati. Inizialmente si tratta di dashboard di sistema predefinite basate sulle risorse del tuo progetto, ma puoi anche creare dashboard personalizzate.
  3. Controlli di uptime: questi controllano periodicamente la disponibilità delle risorse rivolte agli utenti e attivano gli avvisi quando queste diventano non disponibili.
  4. Elenco dei gruppi: i gruppi vengono utilizzati per raggruppare le risorse che condividono proprietà e caratteristiche in modo che possano essere gestite come gruppo o cluster per attività quali il monitoraggio e gli avvisi. Questi possono essere rilevati automaticamente o definiti dall'utente.
  5. Riquadro Incidenti: il riquadro Incidenti monitora gli incidenti con avvisi. Non vedrai nulla qui finché non avrai definito le policy di avviso.
  6. Il log eventi elenca gli eventi correlati alle risorse monitorate, ad esempio modifiche alle istanze, eventi di incidenti e così via.

Prima di esaminare i grafici, noterai che la maggior parte delle linee si è appiattita dopo l'inizializzazione iniziale dell'istanza. Vediamo se riusciamo a "appiattirne" alcune generando un carico su una delle istanze.

Per connetterti all'istanza tramite SSH dalla riga di comando di Cloud Shell:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

È tutto. Piuttosto semplice. In produzione, assicurati di inserire una passphrase. Tieni presente, inoltre, che potrebbe non esserti chiesto di aggiungere una passphrase.

In alternativa, puoi anche accedere all'istanza tramite SSH direttamente dalla console, andando su Compute Engine > Istanze VM e facendo clic su SSH.

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

Ora viene caricata la CPU dell'istanza nginx-plus-1. Possiamo tornare alla scheda della dashboard di Stackdriver e iniziare a esplorare, ma prima di tornare alla pagina delle dashboard di Stackdriver, cogliamo l'occasione per installare l'agente Cloud Logging.

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

Tieni presente che durante l'installazione in produzione devi controllare l'hash SHA-256. Puoi trovare maggiori informazioni sulla procedura di installazione qui.

Ora è il momento di tornare alla console Google Stackdriver.

Prenditi il tempo necessario per acquisire familiarità con la navigazione e l'utilizzo di dashboard e grafici. Passa con il mouse sopra le linee del grafico e guarda cosa succede. Modifica la durata del tempo per i grafici (i controlli si trovano nell'angolo in alto a destra). Puoi sempre tornare alla visualizzazione "home page" facendo clic sul logo di Stackdriver nell'angolo in alto a sinistra della console.

Esaminiamo il grafico di utilizzo della CPU:

Alcuni elementi del grafico sono:

  • La linea evidenziata è la metrica attualmente selezionata (un grafico può mostrare più metriche).
  • La linea orizzontale grigia rappresenta il punto nel tempo a cui punta il cursore del mouse.
  • In basso è riportato il nome della risorsa, insieme al valore nel momento selezionato.
  • Nella parte superiore del grafico sono presenti punti colorati che rappresentano gli eventi descritti in dettaglio nel log eventi. Puoi fare clic su questi elementi per visualizzare un elenco di eventi. Nota: potresti non visualizzarne nessuno se non hai ancora eventi.
  • In alto a destra del grafico sono presenti tre controlli (da sinistra a destra):
  • Attiva/disattiva la visualizzazione di un elenco di metriche sotto il grafico
  • Attiva/Disattiva modalità schermo intero
  • Menu con varie funzionalità (devi provare la modalità Raggi X quando hai un grafico molto dettagliato). Prendi nota dell'opzione"Visualizza log", ci torneremo più avanti.

I controlli di uptime ti permettono di verificare rapidamente l'efficienza operativa di pagine web, istanze o gruppi di risorse. Ciascun controllo configurato viene contattato a intervalli regolari da diverse località a livello globale. I controlli di uptime possono essere utilizzati come condizioni nelle definizioni dei criteri di avviso.

Puoi visualizzare i controlli e il loro stato selezionando Avvisi > Controlli di uptime nel menu in alto. Troverai anche le sezioni Controlli di uptime nella dashboard di Google Stackdriver e nelle pagine dedicate a risorse specifiche. Per i controlli di uptime che riguardano un gruppo di risorse, puoi espandere il controllo per mostrare lo stato dei singoli membri del gruppo.

Creiamo un controllo di uptime. Trova il widget dei controlli di uptime nella schermata iniziale di Stackdriver:

Verrà visualizzato un nuovo popup. Possiamo configurare controlli di uptime per una singola risorsa o un gruppo di risorse, utilizzare intestazioni e payload personalizzati, aggiungere autenticazione e altre opzioni. Per ora, utilizzeremo un controllo HTTP predefinito che controllerà il gruppo nginx creato automaticamente ogni minuto.

Utilizza lo screenshot riportato di seguito per compilare le diverse opzioni:

Fai clic sul pulsante "Test" per assicurarti che gli endpoint siano raggiungibili (dovresti visualizzare tre segni di spunta verdi) e fai clic su Salva. Nota: se non ricevi risposte positive, puoi comunque proseguire con il lab, in quanto potrebbe trattarsi solo di un problema di tempistica del controllo del test.

Dopodiché, visualizzerai la casella "Controllo di uptime creato" e ti verrà chiesto se vuoi creare un criterio di avviso per questo controllo. Lo faremo nella sezione successiva, quindi non fare ancora clic su nulla.

Puoi configurare criteri di avviso per definire le condizioni che determinano se i tuoi servizi e piattaforme cloud funzionano normalmente. Cloud Monitoring fornisce molti tipi diversi di metriche e controlli di integrità che puoi utilizzare nei criteri.

Quando le condizioni di un criterio di avviso vengono violate, viene creato un incidente, che viene visualizzato nella sezione Incidenti della console Stackdriver. I tecnici che intervengono possono confermare la ricezione della notifica e possono chiudere l'incidente una volta che il problema è stato risolto.

Fai clic su "Crea criterio di avviso" e passiamo alla configurazione del criterio.

Ora dovresti vedere questa schermata:

Inserisci un nome per il criterio: "Controllo di uptime per il gruppo nginx".

Ora, nella sezione del metodo di notifica, fai clic su "Aggiungi notifica".

Inserisci l'indirizzo email associato al tuo account Google Cloud. Scorri fino in fondo alla schermata e fai clic su "Salva norma".

Torna alla home page di Stackdriver (facendo clic sul logo nell'angolo in alto a sinistra).

Ora dovresti vedere il controllo di uptime che hai creato nella sezione dei controlli di uptime della dashboard. Per ora lo stato dovrebbe essere verde.

Scorri verso il basso fino al log eventi e dovresti visualizzare l'evento di creazione di una policy di avviso.

Ora creiamo qualche problema :)

Vediamo cosa succede quando arrestiamo il servizio Nginx.

Esegui di nuovo SSH nell'istanza dalla riga di comando di Cloud Shell:

$ gcloud compute ssh nginx-plus-1

e digita:

yourusername@nginx-plus-1:~$ sudo service nginx stop

Ora il controllo di uptime che abbiamo creato dovrebbe non riuscire. Di conseguenza, verrà creato un incidente e verrà inviata un'email di notifica di avviso all'indirizzo che hai inserito sopra. Affinché la condizione venga rilevata, è necessario un minuto (ricordi la durata di un minuto durante l'impostazione del controllo di uptime?). Andiamo quindi a esaminare la pagina del gruppo nginx.

Esistono diversi modi per accedere alla dashboard di un gruppo di risorse specifico:

  1. Puoi fare clic sul nome del gruppo nella home page. Viene visualizzata una dashboard creata appositamente per monitorare le risorse del gruppo. Puoi anche personalizzare questa dashboard.



  2. Dal menu di primo livello, seleziona Gruppi e poi trova il tuo gruppo specifico.

Ora, fai clic sul pulsante di aggiornamento automatico per assicurarti che le dashboard vengano aggiornate automaticamente. L'icona diventerà rossa.

Ora stai visualizzando una dashboard specifica per il gruppo nginx creato automaticamente. Sul lato destro sono presenti grafici di diverse metriche chiave relative al gruppo. In altre parole, questi grafici mostrano le metriche relative a tutte le risorse del gruppo nginx (le tre VM nginx+ che abbiamo creato in precedenza).

Sul lato sinistro sono visualizzate varie informazioni relative al gruppo:

  • Stato dell'incidente
  • Controlli di uptime
  • Log eventi
  • Un elenco di risorse (istanze, volumi e così via)

Tieni presente che questi si riferiscono solo al gruppo, pertanto il log eventi elenca solo gli eventi relativi al gruppo.

Puoi fare clic su risorse o sottogruppi diversi per passare alle rispettive dashboard specifiche. Ad esempio, se fai clic su nginx-plus-1, si aprirà una dashboard composta solo da metriche e controlli relativi a questa istanza. Prova subito:

Gli incidenti Stackdriver vengono aperti quando un insieme di condizioni di avviso soddisfa determinati criteri. Nel nostro caso, abbiamo impostato un avviso per il controllo di uptime di nginx, che attualmente non viene superato su nginx-plus-1. Gli incidenti ti aiutano a monitorare le condizioni attuali e a collaborare con altri membri del team quando lavori sui problemi.

Riconosciamo l'incidente, comunicando agli altri membri del team che stiamo indagando:

Tieni presente che lo stato dell'incidente passa da Aperto a Confermato. La situazione è ancora in corso (le condizioni del criterio di avviso sono ancora violate), ma stai segnalando ai membri del team che ti stai occupando del problema. Questa operazione verrà registrata anche nel log eventi.

Gli incident possono essere risolti manualmente o automaticamente. Per visualizzare quest'ultimo, esegui l'accesso SSH a nginx-plus-1 e risolvi il problema:

yourusername@nginx-plus-1:~$ sudo service nginx start

Ora l'incidente verrà risolto automaticamente una volta che il controllo dell'uptime tornerà alla normalità. Puoi anche risolverlo autonomamente selezionando la voce di menu Risolvi.

Cloud Logging è una soluzione di logging as a service che offre una posizione centrale e comoda per visualizzare ed eseguire query sui log provenienti da più origini. Puoi anche utilizzare i log per esportarli in altre destinazioni (Google Cloud Storage, Google BigQuery o Google Cloud Pub/Sub).

Per accedere al visualizzatore di log Cloud, scegli questa opzione dal menu a sinistra della console Cloud:

Verrà visualizzato il visualizzatore di log, in cui puoi utilizzare query predefinite o creare e salvare query personalizzate, ottenere un flusso live di log provenienti da più risorse nel deployment cloud, creare metriche dai log, esportare e molto altro ancora.

Esistono alcuni controlli utili per filtrare rapidamente le informazioni pertinenti:

  1. Filtra per tipi di risorse
  2. Filtra in base a tipi di log specifici delle risorse selezionate
  3. Filtrare livelli di log specifici
  4. Filtra in base a date specifiche per esaminare i problemi passati
  5. Attiva/disattiva lo streaming continuo
  6. Una casella di ricerca per testo, etichetta o espressione regolare

Ora esercitiamoci a restringere la ricerca a log specifici.

Nel selettore del tipo di risorsa (1 nello screenshot), seleziona Compute Engine -> Tutti i tipi di risorse.

Successivamente, dal selettore del tipo di log (2 nello screenshot), seleziona nginx-access per visualizzare tutti i log di accesso.

Ora, attiva lo streaming continuo (5) per guardare i log man mano che vengono generati. Se non vedi nuovi log, prova a inserire l'indirizzo IP esterno di una delle VM nginx-plus nel browser.

Sebbene questo codelab non si concentri in modo approfondito sui log, puoi esplorarli in un secondo momento prima di eseguire la pulizia. Puoi trovare ulteriori informazioni sulla navigazione nel visualizzatore qui. Se vuoi informazioni più generali su cosa puoi utilizzare Cloud Logging, qui trovi la directory di primo livello per la documentazione pertinente.

Rilasciamo le risorse di calcolo create durante il codelab. Esegui questi comandi in Cloud Shell:

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

Poi, vai alla console Google Stackdriver ("Monitoring" nel menu del riquadro a sinistra della console Google Cloud) e rimuovi il controllo di uptime e i criteri di avviso che abbiamo creato. Puoi farlo dalle voci di menu di primo livello Avvisi -> Panoramica dei criteri e Avvisi -> Controlli di uptime.

Ora puoi monitorare le tue applicazioni basate sul cloud.

Argomenti trattati

  • Acquisire familiarità con la home page di Stackdriver.
  • Comprendere dashboard e grafici.
  • Creazione di un controllo di uptime.
  • Creazione di un criterio di avviso semplice.
  • Utilizzo degli incidenti di avviso.
  • Navigazione nel visualizzatore log.

Passaggi successivi

  • Prova a creare una dashboard personalizzata.
  • Esplora le diverse opzioni disponibili durante la creazione di un criterio di avviso.
  • Esplora le diverse opzioni disponibili quando utilizzi Cloud Logging.

Scopri di più

Inviaci il tuo feedback

  • Dedica qualche istante a compilare il nostro brevissimo sondaggio.