CloudWatch Logsでのログ監視

やりたいこと~Errorなどの特定文字列を検知、メール通知~

今回はCloudWatch Logsエージェントをインストールし、ログを監視してみようと思う。
以前の現場ではスクリプトをサーバに仕込んでログ監視していたが、CloudWatchでも同じことができそうだ。

作業記録

・ロール作成
-----
一般的なユースケース		EC2

ロール名				hdora_CloudWatchAgentServerPolicy
ロールの説明				Allows EC2 instances to call AWS services on your behalf.
信頼されたエンティティ		AWS のサービス: ec2.amazonaws.com 
ポリシー				CloudWatchLogsFullAccess
アクセス権限の境界			アクセス権限の境界が設定されていません
-----
↓
CloudWatchLogsFullAccess ではダメ。
CloudWatchAgentServerPolicyにしておこう。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html


・EC2作成
-----
Amazon Linux 2 AMI (HVM), SSD Volume Type
t3a.small
-----

・CloudWatch Logsエージェントのインストール
sudo yum install -y awslogs
cp -ai /etc/awslogs/awscli.conf /etc/awslogs/awscli.conf.org
vi /etc/awslogs/awscli.conf
-----
[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1
-----

diff /etc/awslogs/awscli.conf /etc/awslogs/awscli.conf.org
-----
4c4
< region = ap-northeast-1
---
> region = us-east-1
-----

cat /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
----

systemctl status awslogsd.service
systemctl start awslogsd.service
systemctl status awslogsd.service

systemctl is-enabled awslogsd.service
systemctl enable awslogsd.service
systemctl is-enabled awslogsd.service


・トピック作成(省略)
https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-tutorial-create-topic.html


・メトリクスフィルター作成
-----
Step 1: Pattern
フィルターパターンを作成
フィルターパターン			Stopping The Apache HTTP Server
Step 2: Metric
メトリクスの割り当て
フィルター名				hdora_StopApache
メトリクス名				messages-StopApache
メトリクス名前空間			EC2Logs
メトリクス値				1
デフォルト値				0
-----


・アラーム作成
名前空間				EC2Logs
メトリクス名				messages-StopApache
統計					合計
期間					1 分

しきい値の種類			静的
messages-StopApache が次の時	より大きい (>)
... よりも				0

その他の設定

ステップ 2: アクションの設定
アクション
通知					アラーム状態のとき、「hdora」に通知を送信します
ステップ 3: 名前と説明の追加
名前と説明
名前					apachedown
説明					-


・テスト
yum install httpd
systemctl restart httpd
↓
メールが飛ぶことを確認

躓いた箇所

メトリクスフィルター作成の際、デフォルト値 0にする必要がある。
出ないと、CloudWatchで”データ不足”が出てしまう。
暫く悩んでしまった。

懸念点

統合 CloudWatch エージェントが推奨されており、CloudWatch Logsは将来廃止されるとのこと。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html
統合 CloudWatch エージェントでのログ監視も勉強する必要ありそうだ、はぁ・・・。