CloudWatchでログ監視を始める手順と同じことを5分で実現する方法

この記事では、AWSを運用する際にCloudWatchでログ監視をする手順を詳しく紹介します。また、無料かつ5分でログ監視を始める方法も紹介しますので参考にしてみてください。

目次

CloudWatchでログ監視する手順

今回はAWSの以下のインスタンスにCloudWatchを設定してログ監視を設定します。

Platform type AMI(OS) Type
Linux Amazon Linux 2 AMI (HVM), SSD Volume Type t2.micro
Windows Microsoft Windows Server 2019 Base t2.micro

ここからは、Linux Syslog監視編Windowsイベントログ監視編通知設定(メール)の3つに分けて紹介します。

Linux Syslog監視編

LinuxはEC2インスタンスにターミナルからログインして設定していきます。

1. エージェントインストール

以下のコマンドで、テスト用インスタンスにCloudWatch Logsエージェントをインストールします。「Complete!」という文字がでればOKです。

$ sudo yum install -y awslogs
~省略~

Installed:
  awslogs.noarch 0:1.1.4-3.amzn2

Dependency Installed:
  aws-cli-plugin-cloudwatch-logs.noarch 0:1.4.6-1.amzn2.0.1

Complete!

2. リージョンの変更

以下のファイルのリージョンを変更します。東京リージョンで作成しているので、デフォルト設定の「us-east-1」から「ap-northeast-1」に変更します。

$ sudo vi /etc/awslogs/awscli.conf

