memcachedの活用と運用 実践編

第3回 memcachedの監視とCloudForecastによるモニタリング

この記事を読むのに必要な時間:およそ 5 分

CloudForecastによるリソースモニタリング

ここまでmemcachedの稼働監視として,接続やコマンドに対するレスポンスの監視,接続数の監視について紹介しました。次は拙作のリソースモニタリングツールであるCloudForecastを利用したmemcachedのリソース監視について説明します。

CloudForecastとは

CloudForecastとは,筆者が開発しているリソースモニタリングのためのツールです。ミクシィで利用していた監視ツールの項目などを参考にして作られ,SNMPやHTTP等を経由して取得したリソースデータをRRDToolを通してグラフ化する機能を持っています。Perlを用いて開発されており,高速かつ拡張が容易でサーバ数台の小規模な環境から1000台以上の大規模な環境でも1つの設定で監視ができるよう設計されています。同じ目的のソフトウェアとしては,MRTGやCacti,Muninなどがあります。

RRDTool
http://oss.oetiker.ch/rrdtool/

CloudForecastのインストール

CloudForecastはSNMPとRRDToolを使用しています。RRDToolはCentOSの場合,EPELを利用すると導入が簡単に行えます。

EPEL
http://fedoraproject.org/wiki/EPEL
$ sudo yum install net-snmp net-snmp-perl rrdtool rrdtool-perl

RRDToolやSNMPのPerlのモジュールも必要となるため同時にインストールします。CloudForecastのソースコードはgithubから取得できます。また,CloudForecastはいくつかのCPANモジュールに依存していますが,それらの依存モジュールはcpanmを利用すると簡単にインストールできます。

cpanm
http://search.cpan.org/dist/App-cpanminus/
$ git clone git://github.com/kazeburo/cloudforecast.git
$ cd cloudforecast
$ cpanm -l extlib --installdeps .

memcachedサーバの登録

memcachedサーバをモニタリングするための設定を紹介します。まず,設定ファイルをsampleからコピーして作成します。

# 設定ファイル
$ cp cloudforecast_sample.yaml cloudforecast.yaml

次にサーバ一覧ファイルをserver_list.yamlというファイル名で作成します。server_list.yamlの内容は以下のようにします。

--- #Memcached ----(1)
servers:
 - config: memcached.yaml   ---(2)
   hosts:
     - 192.168.67.30 memserver memcached server 1 ----(3)

(1)はCloudForecastのWeb画面でサーバ一覧を区切るラベルとなります。ここではMemcachedとしました。⁠2)でこれから作成する監視項目の設定ファイル名を指定します。⁠3)では監視対象となるサーバを追加します。サーバの指定は半角スペース区切りで,IPアドレス,ホスト名,コメントの順に書いていきます。コメント欄はサーバの利用方法などのメモとして利用できます。

(2)で指定した監視項目の設定ファイルは,host_configディレクトリ内に作成します。

リスト host_config/memcached.yaml

resources:
 - traffic:eth1
 - basic
 - memcached:11211

resourcesにモニタリングするリソースを追加します。ここではeth1インターフェースの通信量(traffic)⁠CPU使用率メモリ使用量などを1つにまとめたリソース(basic)⁠そしてmemcachedを対象に含めています。

ここまで設定が完了したら,CloudForecastを起動します。Webインターフェースのデーモンとリソースデータを巡回取得するデーモンの2つを起動します。

# Webサーバ port 5000番でListen
$ ./cloudforecast_web -p 5000 -c cloudforecast.yaml -l server_list.yaml
# 巡回デーモン。5分ごとにリソースデータの取得を行います
$ ./cloudforecast_radar -c cloudforecast.yaml -l server_list.yaml

起動後ブラウザで「http://cloudforcastを起動したサーバ:5000/」にリクエストすると次のようなページが表示されます。より詳しいCloudForecastの使用方法については順次筆者のblogなどで公開していくことを考えています。

トップ画面

トップ画面

グラフ解説

CloudForecastによるmemcachedのリソースモニタリングは,CloudForecastの巡回デーモンから直接memcachedに接続を行い,⁠stats」コマンドや「stats settings」コマンドを発行して行っています。以下はstatsコマンドの出力例(一部)です。ここで得られたデータを利用しています。

telnet localhost 12345
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 14509
STAT uptime 12031825
STAT time 1283157970
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 5510.072358
STAT rusage_system 17891.870172
STAT curr_connections 337
STAT total_connections 1314016
STAT connection_structures 806
STAT cmd_get 3128199909
STAT cmd_set 187991838
STAT cmd_flush 13
STAT get_hits 3047486629
STAT get_misses 80713280

statsコマンドによるデータ収集の結果,表示されるグラフは4つあります。

キャッシュの使用量

キャッシュの使用量

getとセットの発行数

getとセットの発行数

getのhit率

getのhit率

コネクション数面

コネクション数

上から,キャッシュの使用量,getとsetが発行された数,getのhit率,最後がコネクション数のグラフになります。この中でキャッシュの使用量のグラフには注意が必要です。memcachedのキャッシュオブジェクトを保存するスラブの仕様上,100%まで使用することはできません。上のグラフでは3GB中2.8GBを使用していますが,おそらくこれ以上の使用率にはなりません。

最後のグラフは,稼働監視でも紹介したコネクション数のグラフです。赤いラインが起動時に設定をした最大同時接続数を表します。約16万が設定されています。緑色のグラフが実際の接続数になりますが,一日の中で最大でも5,700コネクションとなっているのでまだ接続数の余裕があることがわかります。

まとめ

memcachedのNagiosを利用した稼働監視とCloudForecastでのリソースモニタリングについて紹介しました。Webサービスのスケーラビリティにおいてmemcachedが重要なコンポーネントの1つとなって今,監視の重要性も高くなっています。筆者の経験上memcachedは非常に安定したソフトウェアだと考えていますが,障害に対して即座に対応ができるよう,また効率的な運用ために監視は欠かすことはできません。

次回はこれまでに説明した起動オプションやセキュリティ以外のmemcachedを利用する上でのTIPSを紹介します。

著者プロフィール

長野雅広(ながの まさひろ)

株式会社ライブドア 開発部 システム管理グループ所属。最近はリソース監視ツール「CloudForecast」を開発しながら,ライドドアのさまざまなサービスに導入を行い,スケーラビリティの向上を目指している。

URLhttp://blog.nomadscafe.jp/

コメント

コメントの記入