Log di Chef - AWS OpsWorks

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Log di Chef

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

I registri degli chef sono una delle risorse chiave per la risoluzione dei problemi, in particolare per le ricette di debug. AWS OpsWorks Stacks acquisisce il registro Chef per ogni comando e conserva i log dei 30 comandi più recenti di un'istanza. Poiché l'esecuzione è in modalità di debug, il log contiene una descrizione dettagliata dell'esecuzione di Chef, tra cui il testo inviato a stdout e stderror. Se una ricetta ha esito negativo, il log include la traccia dello stack di Chef.

AWS OpsWorks Stacks offre diversi modi per visualizzare i log di Chef. Una volta che hai acquisito le informazioni di log, puoi utilizzarle per eseguire il debug delle ricette non riuscite.

Nota

Puoi visualizzare anche una coda di log specifica, tramite l'utilizzo di SSH per connettersi all'istanza e per l'esecuzione del comando show_log della CLI dell'agente. Per ulteriori informazioni, consulta Visualizzazione dei log di Chef.

Visualizzazione di un log di Chef con la console

Il modo più semplice per visualizzare un log di Chef è quello di accedere alla pagina dei dettagli dell'istanza. La sezione Logs (Log) include una voce per ogni evento e per il comando relativo all'esecuzione delle ricette. Di seguito viene mostrata una sezione Logs (Log) dell'istanza, con i comandi configure (configura) e setup (imposta), che corrispondono agli eventi del ciclo di vita Configura e Imposta.

Fai clic su show (mostra) nella colonna Log del comando appropriato per visualizzare il log di Chef corrispondente. Se si verifica un errore, AWS OpsWorks Stacks apre automaticamente il registro dell'errore, che di solito si trova alla fine del file.

Visualizzazione di un log di Chef tramite la CLI o l'API

Puoi utilizzare il comando AWS OpsWorks Stacks describe-commandsCLI o DescribeCommandsl'azione API per visualizzare i log, che sono archiviati su un bucket Amazon S3. Di seguito viene mostrato come utilizzare la CLI per visualizzare uno qualsiasi dell'attuale serie di file di log per una determinata istanza. La procedura per l'utilizzo di DescribeCommands è essenzialmente simile.

