ZabbixやNagios、Prometheusは大きすぎる!
大規模な監視システムを設定することなく、Linuxシステムで簡単に外部サービスのヘルスチェックを行いたい場合があります。ZabbixやNagios、Prometheusなどの監視ツールは強力ですが、設定が複雑であったり、小規模な用途にはオーバースペックであったりすることがあります。本記事では、シンプルなスクリプトを用いて特定のサーバーの特定のポートに対するヘルスチェックを行う方法を書き溜めます。
使うもの
nc
(netcat) コマンド
ステップ1: ヘルスチェックスクリプトの作成
- スクリプトの作成: 以下の内容で
health_check.sh
という名前のファイルを作成します。この スクリプトは設定ファイルからホスト名、ポート、そしてラベルを読み取り、それぞれのサービスに対してヘルスチェックを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/bin/bash # 設定ファイルのパス CONFIG_FILE="hosts.txt" # 設定ファイルが存在するかチェック if [ ! -f "$CONFIG_FILE" ]; then echo "設定ファイルが見つかりません: $CONFIG_FILE" exit 1 fi # 設定ファイルからラベル、ホスト、ポートを読み込み、ヘルスチェックを実行 while IFS=: read -r LABEL HOST PORT do # nc (netcat) を使ってTCP接続を試みる nc -z -v -w5 $HOST $PORT # nc コマンドの結果に基づいて結果を出力 if [ $? -eq 0 ]; then echo "[$LABEL] サーバー $HOST のポート $PORT は接続可能です。" else echo "[$LABEL] サーバー $HOST のポート $PORT に接続できません。" fi done < "$CONFIG_FILE" |
- スクリプトに実行権限を付与: 次のコマンドを実行して、スクリプトに実行権限を付与します。
1 2 |
chmod +x health_check.sh |
ステップ2: 設定ファイルの作成
- 設定ファイルの作成:
hosts.txt
という名前の設定ファイルを作成し、以下の形式でサービスの情報を記載します。各行にはラベル:ホスト:ポート
の形式で記述します。
1 2 3 4 |
web_server_1:example.com:80 web_server_2:example.org:80 ssh_server:192.168.1.1:22 |
ステップ3: スクリプトの実行と監視
- スクリプトの実行: 以下のコマンドでスクリプトを実行し、各サービスのヘルスチェックを行います。
1 2 |
./health_check.sh |
- 定期的なヘルスチェック: 必要に応じて、
cron
を使用してこのスクリプトを定期的に実行する ように設定することができます。
下記の例は10分単位でヘルスチェックします。
1 2 |
*/10 * * * * /home/ubuntu/health_check.sh |
まとめ
この方法を用いることで、複雑な監視システムを設定することなく、簡単に外部サービスの稼働状況をヘルスチェックできます。
Linux最高!
ncコマンドについて詳しくはこちら
https://linux.die.net/man/1/nc
じゃあねー。