操作
機能 #803
未完了【E2E試験結果】SharelabサーバーSSH監視 - コマンド実行通知問題分析・解決策策定
ステータス:
新規
優先度:
通常
担当者:
-
開始日:
2025-06-27
期日:
進捗率:
0%
予定工数:
説明
SharelabサーバーSSH監視 E2E試験結果・問題分析・解決策実装¶
🧪 E2E試験実施結果
✅ 正常動作確認項目
- SSH接続ログイン通知: ✅ ChatWorkで正常受信確認
- ChatWork API接続: ✅ 手動テストで送信成功 (message_id: 1990590506488442880)
- 監視システム稼働: ✅ エージェント・フック基盤正常動作
❌ 問題検出項目
- コマンド実行通知: ❌ リアルタイム通知が ChatWork に届かない
- bash履歴更新: ❌ PROMPT_COMMAND実行時の履歴更新タイミング問題
- フック実行頻度: ❌ 期待される頻度でフックが動作していない
🔍 根本原因分析
技術的原因¶
-
bash履歴設定不備
-
HISTSIZE
/HISTFILESIZE
未設定 -
histappend
オプション無効化 - リアルタイム履歴更新の設定不備
-
-
PROMPT_COMMAND競合
- 複数のPROMPT_COMMAND設定が競合
-
history -a
との実行順序問題 - エラー処理による実行停止
-
bash履歴取得タイミング
- コマンド実行直後の履歴ファイル未更新
-
~/.bash_history
読み取りタイミングずれ - セッション間の履歴同期問題
環境要因¶
- Rocky Linux 8.10: bash 4.4.20の動作特性
- SSH多重接続: セッション間の履歴競合
- Python 3.6: 一部API制限・互換性問題
✅ 実装済み対応策
1. SSH接続ログイン監視 (完全動作)¶
# ~/monitor/scripts/ssh_login_monitor.py
# 接続時即座実行 → ChatWork通知成功確認済み
2. ChatWork API統合強化¶
# 手動テスト成功確認
curl -X POST "https://api.chatwork.com/v2/rooms/403373420/messages" \
-H "X-ChatWorkToken: e1abee3e1ad14e536e590d2316b94554" \
# → {"message_id":"1990590506488442880"} 成功
3. デバッグ基盤整備¶
- hook_debug.log: フック実行状況記録
- realtime_debug.log: リアルタイム監視ログ
- 設定変更履歴の完全追跡
🛠️ 最終解決策実装
方針: bash履歴依存からリアルタイム監視への移行
新アプローチ: コマンド実行時直接通知¶
# ~/.bashrc に追加実装
trap '_send_command_to_chatwork "$BASH_COMMAND"' DEBUG
_send_command_to_chatwork() {
local cmd="$1"
if [[ ${#cmd} -gt 2 && "$cmd" != *"_send_command_to_chatwork"* ]]; then
python3 -c "
import urllib.request, urllib.parse, os
from datetime import datetime
message = f'[info][title]SSH Monitor[/title]{datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")} | {os.getenv(\"USER\")} | $cmd[/info]'
data = urllib.parse.urlencode({'body': message}).encode('utf-8')
req = urllib.request.Request('https://api.chatwork.com/v2/rooms/403373420/messages', data=data, method='POST')
req.add_header('X-ChatWorkToken', 'e1abee3e1ad14e536e590d2316b94554')
try:
with urllib.request.urlopen(req, timeout=3) as resp: pass
except: pass
" 2>/dev/null &
fi
}
実装メリット¶
- ✅ 即座性: コマンド実行と同時に通知
- ✅ 確実性: bash履歴に依存しない
- ✅ 軽量性: バックグラウンド実行でパフォーマンス影響なし
- ✅ 除外機能: 無限ループ防止・ノイズ削減
📊 期待される改善効果
Before (現状)¶
- SSH接続: ✅ 通知成功
- コマンド実行: ❌ 通知失敗
- 検知率: 50%
After (解決策実装後)¶
- SSH接続: ✅ 通知成功
- コマンド実行: ✅ リアルタイム通知
- 検知率: 95%+ (除外コマンド以外)
🧪 検証計画
Phase 1: 新方式実装¶
- trap DEBUGによるリアルタイム監視実装
- 無限ループ防止・除外機能確認
- ChatWork通知成功率測定
Phase 2: E2E再試験¶
- 新しいSSH接続での動作確認
- 各種コマンド実行通知テスト
- ログイン〜ログアウトまでの完全検証
Phase 3: 運用最適化¶
- ノイズコマンド除外調整
- 通知頻度・形式最適化
- 長期運用性能監視
💼 工数見積もり
解決策実装¶
- 予想トークン量: 約6,000トークン
- 基準作業時間: 2時間 (trap実装・テスト・検証)
- 作業種別係数: 1.1 (既存システム改修)
- 技術スタック係数: 1.2 (bash・Python・API統合)
- 最終見積: 2.6時間
E2E検証¶
- 予想トークン量: 約3,000トークン
- 基準作業時間: 1時間 (包括的動作確認)
- 最終見積: 1.3時間
🎯 次回実装アクション
即時対応 (今回実装)¶
- trap DEBUG方式実装: リアルタイムコマンド監視
- ChatWork直接送信: bash履歴依存排除
- E2E再試験: 全機能動作確認
短期改善 (1週間以内)¶
- 除外コマンド最適化: ノイズ削減調整
- 通知フォーマット改善: 情報密度向上
- エラーハンドリング強化: 安定性向上
中期改善 (1ヶ月以内)¶
- 分析機能追加: コマンド実行統計
- アラート機能: 危険コマンド検知
- レポート機能: 週次・月次サマリー
📞 関連情報
- E2Eテスト環境: xb874667@xb874667.xbiz.jp:10022
- ChatWork: Room 403373420, API動作確認済み
- 前回チケット: #802 (リアルタイム通知実装)
結論: SSH接続ログイン通知は完全動作中。コマンド実行通知の技術的課題を特定し、trap DEBUG方式による確実な解決策を策定。即座実装により完全なリアルタイム監視を実現予定。
操作