Registros de Chef - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Registros de Chef

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

Los registros de Chef son uno de sus principales recursos de solución de problemas, especialmente para depurar recetas. AWS OpsWorks Stacks captura el registro de Chef de cada comando y conserva los registros de los 30 comandos más recientes de una instancia. Dado que la ejecución se encuentra en modo de depuración, el registro contiene una descripción detallada de la ejecución de Chef, incluyendo el texto que se envía a stdout y stderror. Si una receta da error, el registro incluye el rastro de pila de Chef.

AWS OpsWorks Stacks te ofrece varias formas de ver los registros de Chef. En cuanto tenga la información del registro, puede utilizarla para depurar las recetas que dan error.

nota

También puede ver la cola de un registro especificado utilizando SSH para conectarse a la instancia y ejecutar el comando show_log de la CLI del agente. Para obtener más información, consulte Mostrar los registros de Chef.

Visualizar un registro de Chef con la consola

La forma más sencilla de ver un registro de Chef es ir a la página de detalles de la instancia. La sección Logs (Registros) incluye una entrada para cada evento y el comando Execute Recipes. A continuación se muestra una sección Logs (Registros) de la instancia, con los comandos configure (configurar) y setup (configurar), que corresponden a los eventos del ciclo de vida de Configure y Setup.

Logs table showing two entries with command, duration, and log details. (AI generated)

Haga clic en show (mostrar) en la columna Log (Registro) del comando adecuado para ver el registro de Chef correspondiente. Si se produce un error, AWS OpsWorks Stacks abre automáticamente el registro del error, que normalmente se encuentra al final del archivo.

Visualizar un registro de Chef con la CLI o la API

Puede usar el describe-commandscomando CLI de AWS OpsWorks Stacks o la acción de la DescribeCommandsAPI para ver los registros, que están almacenados en un bucket de Amazon S3. A continuación se muestra cómo utilizar la CLI para ver cualquiera de los conjuntos de archivos de registro actuales de una determinada instancia. El procedimiento para utilizar DescribeCommands es básicamente igual.

Para usar los AWS OpsWorks Stacks para ver los registros de Chef de una instancia
  1. Abre la página de detalles de la instancia y copia su valor de OpsWorksID.

  2. Utilice el valor del ID para ejecutar el comando de la CLI describe-commands, tal como se indica a continuación:

    aws opsworks describe-commands --instance-id 67bf0da2-29ed-4217-990c-d895d51812b9

    El comando devuelve un objeto JSON con un objeto incrustado para cada comando que AWS OpsWorks Stacks haya ejecutado en la instancia, con el más reciente primero. El parámetro Type contiene el tipo de comando para cada objeto incrustado, en este ejemplo, un comando configure y un comando setup.

    { "Commands": [ { "Status": "successful", "CompletedAt": "2013-10-25T19:38:36+00:00", "InstanceId": "67bf0da2-29ed-4217-990c-d895d51812b9", "AcknowledgedAt": "2013-10-25T19:38:24+00:00", "LogUrl": "https://s3.amazonaws.com/prod_stage-log/logs/b6c402df-5c23-45b2-a707-ad20b9c5ae40?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE &Expires=1382731518&Signature=YkqS5IZN2P4wixjHwoC3aCMbn5s%3D&response-cache-control=private&response-content-encoding=gzip&response-content- type=text%2Fplain", "Type": "configure", "CommandId": "b6c402df-5c23-45b2-a707-ad20b9c5ae40", "CreatedAt": "2013-10-25T19:38:11+00:00", "ExitCode": 0 }, { "Status": "successful", "CompletedAt": "2013-10-25T19:31:08+00:00", "InstanceId": "67bf0da2-29ed-4217-990c-d895d51812b9", "AcknowledgedAt": "2013-10-25T19:29:01+00:00", "LogUrl": "https://s3.amazonaws.com/prod_stage-log/logs/2a90e862-f974-42a6-9342-9a4f03468358?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE &Expires=1382731518&Signature=cxKYHO8mCCd4MvOyFb6ywebeQtA%3D&response-cache-control=private&response-content-encoding=gzip&response-content- type=text%2Fplain", "Type": "setup", "CommandId": "2a90e862-f974-42a6-9342-9a4f03468358", "CreatedAt": "2013-10-25T19:26:01+00:00", "ExitCode": 0 } ] }
  3. Copie el valor LogUrl en su navegador para ver el registro.

