操作
機能 #293
未完了バグ修正: vps-statusコマンドのホスト名解決エラー
ステータス:
解決
優先度:
通常
担当者:
-
開始日:
2025-06-06
期日:
進捗率:
0%
予定工数:
説明
バグ修正タスク起票テンプレート¶
1. バグ概要¶
- 発生環境:VPS-ROOT (Ubuntu 24.04.2 LTS)
- 発生条件:vps-statusコマンド実行時
- 再現手順:vps-statusコマンドを実行すると、「Could not resolve hostname vps-main: Temporary failure in name resolution」エラーが発生
- 影響範囲:システム状態監視機能、チケット作成後のステータス確認
2. 切り戻し準備¶
- 最新バックアップ日時:2025-06-07 00:51:00
- バックアップ場所:/root/mcp-ubuntu-production/workspace/vps-status
- 復元手順の確認:完了 [x]
3. ゴール確認¶
- 修正目標:vps-statusコマンドがホスト名解決エラーなく正常に実行されるようにする
- 期待される動作:システム状態(Docker、Nginx、ディスク使用量など)が正確に取得・表示される
- 完了条件:SSHホスト名解決エラーなしでvps-statusコマンドが実行できること
4. 前提確認¶
インフラ構成¶
- VPS-root構成状態:Ubuntu 24.04.2 LTS
- 動作中コンテナ:redmine-mcp, redmine-prod
- 関連サービスの状態:SSH、Hostname Resolution
バージョン管理¶
- Gitリポジトリ:/root/mcp-ubuntu-production
- ブランチ戦略:master
- 現在のブランチ:master
関連リソース¶
- 関連チケット:#287, #289, #292
- エラーログ:
ssh: Could not resolve hostname vps-main: Temporary failure in name resolution
- モニタリング情報:vps-statusコマンド出力
5. 修正方針¶
- 原因分析:
- vps-statusスクリプト内で「vps-main」というホスト名に対してSSH接続を試みている
- このホスト名は/etc/hostsに定義されておらず、DNSでも解決できない
- 結果としてSSHのホスト名解決エラーが発生している
- 修正アプローチ:
- 「vps-main」ホスト名をIPアドレスに置き換える
- /etc/hostsファイルに「vps-main」のエントリを追加する
- vps-statusスクリプトを修正して、ローカル環境で直接コマンドを実行するようにする
- 対応優先度の判断理由:システム監視機能に影響するため、中優先度で対応
6. 修正設計¶
- 影響を受けるコンポーネント:
- /root/mcp-ubuntu-production/workspace/vps-status
- /etc/hosts(オプション)
- 変更が必要なコード:
- vps-statusスクリプト内の「ssh vps-main」コマンドを修正
- 副作用の可能性:システム状態監視方法の変更による影響
7. 試験仕様¶
- 再現テスト:現状のvps-statusコマンドを実行して、ホスト名解決エラーが発生することを確認
- 修正確認テスト:修正後のvps-statusコマンドを実行して、エラーなく全ての情報が表示されることを確認
- 回帰テスト:チケット作成時のvps-status実行で問題が発生しないことを確認
8. デプロイ方法¶
- デプロイ手順:
- vps-statusスクリプトをバックアップ
- スクリプトを修正
- テスト実行
- リリースタイミング:即時
- ロールバック手順:バックアップから元のスクリプトを復元
9. 成果物と残課題¶
- 作成する成果物:修正済みvps-statusスクリプト
- 修正後のモニタリング計画:vps-statusコマンドの出力を確認
- 残課題:より堅牢なシステム監視方法の検討
タスク管理¶
- 担当者:システム管理者
- 優先度:中
- 完了予定日:2025-06-10
- 工数見積:0.5人日
コミュニケーション¶
- 進捗報告方法:Redmineチケットへのコメント
- レビュアー:開発チーム
- 関係者への通知:システム管理チーム
Redmine Admin さんが1日前に更新
バグ修正完了報告¶
vps-statusコマンドのホスト名解決エラーの修正が完了しました。
修正内容¶
vps-statusスクリプトの内容を変更し、リモートホスト(vps-main)へのSSH接続ではなく、ローカルでコマンドを直接実行するように変更しました。
修正前:
#!/bin/sh
echo "🔍 VPS-ROOT Infrastructure Status"
echo "=================================="
echo ""
echo "📦 Docker Containers:"
ssh vps-main "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
echo ""
echo "🌐 Nginx Status:"
ssh vps-main "systemctl is-active nginx 2>/dev/null && echo '✅ Nginx is running' || echo '❌ Nginx is down'"
# ... 以下同様にssh vps-mainコマンドを使用
修正後:
#!/bin/sh
echo "🔍 VPS-ROOT Infrastructure Status"
echo "=================================="
echo ""
echo "📦 Docker Containers:"
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
echo ""
echo "🌐 Nginx Status:"
systemctl is-active nginx 2>/dev/null && echo '✅ Nginx is running' || echo '❌ Nginx is down'
# ... 以下同様にローカルでコマンドを直接実行
修正方法¶
- 元のスクリプトをバックアップ:
/root/mcp-ubuntu-production/workspace/vps-status.bak
- SSH接続を使用せず、ローカルで直接コマンドを実行するように修正
- 実行権限を保持するためchmod +xを実行
修正結果¶
vps-statusコマンドが正常に実行され、以下の情報が表示されるようになりました:
- Docker コンテナの状態
- Nginx の状態
- ディスク使用量
- システム負荷
- Docker Compose プロジェクト一覧
SSHのホスト名解決エラーは発生しなくなりました。
原因分析¶
元のスクリプトはVPS環境が複数サーバーで構成されていることを前提に作られており、「vps-main」というホスト名のサーバーに対してSSH接続を行っていました。しかし、現在の環境では「vps-main」ホストが存在しないか、名前解決ができない状態だったため、エラーが発生していました。
現在のVPS環境では、すべての情報がローカルで取得可能なため、SSH接続を使用せずに直接コマンドを実行することで問題を解決しました。
今後の対応¶
環境構成が変更された場合は、vps-statusスクリプトを再度調整する必要があるかもしれません。また、より堅牢なシステム監視方法として、専用のモニタリングツール(Prometheus + Grafanaなど)の導入も検討することをお勧めします。
操作