監視を復習してみた
はじめに
- 監視を復習してみたときのメモです
参考
検討項目とポイント
1. データ収集
- 一般的にプルよりプッシュ(スケールしやすい)
- とりあえずOSのメトリクスとかを監視しがちだが、監視の目的から逆算すると、「動いているか」の監視が重要
- HTTP200やリクエストのレイテンシ
- 設定追加は自動でされるようにするべき
- 60sに1回はメトリクスを取得する
- syslogでリモートに転送したり
- ログの収集は、syslogデーモンを中心に考える
- 監視サーバ自体の監視を忘れない
2. データストレージ
- 時系列DB
- 一定期間後に間引きしてくれたり
- →ディスク容量、グラフ描画のため
3. 可視化
4. 分析とレポート
- ペナルティ事項の存在しないSLAは、むしろ「目指すべき目標」
5. アラート
- 「監視は、質問を投げかけるためにある」
- メトリクスとアラートが一対一である必要はない
- 固定の閾値だけでなく、変化量で検知してもよい
- 全てのアラートが、誰かの対応必須のものになっているか定期的に見直す
- 自動復旧を目指す
- 特定の条件で落ちた場合、再起動するなど
監視設定書の項目例
監視項目
監視対象
- どのインスタンス、サービスか(●つけ)
監視詳細
- レベル(error/warn/info)
- 取得間隔
- 評価間隔
- 統計(Minimum/Maximum,etc)
- 欠落データ(igonre,etc)
- 方式概要(別ページへのリンク)
- 通知メッセージ例
- 有効/無効
監視対象例
ビジネスKPI監視
- 現在サイトに滞在しているユーザ
- ログイン
フロントエンド監視
- ロード時間
- JavaScriptに小さなスニペットを仕込んだり
- CIでも監視する
アプリケーション監視
- 関数の実行時間
- StatsDを仕込んでおく
- 特にサーバレスなどだと
- デプロイタイミング、ビルドデータ、デプロイを実行した人
- healthエンドポイントパターン
サーバ監視
- CPU使用率
- メモリ使用率
- スワップ使用量
- OOMKillerの発生
- インターフェイスに対するイン・アウトのオクテット数、エラー数、ドロップ数
- ディスク使用率
- IOPS
- マウントカウント
- プロセスカウント
- sshd
- crond
- vsftpd
- ミドル
- SSL証明書
- 秒間リクエスト数
- リクエスト時間
- DBコネクション数
- キューの長さ
- 秒間メッセージ数
- キャッシュから追い出されたアイテム数(evicted items)
- ヒット・ミス率(hit/miss ratio)
- NTP
- ログ
- /var/log/messages
- HTTPレスポンス
- sudoの使用
- SSHログイン
- cronジョブの結果
- スロークエリ
- auditd