AWS CloudWatch
CloudWatch
CloudWatchLogs のフィルタ方法
ロググループ
を選択イベントの検索
をクリック- 以下のような感じで検索
{ ($.request.ipv6Address = "2400:4050:0000::/56") && ($.response.statusCode = "500") }
CloudWatchLogs Insight
- インサイトのほうが色々出来て便利
- グラフは dashboard への追加も可能!
以下は insight による集計のサンプル
Metric Math で DynamoDB の消費 WCU, RCU を正しく測る!
ずーっと不思議に思っていたんだけど、5分平均の 消費 WCU, RCU をよしなに出してくれるメトリクスのがなかった。 ConsumedWriteCapacityUnits
ConsumedReadCapacityUnits
は消費が発生した時点の WCU, RCU なので(という説明でわかるのか?自分も理解が少し曖昧)、平均を選んでも全然だめ。
こりゃぁ、 ConsumedReadCapacityUnits
の5分合計 / 300 でもしようかな。でも、どうやるんだ??
困ったときの classmethod さん ([小ネタ] DynamoDBのキャパシティユニットをCloudWatchで見るときのコツ) によると、 Metric Math
なるものを使うと自分で計算できるっぽい。
ほう、 グラフエントリーの id / 300
とかすればいいのね〜!
ということで出来上がったグラフがこちら:
疑問: なんでこんなに需要がありそうなメトリクスが提供されていないの???
Metrics の保持期限等
メトリクスの保持期限は15ヶ月固定で、削除することも延長することもできない模様。 https://aws.amazon.com/jp/cloudwatch/faqs/ にも有りました
Q: メトリクスは削除できますか?
CloudWatch ではメトリクスの削除はサポートされません。メトリクスは上記の保存期間スケジュールに基づいて有効期間が切れます。
Q: Amazon EC2 インスタンスのモニタリングを無効にした場合、メトリクスデータを失いますか?
いいえ。すべての Amazon EC2 インスタンスのメトリクスデータは、上記の保存期間スケジュールに基づいて常に取得できます。ただし、名前空間で最新のインスタンスが表示されるように、CloudWatch コンソールでのメトリクスの検索は、メトリクスが最後に取り込まれてから 2 週間に制限されます。
Q: 終了した Amazon EC2 インスタンスや削除された Elastic Load Balancer のメトリクスデータにアクセスできますか?
はい。Amazon CloudWatch は、終了した Amazon EC2 インスタンスまたは削除された Elastic Load Balancing のメトリクスを 15 か月間格納します。
Custom Metrics の作成 (2019/09/12)
状況: 例えば1つの Lambda で複数の API エンドポイントのレスポンスを監視するとする。そうすると1つの関数から複数の遅延値をメトリクスに残したくなる。 Lambda の動作時間 (Duration) では成り立たないわけだ。
ソリューション: カスタムメトリクスの作成である。これはよく EC2 での CPU リソースモニタリングなどを事例で紹介されている。
- 他の選択肢: EC2 なら CloudWatch Agent を使えという風潮が強く、 AWS 自身もあまり custom metrics は押していない感じがする。だが Lambda にエージェント仕込めるわけもないので、 serverless であるならば custom metrics 一択に見える。
AWS CLI でのお試し
- 例: Demo という namespace で latency,count という metric を作成。投入点で 300msec だったよ、アクセス回数は1回だよという結果を投入する。
- その際のコマンド例 (dimensions は後述):
$ aws --profile <yourprofile> --region <yourregion> cloudwatch put-metric-data --namespace Demo --metric-name latency --dimensions "Endpoint=list-resource-A" --value 300 --unit Milliseconds $ aws --profile <yourprofile> --region <yourregion> cloudwatch put-metric-data --namespace Demo --metric-name count --dimensions "Endpoint=list-resource-A" --value 1 --unit Count
結果:
- 対象リージョンの cloudwatch logs に Demo ネームスペースが追加される
- Demo namespace の中には、 dimension で定義した次元(カテゴリのようなものかな)が並ぶことになり
- Dimension (今回は Endpoint) に対して指定した値 (list-resource-A) の metrics が一覧される (イメージ付のために )
- で、ちゃんと指定した単位 (Unit) でグラフ描画される
注意!
- metrics の削除は custom metrics といえども削除できない。試しに作ったらAWS提供のmetrics と同じく15ヶ月生き続けるので注意。別リージョンで試しておくと一覧が汚れなくて良いかもね。
- 余りサポートがしっかりしていない印象なので、程々に使いながら様子をうかがう。