クイックスタート: EC2 Linux インスタンスの起動時に CloudWatch Logs エージェントをインストールして設定する - Amazon CloudWatch Logs

クイックスタート: EC2 Linux インスタンスの起動時に CloudWatch Logs エージェントをインストールして設定する

ヒント

このセクションで説明している古い CloudWatch Logs エージェントは非推奨になる予定です。代わりに、ログとメトリクスの両方を収集できる新しい統合 CloudWatch エージェントを使用することを強くお勧めします。さらに、古い CloudWatch Logs エージェントには Python 3.3 以前が必要であり、これらのバージョンはデフォルトでは新しい EC2 インスタンスにインストールされません。統合 CloudWatch エージェントの詳細については、「CloudWatch エージェントのインストール」を参照してください。

このセクションの残りの部分では、古い CloudWatch Logs エージェントの使用について説明します。

起動時に EC2 Linux インスタンスに古い CloudWatch Logs エージェントをインストールする

Amazon EC2 ユーザーデータは、インスタンスの起動時にパラメータ情報を渡す Amazon EC2 の機能です。これを使用してインスタンスに CloudWatch Logs エージェントをインストールして設定します。CloudWatch Logs エージェントのインストール情報と設定情報を Amazon EC2 に渡すには、Amazon S3 バケットのようなネットワークの場所に設定ファイルを用意します。

複数のログソースから単一のログストリームにデータを送信する設定はサポートされていません。

前提条件

ロググループとログストリームをすべて記述したエージェントの設定ファイルを作成します。これは、モニタリングするログファイルとそのアップロード先のロググループおよびログストリームが記述されているテキストファイルです。エージェントはこの設定ファイルを使用して記述されたすべてのログファイルのモニタリングおよびアップロードを開始します。エージェント設定ファイルの設定の詳細については、「CloudWatch Logs エージェントのリファレンス」を参照してください。

以下は、Amazon Linux のサンプルエージェント設定ファイルです。

[general] state_file = /var/awslogs/state/agent-state [/var/log/messages] file = /var/log/messages log_group_name = /var/log/messages log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S

以下は、Ubuntu のサンプルエージェント設定ファイルです。

[general] state_file = /var/awslogs/state/agent-state [/var/log/syslog] file = /var/log/syslog log_group_name = /var/log/syslog log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S

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:*:*:*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::myawsbucket/*" ] } ] }
  6. [Create Policy] を選択します。

  7. ナビゲーションペインで [Roles]、[Create New Role] の順に選択します。

  8. [Set Role Name] ページで、ロールの名前を入力し、[Next Step] を選択します。

  9. [Select Role Type] ページで、[Amazon EC2 ] の隣にある [Select] を選択します。

  10. [Attach Policy] ページのテーブルのヘッダーで、[Policy Type]、[Customer Managed] の順に選択します。

  11. 作成した IAM ポリシーを選択し、[次のステップ] を選択します。

  12. [Create Role] を選択します。

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

新しいインスタンスを起動して CloudWatch Logs を有効にするには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. [インスタンスの作成] を選択します。

    詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「インスタンスの起動」を参照してください。

  3. [Step 1: Choose an Amazon Machine Image (AMI)] ページで、起動する Linux インスタンスタイプを選択し、[Step 2: Choose an Instance Type] ページで [Next: Configure Instance Details] を選択します。

    cloud-init が Amazon Machine Image (AMI) に含まれていることを確認します。Amazon Linux AMI や Ubuntu および RHEL の AMI にはすでに cloud-init が含まれていますが、CentOS および AWS Marketplace のその他の AMI には含まれていない場合があります。

  4. [ステップ 3: Configure Instance Details (インスタンスの詳細の設定)] ページの [IAM ロール] で、作成した IAM ロールを選択します。

  5. [Advanced Details] の [User data] で、以下のスクリプトをボックス内に貼り付けます。その後、スクリプトを更新するには、[-c] オプションの値を、エージェント設定ファイルの位置に変更します。

    #!/bin/bash curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O chmod +x ./awslogs-agent-setup.py ./awslogs-agent-setup.py -n -r us-east-1 -c s3://DOC-EXAMPLE-BUCKET1/my-config-file
  6. そのほかインスタンスへの必要な変更を行い、起動設定を確認して [Launch] を選択します。

  7. エージェントが実行されてしばらくしたら、CloudWatch コンソールに新しく作成されたロググループとログストリームを確認してください。

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