Usa la supervisión y el registro de Stackdriver para obtener una mejor visibilidad del estado de tu aplicación

En este codelab, aprenderás a comenzar a usar Stackdriver para supervisar y revisar las métricas y los registros de rendimiento de las VM y los servicios de Google Cloud Platform.

En este codelab, realizarás las siguientes acciones:

  • Familiarízate con la página principal de Stackdriver.
  • Comprender los paneles y gráficos.
  • Cree una verificación de tiempo de actividad.
  • Cree una política de alertas simple.
  • Trabaja con incidentes de alerta.
  • Navegar por el Visor de registros

¿Cuál es tu experiencia con Stackdriver?

¿Qué es la supervisión? Nunca antes usé Stackdriver, pero tengo experiencia en la supervisión de aplicaciones. Ya profundé los neumáticos de Stackdriver, pero profundicé.

Configuración del entorno de autoaprendizaje

Si aún no tienes una Cuenta de Google (Gmail o Google Apps), debes crear una.

Accede a Google Cloud Platform Console (console.developers.google.com) y crea un proyecto nuevo:

Recuerde el ID del proyecto, un nombre único en todos los proyectos de Google Cloud. Se mencionará más adelante en este codelab como PROJECT_ID.

Muy importante: Visita la página de Compute Engine para iniciar la API de Compute Engine:

Luego, Compute Engine, Compute Engine → Instancias de VM

La primera vez que haga esto, verá una pantalla con un mensaje que indica que Compute Engine se está preparando. Esto puede tardar un minuto o más. Puede continuar accediendo a Google Cloud Shell a continuación, pero no podrá crear VM hasta que esta operación se complete.

La mayor parte del trabajo lo hará desde Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube. Esta máquina virtual basada en Debian está cargada con todas las herramientas de desarrollo que necesitará y ofrece un directorio principal persistente de 5 GB. Haga clic en el ícono en la parte superior derecha de la pantalla para abrir Google Cloud Shell:

Finalmente, utilice Cloud Shell para configurar la zona predeterminada y la configuración del proyecto:

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

También puedes elegir diferentes zonas. Consulte la documentación sobre regiones y zonas para obtener más información sobre el tema.

En esta sección, creará instancias de Compute Engine que ejecuten nginx+ con Cloud Launcher. Necesitaremos que estas instancias demuestren la supervisión y las alertas. Puedes crear una instancia de Compute Engine desde la consola gráfica o la línea de comandos. En este lab, se explican las líneas de comandos.

Ahora, comencemos.

Usa gcloud para configurar el ID del proyecto:

$ gcloud config set project PROJECT_ID



Luego, asegúrate de copiar y pegar lo siguiente:

$ 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

Verá mensajes de advertencia sobre el tamaño del disco y, luego, el siguiente resultado a medida que se cree cada 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
...

Anota la EXTERNAL_IP, que es importante más adelante.

Estas operaciones pueden tardar unos minutos en completarse.

De forma predeterminada, Google Cloud Platform solo permite algunos accesos. Dado que accederemos a Nginx pronto, habilitemos el puerto 80 en la configuración 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

Esta acción creará una regla de firewall llamada allow-80 que tiene los siguientes valores predeterminados:

  • La lista de bloques de direcciones IP que pueden establecer conexiones entrantes (--source-ranges) se configura como 0.0.0.0/0 (en todas partes).
  • La lista de etiquetas de instancias que indica el conjunto de instancias en la red que podrían aceptar conexiones entrantes no está establecido, lo que significa que la regla de firewall se aplica a todas las instancias.

Ejecuta gcloud compute firewall-rules create --help para ver todos los valores predeterminados.

Después de crear la primera instancia, puede probar si nginx está en ejecución y si puede acceder a él si navega a http://EXTERNAL_IP/, donde EXTERNAL_IP es la IP pública de nginx-plus-1 y debería poder ver la página de Nginx:

También puede escribir lo siguiente para ver sus instancias en ejecución:

$ gcloud compute instances list

Google Stackdriver es una potente solución de supervisión que integra varias herramientas para facilitar la supervisión y el análisis de las aplicaciones con tecnología de nube. Puedes usar Stackdriver para ver métricas de rendimiento, configurar y recibir alertas, agregar tus propios paneles y métricas personalizadas, ver registros y seguimientos, y configurar paneles integrados, todo desde un lugar centralizado.

En los siguientes pasos, aprenderá a habilitar Stackdriver y trabajar con Console.

