Amazon LinuxにGangliaをインストールしてnetstatの値をモニタリングする
はじめに
こんにちは植木和樹@上越オフィスです。本日は老舗モニタリングシステム Ganglia のインストールメモです。
Gangliaはrrdtoolのフロントエンドで、cacti や munin などと同じです。 Amazon LinuxのRPMリポジトリで提供されており、手頃にOSより上のリソースをモニタリングしたかったため、サクッとインストールしてみました。
インストール
設定にあたって下記サイトを参考にさせていただきました。
$ sudo yum install -y ganglia ganglia-web ganglia-gmetad ganglia-gmond ganglia-gmond-python
yumで関連パッケージをインストールしたら、上記参考サイトに従って /etc/ganglia/*.conf を設定します。
タイムゾーン変更
デフォルトだとタイムゾーンがUTCのままなので、JSTに変更します。
Web画面のタイムゾーンは php の設定を変更します。
# vi /etc/php.ini date.timezone = "Asia/Tokyo"
グラフはrrdtool実行時のタイムゾーンを変更します。conf.phpに設定を書くとデフォルト値(/usr/share/ganglia/conf_default.php)を上書きできます。
# vi /etc/ganglia/conf.php $conf['rrdtool'] = "env TZ='Asia/Tokyo' /usr/bin/rrdtool";
Apache 2.4 アクセス制限
Apache は2.4がインストールされますが、gangliaでインストールされる設定ファイルが Apache2.2 向けです。このままだとページが開けませんので、ひとまず全体に開放しておきます。(アクセス制限はセキュリティグループでかけてください)
# vi /etc/httpd/conf.d/ganglia.conf Require all granted
起動
ここまでできたら各種プロセスを起動します。
# service gmond start # service gmetad start # service httpd restart
netstat グラフの追加
今回私がモニタリングしたいのは netstat -sで表示されるいくつかの値でした。
netstatのメトリクスは ganglia-gmond-python が提供するらしく、値の収集はpythonのスクリプトで行っています。
まずスクリプトを実行して、グラフに追加したいメトリクスの name を調べます。
$ python /usr/lib64/ganglia/python_modules/netstats.py
netstat -sの出力と上記出力を見比べてほしい name を勘を頼りに探します。今回は "N times the listen queue of a socket overflowed" の値を取りたかったので tcpext_listenoverflows を設定ファイルに追記しました。
# vi /etc/ganglia/conf.d/netstats.pyconf metric { name = "tcpext_listenoverflows" title = "times the listen queue of a socket overflowed" value_threshold = 1.0 } # service gmond restart
動作確認
http://yourserver/ganglia/ にアクセスしてグラフが表示されることを確認します。
追加した tcpext_listenoverflows もグラフ化されて確認できていました。
あとは数日データを取得しつつモニタリングを続けましょう。
まとめ
Amazon Linuxでも使えるモニタリングツール Ganglia のご紹介でした。
MySQLやNFSの設定もいらず、yumで関連パッケージをインストールするだけで使え、初期設定ですでに主要な監視設定が済んでいるためすぐに使い始めることができます。 今回は試していませんが、各監視対象サーバーで gmond.conf を設定するだけで簡単にスケールでき、大規模サーバーでの実績も多いようです。
2016年の3.7.2を最後に、ここ数年開発に動きがないのが気になりますが、すでに実績のあるツールで、ある意味「枯れている」印象があります。インストールしてから1時間ほどで使える詳細モニタリングツールとしていかがでしょうか。