第7回【いろいろなサービス使ってみよう編その4】¶
■CloudWatch¶
ひとことでCloudWatchといっても下にあげる大分類で異なる機能がある。
- CloudWatch Alarm
- CloudWatch Logs
- CloudWatch Metrics
- CloudWatch Events
CloudWatch Alarm¶
Metricsに基づいてAWSリソースを監視し通知を行うサービス。
EC2の自動スケーリングなどでもこの仕組みが利用される。
(自動スケール設定のイメージ)
CPU使用率をモニタリングするMetricsで5分間の平均使用率80%を超えたら発火するAlarmを作成。
Alarmでは、AMI(※)から新しいEC2インスタンスを起動するように定義する。
※ AMI=Amazon Machine Images. オートスケールのためには、最新のアプリケーションがデプロイ済のEC2インスタンスイメージをあらかじめImageとして固めておく必要がある。
CloudWatch Logs¶
ログの出力先となるサービス。
LambdaやECSからのアプリケーションログを始め、各種のAWSマネージドなサービスのログ出力先となる。
非マネージドサービス(EC2)から出力させるにはエージェントツールのインストールが必要。
CloudWatch Logsに出力されるログ→ストリーミングサービス(Kinesis Firehose)に流す+Lambda(整形)→S3バケットに保存
↑をAthenaで分析させる、のようなことも可能。
ログが細分化されてAWS管理コンソール上からログを探すのはつらい場合がある。
"awslogs"ツールを使うと便利。
"awslogs"をCloud9から実際に使ってみましょう。
pip install awslogs # ロググループ名「XXX」の直近30分間のログを取得 awslogs get XXX -s 30m
ターミナルから直感的にCloudWatch Logsを検索できるawslogsコマンドの紹介
CloudWatch Metrics¶
各種サービスの状態に関する統計データ。
CPU使用率、メモリ使用率、ディスク使用率、Etc...(サービスによって収集されるメトリクスの種類は異なる)
これらの状態をAlarmで監視して通知などのアクションを設定できる。
CloudWatch Events¶
Rulesの機能で、cron式などを指定して何か(Lambdaなど)をスケジュール起動できる。
(「イベントバス」という機能は使ったことないのでよくわからん)
■CloudTrail¶
「いつ」「誰が」「何を」やったかの証跡を残すためのサービス。
有効化するだけでS3バケットにjsonで保存される。
CloudTrail上には90日間保存される。
CloudTrail自体は無料。保存先のS3バケットのストレージ利用料だけがかかる。
「いつまで」保存するかはS3バケット上のライフサイクルルール次第(今回は1年間に設定してみます)。
AWS CloudTrail とは
AWS CloudTrail のよくある質問
やってみること¶
CloudWatch Logs を文字列検知してログ内容をメールを送信してみた サブスクリプションフィルター版
- SNSTopicの作成
- Eメールのサブスクリプションを登録
- 受信したメールのリンクをクリックして承認
- メール通知用のLambda関数の作成(関数名は任意ですが"StudyCWLogSubscriptor"とでもしましょうか)
- CloudWatchLogsでサブスクリプションフィルターを作成
- 動作確認
↑でメール通知ができたら、こんどはこれをSlackのIncomingWebhook機能を使ってSlackのチャンネルにも通知させてみる
【2020年度版】Slack通知はSlack AppのIncoming Webhooksを使おう!やり方を解説
- Slack上のIncomingWebhooksの設定(管理者Only)
- メール通知用のLambda関数を編集 → Slack通知機能を追加する(WebhookのURLにPOSTのHTTPリクエストを飛ばすだけ) ※
- 動作確認
※ 編集後のLambdaのコード
今回はpipの"requests"ライブラリを手軽に使うためにLambdaLayerを追加します。
このredmineの「ファイル」タブにzipファイル(requests.zip)があるのでダウンロードして、コンソールのLambda > レイヤーの画面から追加します。
参考: https://dev.classmethod.jp/articles/lambda-layer-first-action/
re:Invent
https://aws.amazon.com/jp/about-aws/events/2020/reinvent/
11 月 30 日 (月) ~ 12 月 18 日 (金) オンラインで開催 → ご興味があれば視聴してみてはいかがでしょうか(学習時間にも含められるはず)