Per utilizzare gli AWS OpsWorks Stacks per visualizzare i log Chef di un'istanza
  1. Apri la pagina dei dettagli dell'istanza e copia il valore dell'OpsWorksID.

  2. Utilizza il valore ID per eseguire il comando della CLI describe-commands come segue:

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

    Il comando restituisce un oggetto JSON con un oggetto incorporato per ogni comando che AWS OpsWorks Stacks ha eseguito sull'istanza, con il più recente per primo. Il parametro Type contiene il tipo di comando per ogni oggetto incorporato, un comando configure e un comando setup in questo esempio.

    { "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. Copia il valore LogUrl sul tuo browser per visualizzare il log.

Se l'istanza dispone di pochi comandi, puoi aggiungere parametri su describe-commands per filtrare quali comandi sono incluse nell'oggetto della risposta. Per ulteriori informazioni, consulta describe-commands.

Visualizzazione di un log di Chef su un'istanza

Nota

Gli argomenti in questa sezione si applicano a Chef 12. Per ulteriori informazioni sulla posizione dei log di Chef per Chef 11.10 e versioni precedenti, consulta la sezione relativa alla risoluzione di problemi di Chef 11.10 e versioni precedenti per Linux.

Istanze Linux

AWS OpsWorks Stacks memorizza i log Chef di ogni istanza nella sua directory. /var/chef/runs (Per le istanze Linux, questa directory include anche i contenitori di dati associati, archiviati come file in formato JSON). È necessario disporre di privilegi sudo per accedere a questa directory. Il log per ogni esecuzione si trova in un file chiamato chef.log, all'interno della singola sottodirectory di esecuzione.

AWS OpsWorks Stacks archivia i registri interni nella cartella dell'istanza. /var/log/aws/opsworks Le informazioni in genere non sono molto utili per la risoluzione dei problemi. Tuttavia, questi log sono utili per l'assistenza di AWS OpsWorks Stacks e potrebbe esserti richiesto di fornirli se riscontri un problema con il servizio. I log di Linux possono anche fornire dati utili per la risoluzione dei problemi.

Istanze Windows

Log dell'Agente

Nelle istanze di Windows, OpsWorks i log vengono archiviati in un ProgramData percorso come il seguente. Il numero include un Time stamp.

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

Per impostazione predefinita, ProgramData è una cartella nascosta. Affinché non sia più nascosta, spostati su Folder Options (Opzioni cartella). Su View (Apri), scegli l'opzione per visualizzare i file nascosti.

L'esempio seguente mostra i log dell'agente su un'istanza di 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
Log di Chef

Sulle istanze Windows, i log di Chef sono archiviati in un percorso ProgramData come quello di seguito. Il numero include un Time stamp.

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

Questa directory contiene solo l'output della prima esecuzione di Chef (OpsWorks di proprietà).

L'esempio seguente mostra i log Chef OpsWorks di proprietà su un'istanza di 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
Log di Chef utente

I log per l'esecuzione del tuo Chef si trova nei file chiamati logfile.txt, in una cartella chiamata dopo il comando di Chef numerato, come nel seguente diagramma.

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

Interpretazione di un log di Chef

L'inizio del log contiene per lo più logging di Chef interni.

# 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 ...

Questa parte del file è utile principalmente per gli esperti di Chef. Nota che l'elenco di esecuzione include solo due ricette, anche se la maggior parte dei comandi ne implicano molte di più. Queste due ricette gestiscono le attività di caricamento e di esecuzione di tutte le altre ricette predefinite e integrate.

La parte più interessante del file solitamente è alla fine. Se una sessione termina correttamente, potresti visualizzare qualcosa di simile a quanto segue:

... [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

Puoi utilizzare la CLI dell'agente per visualizzare la coda di log durante o dopo l'esecuzione. Per ulteriori informazioni, consulta Visualizzazione dei log di Chef.

Se una ricetta ha esito negativo, dovresti cercare un output del livello ERROR, che conterrà un'eccezione seguita da una traccia dello stack di Chef, come mostrato di seguito:

... 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

La fine del file è la traccia dello stack di Chef. Dovresti anche esaminare l'output appena prima dell'eccezione, perché spesso contiene un errore di sistema, ad esempio package not available, che può essere utile anche per determinare la causa dell'errore. In questo caso, il daemon MySQL ha esito negativo durante l'avvio.

Errori comuni del log di Chef

Di seguito sono elencati alcuni errori comuni del log di Chef e come risolverli.

Log non trovato

All'inizio di un'esecuzione di Chef, le istanze ricevono un URL Amazon S3 predefinito che consente di visualizzare il registro su una pagina Web al termine dell'esecuzione di Chef. Poiché questo URL scade dopo due ore, non viene caricato alcun registro sul sito Amazon S3 se un'esecuzione di Chef richiede più di due ore, anche se non si sono verificati problemi durante l'esecuzione di Chef. Il comando per creare un log va a buon fine, ma il log può essere visualizzato solo sull'istanza, non sull'URL prefirmata.

Il log termina bruscamente

Se un log di Chef termina bruscamente senza indicare né il successo né le informazioni di errore, probabilmente hai riscontrato uno stato di bassa memoria che ha impedito a Chef il completamento del log. La soluzione migliore è di riprovare con un'istanza di dimensioni maggiori.

Ricetta o libro di ricette mancanti

Se l'esecuzione di Chef incontra una ricetta o un libro di ricette che non è nella cache del libro di ricette, visualizzerai ciò che segue:

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?

Questa voce indica che il libro di ricette mycookbook non è nella cache del libro di ricette. Con Chef 11.4, puoi riscontrare questo errore anche se non dichiari correttamente le dipendenze su metadata.rb.

AWS OpsWorks Stacks esegue le ricette dalla cache dei libri di cucina dell'istanza. Scarica i libri di ricette dal tuo archivio per questa cache quando si avvia l'istanza. Tuttavia, AWS OpsWorks Stacks non aggiorna automaticamente la cache su un'istanza online se successivamente modifichi i libri di cucina nel tuo repository. Se hai modificato i tuoi libri di ricette o ne hai aggiunto di nuovi all'avvio dell'istanza, esegui i seguenti passaggi:

  1. Assicurati di aver completato le modifiche nell'archivio.

  2. Esegui il comando dello stack Update Cookbooks per aggiornare la cache del libro di ricette con la versione più recente dall'archivio.

Errore del comando locale

Se una risorsa execute di Chef ha esito negativo durante l'esecuzione del comando specificato, visualizzerai ciò che segue:

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=/

Scorri nel log per visualizzare l'output stderr e stdout del comando, che dovrebbe aiutarti nel determinare perché il comando ha avuto esito negativo.

Errore del pacchetto

Se l'installazione di un pacchetto ha esito negativo, visualizzerai ciò che segue:

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

Scorri nel log per visualizzare l'output STDOUT e STDERROR del comando, che dovrebbe aiutarti nel determinare perché l'installazione del pacchetto ha avuto esito negativo.