[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1

3. ログの監視設定

以下の設定ファイルで、ログの監視設定をします。デフォルトでSyslogの設定がされていますので、今回は特に変更はしません。

$ sudo vi /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

4. エージェントの起動

以下のコマンドでCloudWatch Logsエージェントを開始します。

sudo systemctl start awslogsd

5. 権限設定

続いて、IAMロールの設定をしていきます。

インスタンスがCloudWatchへアクセスすることを許可するIAMロールを作成します。

CloudWatchでログ監視する手順Linux Syslog監視編01

「AWSサービス」を選択し「EC2」を選択します。

CloudWatchでログ監視する手順Linux Syslog監視編02

アタッチするアクセス権限は「CloudWatchLogsFullAccess」になります。検索窓に入力して選択します。

CloudWatchでログ監視する手順Linux Syslog監視編03

特に設定なく次に進みます。

CloudWatchでログ監視する手順Linux Syslog監視編04

ロール名は「CloudWatchLogs」にしました。

CloudWatchでログ監視する手順Linux Syslog監視編05

6. IAMロールをインスタンスへ紐付け

作成したIAMロールをEC2のインスタンスに設定します。EC2のサービスから設定するLinuxマシンのインスタンスにIAMロールを紐付けます。

CloudWatchでログ監視する手順Linux Syslog監視編06

先程作成した「CloudWatchLogs」を入力します。

CloudWatchでログ監視する手順Linux Syslog監視編07

7. ログの確認

CloudWatchのメトリクスに取得するログが表示されました。

CloudWatchでログ監視する手順Linux Syslog監視編08

以下のようにログが取得できているのがわかります。

CloudWatchでログ監視する手順Linux Syslog監視編09

Windowsイベントログ監視編

WindowsはAWS Systems Managerというサービスがあるのでそのサービスを使って設定します。AWS Systems Managerを使って設定する前にIAMロールの作成をします。

1. IAMロールの作成

インスタンスがCloudWatchへアクセスすることを許可するIAMロールを作成します。

「AWSサービス」を選択し「EC2」を選択します。

CloudWatchでログ監視する手順Windowsイベントログ監視編01

アタッチするアクセス権限は「CloudWatchAgentAdminPolicy」と「AmazonEC2RoleforSSM」になります。検索窓に入力して選択します。

CloudWatchでログ監視する手順Windowsイベントログ監視編02

特に設定なく次に進みます。

CloudWatchでログ監視する手順Windowsイベントログ監視編03

ロール名は「CloudWatch-win」にしました。

CloudWatchでログ監視する手順Windowsイベントログ監視編04

2. IAMロールをインスタンスへ紐付け

作成したIAMロールをEC2のインスタンスに設定します。EC2のサービスから設定するWindowsマシンのインスタンスにIAMロールを紐付けます。

CloudWatchでログ監視する手順Windowsイベントログ監視編05

先程作成した「CloudWatch-win」を入力します。

CloudWatchでログ監視する手順Windowsイベントログ監視編06

ここまでの設定でAWS Systems Managerを使うことができます。

3. AWS Systems Managerの設定

ここからAWS Systems Managerを使って設定していきます。サイドバーから「RunCommand」をクリックします。

CloudWatchでログ監視する手順Windowsイベントログ監視編07

そのまま「RunCommand」で進みます。

CloudWatchでログ監視する手順Windowsイベントログ監視編08

「AWS-ConfigureAWSPackage」を選択します。

CloudWatchでログ監視する手順Windowsイベントログ監視編09

インストールするパッケージは 「AmazonCloudWatchAgent」になります。

CloudWatchでログ監視する手順Windowsイベントログ監視編10

ターゲットは「インスタンスを手動で選択する」を選択してWindowsのインスタンスIDを選択します。IAMロールをインスタンスに設定していないとここで項目が出てこないので注意です。

CloudWatchでログ監視する手順Windowsイベントログ監視編11

スクロールを下に進めて実行します。以下のような画面になればOKです。

CloudWatchでログ監視する手順Windowsイベントログ監視編12

3. CloudWatchAgentの設定

セッションマネージャーからセッションの開始をします。

CloudWatchでログ監視する手順Windowsイベントログ監視編13

セッションを開始するとブラウザからコマンドを実行することができます。

CloudWatchでログ監視する手順Windowsイベントログ監視編14

以下はコマンドで実行していきます。以下のようにCloudWatchAgentの実行ファイルがおいてあるディレクトリに移ってexeファイルを実行します。

cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
.\amazon-cloudwatch-agent-config-wizard.exe

対話式で選択していきます。OSがWindowsかLinuxか選択します。Windowsなので「2」を選択します。

=============================================================
= Welcome to the AWS CloudWatch Agent Configuration Manager =
=============================================================
On which OS are you planning to use the agent?
1. linux
2. windows
default choice: [2]:
2

EC2かオンプレかを選択します。今回はEC2なので「1」を選択します。

Trying to fetch the default region based on ec2 metadata...
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:
1

StatsD daemon(Node.js上で稼働するデータ収集デーモン)の有効化をするかです。今回は不要なので「2」を選択します。

Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:
2

CloudWatch Log Agentの設定ファイルをインポートするかです。今回は不要なので「2」を選択します。

Do you have any existing CloudWatch Log Agent configuration file to import for migration?
1. yes
2. no
default choice: [2]:
2

CPUやメモリも監視するかなので、今回は「2」を選択します。

Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:
2

カスタムログファイルの設定です。今回は設定がないので「2」を選択します。

Do you want to monitor any customized log files?
1. yes
2. no
default choice: [1]:
2

イベントログのモニターなので、ここで「1」を選択します。

Do you want to monitor any Windows event log?
1. yes
2. no
default choice: [1]:
1
Windows event log name:
default choice: [System]

ここからは取得するLogの重要度になります。すべて取得するため「1」を選択します。

Do you want to monitor VERBOSE level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1
Do you want to monitor INFORMATION level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1
Do you want to monitor WARNING level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1
Do you want to monitor ERROR level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1
Do you want to monitor CRITICAL level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1

CloudWatchに表示されるロググループの名前になります。デフォルトにしています。

Log group name:
default choice: [System]
Log stream name:
default choice: [{instance_id}]

ログのフォーマットです。デフォルトのXMLフォーマットにしています。

In which format do you want to store windows event to CloudWatch Logs?
1. XML: XML format in Windows Event Viewer
2. Plain Text: Legacy CloudWatch Windows Agent (SSM Plugin) Format
default choice: [1]:
1

他の設定は無いので「2」を選択します。

Do you want to specify any additional Windows event log to monitor?
1. yes
2. no
default choice: [1]:
2
Saved config file to config.json successfully.
Current config as follows:
{
        "logs": {
                "logs_collected": {
                        "windows_events": {
                                "collect_list": [
                                        {
                                                "event_format": "xml",
                                                "event_levels": [
                                                        "VERBOSE",
                                                        "INFORMATION",
                                                        "WARNING",
                                                        "ERROR",
                                                        "CRITICAL"
                                                ],
                                                "event_name": "System",
                                                "log_group_name": "System",
                                                "log_stream_name": "{instance_id}"
                                        }
                                ]
                        }
                }
        }
}
Please check the above content of the config.
The config file is also located at config.json.
Edit it manually if needed.

設定をSSMパラメータストアに保存するかです。保存するの「1」で選択します。

Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
1

パラメータストアに保存する際の、”パラメータストアの名前”を指定します。デフォルトの「AmazonCloudWatch-windows」にしています。その他はデフォルトにしています。

What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)
default choice: [AmazonCloudWatch-windows]