Si la instancia tiene más que unos pocos comandos, puede agregar parámetros a describe-commands para filtrar los comandos que se incluyen en el objeto de respuesta. Para obtener más información, consulte describe-commands.

Visualizar un registro de Chef en una instancia

nota

Los temas en esta sección hacen referencia a Chef 12. Para obtener información sobre la ubicación de los registros de Chef 11.10 y versiones anteriores, consulte Resolución de problemas de Chef 11.10 y versiones anteriores para Linux.

instancias de Linux

AWS OpsWorks Stacks almacena los registros de Chef de cada instancia en su /var/chef/runs directorio. (Para las instancias de Linux, este directorio también incluye las bolsas de datos asociadas, almacenadas como archivos con formato JSON). Necesita privilegios de sudo para obtener acceso a este directorio. El registro de cada ejecución se encuentra en un archivo denominado chef.log dentro de cada subdirectorio de la ejecución individual.

AWS OpsWorks Stacks almacena sus registros internos en la carpeta de la /var/log/aws/opsworks instancia. La información no suele ser muy útil para solucionar problemas. Sin embargo, estos registros son útiles para el soporte de AWS OpsWorks Stacks, y es posible que se te pida que los proporciones si tienes algún problema con el servicio. A veces los registros de Linux también pueden proporcionar datos útiles para la resolución de problemas.

instancias de Windows

Registros del agente

En las instancias de Windows, OpsWorks los registros se almacenan en una ProgramData ruta como la siguiente. El número incluye una marca de tiempo.

C:\ProgramData\OpsWorksAgent\var\logs\number
nota

De forma predeterminada, ProgramData es una carpeta oculta. Para mostrarla, vaya a Folder Options (Opciones de carpeta). En View (Ver), seleccione la opción para mostrar los archivos ocultos.

El siguiente ejemplo muestra los registros de agente en una instancia de Windows.

Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 5/24/2015 11:59 PM 127277 command.20150524.txt -a--- 5/25/2015 11:59 PM 546772 command.20150525.txt -a--- 5/26/2015 11:59 PM 551514 command.20150526.txt -a--- 5/27/2015 9:43 PM 495181 command.20150527.txt -a--- 5/24/2015 11:59 PM 24353 keepalive.20150524.txt -a--- 5/25/2015 11:59 PM 106232 keepalive.20150525.txt -a--- 5/26/2015 11:59 PM 106208 keepalive.20150526.txt -a--- 5/27/2015 8:54 PM 92593 keepalive.20150527.txt -a--- 5/24/2015 7:19 PM 3891 service.20150524.txt -a--- 5/27/2015 8:54 PM 1493 service.20150527.txt -a--- 5/24/2015 11:59 PM 112549 wire.20150524.txt -a--- 5/25/2015 11:59 PM 501501 wire.20150525.txt -a--- 5/26/2015 11:59 PM 499640 wire.20150526.txt -a--- 5/27/2015 8:54 PM 436870 wire.20150527.txt
Registros de Chef

En instancias de Windows, los registros de Chef se almacenan en una ruta ProgramData similar a la siguiente. El número incluye una marca de tiempo.

C:\ProgramData\OpsWorksAgent\var\commands\number
nota

Este directorio contiene solo el resultado de la primera ejecución (OpsWorks propia) de Chef.

El siguiente ejemplo muestra los registros OpsWorks de Chef propiedad de una instancia de Windows.

