AWS OpsWorks Stacks での Amazon CloudWatch Logs の使用 - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS OpsWorks Stacks での Amazon CloudWatch Logs の使用

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは OpsWorks コンソール、 API、 CLI、および CloudFormation リソースを通常どおり使用できますが、その時点でこれらのリソースは廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、AWS OpsWorks Stacks サポート終了に関する FAQ および AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行 を参照してください。

複数のインスタンスでログをモニタリングするプロセスを簡素化するために、AWS OpsWorks スタックでは Amazon CloudWatch Logs がサポートされています。AWS OpsWorks スタックのレイヤーレベルで CloudWatch Logs を有効にします。CloudWatch Logs の統合は、Chef 11.10 および Chef 12 Linux ベースのスタックで機能します。CloudWatch Logs を有効にしている場合は追加の料金が発生するため、開始する前に [Amazon CloudWatch Pricing] (Amazon CloudWatch の料金) を確認してください。

CloudWatch Logs は、ユーザー指定のパターンの発生に対して選択されたログをモニタリングします。例えば、NullReferenceException のようなリテラルタームが発生したログをモニタリングしたり、発生数をカウントしたりできます。スタックで AWS OpsWorks スタックを有効にすると、AWS OpsWorks スタックエージェントがログを CloudWatch Logs に送信します。CloudWatch Logs の詳細については、[Getting Started with CloudWatch Logs] (CloudWatch Logs の開始方法) を参照してください。

前提条件

CloudWatch Logs を有効にする前に、インスタンスが Chef 11.10 のスタックでは、AWS OpsWorks スタックエージェントのバージョン 3444 以降、Chef 12 のスタックでは 4023 以降が実行されている必要があります。また、CloudWatch Logs を使用してモニタリングするすべてのインスタンスで、互換性のあるインスタンスプロファイルを使用している必要があります。

カスタムインスタンスプロファイル (スタックの作成時に AWS OpsWorks スタックから提供された以外のプロファイル) を使用している場合、AWS OpsWorks スタックではインスタンスプロファイルを自動的にアップグレードできません。IAM を使用して [AWSOpsWorksCloudWatchLogs] ポリシーをプロファイルに手動でアタッチする必要があります。IAM ポリシーの詳細についてはIAM ユーザーガイドの「Managing IAM policies」(IAMポリシーの管理)を参照してください。

エージェントのバージョンまたはインスタンスプロファイルをアップグレードする必要がある場合は、AWS OpsWorks スタックで、[Layer] (レイヤー) ページで [CloudWatch Logs] タブを開くと、次のスクリーンショットに似たリマインダーが表示されます。


                レイヤーページの CloudWatch Logs タブ

レイヤーのすべてのインスタンスでエージェントを更新するには時間がかかります。エージェントのアップグレードが完了する前に、レイヤーで CloudWatch Logs を有効にしようとすると、以下のようなメッセージが表示されます。


                レイヤーページの CloudWatch Logs タブ

CloudWatch Logs の有効化する

  1. 必要なエージェントとインスタンスプロファイルのアップグレードが完了すると、[CloudWatch Logs] タブのスライダーコントロールを [On] (オン) に設定して、CloudWatch Logs を有効にすることができます。

    
                        CloudWatch Logs のスライダーコントロール
  2. コマンドログをストリーミングするには、[Stream command logs] を [On] に設定します。これにより、レイヤーのインスタンスの Chef アクティビティとユーザーが開始したコマンドのログが CloudWatch Logs に送信されます。

    これらのログに含まれるデータは、ログ URL のターゲットを開いたときに表示される DescribeCommands オペレーションの結果とほぼ一致したものとなっています。setupconfiguredeployundeploystartstop、およびレシピの実行コマンドに関するデータが含まれています。

  3. レイヤーのインスタンスのカスタムロケーションに保存されているアクティビティのログ (/var/log/apache/myapp/mylog* など) をストリーミングするには、[Stream custom logs] 文字列ボックスにカスタムロケーションを入力し、[Add] (+) を選択します。

  4. [Save (保存)] を選択します。数分以内に、AWS OpsWorks スタックのログストリームが CloudWatch Logs コンソールに表示されます。

    
                        CloudWatch Logs は有効です

