はじめに

クラウドインフラストラクチャの環境では、EC2インスタンスの健全性とリソースの監視が不可欠だ。システム管理者にとって一般的な課題の一つは、ディスク容量が不足しないようにすることだ。これはパフォーマンス低下やサービス停止につながる可能性がある。AWSはCloudWatchのような堅牢な監視ツールを提供しているが、特に小規模であまり複雑でないセットアップでは追加コストと複雑さが発生する可能性がある。

この記事では、EC2インスタンス上でcronジョブとして実行されるBashスクリプトを使用したシンプルでコスト効率の高いソリューションを探る。このスクリプトはインスタンスのディスク使用量をチェックし、定義されたしきい値を超えた場合にSlackチャネルにアラートを送信する。この方法は最小限のセットアップで済み、外部監視ツールも不要で、コストを低く抑えられる。

Bashスクリプトソリューション

以下がBashスクリプトとSlack webhookを使用したソリューションだ。スクリプトはルートボリューム(/)のディスク使用量をチェックし、使用量が定義されたしきい値を超えた場合にSlackチャネルにアラートを送信する。また、影響を受けたインスタンスを迅速に特定できるよう、EC2インスタンスのホスト名プライベートIPパブリックIPの情報も含まれている。

#!/bin/bash

THRESHOLD=85 SLACK_WEBHOOK_URL=“https://hooks.slack.com/services/your/webhook/url"

hostname=$(curl -s http://169.254.169.254/latest/meta-data/local-hostname) public_ip=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4) private_ip=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)

disk_usage=$(df -h / | grep -v Filesystem | awk ‘{print $5}’ | sed ’s/%//’)

if [ “$disk_usage” -ge “$THRESHOLD” ]; then message=“Disk usage on EC2 instance ‘${hostname}’ is at ${disk_usage}%. \nPrivate IP: ${private_ip} \nPublic IP: ${public_ip}. \nPlease extend disk space!”

payload=”{’text’: ‘$message’}" curl -X POST -H ‘Content-type: application/json’ –data “$payload” $SLACK_WEBHOOK_URL fi

長所:

  1. コスト効率: CloudWatchのような追加のAWSサービスは不要。
  2. シンプルで軽量: ほぼすべてのLinuxベースシステムで利用可能なネイティブツール(Bash、curl、cron)を使用。
  3. 即時通知: Slackを通知チャネルとして使用することで、チームはリアルタイムでアラートを受信。
  4. カスタマイズ可能: 異なるしきい値のチェック、追加ディレクトリの監視、チェック頻度の変更が簡単にできる。
  5. 低オーバーヘッド: 軽量なcronジョブの実行はシステムのパフォーマンスへの影響が最小限。

短所:

  1. 集中監視なし: スクリプトは個々のEC2インスタンスで実行されるため、全インスタンスのディスク使用量を表示する集中ダッシュボードがない。
  2. メンテナンス: 多くのEC2インスタンスがある場合、すべてにこのスクリプトをデプロイして維持する必要がある。
  3. ディスク監視に限定: このスクリプトはディスク使用量のみを監視し、CPU、メモリ、ネットワークトラフィックなどのEC2の健全性の複数の側面は監視しない。
  4. Slack統合が必要: 組織がSlackを使用していない場合、別のメッセージングプラットフォームとの統合やメール通知の使用が必要。

結論

このBashスクリプトは、EC2のディスク容量を監視し、ディスク使用量が重要なしきい値を超えたときにSlackにアラートを送信するシンプルで低コストなソリューションを提供する。AWS CloudWatchや他の包括的な監視ツールに関連する複雑さとコストを必要としない組織やプロジェクトにとって優れた適合性だ。

小中規模のデプロイメントやコスト意識の高い環境にとって、これはEC2インスタンスのディスク容量が不足していないことを確認するための非常に効果的な方法となりうる。