Linuxサーバーから外部Webサーバーにアクセスできるかどうかを数分ごとにポーリングしたいと思います。
サーバーが10.20.30.40であるとします。
私はこのガイドに従っています。
https://www.baeldung.com/linux/hosts-network-availability
サーバーに接続できますが、pingすることはできません。
pingが成功しないという意味です。
残念ながら、netcatはインストールされていません。
ただし、ポート443からリモートでサーバーにログインできます。
答え1
通常、サーバーのエンドポイント(特定のURL)を使用してこれを行います。これにより、同じ要求でネットワークアクセスとサーバーの可用性をテストできます(IEは競合しません)。
簡単なcurl
リクエストだけで確認が可能です。たとえば、
curl -f -LI http://example.com/foo/bar
example.comが2xx成功で応答すると、0終了コード(成功)が返されます。HTTPステータスコード。単純なifステートメントを使用してシェルスクリプトとして作成できます。
if curl -f -LI http://example.com/foo/bar ; then
echo success
else
echo failed
fi
エンドポイントを選択するには、実行中の特定のWebサーバーを確認する必要があります。一部はこれらの特定の目的のために「ステータス確認」エンドポイントを提供します。そうでない場合、/
通常Home()は良い選択です。
答え2
サーバーに接続できますが、pingすることはできません。
だから最初にすべきこと:壊れるICMPを修正してください! pingを抑える理由はありません。そうすれば、多くのことが不必要に難しくなります。ルートMTUの検索がより困難になり、ネットワークの問題を検出するのがより困難になり、無料です。私の経験によれば、ICMPパケットをブロックしてpingを不可能にし、外部で検出できないTTL制限で終わり、「不可能」TCP接続を確立できるなど、驚くべきMTU問題が発生するが失敗するネットワークです。働く
接続に問題があるときに通知を送信できないホストが好きな人はいません。 ICMPを修正してください。
ただし、ポート443からリモートでサーバーにログインできます。
Philip Coulingが上記のように、HTTPSリクエスト全体の場合curl
。
TLS接続設定が満足のいくものであれば、openssl s_client
次のことができます。
echo | openssl s_client yourhost:443 || printf 'FAAAAIL!\n'
通常、サービス監視システムを構築するには、他の人がすでに作成したシステムを使用してください。複数のサーバーを監視し、電子メールまたはメッセージを介して通知を受け取る必要がある場合は、サーバーにGrafana(Prometheusとセンサーを含む)を設定することに時間を費やす価値があります。