1日1%成長する ~Amazon CloudWatch~

AWSの学習メモ

Amazon CloudWatch

CloudWatch Alarmsの設定
    - M out of N(N個中M個)のアラーム
    - 評価期間:アラームの状態を決定するまでに要する値
    - Datapoint to Alarm:アラームがALARM状態に遷移するために超過する必要がある評価期間内のデータポイントの数
        - 短時間で変化が大きいメトリクスで誤報を抑制

CloudWatch Alarmsのアクション
    - SNS
        - SNSトピックを追加してアラームの状態が変わったときにトピック発行
        - 以下、例
            - CloudWatch MetricsにEC2からメトリクスを送付
            - 指定したしきい値を超えた時にSNSのアクションを実行
            - SNSをトリガーにAWS Lambdaを実行
            - GetMetricWidgetImage APIのグラフを取得する
            - 取得したグラフの画像ファイルを添付したEmailを送信/運用システムに連携
    - EC2
        - EC2インスタンスを自動的に停止、終了、再起動または復旧アラームを作成
        - StatusCheckFailed_SystemアラームがトリガーとしたAutoRecovery
    - EC2 Auto Scaling
        - AutoScalingのEC2インスタンス台数を増減するアラームを作成
        - 負荷に応じてリソース調整

クラウドならではの監視
    Billingアラーム設定が可能
        ※アラームの設定はVirginiaリージョンから可能

CloudWatch Logs
    - AWSサービス及び顧客システムのログを監視、保存、アクセスを提供
    - エージェント経由でログメッセージをCloudWatchエンドポイントに転送
    - ログデータの保存期間を設定可能(1日〜永久保存)
    - Amazon S3へのログのエクスポートが可能

階層
    - ログイベント
        - 1つのログエントリ
        - アクティビティのレコード
    - ログストリーム
        - 複数のログイベントで構成
        - モニタリングしているリソースのタイムスタンプ順でイベントを表す
    - ロググループ
        - 複数のログストリームで構成

CloudWatch Logsのメトリクスフィルタ
    - ログデータから特定の文字列のフィルタリングが可能

CloudWatch Logsサブスクリプションフィルタ
    - 集めたログをフィルタパターンに応じてリアルタイムにKinesis Data Streams/Firehose/Lambdaへ転送
    - 1つのロググループにつき、1つのサブスクリプションフィルタが可能
    - サブスクリプションフィルタはCLIからのみ設定可能

CloudWatch Logs Insights
    - 専用のクエリ言語といくつかのシンプルで強力なコマンドを提供
    - サンプルクエリ、クエリの自動補完、ログフィードの検出
        - サンプルクエリ例:VPCフローログ向けに「送信元と送信先IPアドレス別の平均、最小、最大バイト転送」など
    - 2018/11/5以降にCloudWatchLogsに送信されたログデータを検索可能
        - ログタイプに応じログフィールドも異なる
            - VPCフローログやRoute53ログ、Lambdaログなど
    - fields:指定したフィールドをログイベントから取得
    - filter:クエリの結果を1つ以上の条件でフィルタリング
    - stats:ログフィールドの値に基づいて集約統計を計算
    - sort:取得したログイベントをソート
    - limit:クエリから返されるログイベントの数を制限
    - parse:ログフィールドからデータを抽出
    Visualization
        - 集約関数「stat()」、グルーピングに期間切り上げで「bin()」を使用する必要有り
        - 時間軸に沿ってトレンドやパターンを特定、分析

CloudWatch Dashboards
    - CloudWatchコンソールでカスタマイズ可能
    - 異なるリージョンのリソースでも1つのダッシュボードでモニタリング可能
    - 自動更新間隔(10s、1m、2m、5m、15m)
    - 表示可能な5つのウィジェット
        - 折れ線グラフ
        - スタックエリア
        - 数値
        - テキスト
            - マークダウン形式で表示可能
            - ボタンとしてウェブリンクを指定
        - クエリ結果
            - Logs Insightsから結果を表示

    APICLI有り
    AWSが推奨するベストプラクティスに基づいたダッシュボード
        「Automated dashboard」

    CloudWatch Alarmsと統合可能

CloudWatch Events
    - AWS上のリソースを変更する示すシステムイベントのストリームを提供
    - システムイベントをトリガーとして、ターゲットがイベントの処理
        - JSON形式のイベントを条件にあってるかどうかチェックして処理

    イベントバス
        「他のAWSアカウントとイベントを送受信するようなAWSアカウントを設定」

        1. 受信側アカウントでイベント受信を許可するAWSアカウント番号/Organizationを指定
        2. 送信側アカウントで受信したイベントをイベントソースにするルールを作成
        3. 受信側アカウントで受信したイベントをイベントソースとするルールを作成

Amazon CloudWatch EventsでのAWS Healthイベントのモニタリング
    - AWS Healthイベントのステータスの変化を検出し、アクションするツールをGitHubで公開

Private Linkの対応(Metrics/Events/Logs)
    - オンプレもしくはプライベートサブネット環境におけるCloudWatch利用

料金
    - APIの料金
    - メトリクスの数(カスタムメトリクス含む)1つずつかかる
    - event(100万あたり)