Mode LastWriteTime Name ---- ------------- ---- d---- 5/24/2015 7:23 PM configure-7ecb5f47-7626-439b-877f-5e7cb40ab8be d---- 5/26/2015 8:30 PM configure-8e74223b-d15d-4372-aeea-a87b428ffc2b d---- 5/24/2015 6:34 PM configure-c3980a1c-3d08-46eb-9bae-63514cee194b d---- 5/26/2015 8:32 PM grant_remote_access-70dbf834-1bfa-4fce-b195-e50e85402f4c d---- 5/26/2015 10:30 PM revoke_remote_access-1111fce9-843a-4b27-b93f-ecc7c5e9e05b d---- 5/24/2015 7:21 PM setup-754ec063-8b60-4cd4-b6d7-0e89d7b7aa78 d---- 5/26/2015 8:27 PM setup-af5bed36-5afd-4115-af35-5766f88bc039 d---- 5/24/2015 6:32 PM setup-d8abeffa-24d4-414b-bfb1-4ad07319f358 d---- 5/24/2015 7:13 PM shutdown-c7130435-9b5c-4a95-be17-6b988fc6cf9a d---- 5/26/2015 8:25 PM sync_remote_users-64c79bdc-1f6f-4517-865b-23d2def4180c d---- 5/26/2015 8:48 PM update_custom_cookbooks-2cc59a94-315b-414d-85eb-2bdea6d76c6a
Registros de Chef de usuario

Los registros de las ejecuciones de Chef están en archivos denominados logfile.txt en una carpeta que se denomina según el comando de Chef numerado, como en el siguiente diagrama.

C:/chef └── runs └── command-12345 ├── attribs.json ├── client.rb └── logfile.txt

Interpretar un registro de Chef

El principio del registro contiene principalmente inicios de sesión internos de Chef.

# Logfile created on Thu Oct 17 17:25:12 +0000 2013 by logger.rb/1.2.6 [2013-10-17T17:25:12+00:00] INFO: *** Chef 11.4.4 *** [2013-10-17T17:25:13+00:00] DEBUG: Building node object for php-app1.localdomain [2013-10-17T17:25:13+00:00] DEBUG: Extracting run list from JSON attributes provided on command line [2013-10-17T17:25:13+00:00] INFO: Setting the run_list to ["opsworks_custom_cookbooks::load", "opsworks_custom_cookbooks::execute"] from JSON [2013-10-17T17:25:13+00:00] DEBUG: Applying attributes from json file [2013-10-17T17:25:13+00:00] DEBUG: Platform is amazon version 2013.03 [2013-10-17T17:25:13+00:00] INFO: Run List is [recipe[opsworks_custom_cookbooks::load], recipe[opsworks_custom_cookbooks::execute]] [2013-10-17T17:25:13+00:00] INFO: Run List expands to [opsworks_custom_cookbooks::load, opsworks_custom_cookbooks::execute] [2013-10-17T17:25:13+00:00] INFO: Starting Chef Run for php-app1.localdomain [2013-10-17T17:25:13+00:00] INFO: Running start handlers [2013-10-17T17:25:13+00:00] INFO: Start handlers complete. [2013-10-17T17:25:13+00:00] DEBUG: No chefignore file found at /opt/aws/opsworks/releases/20131015111601_209/cookbooks/chefignore no files will be ignored [2013-10-17T17:25:13+00:00] DEBUG: Cookbooks to compile: ["gem_support", "packages", "opsworks_bundler", "opsworks_rubygems", "ruby", "ruby_enterprise", "dependencies", "opsworks_commons", "scm_helper", :opsworks_custom_cookbooks] [2013-10-17T17:25:13+00:00] DEBUG: Loading cookbook gem_support's library file: /opt/aws/opsworks/releases/20131015111601_209/cookbooks/gem_support/libraries/current_gem_version.rb [2013-10-17T17:25:13+00:00] DEBUG: Loading cookbook packages's library file: /opt/aws/opsworks/releases/20131015111601_209/cookbooks/packages/libraries/packages.rb [2013-10-17T17:25:13+00:00] DEBUG: Loading cookbook dependencies's library file: /opt/aws/opsworks/releases/20131015111601_209/cookbooks/dependencies/libraries/current_gem_version.rb [2013-10-17T17:25:13+00:00] DEBUG: Loading cookbook opsworks_commons's library file: /opt/aws/opsworks/releases/20131015111601_209/cookbooks/opsworks_commons/libraries/activesupport_blank.rb [2013-10-17T17:25:13+00:00] DEBUG: Loading cookbook opsworks_commons's library file: /opt/aws/opsworks/releases/20131015111601_209/cookbooks/opsworks_commons/libraries/monkey_patch_chefgem_resource.rb ...

