運用
トラブルシューティング
Vaultの一般的な問題と解決方法
最終更新: 2026/2/17
トラブルシューティング
Vaultの運用中に発生する一般的な問題と、その解決方法をご紹介します。
起動と初期化の問題
Vaultが起動しない
症状:
sudo systemctl start vault
# エラー: Job for vault.service failed
確認事項:
- 設定ファイルの構文エラー
# 設定ファイルの検証
vault server -config=/etc/vault.d/vault.hcl -test
# ログの確認
sudo journalctl -u vault -n 50
- ポートの競合
# ポート8200が使用中か確認
sudo lsof -i :8200
sudo netstat -tulpn | grep 8200
# プロセスを終了
sudo kill -9 <PID>
- 権限の問題
# ファイルの権限確認
ls -l /etc/vault.d/vault.hcl
ls -ld /vault/data
# 権限の修正
sudo chown -R vault:vault /vault
sudo chmod 700 /vault/data
- ストレージの問題
# ディスク容量の確認
df -h /vault/data
# ストレージバックエンドの接続確認(Consulの場合)
consul members
初期化に失敗する
症状:
vault operator init
# Error initializing: Error making API request
解決策:
- Vaultがアンシール状態か確認
vault status
- ストレージバックエンドの確認
# Raftの場合
ls -la /vault/data/
# Consulの場合
consul kv get vault/core/
- ネットワーク接続の確認
# APIエンドポイントへの接続
curl -k https://127.0.0.1:8200/v1/sys/health
シールとアンシールの問題
アンシールできない
症状:
vault operator unseal
# Error unsealing: Error making API request
解決策:
- 正しいUnseal Keyを使用しているか確認
# Unseal Keyの数を確認
vault status | grep "Threshold"
- 必要な数のキーを入力
# 3つのキーが必要な場合
vault operator unseal <key1>
vault operator unseal <key2>
vault operator unseal <key3>
- Raftストレージの問題
# Raftピアの確認
vault operator raft list-peers
# Raftスナップショットからリストア
vault operator raft snapshot restore backup.snap
自動的にシールされる
症状: Vaultが予期せずシールされる
原因と解決策:
- メモリ不足
# メモリ使用状況の確認
free -h
top -p $(pgrep vault)
# メモリを増やす
# または、不要なプロセスを停止
- ストレージの問題
# ディスクI/Oの確認
iostat -x 1
# ストレージバックエンドのログ確認
- ネットワークの問題
# クラスター通信の確認
ping vault-2.example.com
telnet vault-2.example.com 8201
認証の問題
ログインできない
症状:
vault login
# Error authenticating: permission denied
解決策:
- トークンの有効性確認
# トークンの確認
vault token lookup
# 新しいトークンを取得
vault login -method=userpass username=myuser
- 認証方法の確認
# 有効な認証方法を確認
vault auth list
# 認証方法が無効化されている場合は有効化
vault auth enable userpass
- ポリシーの確認
# トークンのポリシーを確認
vault token lookup -format=json | jq -r '.data.policies'
# ポリシーの内容を確認
vault policy read myapp-read
トークンが期限切れになる
症状:
vault kv get secret/myapp/config
# Error: invalid token
解決策:
- トークンの更新
# トークンを更新
vault token renew
# 更新できない場合は再ログイン
vault login -method=userpass username=myuser
- TTLの延長
# より長いTTLでトークンを作成
vault token create -ttl=24h -policy=myapp-read
パフォーマンスの問題
レスポンスが遅い
症状: APIリクエストのレスポンスが遅い
診断:
- メトリクスの確認
# リクエストレイテンシの確認
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/metrics?format=prometheus | \
grep vault_core_handle_request
- リソース使用状況
# CPU使用率
top -p $(pgrep vault)
# メモリ使用率
free -h
# ディスクI/O
iostat -x 1
- ストレージバックエンドのパフォーマンス
# Raftの場合
vault operator raft list-peers
# Consulの場合
consul monitor
解決策:
- リソースの増強
- CPUの追加
- メモリの増加
- SSDの使用
- クエリの最適化
# 不要なリクエストを削減
# キャッシュの活用
- スケールアウト
- Performance Standbyの追加(Enterprise版)
- 読み取りレプリカの追加
メモリ使用量が高い
症状: Vaultのメモリ使用量が増加し続ける
診断:
# メモリ使用状況
vault read sys/metrics | grep runtime_alloc_bytes
# Goroutine数
vault read sys/metrics | grep runtime_num_goroutines
解決策:
- メモリリークの確認
# プロファイリング
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/pprof/heap > heap.prof
# 分析
go tool pprof heap.prof
- Vaultの再起動
sudo systemctl restart vault
- メモリの増加
- サーバーのメモリを増やす
ストレージの問題
ディスク容量不足
症状:
vault kv put secret/myapp/config key=value
# Error: no space left on device
解決策:
- ディスク容量の確認
df -h /vault/data
- 古いデータの削除
# 古いスナップショットの削除
find /backup/vault -name "*.snap" -mtime +30 -delete
# 古いログの削除
find /var/log/vault -name "*.log.*" -mtime +7 -delete
- ディスクの拡張
- ストレージの追加
- パーティションの拡張
Raftストレージの破損
症状: Raftストレージが破損している
解決策:
- スナップショットからリストア
# すべてのノードを停止
sudo systemctl stop vault
# スナップショットをリストア
vault operator raft snapshot restore -force backup.snap
# ノードを起動
sudo systemctl start vault
- ピアの削除と再追加
# 問題のあるピアを削除
vault operator raft remove-peer node2
# ノードを再起動して再参加
sudo systemctl restart vault
ネットワークの問題
クラスター通信の問題
症状: ノード間の通信ができない
診断:
# ポート8201の確認
telnet vault-2.example.com 8201
# ファイアウォールの確認
sudo iptables -L -n | grep 8201
sudo ufw status
解決策:
- ファイアウォールの設定
# ポート8201を開放
sudo ufw allow 8201/tcp
sudo iptables -A INPUT -p tcp --dport 8201 -j ACCEPT
- ネットワーク設定の確認
# cluster_addrの確認
grep cluster_addr /etc/vault.d/vault.hcl
# DNSの確認
nslookup vault-2.example.com
TLS証明書の問題
症状:
vault status
# Error: x509: certificate signed by unknown authority
解決策:
- 証明書の確認
# 証明書の有効期限確認
openssl x509 -in /vault/tls/tls.crt -noout -dates
# 証明書の検証
openssl verify -CAfile /vault/tls/ca.crt /vault/tls/tls.crt
- 証明書の更新
# 新しい証明書を取得
certbot renew
# Vaultを再起動
sudo systemctl restart vault
- 一時的な回避策(開発環境のみ)
export VAULT_SKIP_VERIFY=true
データの問題
シークレットが見つからない
症状:
vault kv get secret/myapp/config
# No value found at secret/data/myapp/config
解決策:
- パスの確認
# 正しいパスを確認
vault kv list secret/
vault kv list secret/myapp/
- バージョンの確認
# メタデータを確認
vault kv metadata get secret/myapp/config
# 削除されたバージョンを復元
vault kv undelete -versions=1 secret/myapp/config
- 権限の確認
# トークンの権限を確認
vault token capabilities secret/data/myapp/config
データが破損している
症状: シークレットのデータが正しくない
解決策:
- バージョン履歴の確認
# 以前のバージョンを取得
vault kv get -version=1 secret/myapp/config
- バックアップからリストア
# スナップショットからリストア
vault operator raft snapshot restore backup.snap
監査ログの問題
監査ログが記録されない
症状: 監査ログファイルが空
解決策:
- 監査デバイスの確認
# 監査デバイスの一覧
vault audit list
# 監査デバイスが無効な場合は有効化
vault audit enable file file_path=/var/log/vault/audit.log
- ファイル権限の確認
# 権限の確認
ls -l /var/log/vault/audit.log
# 権限の修正
sudo chown vault:vault /var/log/vault/audit.log
sudo chmod 640 /var/log/vault/audit.log
- ディスク容量の確認
df -h /var/log
高可用性の問題
リーダー選出に失敗
症状: クラスターにリーダーが存在しない
診断:
# Raftピアの確認
vault operator raft list-peers
# ログの確認
sudo journalctl -u vault -f
解決策:
- クォーラムの確認
# 過半数のノードが稼働しているか確認
# 3ノードの場合、最低2ノードが必要
- ネットワークの確認
# ノード間の通信確認
ping vault-2.example.com
telnet vault-2.example.com 8201
- 強制的なリーダー選出
# すべてのノードを停止
sudo systemctl stop vault
# 1つのノードを起動
sudo systemctl start vault
# 他のノードを順次起動
スプリットブレイン
症状: 複数のリーダーが存在する
解決策:
- すべてのノードを停止
# すべてのVaultノードで実行
sudo systemctl stop vault
- スナップショットからリストア
# 最新のスナップショットをリストア
vault operator raft snapshot restore -force backup.snap
- ノードを順次起動
# リーダーノードを起動
sudo systemctl start vault
# 他のノードを起動
デバッグ方法
ログレベルの変更
# config.hcl
log_level = "debug"
# Vaultを再起動
sudo systemctl restart vault
# ログを確認
sudo journalctl -u vault -f
プロファイリング
# CPUプロファイル
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/pprof/profile?seconds=30 > cpu.prof
# メモリプロファイル
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/pprof/heap > heap.prof
# Goroutineプロファイル
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/pprof/goroutine > goroutine.prof
トレース
# トレースの有効化
export VAULT_LOG_LEVEL=trace
# リクエストIDでトレース
grep "request_id=abc123" /var/log/vault/vault.log
サポートへの問い合わせ
必要な情報
- Vaultのバージョン
vault version
- 設定ファイル(機密情報を除く)
cat /etc/vault.d/vault.hcl
- ログ
sudo journalctl -u vault -n 1000 > vault.log
- ステータス
vault status > vault-status.txt
- メトリクス
curl -H "X-Vault-Token: $VAULT_TOKEN" \
https://vault.example.com:8200/v1/sys/metrics > metrics.txt
次のステップ
トラブルシューティングを理解したら、次は高度な機能でVaultのさらなる活用方法を学びましょう。
問題解決のアプローチ問題が発生した場合は、まずログを確認し、症状を正確に把握してください。多くの問題は、設定ミスや権限の問題が原因です。