Almacenamiento de registros de los eventos de la aplicación con PHP

En esta parte del tutorial de Bookshelf para PHP, se muestra cómo una aplicación puede incorporar un almacenamiento de registros detallado para ayudar a detectar, depurar y supervisar problemas potenciales.

Esta página forma parte de un tutorial de varias páginas. Para empezar en orden y consultar las instrucciones de configuración, ve a la sección relativa a la aplicación Bookshelf para PHP.

Establecer configuración

En el directorio getting-started-php/5-logging, copia el archivo settings.yml del apartado sobre cómo autenticar a los usuarios de este tutorial.

Instalar dependencias

Introduce el siguiente comando en el directorio 5-logging:

composer install

Ejecutar la aplicación en la máquina local

  1. Inicia un servidor web local:

    php -S localhost:8000 -t web
    
  2. Introduce la siguiente dirección en el navegador web:

    http://localhost:8000

Desplegar la aplicación en el entorno flexible de App Engine

  1. Despliega la aplicación de muestra:

    gcloud app deploy
    
  2. Introduce la siguiente dirección en el navegador web. Sustituye [YOUR_PROJECT_ID] por el ID del proyecto:

    https://[YOUR_PROJECT_ID].appspot.com
    

    Si actualizas la aplicación, podrás desplegar la versión actualizada con el mismo comando que utilizaste para desplegar la aplicación por primera vez. El nuevo despliegue crea una nueva versión de la aplicación y la establece como la versión predeterminada. No obstante, se conservarán las versiones anteriores, al igual que las instancias de máquina virtual asociadas. Ten en cuenta que todas estas versiones de la aplicación y las instancias de máquina virtual son recursos facturables.

    Si eliminas las versiones no predeterminadas de la aplicación, puedes reducir los costes.

    Para eliminar una versión de la aplicación, sigue las instrucciones que figuran a continuación:

    1. In the GCP Console, go to the Versions page for App Engine.

      Go to the Versions page

    2. Select the checkbox for the non-default app version you want to delete.
    3. Click Delete to delete the app version.

    Consulta la sección sobre cómo eliminar los recursos facturables en el último paso de este tutorial para obtener más información al respecto.

    Visualizar registros

    Durante su ejecución, la aplicación Bookshelf escribe los datos de almacenamiento de registros, que se recopilan y quedan disponibles en la consola de Google Cloud Platform. Puedes usar las herramientas de supervisión de registros de la consola de GCP para analizar los registros directamente. Si quieres un examen más detallado, puedes utilizar la consola de GCP para emitir o importar los registros de la aplicación en BigQuery, o exportarlos a un segmento de Google Cloud Storage.

    Iniciar sesión en la consola

    Estructura de la aplicación

    El siguiente diagrama muestra la manera en la que la aplicación gestiona el almacenamiento de registros cuando se despliega en el entorno flexible de App Engine:

    Estructura de muestra del almacenamiento de registros: entorno flexible

    Información sobre el código

    La aplicación de muestra usa la biblioteca Monolog para el almacenamiento de registros de los eventos de la aplicación. El código de inicialización de la aplicación configura Monolog para que se emplee AppEngineFlexHandler si la aplicación se ejecuta en App Engine. En caso de que la aplicación se ejecute en local, configura Monolog para que se utilice ErrorLogHandler.

    $app->register(new Silex\Provider\MonologServiceProvider());
    if (isset($_SERVER['GAE_VM']) && $_SERVER['GAE_VM'] === 'true') {
        $app['monolog.handler'] = new AppEngineFlexHandler();
    } else {
        $app['monolog.handler'] = new Monolog\Handler\ErrorLogHandler();
    }

    Ahora puedes registrar eventos desde cualquier lugar mediante el servicio de monolog y estos se podrán ver en el proyecto.

    $app['monolog']->notice('Deleted Book: ' . $book['id']);

    Otra depuración

    En algunas ocasiones, los registros por sí solos no proporcionan suficiente visibilidad. Para lograr esto, se puede usar directamente SSH en la instancia. Basta con acceder a App Engine > Instancias y hacer clic en SSH al lado de una de las instancias en ejecución.

    Una vez que tengas acceso completo a tu máquina virtual, podrás ver y depurar la aplicación en ejecución. Debido a que el entorno flexible usa contenedores, se deben usar los comandos de Docker para inspeccionar el código de la aplicación.

    $ sudo docker ps
    

    Este comando mostrará todas las imágenes Docker en ejecución en la instancia:

    CONTAINER ID        IMAGE                                                                           COMMAND                  CREATED             STATUS              PORTS                                  NAMES
    7f995fe47ec9        gcr.io/google-appengine/mvm-agent                                               "/usr/local/bin/gunic"   14 minutes ago      Up 14 minutes                                              reverent_carson
    3624910a55b4        gcr.io/google-appengine/nginx-proxy                                             "/var/lib/nginx/bin/s"   14 minutes ago      Up 14 minutes       0.0.0.0:8080->8080/tcp, 8090/tcp       happy_liskov
    5c262bf5a7dd        appengine.gcr.io/234505678652123512/<your-project-id>.default.20160208t132609   "/entrypoint.sh /usr/"   14 minutes ago      Up 14 minutes       8080/tcp                               gaeapp
    e40568bcbf82        gcr.io/google-appengine/memcache-proxy                                          "/home/memcache/memca"   14 minutes ago      Up 14 minutes       11211/tcp                              memcache
    60527ecb8aa3        gcr.io/google-appengine/fluentd-logger                                          "/opt/google-fluentd/"   15 minutes ago      Up 15 minutes
    

    El contenedor llamado gaeapp representa el código de la aplicación. Ahora puedes ejecutar los comandos y ver la aplicación en ejecución:

    $ sudo docker exec -t -i gaeapp /bin/bash
    

Siguientes pasos

¿Te ha resultado útil esta página? Enviar comentarios: