翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Chef ログ
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
Chef ログは、特にレシピのデバッグに関する主要なトラブルシューティングリソースの 1 つです。 AWS OpsWorks スタックは各コマンドの Chef ログをキャプチャし、インスタンスの最新の 30 個のコマンドのログを保持します。実行はデバッグモードであるため、ログには Chef 実行の詳細 (stdout
や stderror
に送信されたテキストなど) が含まれます。レシピが失敗した場合、ログには Chef スタックトレースが含まれます。
AWS OpsWorks スタックには、Chef ログを表示する方法がいくつかあります。ログ情報を入手したら、その情報を使用して失敗したレシピをデバッグできます。
注記
SSH を使用してインスタンスに接続し、エージェント CLI の show_log
コマンドを実行することで、指定したログの末尾を表示することもできます。詳細については、「Chef ログの表示」を参照してください。
コンソールを使用した Chef ログの表示
Chef ログを表示する最も簡単な方法は、インスタンスの詳細ページを参照することです。[Logs] セクションには、各イベントと Execute Recipes コマンドのエントリが含まれています。Configure および Setup の各ライフサイクルイベントに対応する configure コマンドと setup コマンドが含まれた、インスタンスの [Logs] セクションを次に示します。
該当するコマンドの [Log] 列で [show] をクリックすると、対応する Chef ログが表示されます。エラーが発生すると、 AWS OpsWorks スタックは自動的にログをエラーに開きます。通常はファイルの最後にあります。
CLI または API を使用した Chef ログの表示
AWS OpsWorks Stacks CLI describe-commands
コマンドまたは DescribeCommands
API アクションを使用して、Amazon S3 バケットに保存されているログを表示できます。次に、CLI を使用して、指定したインスタンスの現在のログファイルセットを表示する方法を示します。DescribeCommands
を使用する場合の手順は基本的にほぼ同じです。
AWS OpsWorks スタックを使用してインスタンスの Chef ログを表示するには
-
インスタンスの詳細ページを開き、その OpsWorks ID 値をコピーします。
-
次のように、ID 値を使用して
describe-commands
CLI コマンドを実行します。aws opsworks describe-commands --instance-id 67bf0da2-29ed-4217-990c-d895d51812b9
コマンドは、 AWS OpsWorks スタックがインスタンスで実行した各コマンドのオブジェクトが埋め込まれている JSON オブジェクトを、最新のものとともに返します。
Type
パラメータには、各組み込みオブジェクトのコマンドタイプ (この例ではconfigure
コマンドと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 } ] }
-
LogUrl
値をブラウザにコピーしてログを表示します。
インスタンスに数個以上のコマンドがある場合は、describe-commands
にパラメータを追加して、応答オブジェクトに含めるコマンドをフィルタできます。詳細については、「describe-commands」を参照してください。
インスタンスの Chef ログの表示
注記
このセクションのトピックは、Chef 12 に適用されます。Chef 11.10 以前リリースの Chef のログの場所については、「Linux 用 Chef 11.10 以前のバージョンのトラブルシューティング」を参照してください。
Linux インスタンス
AWS OpsWorks スタックは、各インスタンスの Chef ログを /var/chef/runs
ディレクトリに保存します。(Linux インスタンスの場合、このディレクトリには、JSON 形式のファイルとして保存される、関連データバッグも含まれます)。このディレクトリにアクセスするには、sudo 権限が必要です。各実行のログは、個別の実行のサブディレクトリ内にある chef.log
という名前のファイルにあります。
AWS OpsWorks スタックは内部ログをインスタンスの /var/log/aws/opsworks
フォルダに保存します。通常、この情報はトラブルシューティングにはあまり役立ちません。ただし、これらのログは AWS OpsWorks スタックのサポートに役立ちます。サービスに問題が発生した場合は、ログの提供を求められることがあります。Linux のログも、トラブルシューティングに役立つデータを提供する場合があります。
Windows インスタンス
エージェントログ
Windows インスタンスでは、 OpsWorks ログは次のようなProgramData
パスに保存されます。数値にはタイムスタンプが含まれます。
C:\ProgramData\OpsWorksAgent\var\logs\
number
注記
デフォルトでは、ProgramData
は非表示フォルダです。非表示を解除するには、[Folder Options] に移動します。[View] で、非表示のファイルを表示するオプションを選択します。
次の例では、エージェントは 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
Chef ログ
Windows インスタンスでは、Chef のログは次のような ProgramData
のパスに保存されます。数値にはタイムスタンプが含まれます。
C:\ProgramData\OpsWorksAgent\var\commands\
number
注記
このディレクトリには、最初の (OpsWorks 所有の) Chef 実行の出力のみが含まれます。
次の例は、Windows インスタンスの OpsWorks 所有 Chef ログを示しています。
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
ユーザーの Chef ログ
Chef の実行ログは、次の図のように、番号が付けられた Chef コマンドに関連する名前のフォルダの、logfile.txt
という名前のファイルにあります。
C:/chef └── runs
└── command-12345
├── attribs.json
├── client.rb
└── logfile.txt
Chef ログの解釈
ほとんどの場合、ログの先頭には内部 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 ...
ファイルのこの部分は Chef の専門家に非常に役立ちます。ほとんどのコマンドは多数のレシピに関連していますが、実行リストに含まれるレシピは 2 つに限られます。この 2 つのレシピでは、他のすべての組み込みレシピとカスタムレシピをロードして実行するタスクを処理します。
通常、ファイルで最も関心を引く部分は末尾にあります。実行が正常に終了すると、次のような内容が表示されます。
... [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
注記
エージェント CLI を使用して、実行中または実行後にログの末尾を表示できます。詳細については、「Chef ログの表示」を参照してください。
レシピが失敗した場合は、次のように、例外の後に Chef スタックトレースが続く ERROR レベルの出力を探す必要があります。
... 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
ファイルの末尾が Chef スタックトレースです。また、例外の直前の出力も調べる必要があります。この部分には package
not available
などのシステムエラーが含まれていることが多く、失敗の原因の特定に役立つ場合もあります。この例では、MySQL デーモンの起動に失敗しています。
Chef ログの一般的なエラー
Chef ログの一般的なエラーとその対処方法を以下に示します。
- ログは見つかりませんでした
-
Chef の実行が開始されると、インスタンスは署名付き Amazon S3 URL を受け取ります。この URL により、Chef の実行が終了したときにウェブページでログを表示することができます。この URL は 2 時間で失効するため、Chef の実行に 2 時間以上かかると、Chef の実行中に何も問題が起きていない場合であっても、Amazon S3 サイトにログはアップロードされません。ログを作成するコマンドは成功しますが、ログが表示されるのはインスタンス上だけで、署名済み URL では表示されません。
- ログが突然終了する
-
成功が示されることも、エラー情報が表示されることもなく、Chef ログが突然終了した場合、メモリ不足の状態が発生したために Chef がログを完了できなかったと考えられます。このような場合は、大規模なインスタンスでもう一度試してみてください。
- クックブックまたはレシピが見つからない
-
Chef 実行時にクックブックキャッシュにないクックブックまたはレシピに遭遇した場合、次のような内容が表示されます。
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?
このエントリは、
mycookbook
というクックブックがクックブックキャッシュにないことを示しています。Chef 11.4 では、metadata.rb
で依存関係を正しく宣言していない場合にも、このエラーが発生する可能性があります。AWS OpsWorks スタックは、インスタンスのクックブックキャッシュからレシピを実行します。インスタンスの起動時に、リポジトリからこのキャッシュにクックブックがダウンロードされます。ただし、後でリポジトリ内のクックブックを変更しても、 AWS OpsWorks スタックはオンラインインスタンスのキャッシュを自動的に更新しません。インスタンスの起動以降にクックブックの変更や新しいクックブックの追加を行った場合は、次の手順を実行します。
-
変更がリポジトリにコミットされていることを確認します。
-
Update Cookbooks スタックコマンド を実行して、リポジトリの最新バージョンでクックブックキャッシュを更新します。
-
- ローカルコマンドのエラー
-
Chef の
execute
リソースが指定されたコマンドを実行できない場合、次のような内容が表示されます。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=/
ログをスクロールアップすると、コマンドの
stderr
およびstdout
出力が表示されます。これらの出力は、コマンドが失敗した理由を突き止める際に役立ちます。 - パッケージのエラー
-
パッケージのインストールに失敗した場合、次のような内容が表示されます。
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
ログをスクロールアップすると、コマンドの STDOUT および STDERROR 出力が表示されます。これらの出力は、パッケージのインストールに失敗した理由を突き止める際に役立ちます。