0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS + Terraform – ALBのエラーを CloudWatch メトリクスで検知して通知する

Last updated at Posted at 2023-09-20

標準メトリクス

CloudWatch > メトリクス にいろんな標準メトリクスがある

ALBだけでも相当色々な数があるが「リージョン別のメトリクス」とか「ALB単位のメトリクス」とかに分かれているようだ

アラームの作成

CloudWatch > アラーム から新しいアラームを作成できる

ここで好きなメトリクスを選んでしきい値などを設定すれば良い

ALB (ELB) の500系エラーの説明

ALBの層で起こるエラーと、ターゲット内(アプリケーション層とか)で起こるエラーはメトリクスの種類が分かれているようだ

HTTPCode_ELB_5XX_Count
ロードバランサーから送信される HTTP 5XX サーバーエラーコードの数。この数には、ターゲットによって生成される応答コードは含まれません。

HTTPCode_Target_5XX_Count
ターゲットによって生成された HTTP 応答コードの数。これには、ロードバランサーによって生成される応答コードは含まれません。

通知の設定

メトリクスの作成・編集でSNSトピックとの連携ができるので、SNSトピックを設定してサブスクリプションも設定する

例えばLambdaスクリプトを使う場合は

CloudWatchメトリクス -> ALARM -> SNSトピック -> サブスクリプション -> Lambda

という経路になる (長い)

ログはどこに?

ALBのログはS3に保存されているようだ
CloudWatchでは見られない ( 2023/09/20 現在)

落とし穴

エラーを発生させてもメトリクスのページでどのエラーの回数も最大1までにしかならない
他のタブにしれっと「平均」とか「合計」の選択が紛れ込んでいた

ここを合計にすると(当たり前だが)合計値が見やすい

image

Terraform

標準メトリクスを指定してアラームを作れるようなので、公式説明を参考に metric_name などを指定すれば良さそう

metric_name と namespace はそれぞれ存在する正しい指定にしないといけないようだ
あとALBの指定も必要

resource "aws_cloudwatch_metric_alarm" "foobar" {
  alarm_name                = "terraform-test-foobar5"
  comparison_operator       = "GreaterThanOrEqualToThreshold"
  metric_name               = "メトリクスの名前"
  namespace                 = "AWS名前空間"
  evaluation_periods        = 2
  period                    = 60
  statistic                 = "Sum"
  threshold                 = 10
  alarm_description         = "Alarm!"
  insufficient_data_actions = []

  dimensions = {
    LoadBalancer = "<ALB_PATH>"
  }

}
  • periods : チェック期間の秒数、デフォルトは60秒=1分
  • threshold : チェックのしきい値 (上のコード例であれば、期間内にエラーが10回以上起きた場合を検知したい場合は5にする)
  • evaluation_periods : 何回の繰り返しを検知するか ( 2にした場合は periods/treadshold などで指定したエラーが2回繰り返された場合にALARM扱いにする )

LoadBalancerにはALBのARNでもなく一部のパスを渡す必要がありそうだ

たとえばARNが以下なら

arn:aws:elasticloadbalancing:<REGION>:<ACCOUNT>:loadbalancer/app/alb-name/1234567890

以下の部分

app/alb-name/1234567890

どうやって500系エラーを起こすか

ALBのリスナーのルールで、てきとうに500系のエラーを起こすルールを作っておけば確認しやすい

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?