全サーバー(R640、hirame、Supermicro)でTelegram通知による24時間監視体制を構築。RAID障害、UPS異常、サービス停止、顧客申し込みなど、重要イベントを自動検知してリアルタイム通知。
| サーバー | 監視項目 | 通知タイミング | 実装方式 |
|---|---|---|---|
| R640 katuo-PowerEdge-R640 |
RAID障害(IPMI SEL) UPS状態変化(3台) Supermicro監視 |
5分ごと | systemd timer raidwatch.timer supermicro-watch.timer |
| hirame hirame-X58A-UD3R |
Collabora停止 カーネルパニック ディスク障害 ネットワーク障害 |
5分ごと | systemd timer hirame-logwatch.timer |
| Supermicro sm-storage-01 |
mdadm RAID NFS停止 ストレージ使用率 |
5分ごと (R640経由) |
R640からSSH監視 supermicro-watch.timer |
| XServer VPS katuocloud.com |
顧客申し込み | リアルタイム | WordPress functions.php Stripe決済完了時 |
スクリプト: /usr/local/bin/raid_watch_telegram.sh (4.8K, 165行)
監視項目:
- RAID障害: IPMI SELから "Drive Fault"、"Rebuild" を検知
- UPS状態変化: ups-a, ups-b, ups-c の状態を監視
- OL (電源復旧) → 通知
- OB (バッテリー駆動) → 通知
- OB LB (低バッテリー) → 緊急通知
- OFFLINE (通信断) → 警告
- バッテリー残量: 10%以上の低下で警告
systemd設定:
Service: /etc/systemd/system/raidwatch.service Timer: /etc/systemd/system/raidwatch.timer 実行間隔: 5分ごと (OnUnitActiveSec=5min) 起動遅延: 起動後2分 (OnBootSec=2min)
状態ファイル:
/var/lib/raidwatch/last_sel_id- 最終チェックSEL ID/var/lib/raidwatch/last_ups_status- UPS状態記録
スクリプト: /usr/local/bin/supermicro_watch_telegram.sh
接続情報:
- SSH接続先:
maguro@192.168.10.31 - 認証方式: SSH公開鍵認証(パスワードなし)
- 鍵: R640
/root/.ssh/id_ed25519→ Supermicro~maguro/.ssh/authorized_keys
Supermicroは 173.0.0.2 では公開鍵認証が必要、192.168.10.30 は古いSSH(鍵交換方式が古くて接続不可)。192.168.10.31 のみパスワードなしSSH接続可能。
監視項目:
- SSH接続: 5秒タイムアウトでテスト、失敗時に通知
- mdadm RAID:
/dev/md0の Failed Devices を監視 - ストレージ使用率:
/srv/storageが90%以上で警告 - NFSサーバー:
nfs-server.serviceの稼働状態
systemd設定:
Service: /etc/systemd/system/supermicro-watch.service Timer: /etc/systemd/system/supermicro-watch.timer 実行間隔: 5分ごと 起動遅延: 起動後3分
スクリプト: /usr/local/bin/hirame_log_watch_telegram.sh
監視項目:
- Collabora Docker:
docker inspectで Running=false を検知 - カーネルパニック: "Kernel panic", "Out of memory" ログ検索
- ディスク障害: "ata.*error", "smart.*fail", "i/o error" パターン
- ネットワーク障害: "bond0.*link down", "enp.*not ready" 検知
- Docker異常: "restart.*abnormally" パターン
systemd設定:
Service: /etc/systemd/system/hirame-logwatch.service Timer: /etc/systemd/system/hirame-logwatch.timer 実行間隔: 5分ごと 起動遅延: 起動後2分
状態ファイル: /var/lib/hirame-logwatch/last_check_time
実装場所: XServer VPS /var/www/katuocloud/wp-content/themes/astra-child/functions.php
実装内容:
katuocloud_send_telegram_notification(): Telegram API送信関数(3回リトライ)katuocloud_notify_new_signup(): 申し込み情報フォーマットkatuocloud_create_subscription()関数(317行目付近)に通知呼び出しを追加
通知内容:
- 契約ID
- 顧客名、メールアドレス
- Nextcloudユーザー名
- プラン名、容量、端末数
- ゲスト招待、ビデオ通話オプション
- 受付時刻
使用API: WordPress wp_remote_post() でHTTP通信
Bot Token: 8581883769:AAGkGLkT1bJQ1i0dXmmIvwXm_FfyCmGxSaM
Chat ID: 8559271919
API Endpoint: https://api.telegram.org/bot{TOKEN}/sendMessage
パラメータ: chat_id, text, parse_mode=HTML
リトライ設定: 3回、各2秒間隔、タイムアウト5秒(接続)/ 15秒(最大)
# R640で systemctl list-timers --all | grep -E "raidwatch|supermicro" # hirameで systemctl list-timers --all | grep hirame
# R640 sudo /usr/local/bin/raid_watch_telegram.sh --test sudo /usr/local/bin/supermicro_watch_telegram.sh --test # hirame sudo /usr/local/bin/hirame_log_watch_telegram.sh --test
# 停止 sudo systemctl disable --now [timer名].timer # 再開 sudo systemctl enable --now [timer名].timer # ステータス確認 systemctl status [timer名].timer --no-pager # ログ確認 sudo journalctl -u [service名].service -n 100 --no-pager
upsc ups-a@localhost | grep -E "ups.status|battery.charge|ups.load" upsc ups-b@localhost | grep -E "ups.status|battery.charge|ups.load" upsc ups-c@localhost | grep -E "ups.status|battery.charge|ups.load"
ssh maguro@192.168.10.31 "sudo mdadm --detail /dev/md0"
問題: 複雑なsed操作でPHPファイルが破損
解決: バックアップから復元、cat >> または tee で直接書き込み
教訓: 複数行sedはPHPファイルで信頼性低い、直接書き込みを推奨
問題: 173.0.0.1/173.0.0.2でSSH接続拒否
原因:
- 192.168.10.30 - 古いSSH、鍵交換方式不一致(diffie-hellman-group1-sha1)
- 173.0.0.2 - 公開鍵認証必要だが、maguroユーザーに鍵未登録
解決: 192.168.10.31 で接続成功(公開鍵認証設定済み)
問題: SupermicroはインターネットDirect接続なし、Telegram API到達不可
解決: R640からSSH経由で監視し、R640から通知送信
現象: curl: (28) Resolving timed out after 5000 milliseconds
影響: リトライ機能により通知は最終的に成功
対処: タイムアウト設定5秒は適切、リトライで対応済み
- ups-b通信断: NUT監視で継続的に "Driver not connected" エラー
- 影響: ups-b状態変化は検知されない
- 対処: 物理接続とnut-driver確認が必要
- Supermicro 旧SSH: 192.168.10.30 は古い鍵交換方式のため接続不可
- 回避策: 192.168.10.31 使用
- curl DNS解決タイムアウト: 5秒タイムアウトで時々発生
- 影響: リトライで成功するため実害なし
- Stripe決済完了通知
- デバイス追加時の通知
- 契約キャンセル時の通知
- 月次レポート自動送信(契約数、ストレージ使用量)
- 通知先の複数チャンネル分割(申し込み/障害/運用)
- ups-b通信断の根本原因調査と修正
| サーバー | ホスト名 | OS | IPアドレス | 役割 |
|---|---|---|---|---|
| R640 | katuo-PowerEdge-R640 | Ubuntu | 192.168.10.10 173.0.0.1 |
コントロールノード RAID監視、UPS監視 Supermicro監視実行 |
| hirame | hirame-X58A-UD3R | Ubuntu 22.04.5 | 192.168.10.40 173.0.0.10 |
Collabora Dockerホスト ログ監視 |
| Supermicro | sm-storage-01 | Ubuntu 24.04.4 | 192.168.10.31 173.0.0.2 |
ストレージサーバー mdadm RAID1, NFS |
| XServer VPS | katuocloud.com | - | - | WordPressストアフロント 顧客申し込み通知 |
👤 作成者: みーきゅんわんわん
📌 バージョン: 1.0
🔄 最終更新: Supermicro監視実装完了
