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でLambda@Edgeを本番運用してわかった注意点

    CloudFrontでLambda@Edgeを一年間運用しまして、気づ…

  2. AWS

    AWSでS3を安全に使うための2つのポイント

    今回は、AWSのS3(ストレージサービス)を安全に使うためのポイン…

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

    AWS

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

    今回は、AWSにおいて安全なネットワーク設計を行いポイントについて…

  4. AWS

    AWSを利用してPCI DSS準拠のシステムを構築する3つのメリット

    今回はAWSを利用してPCI DSS準拠のシステムを構築す…

  5. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法

    AWSに最初にアカウントを作るとルートユーザーというものが作られます。…

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

    AWS

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

    AWSでファイルや画像などを配置する場所として利用する場所はS3ですが…

最近の記事

  1. AWS

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

    PCI DSSに準拠するためにまず最初にやるきべこと
  3. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと
  4. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法
  5. AWS

    AWSで大規模障害発生時に被害を最小限にする方法
PAGE TOP