Trying to fetch the default region based on ec2 metadata...
Which region do you want to store the config in the parameter store?
default choice: [ap-northeast-1]

Which AWS credential should be used to send json config to parameter store?
1. ASIAYMVHUM2NDFFMRIMD(From SDK)
2. Other
default choice: [1]:
1
Successfully put config to parameter store AmazonCloudWatch-windows.
Please press Enter to exit...

Program exits now.

4. CloudWatchエージェントの起動

AWS Systems Manager から 「Run Command」 を選択し、検索窓に「ManageAgent」 と入力後、表示された項目にチェックをつけます。

CloudWatchでログ監視する手順Windowsイベントログ監視編15

先程”パラメータストアの名前”で設定した「AmazonCloudWatch-windows」を入力します。

CloudWatchでログ監視する手順Windowsイベントログ監視編16

対象のWindowsのインスタンスを選択して実行します。

CloudWatchでログ監視する手順Windowsイベントログ監視編17

問題なければコマンドのステータスが以下のように成功になります。

CloudWatchでログ監視する手順Windowsイベントログ監視編18

5. ログの確認

CloudWatchのメトリクスに取得したログが表示されました。

CloudWatchでログ監視する手順Windowsイベントログ監視編19

以下のようにログが取得できているのがわかります。

CloudWatchでログ監視する手順Windowsイベントログ監視編20

通知設定(メール通知)

通知の設定では、テストでLinuxサーバーでSyslogに「ErrorErrorError」という文字列を検出したらメールを通知する設定をしてみます。以下のコマンドでSyslogにエラーメッセージを出します。

$ logger -p syslog.err -t TEST "ErrorErrorError"

CloudWatchの対象のログから「メトリクスフィルターを作成」で設定していきます。

フィルターパターンに「ErrorErrorError」を設定します。

フィルター名を作成します。今回は「CloudWatchTest」にしています。

カーソルを下に進めてメトリクス名などを設定します。

設定内容が表示されますのでそのまま「メトリクスフィルターを作成」に進みます。

アラームの作成をします。先程作成したメトリクスフィルターをチェックして「アラームの作成」に進みます。

メトリクス名は「SyslogTest」にしています。

カーソルを下にしてしきい値の設定をします。Syslogにメッセージが1以上出力されたらメールを送信する設定にしています。

メールの宛先の設定をして次へ進みます。

アラーム名は「SyslogTest」にしています。

プレビューで問題がなければ完了です。

完了すると以下のような画面になります。

再度Linuxのコンソールから以下のコマンドを実行するとメールが発信されます。

$ logger -p syslog.err -t TEST "ErrorErrorError"

以下のようなメッセージがメールで届きます。

ここまででCloudWatchでログ監視を設定する手順でしたが、いかがでしたでしょうか。非常に設定項目が多く、細かい設定ができますが、ログ監視できるようになるまでに多くの時間を要しました。

無料かつ5分でログ監視を始める方法

CloudWatchによる監視にトライして、わずらわしさや難しさを感じた方もいるかもしれません。そんな方はここで紹介する方法も試してみてください。

数あるサーバー監視ツールの中でも、監視を開始するまでの工数が最もかからないもののひとつがSaaS型ツールの「Site24x7(サイトトゥエンティーフォーセブン)」です。無料で始められる上スモールスタートできるのも好評で、今ユーザーが増えています。

ここからは、そのSite24x7でログ監視を始める手順を紹介します。

アカウントの作成

