AWSのLinuxインスタンスのCPU, メモリ, ディスク, ロードアベレージ等をCloudWatchで監視するスクリプトを作ってみた

前回、前々回とAmazon CloudWatch Monitoring Scriptsについて見てきました。
今回は、LinuxのCPU, メモリ, ディスク, ロードアベレージ等をCloudWatchで監視するスクリプト、aws-mon-linuxを作ってみました。

特徴は下記の通り。

  • Amazon CloudWatch Monitoring Scripts for Linuxとほぼ同一のオプションを用意しているので、同等の操作感で使えます。
  • Amazon CloudWatch Monitoring Scripts for Linuxで監視可能なメモリ、ディスクに加えて、さらにCPUのsystem,user,wait等の詳細な値やロードアベレージ等まで監視できるようにしています。
  • シンプルなBashスクリプトで記述されているため、導入に手間があまりかかりません。

GitHubで公開しました。バグ報告、Pull Request、大歓迎です。

以下で詳細について説明していきます。


どんな環境で使えるの?

Amazon EC2上の下記のOSでテスト済みです。

  • Amazon Linux 2014.3
  • Red Hat Enterprise Linux 6.4
  • Ubuntu Server 13.10

Amazon CloudWatch Command Line Toolのインストールが必要です。
(Amazon Linuxではデフォルトでインストールされています。)


何ができるの?

このスクリプトを使うと、CloudWatchの標準メトリクスで監視できない下記の項目を、カスタムメトリクスで監視できます。

  • load average
  • interrupt
  • context switch
  • cpu (user/system/idle/wait/steal)
  • memory
  • swap
  • disk

太字はAmazon CloudWatch Monitoring Scripts for Linuxでも監視できない項目です。


どうやって使うの?

単なるシェルスクリプトなので、オプションつけて叩くだけです。

CPU user/system/idle/wait/stealを監視する(データは送信せずにテストする)

./aws-mon.sh --cpu-us --cpu-sy --cpu-id --cpu-wa --cpu-st --verify --verbose

メモリ(メモリ使用率、メモリ使用量、使用可能メモリ量)を監視する

./aws-mon.sh --mem-util --mem-used --mem-avail

ディスク(ディスク領域使用率、ディスク領域使用量、使用可能ディスク領域量)を監視する

./aws-mon.sh --disk-space-util --disk-space-used --disk-space-avail --disk-path /

ロードアベレージ(1分平均、5分平均、15分平均)を監視する

./aws-mon.sh --load-ave1 --load-ave5 --load-ave15

詳細な使い方、オプション等の仕様はGitHubに書いておきました。


そもそもなんで作ろうと思ったの?

以下な感じです。

  • 自分がAmazon Linux 2014.3でAmazon CloudWatch Monitoring Scripts for Linuxを検証する時に、PerlのCPANでハマった・・・
    ⇒OSのバージョン、その他ライブラリへの依存度が低いスクリプトを作りたい
    Amazon CloudWatch Command Line Tool使えば単純なシェルスクリプトでできるのでは
  • ロードアベレージやCPUのStealをとってくるスクリプトは見かけたけど、整理されたものがなかった
    ⇒どうせなら他の項目もとれるスクリプトを作りたい

おわりに

需要があるかどうかわからなかったので、とりあえず現状で公開してみました。
もし需要があるようであれば、下記の改善も検討してみようかなと思ってます。

  • 監視項目を増やす(コア別CPU使用率など)
  • 動作環境を増やす(SuSEなど)
  • ディスクのFilesystem, MountPathを取得するようにする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。