Bashで簡単!業務自動化を実現するサーバー状態監視スクリプトガイド

業務の効率化や改善を求める現代の企業にとって、サーバーの状態監視は重要な課題です。静的な定点監視から動的なリアルタイム監視まで、そのニーズは多岐にわたります。しかし、商用ツールを使うにはコストがかかったり、機能が過剰だったりすることも多いでしょう。そこで、Bashスクリプトを使って簡単にサーバーの状態監視を実現する方法について解説します。専門的なスキルがなくても、自分たちの環境に適した監視スクリプトを作成することができます。

Bashスクリプトとは

Bash(Bourne Again SHell)は、LinuxやUnix環境で主に使われるシェルの一種です。シェルスクリプトは、このBashを使って記述されるプログラムで、タスクの自動化やコマンドの実行を支援します。Bashスクリプトを使えば、簡単なコマンドから高度なシステム管理まで様々な作業を自動化できます。

基本的な監視項目

サーバー監視において基本的に抑えるべき項目は、以下のようなものがあります。

  • CPU使用率: 高負荷が続くとサービスが停止するリスクがあるため、常にチェックが必要です。
  • メモリ使用率: メモリリークがないかどうかを確認することは非常に重要です。
  • ディスク使用量: ディスクの使用量が100%に近づくとデータが書き込めなくなり、サービスに支障を来す可能性があります。
  • プロセスの稼働状況: 特定のプロセスが正常に動いているかを確認することは、サービスの安定性を確保する上で大切です。

基本スクリプトの作成

CPU使用率の監視

top コマンドは平均的なCPU使用率を確認するのに便利です。以下のスクリプトはCPU使用率を確認する例です。

#!/bin/bash

CPU_THRESHOLD=80

CPU_USAGE=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}')

echo "Current CPU usage is: $CPU_USAGE"

if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
    echo "CPU usage is above threshold!"
    # Add notification or alert logic here
fi

メモリ使用率の監視

メモリ使用率を確認するために、free コマンドを使用します。

#!/bin/bash

MEMORY_THRESHOLD=80

MEMORY_USAGE=$(free | awk '/Mem/ {printf("%.2f", $3/$2 * 100.0)}')

echo "Current Memory usage is: $MEMORY_USAGE%"

if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
    echo "Memory usage is above threshold!"
    # Add notification or alert logic here
fi

ディスク使用量の監視

ディスクの使用量は、df コマンドで確認できます。

#!/bin/bash

DISK_THRESHOLD=90

DISK_USAGE=$(df -h / | grep '/' | awk '{print $5}' | sed 's/%//')

echo "Current Disk usage is: $DISK_USAGE%"

if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
    echo "Disk usage is above threshold!"
    # Add notification or alert logic here
fi

スクリプトの自動実行

cronジョブを使ってスクリプトを自動実行することで、手動操作を減らし、監視を自動化することができます。

# 5分ごとに実行する例
*/5 * * * * /path/to/your/script.sh

通知機能の追加

監視に役立つメール通知機能を追加することで、即座に問題に対応できる環境を構築できます。

メール通知を設定する

例えば、sendmailを使ったメール通知を設定することができます。まず、sendmail をインストールしてから以下のようにスクリプトに追加します。

#!/bin/bash

TO_ADDRESS="あなたのメールアドレス"
SUBJECT="Alert: サーバーの状態に注意が必要"
BODY="Alert: The server is currently experiencing high load."

echo -e "Subject:$SUBJECT\n\n$BODY" | sendmail $TO_ADDRESS

ログを活用する

ログファイルを書き込むことで、後から問題を確認しやすくなります。スクリプトにログ出力を追加することを検討してみてください。

LOG_FILE="/var/log/server_monitor.log"

echo "$(date): Current CPU $CPU_USAGE%, Memory $MEMORY_USAGE%, Disk $DISK_USAGE%" >> $LOG_FILE

スクリプトの改善

このようなシンプルなスクリプトからスタートし、サーバー監視のニーズに応じて機能を追加していくことができます。スクリプトをカスタマイズすることで、より個別のニーズに適した監視環境を構築することが可能です。また、オープンソースのモニタリングソフトウェアと連携することで、さらなる機能を追加することも考えられます。

結論

Bashスクリプトを使うことで、コストをかけずにサーバー監視を始めることができます。基本的な監視ポイントを押さえ、必要に応じて改善しながら使い続けることで、システムの安定稼働をサポートし、業務の自動化に貢献できます。やがて、より高度な監視機能を追加していくことで、システムの複雑性に応じた監視環境を築くことができるでしょう。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
業務自動化の実践

コメント

タイトルとURLをコピーしました