CloudWatch Logs をオフにする

CloudWatch Logs をオフにするには、レイヤーの設定を編集します。

  1. レイヤーのプロパティページで、[編集] を選択します。

    
                        レイヤーのプロパティページにある [Edit (編集)] ボタン
  2. [編集] ページで、[CloudWatch ログ] タブを選択します。

  3. [CloudWatch ログ] エリアで、[Stream command logs] をオフにします。カスタムログで X を選択して、ログストリームから削除します (該当する場合)。

  4. [Save] を選択します。

CloudWatch Logs からのストリームログの削除

AWS OpsWorks スタックで CloudWatch Logs ストリーミングをオフにしても、既存のログは CloudWatch Logs マネジメントコンソールで引き続き利用できます。ログを Amazon S3 にエクスポートまたは削除しない限り、保存されたログに対しての料金が引き続き発生します。S3 へのログのエクスポートの詳細については [Exporting Log Data to Amazon S3] (Amazon S3 へのログデータのエクスポート) を参照してください。

ログストリームとロググループは、CloudWatch Logs マネジメントコンソールで、または delete-log-streamdelete-log-group AWS CLI コマンドを実行することで削除できます。ログの保持期間の変更の詳細については、[Change Log Data Retention in CloudWatch Logs] (CloudWatchでのログデータ保管期間の変更) を参照してください。

CloudWatch Logs でのログの管理

ストリーミングしているログは、CloudWatch Logs コンソールで管理されます。


                CloudWatch Logs のコンソール

AWS OpsWorks によって、デフォルトのロググループとログストリームが自動的に作成されます。AWS OpsWorks スタックデータのロググループには、以下のパターンに一致する名前があります。

stack_name/layer_name/chef_log_name

カスタムログには次のパターンに一致する名前があります。

/stack_name/layer_short_name/file_path_name パス名は人が読んで理解しやすいように、アスタリスク (*) などの特殊文字が削除されています。

CloudWatch Logs にログを配置すると、[organize the logs into groups] (ログをグループに整理) したり、[search and filter logs by creating metric filters] (メトリクスフィルタを作成してログを検索およびフィルタリング) したり、[create custom alarms] (カスタムアラームを作成) したりできます。

Chef 12.2 Windows レイヤーを設定して CloudWatch ログを使用する

CloudWatch Logs の自動統合は、Windows ベースのインスタンスはサポートされません。[CloudWatch ログ] タブは、Chef 12.2 スタック内のレイヤーでは使用できません。Windows ベースのインスタンスの CloudWatch Logs へのストリーミングを手動で有効にするには、以下を行います。

  • CloudWatch Logs エージェントが適切な権限を持つことができるように、Windows ベースのインスタンスのインスタンスプロファイルを更新します。AWSOpsWorksCloudWatchLogs ポリシーステートメントに必要な権限が示されています。

    通常、このタスクを行うのは 1 回のみです。これで、更新したインスタンスプロファイルはレイヤー内のすべての Windows インスタンスで使用することができます。

  • 各インスタンスで以下の JSON 設定ファイルを編集します。このファイルには、どのログをモニタリングするかなどログストリームの設定が含まれています。

    %PROGRAMFILES%\Amazon\Ec2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json

必要なタスクを処理するカスタムレシピを作成し、Chef 12.2 レイヤーの Setup イベントに割り当てることで、前述の 2 つのタスクを自動化できます。これらのレイヤーで新しいインスタンスを開始するたびに、インスタンスが起動して CloudWatch Logs が有効になった後に、AWS OpsWorks スタックが自動的にレシピを実行します。Windows ベースのインスタンスの CloudWatch Logs のストリームを手動で設定する方法の詳細については、以下を参照してください。

Windows ベースのインスタンスで CloudWatch Logs をオフにするには、プロセスを逆順で実行します。[Ec 2 Service Properties] ダイアログボックスで [Enable CloudWatch Logs integration] チェックボックスをクリアし、AWS.EC2.Windows.CloudWatch.json ファイルからログストリーム設定を削除します。CloudWatch Logs 権限を自動的に Chef 12.2 レイヤーの新しいインスタンスに割り当てるすべての Chef のレシピの実行を停止します。