Esta parte del archivo es muy útil para los expertos de Chef. Tenga en cuenta que la lista de ejecución incluye dos recetas, aunque la mayoría de comandos incluyen muchas más. Estas dos recetas gestionan la tarea de cargar y ejecutar todas las demás recetas integradas y personalizadas.

La parte más interesante del archivo suele estar al final. Si una ejecución finaliza correctamente, debería ver algo parecido a lo siguiente:

... [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: STDERR: [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: ---- End output of /sbin/service mysqld restart ---- [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: Ran /sbin/service mysqld restart returned 0 [Tue, 11 Jun 2013 16:00:50 +0000] INFO: service[mysql]: restarted successfully [Tue, 11 Jun 2013 16:00:50 +0000] INFO: Chef Run complete in 84.07096 seconds [Tue, 11 Jun 2013 16:00:50 +0000] INFO: cleaning the checksum cache [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: removing unused checksum cache file /var/chef/cache/checksums/chef-file--tmp-chef-rendered-template20130611-4899-8wef7e-0 [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: removing unused checksum cache file /var/chef/cache/checksums/chef-file--tmp-chef-rendered-template20130611-4899-1xpwyb6-0 [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: removing unused checksum cache file /var/chef/cache/checksums/chef-file--etc-monit-conf [Tue, 11 Jun 2013 16:00:50 +0000] INFO: Running report handlers [Tue, 11 Jun 2013 16:00:50 +0000] INFO: Report handlers complete [Tue, 11 Jun 2013 16:00:50 +0000] DEBUG: Exiting
nota

Puede utilizar la CLI del agente para mostrar la cola del registro durante o después de la ejecución. Para obtener más información, consulte Mostrar los registros de Chef.

Si una receta da error, debe buscar una salida en el nivel de ERROR, que incluirá una excepción seguida de una pila de rastreo de Chef, similar a la siguiente:

... Please report any problems with the /usr/scripts/mysqlbug script! [ OK ] MySQL Daemon failed to start. Starting mysqld: [FAILED]STDERR: 130611 15:07:55 [Warning] The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead. 130611 15:07:56 [Warning] The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead. ---- End output of /sbin/service mysqld start ---- /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/mixin/command.rb:184:in `handle_command_failures' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/mixin/command.rb:131:in `run_command' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/provider/service/init.rb:37:in `start_service' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/provider/service.rb:60:in `action_start' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource.rb:406:in `send' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource.rb:406:in `run_action' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/runner.rb:53:in `run_action' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/runner.rb:89:in `converge' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/runner.rb:89:in `each' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/runner.rb:89:in `converge' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection.rb:94:in `execute_each_resource' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection/stepable_iterator.rb:116:in `call' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection/stepable_iterator.rb:85:in `step' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/resource_collection.rb:92:in `execute_each_resource' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/runner.rb:84:in `converge' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/client.rb:268:in `converge' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/client.rb:158:in `run' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/application/solo.rb:190:in `run_application' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/application/solo.rb:181:in `loop' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/application/solo.rb:181:in `run_application' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/application.rb:62:in `run' /opt/aws/opsworks/releases/20130605160141_122/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/chef-solo:25 /opt/aws/opsworks/current/bin/chef-solo:16:in `load' /opt/aws/opsworks/current/bin/chef-solo:16

El final del archivo es la pila de rastreo de Chef. También debería examinar la salida justo antes de la excepción, que a menudo contiene un error del sistema como, por ejemplo, package not available, que también puede ser útil a la hora de determinar la causa del error. En este caso, el daemon de MySQL no se ha iniciado.

Errores comunes del registro de Chef

A continuación presentamos algunos errores comunes del registro de Chef y cómo abordarlos.

No se encuentra el registro

Al comienzo de una ejecución de Chef, las instancias reciben una dirección URL de Amazon S3 prefirmada que le permite ver el registro en una página web cuando ha finalizado la ejecución de Chef. Dado que esta dirección URL vence después de dos horas, no se carga ningún registro en el sitio de Amazon S3 si una ejecución de Chef tarda más de dos horas, incluso si no ha habido problemas durante la ejecución de Chef. El comando para crear un registro ha funcionado, pero el registro solo puede visualizarse en la instancia, no en la dirección URL prefirmada.

El registro finaliza bruscamente

Si un registro de Chef finaliza bruscamente sin indicar que se ha ejecutado correctamente ni mostrar información de error, probablemente se deba a que dispone de poca memoria, cosa que evitó que Chef completara el registro. La mejor opción es intentarlo de nuevo con una instancia más grande.

Falta la receta o el libro de recetas

Si la ejecución de Chef se encuentra con un libro de recetas o receta que no está en la memoria caché del libro de recetas, aparecerá algo parecido a lo siguiente:

DEBUG: Loading Recipe mycookbook::myrecipe via include_recipe ERROR: Caught exception during execution of custom recipe: mycookbook::myrecipe: Cannot find a cookbook named mycookbook; did you forget to add metadata to a cookbook?

Esta entrada indica que el libro de recetas mycookbook no está en la memoria caché del libro de recetas. Con Chef 11.4, también puede encontrar este error si no declara las dependencias correctamente en metadata.rb.

AWS OpsWorks Stacks ejecuta recetas desde la caché de libros de cocina de la instancia. Descarga libros de recetas del repositorio a esta memoria caché cuando se inicia la instancia. Sin embargo, AWS OpsWorks Stacks no actualiza automáticamente la caché de una instancia en línea si posteriormente modificas los libros de cocina de tu repositorio. Si ha modificado sus libros de recetas o añadido nuevos libros de recetas desde el inicio de la instancia, siga estos pasos:

  1. Asegúrese de que ha confirmado los cambios en el repositorio.

  2. Ejecute el comando de pila Update Cookbooks para actualizar la memoria caché del libro de recetas con la versión más reciente del repositorio.

Error de comandos locales

Si se produce un error en un recurso execute de Chef para ejecutar el comando especificado, se mostrará algo parecido a lo siguiente:

DEBUG: ---- End output of ./configure --with-config-file-path=/ returned 2 ERROR: execute[PHP: ./configure] (/root/opsworks-agent/site-cookbooks/php-fpm/recipes/install.rb line 48) had an error: ./configure --with-config-file-path=/

Desplácese hacia arriba en el registro para ver las salidas stderr y stdout del comando, lo que debería ayudarle a determinar porqué ha fallado el comando.

Error del paquete

Si la instalación del paquete da error, se mostrará algo parecido a lo siguiente:

ERROR: package[zend-server-ce-php-5.3] (/root/opsworks-agent/site-cookbooks/zend_server/recipes/install.rb line 20) had an error: apt-get -q -y --force-yes install zend-server-ce-php-5.3=5.0.4+b17 returned 100, expected 0

Desplácese hacia arriba en el registro para ver las salidas STDOUT y STDERROR del comando, lo que debería ayudarle a determinar porqué ha fallado la instalación del paquete.