Memo

メモ > サーバ > サービス: AWS > CloudWatch Logs

■CloudWatch Logs
※ログファイルを転送して一元管理できる Amazon CloudWatchとは:これからAWS監視を始める人へ http://cloudtriage.terilogy.com/20150716/ Amazon CloudWatchの得意なこと苦手なこと:これからAWS監視を始める人へ その2 http://cloudtriage.terilogy.com/20150804-03/ Amazon CloudWatch Logsによるログの収集とフィルタとアラーム設定 http://dev.classmethod.jp/cloud/cloudwatch-logs/ CloudWatch Logsをさわってみた http://qiita.com/mechamogera/items/a01c9d78d6b1842c4ded CloudWatch LogsでAmazonLinux上のApacheエラーログを監視する http://dev.classmethod.jp/cloud/cloudwatch-logs-apache/ ログファイルのモニタリング https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html ログの保持期間の変更 https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/SettingLogRetention.html Zabbixを使えば柔軟な監視ができるが、ELBやRDSの監視は難しい(エージェントをインストールできないため) CloudWatchとZabbixの併用がいいかも ■アクセスキーの発行 CloudWatchAgentServerPolicyの権限を持ったアクセスキーを発行する もしくは、以下の手順のように「EC2にCloudWatchAgentServerPolicyの権限を持たせる」とすることで、アクセスキーの管理が不要になる IAM → アクセス管理 → ロール → ロールを作成 信頼されたエンティティタイプ: AWSのサービス 一般的なユースケース: EC2 「次へ」ボタンをクリック 「許可を追加」画面で「CloudWatchAgentServerPolicy」を選択して「次へ」ボタンをクリック ロール名: CloudWatchAgentServerRole 説明: Allows EC2 instances to call AWS services on your behalf. (変更せず) 「ロールを作成」ボタンをクリック 続いて、作成したIAMロールをEC2に紐づける EC2 → インスタンス 対象のEC2にチェックを入れ、「アクション → セキュリティ → IAMロールを変更」を選択 「IAMロールを変更」画面になるので、上で作成した「CloudWatchAgentServerRole」を選択して「IAMロールの更新」ボタンをクリック ■awslogsをインストール&設定
# yum install -y awslogs … インストール # vi /etc/awslogs/awscli.conf … 設定変更
[plugins] cwlogs = cwlogs [default] #region = us-east-1 region = ap-northeast-1 … 東京リージョンに変更 aws_access_key_id = XXXXX … アクセスキーを発行した場合に設定(EC2に権限を持たせた場合は不要) aws_secret_access_key = YYYYY
# 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 [/var/log/secure] … 認証に関するログ datetime_format = %b %d %H:%M:%S file = /var/log/secure buffer_duration = 5000 log_stream_name = {instance_id}_secure initial_position = start_of_file log_group_name = /var/log/secure [/var/log/audit/audit.log] file = /var/log/audit/audit.log buffer_duration = 5000 log_stream_name = {instance_id}_audit_log initial_position = start_of_file log_group_name = /var/log/audit/audit.log [/var/log/httpd/access_log] … Apacheのアクセスログ datetime_format = %d/%b/%Y:%H:%M:%S file = /var/log/httpd/access_log* buffer_duration = 5000 log_stream_name = {instance_id}_httpd_access_log initial_position = start_of_file log_group_name = /var/log/httpd/access_log [/var/log/httpd/error_log] … Apacheのエラーログ datetime_format = [%a %b %d %H:%M:%S %Y] file = /var/log/httpd/error_log* buffer_duration = 5000 log_stream_name = {instance_id}_httpd_error_log initial_position = start_of_file log_group_name = /var/log/httpd/error_log [/var/log/maillog] … メールに関するログ datetime_format = %Y-%m-%d %H:%M:%S file = /var/log/maillog* buffer_duration = 5000 log_stream_name = {instance_id}_maillog initial_position = start_of_file log_group_name = /var/log/maillog
# systemctl start awslogsd … 起動 # systemctl enable awslogsd … awslogsの自動起動を設定 # systemctl status awslogsd … awslogsの実行状況を確認 # vi /var/log/awslogs.log … awslogsのログを確認
Amazon Linux 2 以前の場合、以下で起動できる
# service awslogs start # chkconfig awslogs on
■転送されたログを確認 しばらく待つと、「CloudWatch → ロググループ」にログが表示される ■ログの長さ制限 32742 byte 以下ではそのまま表示され、32743 byte を閾値に TRUNCATED に置き換わるようなので注意 以下のようなメッセージが
production.ERROR: ShippingMappingDataService:createMappingHeaderData {"url":null,"ip":null,"agant":null,"userId":null,"error":"[object] (Illuminate\\Database\\QueryException(code: 23000): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '20341540' for key 'PRIMARY' (SQL: insert into `deliveries` (`arrival_day`, `arrival_time_code`, 以下略
丸ごと以下のようなメッセージに置き換わる 「ログにこういう文字列が含まれていれば警告」のような仕組みに支障をきたすので、長いメッセージは、 「一定文字数ごとに改行して記録する」「ログ出力時に短くして記録する」「本来のログと並べて、短い版のログも記録する」 などの対応が必要そう
[TRUNCATED MESSAGE] 1231496 bytes are truncated.
ログをもとに何らかの通知を行う場合、念のため「[TRUNCATED MESSAGE] という文字があれば警告」としておくべきか Amazon Web Services Japan によるスライドでも 「1 Log Event の最大サイズは 32KBです。 →32KBを超えると、ログがトランケートされてしまいます。」 という制限が紹介されている CloudWatch Logsエージェントを検証してみた | mooapp https://moomindani.wordpress.com/2014/07/16/cloudwatch-logs-5point-investigation/ AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-cloudtrail-cloudwatch-logs ■ログの保存期間 デフォルトではログは無制限に保持される 必要に応じて、3ヶ月〜1年程度に設定しておくといい ログ保存期間は、「CloudWatch → ロググループ」で、各ログの「保持」をクリックすることで変更できる Amazon CloudWatch Logs とは - Amazon CloudWatch Logs https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html Amazon CloudWatch Logsの保持期間を簡単に変更する方法 | DevelopersIO https://dev.classmethod.jp/articles/how-to-easily-change-the-retention-period-of-amazon-cloudwatch-l... CloudWatch Logs の保持期間を作成時に変更する | DevelopersIO https://dev.classmethod.jp/articles/create-loggroup-change-retention/ ちなみにCloudWatchのグラフ表示は遡れるのが2週間までだったが、 かなり以前に15ヶ月に延長されている [CloudWatch] メトリックの保持期間が14日→15ヶ月に延長されて、グラフ機能も強化されました | DevelopersIO https://dev.classmethod.jp/articles/cloudwatch-extended-15months/ ■利用料金 料金 - Amazon CloudWatch | AWS https://aws.amazon.com/jp/cloudwatch/pricing/ 【AWS】CloudWatchの料金体系を調べてみた - echo("備忘録"); https://makky12.hatenablog.com/entry/2022/11/21/120500 CloudWatch Logsの利用料金は以下のようになっている また5GBの無料利用枠がある
収集 (データの取り込み) ... 0.76USD/GB 保存 (アーカイブ) ... 0.033USD/GB 分析 (Logs Insights のクエリ) ... スキャンしたデータ 1 GB あたり 0.0076USD
必要なログが1ヶ月あたり5GB以内なら、収集に関する課金は気にする必要が無さそう 保存に関しても、6ヶ月分保存するなら30GBほどのデータになるが、1ドル(0.033USD/GB × 30GB)程度で収まりそう 無料利用枠があるので、一般的なサイトなら無料もしくは微々たる金額で利用できそう

Advertisement