まず、フリープランのサインアップフォーム(https://www.site24x7.jp/signup.html?pack=1&l=ja)からSite24x7にサインアップします。サインアップフォームは非常にシンプルで、メールアドレスとパスワードを入力するのみです。

サインアップするのに1分もかかりません。フリープランを試すのにクレジットカードの入力が不要なので、サブスクリプションタイプにありがちな課金停止漏れが発生しない安心設計となっています。

サインアップすると自動的にログインします。今回は「サーバー監視」をクリックします。

「Windows」または「Linux」をクリックします。

Linux Syslog監視編

Site24x7を使用中の方は、ホーム画面の「監視」の右にある「+」をクリックします。

Linuxサーバー監視の項目を選びます。

画面に表示されているコマンドを実行するだけです。

Linuxのサーバーに接続して、先程のコマンドをコピペで実行します。たった2回のコマンドでOKです。

エージェントのインストールが完了したら管理コンソールの左側のメニューから「管理」->「アプリケーションログ」を選択し、「ログプロファイル」をクリックします。エージェントをインストールしてSite24x7にデータが収集されるとログプロファイルができています。このプロファイルを使って設定します。

「このログプロファイルをこれらのサーバーに関連付ける」の項目に対象のLinuxサーバーを選択します。

管理コンソールの左側のメニューから「管理」->「アプリケーションログ」を選択し、「ログの種類」をクリックします。さきほどのログプロファイルが表示されていますので「無効化済み」となっているところをクリックして有効にします。

管理コンソールの左側のホーム画面にもどって対象のサーバーの「アプリケーションログ」を確認するとSyslogが取れていることが確認できます。

Windowsイベントログ監視編

Windowsも、Site24x7を使用中の方はLinuxと同じようにホーム画面から進みます。

Windowsサーバー監視を選びます。

エージェントをダウンロードします。デバイスキーは後ほど使いますのでこの画面のままにしておきます。

リモートデスクトップでWindowsサーバーへ接続し、ダウンロードしたエージェントを実行します。

以下のような画面になりますのでNextを押して進めていきます。

デバイスキーの入力を求められますので、先程のキーを入力します。

もしProxyを使っている場合は設定します。今回はデフォルトです。

インストールフォルダーの設定です。デフォルトのままとしました。

他のサーバーにもエージェントをインストールしないのでNoを選択して完了です。

エージェントのインストールが完了したら管理コンソールの左側のメニューから「管理」->「アプリケーションログ」を選択し、「ログプロファイル」をクリックします。エージェントをインストールしてSite24x7にデータが収集されるとログプロファイルができています。このプロファイルを使って設定します。

「このログプロファイルをこれらのサーバーに関連付ける」の項目に対象のWindowsサーバーを選択します。

管理コンソールの左側のメニューから「管理」->「アプリケーションログ」を選択し、「ログの種類」をクリックします。さきほどのログプロファイルが表示されていますので「無効化済み」となっているところをクリックして有効にします。

管理コンソールの左側のホーム画面にもどって対象のサーバーの「アプリケーションログ」を確認するとイベントログが取れていることが確認できます。

通知設定(メール通知)

通知の設定では、テストでLinuxサーバーのSyslogに「ErrorErrorError」という文字列を検出したらメールを通知する設定をしてみます。Windowsサーバーのイベントログの場合も、通知設定の手順は同じです。

コンソールの「管理」->「アプリケーションログ」->「Saved Searches」を選択し、「Go To Search Page」に進みます。

Syslog選択するとメッセージが表示されますので、”ErrorErrorError”という文字列の左側の▽を選択します。

「Filter」をクリックします。

「ErrorErrorError」という文字列だけ抽出されますので、「Alerts」をクリックします。

テストでは以下の設定値にします。

  • 表示名「TEST」
  • Attribute「count >= 1」
  • チェック間隔「5分」
  • Alert Once「5分」
  • ユーザーアラートグループ「アプリケーションチーム」

これは1回以上「ErrorErrorError」という文字列が検出されたら「アプリケーションチーム」という宛先にメールを送信するという内容になります。

ユーザーアラートグループは「管理」->「ユーザーとアラートの管理」から「ユーザーアラートグループ」から変更することができます。

テストで、Linuxのコンソールから以下のコマンドを実行します。

$ logger -p syslog.err -t TEST "ErrorErrorError"

以下のようなメッセージをメールで受信していることが確認できました。

まとめ

CloudWatchでログ監視の設定をするために、AWSのさまざまなサービスを組み合わせて設定しました。AWSではサービスと組み合わせることで細かいカスタマイズする事が可能ですが、基本的な設定をするだけでも調査が必要でした。一方、Site24x7は簡単な設定のみで、わずか5分でログ監視設定をすることができました。

Site24x7ならスモールスタートも可能です。特に、小さく始めて大きく育てるようなWebサービスにおいては、Amazon CloudWatchと合わせてSaaS型の監視ソリューションであるSite24x7を採用してみてはいかがでしょうか。

プランと価格の詳細はこちら:
https://www.site24x7.jp/pricing.html

フリープランのサインアップはこちら:
https://www.site24x7.jp/signup.html?pack=1&l=ja

関連記事

 

免責事項:ここに記載されているすべての著作権、商標、商号は、元の所有者の所有物です。このWebページに含まれる情報は、一般的な情報提供のみを目的としており、そのような情報は、正確性、信頼性、または完全性について調査、監視、または確認されていません。 当社は、ここに含まれる情報への依存に起因する誤り、または損失に対する責任を明示的に否認します。