2026年7月20日
2026年7月20日
サーバーのTCPコネクション状態を定期監視する方法
はじめに
サーバーのTCPコネクション管理は、ネットワーク性能と安定性を維持する上で重要な役割を果たします。定期的にTCPコネクションの状態を監視することで、異常な接続や問題点を早期発見し、迅速に対応することが可能になります。
症状・背景
このテーマが必要になる主な場面は以下の通りです:
- サーバーのネットワークパフォーマンス低下
- ホスト名解決の不具合
- HTTP/HTTPS接続エラー
- 一時的なサービス停止やダウンタイム
手順・設定方法
ステップ1: netstatコマンドを使用した基本操作
# netstatコマンドを使って現在のネットワーク接続状況を確認します。
sudo netstat -tulnp
# こちらはTCPのみの接続状態を表示します。
sudo netstat -antp | grep ESTABLISHED
ステップ2: ssコマンドによる詳細な監視設定
# ssコマンドを使ってより詳しいネットワーク接続情報を確認します。
sudo ss -tuln
# こちらは特定のポートに対するTCP接続状態を表示します。
sudo ss -antp | grep :80
ステップ3: iptablesと組み合わせて監視
# iptablesで規則を作成し、接続履歴を追跡します。
sudo iptables -A INPUT -j LOG --log-prefix "iptables_input:" --log-level 6
# 状態監視のためにtcpdumpを使うことも可能です。
sudo tcpdump -i eth0 port 80 and host example.com
ステップ4: cronで定期実行設定
# cronにタスクを追加し、毎時間一度ネットワーク接続状態を監視します。
echo "*/1 * * * * /usr/bin/netstat -antp > /var/log/netstat.log" | sudo tee -a /etc/cron.d/tcp-check
# あるいはssコマンドを使用してログを作成します。
echo "*/5 * * * * /usr/bin/ss -antp >> /var/log/ss.log" | sudo tee -a /etc/cron.d/tcp-check
注意事項
netstatやssコマンドはroot権限が必要です。iptablesの設定には十分な注意を払ってください。誤った設定によりネットワーク接続に障害が生じる可能性があります。cronタスクは定期的に実行され、ログファイルに出力されます。
まとめ
1. netstatとss: TCPコネクションの基本的な監視に適しています。
2. iptables: セキュリティポリシーを強化し、接続履歴を追跡します。
3. tcpdump: 特定のネットワークトラフィックを詳細に調査します。
4. cron: 定期的な監視とログ記録を行うためのスケジューラ機能を活用します。
関連記事: