🔔 みーきゅんクラウド 統合Telegram通知システム 引き継ぎメモ
✅ 実装完了
全サーバー(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決済完了時
🔧 R640 監視実装詳細
RAID + UPS 監視スクリプト

スクリプト: /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状態記録
Supermicro リモート監視スクリプト

スクリプト: /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分
🖥️ hirame 監視実装詳細

スクリプト: /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

🌐 WordPress 顧客申し込み通知

実装場所: 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通信

🔐 Telegram 認証情報

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
UPS状態確認(R640)
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"
Supermicro RAID確認(R640から)
ssh maguro@192.168.10.31 "sudo mdadm --detail /dev/md0"
🐛 トラブルシューティング履歴
WordPress functions.php 破損 [RESOLVED]

問題: 複雑なsed操作でPHPファイルが破損

解決: バックアップから復元、cat >> または tee で直接書き込み

教訓: 複数行sedはPHPファイルで信頼性低い、直接書き込みを推奨

Supermicro SSH接続問題 [RESOLVED]

問題: 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 インターネット接続なし [RESOLVED]

問題: SupermicroはインターネットDirect接続なし、Telegram API到達不可

解決: R640からSSH経由で監視し、R640から通知送信

curl タイムアウト [NOTED]

現象: 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ストアフロント
顧客申し込み通知
📅 作成日: 2026年4月5日
👤 作成者: みーきゅんわんわん
📌 バージョン: 1.0
🔄 最終更新: Supermicro監視実装完了
EOF # ファイル確認 ls -lh /tmp/notification_system_handover.html echo "✅ 引き継ぎメモを作成しました: /tmp/notification_system_handover.html"