Level 2 — Ops Routine & Monitoring
:tags: [cron, monitoring, linux]
学習ゴール
- 定期的なタスクの管理方法を理解する
- 効果的な監視戦略を設計できるようになる
- ログ収集・分析のベストプラクティスを学ぶ
ジョブスケジューリングの比較
機能 | Cron | at | systemd-timer |
---|---|---|---|
実行タイミング | 定期的に繰り返し | 1回のみ | 複雑なスケジュール可能 |
設定方法 | crontab -e | at コマンド | .timer ユニットファイル |
ログ管理 | 個別設定が必要 | 個別設定が必要 | journaldと統合 |
依存関係 | なし | なし | 他のユニットと連携可能 |
使用例 | 定期的なバックアップ | メンテナンス通知 | 依存関係のあるタスク |
異常通知の設定例 (Cron)
0 2 * * * /path/to/backup.sh || curl -X POST -H 'Content-type: application/json' --data '{"text":"バックアップに失敗しました"}' $SLACK_WEBHOOK_URL
systemd-timer の設定例
# backup.timer
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
監視の3つの視点
1. 死活監視
目的: サービスが正しく動作しているかどうかを確認 - ポートの応答確認 - HTTPステータスコードのチェック - プロセスの生存確認
2. リソース監視
目的: システムリソースの使用状況を把握 - CPU使用率 - メモリ使用量 - ディスクI/O - ネットワーク帯域
3. ログ監視
目的: 問題の早期発見と分析 - エラーログの検出 - アクセスログの分析 - セキュリティイベントの監視
監視フローの詳細
Prometheus メトリクス収集フロー
sequenceDiagram
participant App as アプリケーション
participant Exp as Exporter
participant Prom as Prometheus
participant Graf as Grafana
participant Alert as Alertmanager
App->>Exp: /metrics エンドポイント公開
Prom->>Exp: 15秒ごとにスクレイプ
Prom->>Prom: ルール評価
Prom->>Alert: アラート発行
Alert->>Slack: 通知送信
Prom->>Graf: メトリクス提供
Graf->>User: ダッシュボード表示
監視アーキテクチャ
graph LR
subgraph ターゲット
A[アプリケーション]
B[Node Exporter]
C[Database]
end
subgraph Prometheus
D[Prometheus Server]
end
subgraph 可視化
E[Grafana]
end
subgraph アラート
F[Alertmanager]
G[Email/Slack]
end
A -->|メトリクス| D
B -->|システムメトリクス| D
C -->|DBメトリクス| D
D -->|クエリ| E
D -->|アラートルール| F
F -->|通知| G
ハンズオン: 監視システム構築
Lab 02 - 監視システムを構築
PrometheusとGrafanaを使用して監視システムを構築します。
# 監視システムの起動
docker compose up -d prometheus grafana
# 起動確認
docker ps
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
ケーススタディ: Airbnbの監視戦略
Airbnbは、初期段階ではcronを多用していましたが、スケーラビリティの問題に直面しました。タスクの依存関係の管理や、失敗したジョブの再実行が困難だったためです。
2014年、AirbnbはAirflowを開発し、cronから移行しました。これにより:
- ワークフローの視覚化
- 依存関係の管理
- 失敗時の自動リトライ
- 実行履歴の追跡
が可能になり、データパイプラインの信頼性が大幅に向上しました。
まとめチェックリスト
- cronとatの違いを説明できる
- 監視の3つの視点を説明できる
- Prometheusの基本的なアーキテクチャを理解している
- 監視システムの構築手順を理解している
- ログ管理のベストプラクティスを説明できる
理解度チェック
クイズ: Cronの特徴
Cronの特徴として正しいものは?
クイズ: 監視の基本
システム監視において、リソース監視に含まれるのは?
クイズ: ログ管理
ログ管理で重要な「3-2-1ルール」とは?