私はセルフホストの VPS サーバーを所有しており、自宅のマシンのシステム トレイでそのステータス (アクセス可能かどうか) を常に確認できるようにしたいと考えています。そのために、次のような簡単な bash スクリプトを作成しました。
#! /bin/bash
while true
do
if ping -c 1 -W 1 vps > /dev/null
then
# Draw green icon in the tray
else
# Draw red icon in the tray
fi
sleep 1
done
以上です。このような継続的なリクエストは帯域幅に意味のある影響を与える可能性がありますか? また、ホスティング プロバイダーはこのような動作を疑わしいと見なすことができますか? 接続を監視するより良い方法はありますか?
答え1
コメントのやり取りによって、私はその質問についてさらに考えるようになり、最終的には実際の答えを裏付ける思考の流れに至りました。
答えは「いいえ」です。VPS が稼働中か停止中かを知ることが目的であれば、ping は VPS への接続を監視するのに適した方法ではありません。
この問題の ping (または ICMP 要求) は、小さなパケットをコンピューターからルーター、インターネット、データセンター、ルーター、場合によってはサーバー、そして最終的にそのサーバー上の仮想インスタンスに送信します。
多くの場合、データセンターのネットワークには ICMP 要求を検出するスマート スイッチがあり、それらのスイッチが応答して ICMP 要求を確認します。ping を実行しても、VPS が実行中かどうかはわかりません。
さらに、自分のコンピューターから ping を実行すると、ネットワークのどこかに問題が発生します。たとえば、インターネット接続が悪い、モデムやルーターに問題があるなど、ICMP 要求を送信できず、要求応答が不正になります。そのため、自分の VPS に ping を実行すると、VPS がダウンしているというトリガーが生成される場合がありますが、実際には自分のインターネットが機能していなかったことになります。
データセンター ネットワークや VPS サーバーと比較すると、ホーム ネットワークは正常に動作しないことがはるかに多くあります。
もちろん、VPS がダウンする可能性はありますが、ICMP パッケージを使用しても、それが当てはまるかどうかはわかりません。
多くの場合、VPS をレンタルすると、プロバイダーには参照できるサービス ステータス ページもあります。このページは監視ツールによって自動生成されることが多く、より正確です。
さらに、定期的にリモート サーバーにチェックインする監視ツールを VPS にインストールすることもできます。チェックインが失敗した場合、リモート サーバーは「サーバー X からのチェックインを見逃しました」と通知し、それが 5 回連続で発生すると電子メールを送信します。
この最後の方法が最適です。プログラミングが得意な場合は、PHP で簡単なものをプログラムできますが、別の Web ホスティング サービスが必要になります。VPS はブラウザーで URL を開き、そのページは 10 秒ごとに更新され、そのページは最後の更新をログに書き込みます。同じ Web サーバー上の cron ジョブが最後の更新をチェックし、かなり前に行われた場合は電子メールを送信します。
もちろん、VPS が再起動した場合はブラウザを再度開く必要がありますが、それを自動化する方法はあります。
サーバー監視専用のプログラムもありますが、安価なものはすぐには思いつきません。