LoginSignup
66
57

More than 3 years have passed since last update.

CloudWatchと正面から向き合ってみる

Last updated at Posted at 2019-06-03

みんな苦闘するCloudWatch。
習熟すれば少しは好きになれるんじゃないかと思いきちんと把握してみます。
AWSで完結できればいろいろ楽だし安いので、DataDogを入れる前に。

先に所感とまとめ

  • 何だかんだ言ってCloudWatchはありがたい存在
    • いろいろ使いづらいところがあるとはいえ、色々な面倒事を無条件でやってくれるので
      • データ収集(ロギング、メトリクス化)、ストレージ、可視化
        • オンプレではFluentd, Zabbix, Kibanaなど構築しないとできないこと
      • 特にサーバレスだとその恩恵は大きい
  • イベントで担保できるものはアラームではなくイベント駆動で通知する
  • デフォルトのメトリクスは即座にアラームを作成して監視しましょう
    • CloudWatch メトリクスを発行する AWS のサービス
    • わざわざAWSがメトリクスまで作成してくれているので、アラームを作成するだけで監視できます
      • 例: LambdaErrorsメトリクスを監視すれば、該当リージョンで発生した全てのLambdaのエラーを検知できます
  • CloudWatchインサイトは普通に使いましょう
  • CloudWatch周りもすべてコード化すべき
  • 監視は超重要

用語

厳密には正しくないかもだけど、CloudWatchの用語を図と一言でざっくりまとめる。
image.png

ログイベント: 1行のログ
ログストリーム: ログをまとめたもの。例えば同じEC2インスタンスからのログは同じログストリームにまとめられる。
ロググループ: ログストリームをまとめたもの。
メトリクスフィルタ: ログをメトリクスに加工。またメトリクスをフィルタして別のメトリクスに加工。
メトリクス: ログを、グラフ描画やアラート通知に利用できる数値に加工したもの。
ディメンション: メトリクスのプロパティ。
統計: 指定した期間のメトリクスのデータの集計
アラーム: 指定した期間の単一のメトリクスの数値を監視し、設定したしきい値等を基準にアクションを起こす

監視と検知

ログの中に Error という文字列が含まれていたら通知したい

調査・分析

ログデータの調査方法、検索方法、分析方法についてまとめる。
現状は↓の順に確認を行っている。

  1. インサイト
  2. デフォルトのダッシュボード(下の方に記載)
  3. メトリクスからのログ確認

インサイト

CloudWatchを使っていて、まだインサイトを使っていない人は今すぐ使うべきです。
なぜなら5分の習熟で使いこなせて、それで充分に実用的だからです。

ドキュメントではデフォでCLIを推奨される

マネコンのUIがつらいから?
image.png

それでもマネコンを使う場合

可視化

ログデータの可視化についてまとめる。

ダッシュボード

デフォルトのダッシュボードは手っ取り早くAWSのサービスの状況を確認できる。
dashboard.gif

リソースグループ

rg.gif

  • CloudWatchのダッシュボードでは表示できる件数が限られる(Lambdaなら100件までなど)ので、それを超過する場合は可視性の観点で導入するメリットが大きい
  • タグベース or CloudFormationスタックベースでリソースをグルーピングできる

すべてのCFnスタックにリソースグループを作成するスクリプト

#!/usr/bin/env bash

# Stack IDのリストを取得(削除済みは除く)
TMP=/tmp/_tmp_stack_id
targets=(`aws cloudformation list-stacks | jq -r '.[][] | select(.DeletionTime==null) | .StackId'`)

# リソースグループを作成
for id in "${targets[@]}"
do
  stack=`echo $id | awk  -F'/' '{print $2}'`
  aws resource-groups create-group \
    --name ${stack} \
    --resource-query '{"Type": "CLOUDFORMATION_STACK_1_0", "Query": "{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"StackIdentifier\":\"'${id}'\"}"}'
done

カスタムダッシュボード

便利だが、新規に作成されたリソースの追加が漏れがちなので悩ましいところ。

メモ

66
57
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
66
57