モニタリング、ロギング、分析、修復、パフォーマンス最適化 #1

Q1未挑戦の問題問題を見る

ポイント

EC2 のステータスチェックとアラームアクションの組み合わせは定番の出題です。
・システムステータスチェック (StatusCheckFailed_System) は AWS 側の基盤の問題を示し、対処は復旧 (recover) です。インスタンスステータスチェック (StatusCheckFailed_Instance) は OS 側の問題を示し、対処は再起動 (reboot) です。復旧アクションは StatusCheckFailed_Instance には設定できず、公式は復旧をシステムステータスチェックと組み合わせるものとして案内しています。
・両方を併用するときは、評価期間の数を同じにしないよう公式が推奨しています。同じ数だと競合し、推奨値は再起動が 1 分を 3 回・復旧が 1 分を 2 回です。
・復旧後もインスタンス ID・プライベート IP アドレス・Elastic IP アドレス・アタッチ済みの EBS ボリュームは保持され、メモリ上のデータは失われます。

Q2未挑戦の問題問題を見る

ポイント

Amazon SNS の「届かなかった通知」は、保全と検知を別のサービスで受け持ちます。
・保全は Amazon SQS のデッドレターキューで行います。サブスクリプションに設定すると、再試行を使い切った通知がキューに残り、後から取り出せます。
・検知は Amazon CloudWatch のアラームで行います。Amazon SNS は配信に失敗したメッセージの数を NumberOfNotificationsFailed メトリクスとして CloudWatch に送ります。
・AWS Config はリソースの設定を記録し、ルールで評価するサービスで、メッセージの配信は扱いません。
・AWS CloudTrail は API の呼び出しを記録するサービスで、SNS では Publish をデータイベントとして記録できますが、配信の成否は残りません。
・AWS Health は AWS のサービス・アカウント・リソースの状態の変化を知らせるサービスで、社内のシステムの障害は扱いません。

Q3未挑戦の問題問題を見る

ポイント

EBS のスナップショットの定期作成と削除は、どのサービスがスナップショットを扱うかで選びます。
・AWS Backup — バックアップ計画のルールで頻度・バックアップウィンドウ・保持期間を設定します。保持期間を過ぎたバックアップは自動で削除されます。
・EventBridge Scheduler と Lambda — 決めた時刻に関数を呼べますが、作成と削除の処理はコードで書いて保守します。
・Elastic Volumes — 使用中のボリュームの種類・サイズ・性能を変える機能で、スナップショットのスケジュールは持ちません。
・Patch Manager — マネージドノードへのパッチの適用を自動化する機能です。
st1 / sc1 はスナップショットの作成中にスループットがベースラインまで下がることがあるので、作成の時間帯は負荷の低い時間帯に置きます。

Q4未挑戦の問題問題を見る

ポイント

リードレプリカの状態は、遅れと停止を分けて監視します。
・遅れ — ReplicaLag メトリクス (秒) です。ソースからどれだけ遅れているかを表し、しきい値のアラームで通知できます。MySQL と MariaDB では Seconds_Behind_Master の値です。
・停止やエラー — RDS のイベント通知の read replica カテゴリです。レプリケーションが動いていないと ReplicaLag は -1 になるので、遅れのアラームだけでは気づけません。
・ReadLatency や WriteLatency はディスクの I/O にかかった時間で、レプリカがどれだけ遅れているかは表しません。

Q5未挑戦の問題問題を見る

ポイント

「エージェントは動いているのに、ログが CloudWatch Logs に出ない」は、インスタンスのロールのアクセス許可を疑う定番の出題です。
・EC2 上のエージェントは、インスタンスプロファイルのロールの一時的な認証情報で API を呼び出します。エージェントを導入した人の IAM ユーザーに許可を足しても効きません。
・CloudWatch Logs のアクションは logs: で始まります。cloudwatch:PutMetricData だけでは、メトリクスは届いてもログは届きません。
・ロールのアクセス許可ポリシーで logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents などを許可します。CloudWatchAgentServerPolicy をアタッチすると、これらがまとめて入ります。
・信頼ポリシーはロールを引き受けられる相手を決める設定です。サービスプリンシパルを足しても、呼べる API は増えません。