graphiteのインストール
Graphiteは「スケーラブルなエンタープライズ向けリアルタイム・グラフ・システム」だそうだ。これを使うと何がいいのかは別のポストでまとめるとして、インストールの手順をメモっておきたい。
これがサイト http://graphite.wikidot.com/
構成
graphiteはdjangoアプリによるフロントエンドとcarbonというバッケンドから構成される。carbonは独自のプロトコル(何でhttp使わないのか、スケーラビリティーの為か)でグラフ表示するデータを受ける。ウェブアプリはcarbonが管理するデータをグラフとして綺麗に見せる。グラフエンジンはcairo。依存モジュールが多くインストールはちょっと面倒なので整理してみた。
graphite関係
https://launchpad.net/graphiteで入手
- graphite-web: graphiteのフロントエンド。djangoによるウェブアプリ
- carbon: graphiteのバッケンド。表にするデータを受けDBにコミットするデーモン。
- whisper: DBライブラリ
cairoグラフィックスライブラリ関係
cairographics.orgが提供
- pixman
- cairo
- pycairo
インストール
pixman
$ wget http://cairographics.org/releases/pixman-0.24.0.tar.gz
$ tar xzf pixman-0.24.0.tar.gz
$ cd pixman-0.24.0/
$ ./configure
$ make
$ sudo make install
cairo
# cairoが依存するグラフィックスライブラリを入れておくといい
$ sudo apt-get install libpng12-dev librsvg2-dev libx11-xcb1
$ wget http://cairographics.org/releases/cairo-1.10.2.tar.gz
$ tar xzf cairo-1.10.2.tar.gz
$ cd cairo-1.10.2/
$ ./configure && make
$ sudo make install
pycairo
- http://cairographics.org/releases/
- wget http://cairographics.org/releases/pycairo-1.8.8.tar.gz
- ./configure; make; make install
パイソンモジュールなのに./configure。 graphite webappはこれに依存するがチェックはなく、インストールし忘れるとグラフの部分がリンク切れマークになる。さらにタチが悪いことに、エラーはログに残らない。グラフがリンク切れしたときはそれを別タブで空けるとエラーメッセージが見れる。
carbon
- sudo apt-get install python-twisted
- http://launchpad.net/graphiteからcarbon-x.y.z.tar.gzダウンロード (0.9.9)
- sudo python setup.py install
whisper
- http://launchpad.net/graphiteからwhisper-x.y.z.tar.gzダウンロード (0.9.9)
- sudo python setup.py install
django
easy_installしたバージョンだとdjango-1.3.1からインポートエラーが。
最新のdjango-tagging-0.3.1.tar.gzでこの問題を解決。http://code.google.com/p/django-tagging/downloads/listからダウンロードしてソースからpython setup.py install
ImportError: cannot import name parse_lookup
graphite-web (0.9.9)
- http://launchpad.net/graphiteからダウンロード
- sudo python setup.py install
設定
- ログやDBのあるディレックトリをウェブサーバから書き込めるようにする
sudo chown -R www-data:www-data /opt/graphite/storage/
- django DBをつくる
cd /opt/graphite/webapp/graphite; ./manage.py syncdb
graphite-web, django, apache2
mod_pythonがインストールされていることを確認
$ ls /etc/apache2/mods-enabled/python.load
apache設定
/etc/apache2/sites-enabled/graphite.conf
$ sudo /etc/init.d/apache2 restart
ServerName my-graphite-host
DocumentRoot "/opt/graphite/webapp"
ErrorLog /opt/graphite/storage/log/webapp/error.log
CustomLog /opt/graphite/storage/log/webapp/access.log common
SetHandler python-program
PythonPath "['/opt/graphite/webapp'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE graphite.settings
PythonDebug Off
PythonAutoReload Off
SetHandler None
SetHandler None
Alias /media/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media/"
carbon設定ファイル
$ cd /opt/graphite/conf/
# お任せ設定
$ cp carbon.conf.example carbon.conf
$ cp storage-schemas.conf.example storage-schemas.conf
carbonデーモン起動
$ sudo -u www-data /opt/graphite/bin/carbon-cache.py start
carbonクライアントで表にするデータをcarbonに送る
こいつはsystem.loadavg_{1,5,15}minのデータをひたすらカーボンに送り続ける。ブラウザをhttp://my-graphite-hostに向けると「Graphite」と「User Graphs」というフォルダがあるが空だ。example-client.pyを起動してしばらくするとGraphite->system->loadavg_5minなどにデータが入り始め、右にグラフが表われる。「Auto-Refresh」を押しておくと、勝手にグラフを更新してくれる。
$ ~/src/graphite-web-0.9.9/examples/example-client.py
sending message
...
参照
- これを参考にした: http://agiletesting.blogspot.com/2011/04/installing-and-configuring-graphite.html
- graphiteのHP http://graphite.wikidot.com/
- http://cairographics.org/
アプリケーションからのデータをグラフ化するだけのために大工事になってしまった。djangoアプリがmod_pythonの中で動いたり(fcgiにできなかったのかね)、また別プロセスでバックエンドが動く。あとグラフィックスライブラリの依存が面倒。しかも未だあるのだ。次はstatsdというgraphiteの前に置くサービスを設定する。tcpで同期的なgraphiteのAPIに対してアプリケーションにとって楽なUDPインターフェースを提供するnode-jsサービスだ。これもやると、グラフ表示のためにプロセスを三つも管理しなきゃいけないことになる。やれやれ。
gnuplotか何か使えばもっと簡潔なグラフサービスができそうな気がする。