AWS

AWSでLinuxサーバ上のログを自動的にS3に保存する方法

AWSでLinuxサーバ上のApacheのアクセスログやアプリケーションログ、サーバのログイン履歴など任意のログをS3に送る方法についてご説明します。

AWSで提供されているKinesis Firehoseというリアルタイムにデータを送信するサービスを利用します。

Amazon Kinesis Data Firehose とは

Kinesisエージェント用のIAMユーザーを作成する

Linuxにインストールするkinesisエージェント用のIAMユーザーを作成します。

AWSコンソールにログインし、上部のメニューのサービスからIAMを選択肢、左のメニューのユーザーを選択します。画面に表示されるユーザーの追加ボタンをクリックします。

好きなユーザー名を入力し、プログラムよるアクセスにチェックします。

そのまま次に進めて、最後にアクセスキーIDシークレットアクセスキーが表示されるので保存しておきます。

Kinesisエージェント用のIAMユーザーにアクセス権限を与える

IAMのユーザーのメニューから作成したユーザーをクリックし、インラインポリシーの追加をクリックします。

下記のように権限を設定します。

適当にポリシーに名前をつけ、アクセス権限の設定を完了します。

Kinesis配信ストリームの作成

次に、サーバからログを受け取り、S3に転送するためのKinesis配信ストリームを作成します。

上のサービスのメニューからKinesisを選択し、配信ストリームの作成をクリックします。

配信ストリームの名前を適当に設定します。

SourceのところでDirect PUT or other sourcesを選択します。

DestinationAmazon S3を選択します

S3 Bucketの項目でCreate newボタンを押して、出力先のS3バケットを新しく作成します。(既存のものを使っても問題ありません)

好きなS3バケット名入力しRegionを選択します。

IAM roleの項目でCreate new or chooseを選択します。

IAMロールが自動的に作成され、適切な権限が与えられます。

あとは、そのまま進めて、配信ストリームの作成を完了させます。

Kinesisエージェントのインストール

ログを送りたいサーバにKinesisエージェントをインストールします。これはAmazon Linux2で試した手順ですが、CentOSやRedhatの場合は、7以降のバージョンでKinesisエージェントに対応しています。

下記のコマンドを実行しkinesisエージェントのパッケージをインストールします。

sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

下記のファイルを編集し、S3に送りたいログファイル名をとkinesis配信ストリーム名、IAMユーザーのアクセスキーID, シークレットキー設定します。注意点として、読み取るファイルは、kinesisエージェントの起動ユーザーaws-kinesis-agent-userが読み取りができる必要があります。

{
  "cloudwatch.emitMetrics": false,
  "firehose.endpoint": "https://firehose.(リージョン名、東京の場合は、ap-northeast-1).amazonaws.com",
  "awsAccessKeyId": "(IAMユーザーのアクセスキーID)",
  "awsSecretAccessKey": "(IAMユーザーのシークレットアクセスキー)",
  "flows": [
    {
      "filePattern": "/var/tmp/app.log*",  ← 送りたいログのPATH
      "deliveryStream": "send-log-to-s3"  
    }
  ]
}

Kinesisエージェントを起動し、自動起動を設定

systemctl start aws-kinesis-agent
systemctl enable aws-kinesis-agent

以上でサーバのログがS3に保存されるようになります。

関連記事

  1. AWSでCloudFrontを導入する際に注意する点

    AWS

    AWSでCloudFrontを導入する際に注意する点

    前回の記事でAWSでシステムを構築する際にはCloudFrontを利用…

  2. AWS

    AWSでOSの脆弱性対策をする方法

    今回はAWSで作成したEC2インスタンスのOSの脆弱性対策をする方…

  3. AWSをセキュリティを高めて安全に使う方法

    AWS

    AWSをセキュリティを高めて安全に使う方法

    今回はAWSを安全に使うための方法についてご説明します。AWSは簡…

  4. Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    AWS

    Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    改ざん検知はPCI DSSなどセキュリティを強化する際には、必ず必要に…

  5. AWS

    AWSでコンプライアンスのための監査ログを取得する方法

    PCI DSSやIT内部統制などのコンプライアンスの観点でAWS上で監…

  6. PCI DSSの12要件とAWSにおける対応方法

    AWS

    PCI DSSの12要件とAWSにおける対応方法

    今回は、AWSを使ってクレジットカード業界のセキュリティ基準であるPC…

最近の記事

  1. AWSで安全なネットワーク設計を行うポイント

    AWS

    AWSで安全なネットワーク設計を行うポイント
  2. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと
  3. AWS

    AWSで大規模障害発生時に被害を最小限にする方法
  4. PCI DSSの12要件とAWSにおける対応方法

    AWS

    PCI DSSの12要件とAWSにおける対応方法
  5. AWS

    AWSでOSの脆弱性対策をする方法
PAGE TOP