De forma predeterminada, Google Stackdriver se encuentra en fase beta y no está habilitado para proyectos nuevos. Para habilitarlo, ve a la barra de navegación izquierda y haz clic en "Monitoring&quot (es posible que debas desplazarte hacia abajo para encontrarlo).

En la siguiente pantalla, haz clic en “Habilitar Monitoring” y espera un minuto para habilitarla.

Una vez que se habilite, el contenido cambiará y verás el siguiente texto. Haz clic en “Ir a Monitoring” para empezar a explorar. Deberás acceder con Google y, luego, ir a la consola de Stackdriver de tu proyecto, donde realizarás y analizarás tareas relacionadas con la supervisión.

Familiarícese con la página principal.

  1. El menú superior: Se usa para seleccionar diferentes vistas o contextos, y acceder a todas las acciones de Stackdriver disponibles.
  2. Paneles: son paneles de métricas y eventos supervisados. Al principio, estos son paneles de sistema predefinidos basados en los recursos de tu proyecto, pero también puedes crear tus propios paneles personalizados.
  3. Verificaciones de tiempo de actividad: verifican de forma periódica la disponibilidad de los recursos para el usuario y habilitan las alertas cuando estas no están disponibles.
  4. Lista de grupos: Se usan para agrupar recursos que comparten propiedades y características, de modo que se puedan administrar como un grupo o un clúster para tareas como la supervisión y las alertas. Estos se pueden descubrir automáticamente y definirse para el usuario.
  5. Panel de incidentes: El panel de incidentes realiza un seguimiento de los incidentes. No verás nada hasta que definas las políticas de alertas.
  6. El Registro de eventos: enumera los eventos relacionados con tus recursos supervisados, por ejemplo, cambios de instancias, eventos de incidentes, etcétera.

Antes de examinar los gráficos, notarás que la mayoría de las líneas se aplanaron después de la inicialización inicial de la instancia. Veamos si podemos aplanar algunos de ellos generando algo de carga en una de las instancias.

Para establecer una conexión SSH a la instancia desde la línea de comandos de Cloud Shell, siga estos pasos:

$ 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:~$

¡Eso es muy fácil! (En producción, asegúrate de ingresar una frase de contraseña :). Además, ten en cuenta que tal vez no se te solicite que agregues una frase de contraseña.

Como alternativa, también puede acceder mediante SSH a la instancia directamente desde Compute Engine, Instancias de VM y haciendo clic en 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 &

Se está cargando la instancia CPU nginx-plus-1. Podemos volver a la pestaña del panel de Stackdriver y comenzar a explorar, pero antes de volver a la página de paneles de Stackdriver, aprovechemos la oportunidad para instalar el agente de 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

Ten en cuenta que, cuando realices la instalación en producción, asegúrate de verificar el hash SHA-256. Puedes obtener más información sobre el proceso de instalación aquí.

Ahora es momento de regresar a la consola de Google Stackdriver.

Tómese el tiempo necesario para navegar y usar paneles y gráficos. Coloque el cursor sobre las líneas del gráfico para ver qué sucede. Cambie la duración del gráfico (los controles se encuentran en la esquina superior derecha). Siempre puedes volver a la vista de la página principal; para ello, haz clic en el logotipo de Stackdriver en la esquina superior izquierda de la consola.

Veamos el gráfico de uso de CPU:

Estos son algunos de los elementos del gráfico:

  • La línea destacada es la métrica seleccionada actualmente (un gráfico puede mostrar varias métricas).
  • La línea horizontal gris representa el momento al que apunta el mouse.
  • En la parte inferior, se encuentra el nombre del recurso, junto con el valor en el momento seleccionado.
  • En la parte superior del gráfico, se encuentran los puntos de color que representan los eventos detallados en el Registro de eventos. Puedes hacer clic en estos para obtener una lista de eventos. Nota: Es posible que no veas ninguna si aún no tienes ningún evento.
  • En la parte superior derecha del gráfico, se encuentran tres controles (de izquierda a derecha):
  • Activa o desactiva la opción para ocultar o mostrar una lista de métricas debajo del gráfico
  • Activar o desactivar modo de pantalla completa
  • Menú con varios accesorios (DEBE probar el modo de rayos X una vez que tiene un gráfico muy detallado). Observa la opción "Ver registros"; la analizaremos más adelante.

Las verificaciones de tiempo de actividad le permiten comprobar rápidamente el estado de cualquier página web, instancia o grupo de recursos. Con frecuencia, cada verificación configurada recibe consultas de diversas ubicaciones de todo el mundo. Las verificaciones de tiempo de actividad se pueden usar como condiciones en las definiciones de política de alertas.

