クイックスタート: AWS OpsWorks と Chef を使用して CloudWatch Logs エージェントをインストールする - Amazon CloudWatch Logs

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

クイックスタート: AWS OpsWorks と Chef を使用して CloudWatch Logs エージェントをインストールする

CloudWatch Logs エージェントをインストールし、 AWS OpsWorks と Chef を使用してログストリームを作成できます。Chef はサードパーティーのシステムであり、クラウドインフラストラクチャの自動化ツールです。Chef は、コンピューターにソフトウェアをインストールして設定するために記述する「レシピ」と、レシピのコレクションである「クックブック」を使用して、設定とポリシーの配布タスクを実行します。詳細については、「Chef」を参照してください。

以下の Chef のレシピの例は、各 EC2 インスタンスで 1 個のログファイルをモニタリングする方法を示しています。レシピでは、ロググループとしてスタック名を、ログストリーム名としてインスタンスのホスト名を使用します。複数のログファイルをモニタリングする場合は、複数のロググループとログストリームを作成するようにレシピを拡張する必要があります。

ステップ 1: カスタムレシピを作成する

recipes を保存するリポジトリを作成します。 は Git と Subversion AWS OpsWorks をサポートしています。または、アーカイブを Amazon S3 に保存できます。クックブックリポジトリの構造は、AWS OpsWorks ユーザーガイドの「クックブックリポジトリ」で説明されています。以下の例では、クックブックの名前を logs と仮定します。install.rb レシピは CloudWatch Logs エージェントをインストールします。クックブックの例をダウンロードすることもできます (CloudWatchLogs-Cookbooks.zip)。

以下のコードを含む metadata.rb というファイルを作成します。

#metadata.rb name 'logs' version '0.0.1'

CloudWatch ログ設定ファイルを作成します。

#config.rb template "/tmp/cwlogs.cfg" do cookbook "logs" source "cwlogs.cfg.erb" owner "root" group "root" mode 0644 end

CloudWatch Logs エージェントをダウンロードしてインストールします。

# install.rb directory "/opt/aws/cloudwatch" do recursive true end remote_file "/opt/aws/cloudwatch/awslogs-agent-setup.py" do source "https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py" mode "0755" end execute "Install CloudWatch Logs agent" do command "/opt/aws/cloudwatch/awslogs-agent-setup.py -n -r region -c /tmp/cwlogs.cfg" not_if { system "pgrep -f aws-logs-agent-setup" } end
注記

上記の例では、us-east-1、us-west-1、us-west-2、ap-south-1、ap-northeast-2、ap-southeast-1、ap-southeast-2、ap-northeast-1、eu-central-1、eu-west-1、または sa-east-1 リージョンのいずれかに置き換えます。

エージェントのインストールが失敗した場合は、python-dev パッケージがインストールされていることを確認します。そうでない場合は、次のコマンドを使用して、エージェントのインストールを再試行します。

sudo apt-get -y install python-dev

このレシピでは cwlogs.cfg.erb テンプレートファイルを使用しています。このファイルを変更してどのようなファイルを記録するかなど様々な属性を指定できます。これらの属性の詳細については、「CloudWatch Logs エージェントのリファレンス」を参照してください。

[general] # Path to the AWSLogs agent's state file. Agent uses this file to maintain # client side state across its executions. state_file = /var/awslogs/state/agent-state ## Each log file is defined in its own section. The section name doesn't ## matter as long as its unique within this file. # #[kern.log] # ## Path of log file for the agent to monitor and upload. # #file = /var/log/kern.log # ## Name of the destination log group. # #log_group_name = kern.log # ## Name of the destination log stream. # #log_stream_name = {instance_id} # ## Format specifier for timestamp parsing. # #datetime_format = %b %d %H:%M:%S # # [<%= node[:opsworks][:stack][:name] %>] datetime_format = [%Y-%m-%d %H:%M:%S] log_group_name = <%= node[:opsworks][:stack][:name].gsub(' ','_') %> file = <%= node[:cwlogs][:logfile] %> log_stream_name = <%= node[:opsworks][:instance][:hostname] %>

テンプレートは、スタック設定およびデプロイメント JSON の対応する属性を参照してスタック名およびホスト名を取得します。記録するファイルを指定する属性は cwlogs クックブックの default.rb 属性ファイル (logs/attributes/default.rb) で定義されます。

default[:cwlogs][:logfile] = '/var/log/aws/opsworks/opsworks-agent.statistics.log'

