業務フロー BUSINESS FLOW
Zabbix
監視システム
運用担当者
Operator
DB管理ツール
pgAdmin / pgAgent
バッチシステム
Batch
① 通常フロー(正常系)
バッチジョブ
実行状態を監視
バッチジョブ
スケジュール実行
(pgAgent)
処理実行
正常終了
終了ステータス更新
正常終了を確認
✔ 正常
アラートなし
② 異常フロー(異常系)〜 再実行 〜 パラメータ復元
異常検知
(タイムアウト / エラー終了)
⚠ アラート発報
アラート受信
内容確認
異常終了
または
タイムアウト
起動パラメータ
変更内容を決定
(開始時刻・対象データ等)
起動パラメータ
テーブルを更新
(pgAdmin で直接編集)
UPDATE 実行・確認
再実行を監視
開始
バッチ再実行
を指示
(pgAgent ジョブ手動起動)
更新済みパラメータ
で再実行
再実行
正常終了
✔ 正常確認
正常終了を確認
パラメータを
デフォルトに戻すよう
DB担当へ依頼
起動パラメータ
テーブルを
デフォルト値に更新
UPDATE 実行・確認
✔ 復元完了
処理フロー PROCESSING FLOW
STEP 1 バッチジョブ 定期実行(正常系)
1
pgAgent スケジュールに従いバッチジョブを自動起動
起動パラメータテーブルから開始時刻・対象データ範囲等を取得
SELECT * FROM batch_launch_params WHERE job_id = 'xxx';
2
処理実行 → ジョブステータスをDBに記録
終了コード・終了時刻をジョブ実行履歴テーブルへ INSERT
3
Zabbix がジョブステータスを定期ポーリング
終了コード = 0(正常)→ アクション不要。監視継続。
↓ 異常発生
STEP 2 Zabbix 異常検知・アラート発報
1
監視トリガー発火
条件例:終了コード ≠ 0 / 規定時刻までに終了ステータスが更新されない(タイムアウト)
2
アクション実行:メール / Slack 通知を運用担当者へ送信
通知内容:ジョブ名・異常内容・発生時刻・対応手順リンク
STEP 3 運用担当者 初動対応
1
アラート内容・ログを確認し原因を特定
バッチログ / Zabbix イベント画面 / DB エラーログ を照合
2
再実行に必要な変更パラメータを決定
開始時刻・対象日付・リトライ範囲 など
STEP 4 DB管理ツール(pgAdmin)で起動パラメータを変更
1
pgAdmin で対象テーブルを開く
テーブル名例:batch_launch_params
2
対象ジョブ行の開始時刻・パラメータを変更して UPDATE
UPDATE batch_launch_params
SET start_time = '2025-04-14 03:00:00',
updated_at = NOW()
WHERE job_id = 'ETC_DAILY_001';
3
変更内容を SELECT で確認後、COMMIT
STEP 5 バッチジョブ 手動再実行
1
pgAgent 管理画面またはジョブキックコマンドで手動実行
前回のエラー実行ログに「スキップ」フラグを立てる(二重実行防止)
2
変更済みパラメータで再実行
3
Zabbix が再実行を監視
終了コード = 0 → 問題解決イベント記録、アラート解除
STEP 6 起動パラメータをデフォルトに復元
1
正常終了を Zabbix ダッシュボードで確認
2
pgAdmin でデフォルト値に UPDATE
UPDATE batch_launch_params
SET start_time = DEFAULT,
updated_at = NOW()
WHERE job_id = 'ETC_DAILY_001';
3
SELECT で復元確認 → COMMIT
対応完了 インシデント記録に終了時刻・対処内容を記入
💡 シンプル運用のポイント
Zabbix アラート 1 件 = 対応手順 1 ページに対応させる(Wiki / 手順書を事前整備)
② パラメータ変更は pgAdmin の行編集のみに限定。SQL 手打ち不要にする設計を推奨
③ デフォルト値は カラムの DEFAULT 制約で管理 → 復元は DEFAULT キーワードで確実
④ 再実行前に前回エラー実行レコードのスキップフラグを立てて二重処理を防止
⑤ 対応完了後は Zabbix の 問題解決イベントにコメントを残し、ナレッジを蓄積
Zabbix(監視)
運用担当者
DB管理ツール(pgAdmin)
バッチシステム(pgAgent)