Para ver las verificaciones y su estado, selecciona Alertas > Verificaciones de tiempo de actividad en el menú superior. En las secciones Verificaciones de tiempo de actividad del panel de Google Stackdriver y en las páginas sobre recursos específicos. Para las verificaciones de tiempo de actividad que abarcan un grupo de recursos, puede expandir la verificación para mostrar el estado de los miembros individuales del grupo.

Creemos una verificación de tiempo de actividad. Busque el widget de verificaciones de tiempo de actividad en la pantalla principal de Stackdriver:

Aparecerá una nueva ventana emergente. Podemos configurar verificaciones de tiempo de actividad para un solo recurso o grupo de recursos, usar encabezados y cargas útiles personalizados, agregar autenticación y otras opciones. Por ahora, usaremos una verificación de HTTP predeterminada que verificará el grupo de nginx creado automáticamente cada 1 minuto.

Usa la siguiente captura de pantalla para completar las diferentes opciones:

Haz clic en el botón “Test” para asegurarte de que se pueda acceder a tus extremos (deberías recibir 3 aceptaciones verdes) y haz clic en Save. Nota: Si no se corrige, puede progresar con el lab, ya que puede ser un problema de verificación de tiempos de prueba.

A continuación, se mostrará una casilla de verificación de tiempo de actividad creada y se le preguntará si desea crear una política de alertas para esa verificación. En la siguiente sección, hagamos esto. No haga clic en nada aún.

Puede configurar políticas de alertas para definir condiciones que determinen si sus servicios y plataformas en la nube funcionan normalmente o no. Cloud Monitoring proporciona varios tipos diferentes de métricas y verificaciones de estado que puede usar en las políticas.

Cuando se infringe una política de alertas, se crea un incidente y se muestra en la sección Incidente de la consola de Stackdriver. El personal de respuesta puede acusar recibo de la notificación y cerrar el incidente cuando se haya resuelto.

Haz clic en “Crear una política de alertas” y continúa con la configuración de la política.

Ahora, debería aparecer esta pantalla:

Ingresar un nombre para la política: "Uptime Check for nginx group"

Ahora, en la sección del método de notificaciones, haga clic en "Agregar notificación"

Ingresa la dirección de correo electrónico asociada con tu cuenta de Google Cloud. Desplázate hasta la parte inferior de la pantalla y haz clic en "Save Policy"

Regresa a la página principal de Stackdriver (haz clic en el logotipo en la esquina superior izquierda).

Ahora, deberías ver la verificación de tiempo de actividad que creaste en la sección de verificaciones de tiempo de actividad del panel. Por ahora, el estado debería ser verde.

Desplácese hacia abajo hasta el registro de eventos y verá el evento en el que se creó una política de alertas.

Ahora, creemos un problema :)

Veamos qué sucede cuando detenemos el servicio de Ngnix.

Establezca una conexión SSH a la instancia desde la línea de comandos de Cloud Shell:

$ gcloud compute ssh nginx-plus-1

Y escribe:

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

Ahora, debería fallar la verificación de tiempo de actividad que creamos. Por lo tanto, se creará un incidente y se enviará una notificación de alerta por correo electrónico a la dirección que ingresaste. La condición tardará un minuto en detectarse (recuerde la duración de 1 minuto cuando se configura la verificación de tiempo de actividad), por lo que deberíamos examinar la página del grupo de NGINX.

Hay varias maneras de navegar a un panel de recursos específico:

  1. Puedes hacer clic en el nombre del grupo en la página principal. Se cambiará a un panel creado específicamente para supervisar los recursos del grupo. También puedes personalizar este panel.



  2. En el menú de nivel superior, selecciona Grupos y, luego, busca tu grupo específico.

Ahora, haga clic en el botón de actualización automática para asegurarse de que los paneles se actualicen automáticamente. El ícono se pondrá de color rojo.

Ahora se encuentra en un panel específico para el grupo nginx creado automáticamente. A la derecha, hay gráficos de varias métricas clave relacionadas con el grupo. En otras palabras, estos gráficos muestran métricas relacionadas con todos los recursos del grupo nginx (nuestras 3 VM de NGINX+ que creamos anteriormente).

En el lado izquierdo, verás información relacionada con el grupo:

  • Estado del incidente
  • Verificaciones de tiempo de actividad
  • Registro de eventos
  • Una lista de recursos (instancias, volúmenes, etc.)

