Copyright © KLab Inc. All rights reserved.
KLab 株式会社
ライブドア様×KLab合同勉強会
システムモニタリングツール「Ganglia」の紹介
第弐開発部横川 和哉
~なんでもデータを取ってグラフ化しよう!~
Copyright © KLab Inc. All rights reserved. 2
自己紹介
目次
Ganglia の特徴
システムモニタリングツールとは
DSAS での利用例
ganglia のおかげで...
まとめ
Copyright © KLab Inc. All rights reserved. 3
自己紹介
横川和哉(31)
インフラストラクチャエンジニア
ネットワークに関すること全般が得意
プレグラムに関すること全般が苦手
トラブル(祭り)大好き
Copyright © KLab Inc. All rights reserved. 4
システムモニタリングツールとは
負荷試験の参考
トラブル時の原因究明
ボトルネックの発見 などなど
ネットワークトラフィックやサーバ負荷状況などを収集、蓄積し視覚化するツール
世の中の多くは rrdtool (データの蓄積/グラフ化を行うツール)のフレントエンド
主な利用用途
※ 監視ツールのお話ではありません
Copyright © KLab Inc. All rights reserved. 5
Ganglia の特徴
Copyright © KLab Inc. All rights reserved. 6
Ganglia とは
rrdtool のフレントエンドとしての実装の一つ
主に、カリフォルニア大学のElectrical Engineering and Computer Sciences 部でオープンソースで開発されている
はじめから、数千のノードまで対応できるように設計
Copyright © KLab Inc. All rights reserved.
データ収集サーバ
7
Ganglia の仕組み
一般的なシステムモニタリングツール Cacti の構成
WEB/DBサーバなど
snmpd
snmpd
MySQL
(設定情報)
Poller
RRD
SNMP
SNMP
収集サーバが各サーバに対してデータを取りに行く
Copyright © KLab Inc. All rights reserved.
データ収集サーバ
8
Ganglia の構成
WEB/DBサーバなど
gmond
gmetad/Poller(設定情報)
RRD
gmond
MulticastChannel
(専用プレトコル)
gmondgmetric
Ganglia の仕組み
etc
各サーバがデータを投げる
対象の port でListen
Copyright © KLab Inc. All rights reserved. 9
Ganglia の特徴まとめ
Multicast を利用
サーバの管理情報は自動生成
クライアントからのプッシュ型
snmp は使わずに、専用プレトコルを利用
プレトコルに従っていれば別のプレグラムからも送信が可能
収集サーバは対象 Multicast Channel の範囲で何台でも設置可能
Copyright © KLab Inc. All rights reserved. 10
DSAS での利用例
Copyright © KLab Inc. All rights reserved. 11
DSAS で Ganglia を使うワケ
Multicast を利用=> DSAS は基本的にぬとつのネットワークなので問題なし
サーバの管理情報は自動生成=> DSAS ではNetwork Boot のイメージに gmond をいれているのでサーバを追加しても設定追加などの手間がかからない
snmp は使わずに、専用プレトコルを利用=> DSAS は スイッチ 以外すべて Linux なので問題なし
プレトコルに従っていれば別のプレグラムからも送付が可能=> デフォルトで用意されているネットワークトラフィックやLoad Average 以外の情報取得が簡単
収集サーバは対象 Multicast Channel の範囲ならば何台でも設置可能=> 冗長化が簡単
Copyright © KLab Inc. All rights reserved. 12
簡単にデータ送信 gmetric コマンド
$ gmetric -–name=‘ftp_user’ ¥–-value=` netstat -an|grep ':21 ' |wc -l` ¥--type=int8
単体で、ganglia 用のデータ送信ができるコマンド
送信先アドルスなどは conf ファイルを読み込んでくれるのでgmond (デフォルトの収集daemon) を動かしていれば設定がいらない
名前(rrd のファイル名となる) と値、タイプ(string |int8 |uint8
|int16 |uint16|int32|uint32|float|double )を指定するだけでデータ送信ができる
例
Copyright © KLab Inc. All rights reserved. 13
DSAS で追加取得しているデータ
ボトルネックになりせうなもの、なってきたもの
継続的にデータを取っておくことでトラブル解決に役に立ちせうなもの
具体例
Disk
Network
Apache
MySQL
Memcached/TokyoTyrant
Copyright © KLab Inc. All rights reserved. 14
Disk
/proc/stat から取得
ディスクIOの量
ディスクIOを発生させているプロセスの数
DiskI/O
Copyright © KLab Inc. All rights reserved. 15
Disk
Disk のSmart情報(smartctl)から取得
代替セクタ数
HDDの温度
Smart情報
Copyright © KLab Inc. All rights reserved. 16
Apache
http://localhost/server-status?auto から取得 各apacheプレセスの状態
Copyright © KLab Inc. All rights reserved. 17
Apache
Apache のログを CustomLog ディレクティブで解析プログラムに渡して取得
HTTP Status 毎の秒間リクエスト数
平均レスポンス時間
pv/sec
Copyright © KLab Inc. All rights reserved. 18
MySQL
show variables や show global status から取得 クエリ数など
Copyright © KLab Inc. All rights reserved. 19
MySQL
port 3306 への Established なコネクションを取得
show global status などでは取りにくい瞬間値を取るため
コネクション数
Copyright © KLab Inc. All rights reserved. 20
Memcached/TokyoTyrant
localhost:11211 などに繋ぎ、stats 情報を取得
接続数
レクエスト数
eviction
統計情報
Copyright © KLab Inc. All rights reserved. 21
Network
Traffic
IP毎のトラフィック量の測定
GWサーバの iptables を利用して取得
Copyright © KLab Inc. All rights reserved. 22
Ganglia のおかげで..
Copyright © KLab Inc. All rights reserved. 23
例1 パフォーマンス改善
TokyoTyrant で get miss が異様に多い
Copyright © KLab Inc. All rights reserved. 24
例1 パフォーマンス改善
アプリを改善した結果平均ルスポンスタイムも 数ms 改善
Copyright © KLab Inc. All rights reserved. 25
例2 パフォーマンス改善
MySQL への不要なクエリ発行をやめた
Copyright © KLab Inc. All rights reserved. 26
例2 パフォーマンス改善
ルスポンスタイムが改善してることがはっきりわかる
改善前 改善後
Copyright © KLab Inc. All rights reserved. 27
まとめ
Copyright © KLab Inc. All rights reserved. 28
まとめ
システムモニタリングツールは手軽に対象機器の追加や、モニタリング項目の追加ができるのが理想
Ganglia ならば簡単に対象機器の追加が行える
Ganglia ならば、モニタリング項目の追加もちょっとスクリプトをかくだけで簡単
Ganglia に限らず、いれいれとデータを取っておけば、ボトルネックを見つけることもできるし、トラブル発生時の原因特定もずいぶん楽になる
パフォーマンスの改善の結果がきっちり目に見えるとモチベーションも上がる
Copyright © KLab Inc. All rights reserved. 29
ご清聴ありがとうございました