ステップ 2: AWS OpsWorks スタックを作成する

  1. https://console.aws.amazon.com/opsworks/ で AWS OpsWorks コンソールを開きます。

  2. OpsWorks ダッシュボード で、スタックを追加 を選択して AWS OpsWorks スタックを作成します。

  3. [Add stack] 画面で [Chef 11 stack] を選択します。

  4. [Stack name] に、名前を入力します。

  5. [Use custom Chef Cookbooks] で、[Yes] を選択します。

  6. [Repository type] で、使用するリポジトリのタイプを選択します。上記の例を使用する場合は、[Http Archive] を選択します。

  7. [Repository URL] に、前のステップで作成したクックブックを保存したリポジトリを入力します。上記の例を使用する場合は、「https://s3.amazonaws.com/aws-cloudwatch/downloads/CloudWatchLogs-Cookbooks.zip」と入力します。

  8. [Add Stack] を選択し、スタックを作成します。

ステップ 3: IAM ロールを拡張する

AWS OpsWorks インスタンスで CloudWatch ログを使用するには、インスタンスで使用される IAM ロールを拡張する必要があります。

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Policies]、[Create Policy] の順に選択します。

  3. [Create Policy] ページの [Create Your Own Policy] で、[Select] を選択します。カスタムポリシー作成の詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドAmazon EC2 の IAM ポリシーを参照してください。

  4. [Review Policy] ページで、[Policy Name] にポリシーの名前を入力します。

  5. [Policy Document] に、次のポリシーをコピーして貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
  6. [ポリシーの作成] を選択します。

  7. ナビゲーションペインでロール を選択し、コンテンツペインでロール名 で AWS OpsWorks スタックで使用されるインスタンスロールの名前を選択します。スタックの設定でスタックが使用しているロールが見つかります(デフォルトは aws-opsworks-ec2-role です)。

    注記

    チェックボックスではなく、ロールの名前を選択します。

  8. [Permissions] タブを開き、[Managed Policies] で [Attach Policy] を選択します。

  9. [Attach Policy] ページのテーブルヘッダー ([Filter] と [Search] の横) で、[Policy Type]、[Customer Managed Policies] を選択します。

  10. [Customer Managed Policies (カスタマーマネージドポリシー)] で、上で作成した IAM ポリシーを選択し、[Attach Policy (ポリシーを添付する)] を選択します。

    ユーザーとポリシーの詳細については、IAM ユーザーガイドの 「IAM ユーザーとグループ」および「IAM ポリシーを管理する」を参照してください。

ステップ 4: レイヤーを追加する

  1. https://console.aws.amazon.com/opsworks/ で AWS OpsWorks コンソールを開きます。

  2. ナビゲーションペインで [Layers] を選択します。

  3. コンテンツペインでレイヤーを選択し、[Add layer] を選択します。

  4. OpsWorks タブのレイヤータイプ で、カスタム を選択します。

  5. [Name] および [Short name] フィールドにレイヤーの長い名前と短い名前を入力し、[Add layer] を選択します。

  6. カスタム Chef レシピ のレシピ タブには、セットアップ 、設定 デプロイ デプロイ解除シャットダウン の見出しがいくつかあり、インスタンスの AWS OpsWorks ライフサイクル内のこれらのキーポイントでこれらのイベントが AWS OpsWorks トリガーされ、関連するレシピが実行されます。

    注記

    上記のヘッダーが非表示の場合、[Custom Chef Recipes] の [edit] を選択します。

  7. [Setup] の隣に「logs::config, logs::install」と入力し、[+] を選択してリストに追加します。次に [Save] を選択します。

    AWS OpsWorks は、インスタンスの起動直後に、このレイヤーの新しいインスタンスごとにこのレシピを実行します。

ステップ 5: インスタンスを追加する

この Layer はインスタンスの設定方法のみを制御しています。次は、Layer にいくつかインスタンスを追加し、起動する必要があります。

  1. https://console.aws.amazon.com/opsworks/ で AWS OpsWorks コンソールを開きます。

  2. ナビゲーションペインで [Instances] を選択し、レイヤーの下にある [+ Instance] を選択します。

  3. デフォルト設定を受け入れて [Add Instance] を選択し、レイヤー にインスタンスを追加します。

  4. 行の [Actions] 列で [start] をクリックしてインスタンスを起動します。

    AWS OpsWorks は新しい EC2 インスタンスを起動し、 CloudWatch ログを設定します。準備ができると、インスタンスのステータスがオンラインに変更されます。

ステップ 6: ログを表示する

エージェントがしばらく実行されると、 CloudWatch コンソールに新しく作成されたロググループとログストリームが表示されます。

詳細については、「Logs に送信された CloudWatch ログデータを表示する」を参照してください。