Ten en cuenta que estos solo se relacionan con el grupo, por lo que el registro de eventos solo enumera los eventos para el grupo.

Puede hacer clic en diferentes recursos o subgrupos para pasar a sus propios paneles específicos. Por ejemplo, si hace clic en nginx-plus-1, accederá a un panel que solo contiene métricas y verificaciones relacionadas con esa instancia. Probar ahora:

Los incidentes de Stackdriver se abren cuando un conjunto de condiciones de alertas cumple con ciertos criterios. En este caso, configuramos una alerta para la verificación de tiempo de actividad de NGINX, que actualmente falla en nginx-plus-1. Los incidentes lo ayudan a realizar un seguimiento de las condiciones actuales, así como a colaborar con otros miembros del equipo cuando trabajan en problemas.

Reconozcamos el incidente y le informaremos al resto del equipo que estamos investigando el caso.

Tenga en cuenta que esto cambia el estado del incidente de abierto a confirmado. La situación sigue en curso (todavía se incumplen las condiciones de la política de alertas), pero señalaste a los miembros del equipo que eres parte de ella. Esto también se registrará en el registro de eventos.

Los incidentes se pueden resolver de forma manual o pueden resolverse automáticamente. Para ver este último, establezca una conexión SSH con nginx-plus-1 y solucione el problema:

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

Ahora el incidente se resolverá automáticamente una vez que la verificación de tiempo de actividad vuelva a la normalidad. También puedes resolverlo por tu cuenta seleccionando el elemento del menú de resolución.

Cloud Logging es una solución de registro como servicio que ofrece un lugar conveniente y central para ver y consultar registros desde varias fuentes. También puede usar registros para exportarlos a otros destinos (Google Cloud Storage, Google BigQuery o Google Cloud Pub/Sub).

Para acceder al visor de registros de Cloud, selecciónalo en el menú de la izquierda de Cloud Console:

Se lo redireccionará al visor de registros, donde puede usar búsquedas predefinidas o crear y guardar sus propias consultas personalizadas, obtener una transmisión en vivo de los registros provenientes de varios recursos en su implementación en la nube, crear métricas a partir de registros, exportar datos y mucho más.

Existen algunos controles útiles para filtrar rápidamente la información relevante:

  1. Filtrar por tipo de recurso
  2. Filtrar para tipos de registro específicos de los recursos seleccionados
  3. Filtrar niveles de registro específicos
  4. Filtra por fechas específicas para examinar problemas anteriores
  5. Activar o desactivar la transmisión continua
  6. Un cuadro de búsqueda para texto, etiqueta o expresión regular

Ahora practiquemos limitarnos a registros específicos.

En el selector de tipos de recursos (1 en la captura de pantalla), seleccione Compute Engine -> All resource types

Luego, en el selector de tipo de registro (2 en la captura de pantalla), seleccione nginx-access para ver todos los registros de acceso.

Ahora, activa la transmisión continua (5) para ver los registros a medida que se reciben. Si no ve registros nuevos, intente ingresar la dirección IP externa de una de las VM nginx-plus de su navegador.

Si bien este codelab no se enfoca en los registros, puedes explorarlo más tarde antes de realizar una limpieza. Obtén más información para navegar por el usuario aquí. Si deseas obtener información más amplia sobre los aspectos en los que puedes usar Cloud Logging, consulta este directorio de nivel superior para acceder a la documentación correspondiente.

Liberamos los recursos de procesamiento creados durante el codelab. Ejecute los siguientes comandos en Cloud Shell:

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

A continuación, vaya a Google Stackdriver Console (en el menú del panel izquierdo de Cloud Console) y quite las políticas de alertas y de verificación de tiempo de actividad que creamos. Puede hacerlo desde los elementos de menú de nivel superior Alertas -> Descripción general de políticas y Alertas -> Verificaciones de tiempo de actividad.

Ya está listo para supervisar sus aplicaciones con tecnología en la nube.

Temas abordados

  • Familiarízate con la página principal de Stackdriver.
  • Información sobre los paneles y gráficos.
  • Crear una verificación de tiempo de actividad
  • Crear una política de alertas simple
  • Trabajar con incidentes de alerta
  • Navega por el visor de registros.

Próximos pasos

  • Intente crear paneles personalizados.
  • Explore las diferentes opciones cuando cree una política de alertas.
  • Explora las diferentes opciones disponibles cuando usas Cloud Logging.

Más información

Envíanos tus comentarios

  • Tómese un momento para completar nuestra breve encuesta