【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

Amazon CloudWatch Logsを試してみる

AWS

インフラエンジニアの指原です!

AWSにはCPU使用率などをモニタリングするCloudWatchというサービスがあります。
CloudWatchには様々な機能がありますが、今回はその中でも気になっていたCloudWatch Logsを試してみました。

CloudWatch Logsとは?

EC2やその他アプリケーションのログファイルをモニタリングしたり、特定の文字列を確認した際にアラームを発生させたりできるサービスです。

ログファイルのモニタリング - Amazon CloudWatch

とりあえずEC2上のapacheのアクセスログを送信するところまでやってみようと思います。

IAMロールの作成

CloudWatch Logsにログファイルを送信するためにIAMロールを作成してやります。

EC2からログファイルの送信を行うのでロールタイプはAmazon EC2を選択

2016-07-13_12h12_44

CloudWatch Logsのポリシーが用意されているので今回はこれを利用します。

CloudWatchlogsFullAccessを選択
2016-07-13_12h13_13

IAMの設定はこれだけでOKです。

その後IAMロールを付与したEC2インスタンスを作成します。

awslogsのインストール

起動したインスタンスにログイン後、専用エージェントであるawslogsをインストールします。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo yum install awslog

続いて設定ファイルの変更です。
デフォルトの設定だとバージニア北部リージョン(us-east-1)のCloudWatchを使用してしまうので東京リージョン(ap-northeast-1)に変更します。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo vim /etc/awslogs/awscli.conf

[default]
region = us-east-1
⇒region = ap-northeast-1

エージェントの起動、自動起動の設定を行います。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo /etc/init.d/awslogs start
Starting awslogs: [ OK ]

自動起動設定

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo chkconfig awslogs on

これで送信されているはず!
確認してみましょう!!

ログ送信の確認

コンソール上で確認すると「/var/log/messages」というロググループが作成されていることが分かります。
2016-07-13_17h42_26

クリックするとログストリームにインスタンスIDが出力されています。
2016-07-13_17h01_03

さらにこいつをクリックするとmessagesの内容が確認できます。
2016-07-13_17h02_46

いけましたね!

なぜmessagesがCloudWatch Logsに書き込まれるのか?

⇒デフォルトでmessagesが設定されているからです。

設定は/etc/awslogs/awslogs.confに書かれています。

[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/messages

apacheのアクセスログを送信する

では今度はapacheのアクセスログをCloudWatch Logsに出力してみましょう!

サーバ上で設定ファイルを変更します。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo vim /etc/awslogs/awslogs.conf

以下を追記します。

[/var/log/httpd/]
file = /var/log/httpd/access_log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = /var/log/httpd

上記設定の内容です。

file

CloudWatch Logs にプッシュするログファイルを指定(/var/log/httpd/*のようにワイルドカード指定も可能です。)

buffer_duration

ログイベントのバッチ期間を指定(5000は最小値且つデフォルト)

log_stream_name

ログストリームの設定(デフォルトはinstance_idですが今回はhostnameにしてみます)

initial_position

データの読み出し位置の指定、end_of_fileもありますが、基本的にはデフォルトのstart_of_fileでいいと思います。

log_group_name

送信先ロググループを指定します。

設定を反映するためにawslogsを再起動します。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo /etc/init.d/awslogs restart

ログ送信の確認

これで確認してみましょう!!
再度コンソールから確認。。。
2016-07-13_17h42_09

「/var/log/httpd」が追加されています!!
さらにクリックしてみると。。

2016-07-13_15h13_46

ホスト名でログストリームが作成されてますね!!

apacheのアクセスログも確認できました!!
2016-07-13_17h29_03

簡単でしたね!!
今回はapacheのアクセスログを送信するだけでしたが、HTTPのステータスコードを監視して40xのエラーが出たときにアラームを送信することも可能です。

その他ElasticSearchと連携してログの分析なども行えます。

まとめ

  • CloudWatch Logsとはログ収集用サービス
  • 使用するにはawslogsというエージェントが便利
  • 送信するだけなら超簡単

次は巷で話題のAWS Lambdaを使用してサーバーレスアーキテクチャを実現してみます!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
6,461
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author