oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

fluentd Casual Talksで触れたCactiについて良い所にも触れてみる。

使っている人はそんなの知っているよ!という話になるので、あんまり新しい話は無いです。どちらかというと「oranieさんって優しいと思っていたのにディスりまくる人なんだ・・・・」って印象を持っている人への言い訳です!あと、本当にCacti詳しい人からしたらツッコミどころ多いかも知れないので、是非指摘したブログ書いて教えて下さい><

Cactiユーザーとして

大体4年ぐらいです。でもそんなに難しい事やっている訳では無いです。コードバンバン弄ったりとか、複雑なプラグイン作ったりとかはしていないです。ちょろっとスクリプト書けば取得できるレベルの事を追加したり、何回か簡単なオレオレテンプレートを作って運用したりです。

まずCactiって何が良いの?

ggrks個人的な感想ですが、サーバが30〜50台までならとても使いやすいと思います。何故かというと、Cactiはセットアップなんてyumでガシガシ入れればすぐインストール出来ます。そして何よりテンプレートが豊富で、一般的なOS、ミドルウェアCisco等の経路機器なら、ちょっと調べれば大抵の事はグラフ化出来ます。
http://www.generationip.com/documentation/general-documentation/59-best-cacti-templates-for-application
http://www.percona.com/doc/percona-monitoring-plugins/cacti/mysql-templates.html
こことかね。なので、

  1. 使いたいテンプレート調べる
  2. インポートする
  3. 対象のホストを登録する(既に登録していたらスキップ)
  4. テンプレートから登録したグラフをホストにチクチク設定

という作業で済むので、慣れれば1ホスト5分くらいで終わります。
またグラフの設定もキメ細かい設定が可能なのと、他のグラフツールを使った人からも良いね!(と言っても他のグラフツールでも出来るの有るとは思いますが)と言われるのは、「後で遡ったグラフを見る時に、そこを拡大して見れる」です。言葉だけだとなんのこっちゃかも知れないので、実際にグラフを触って拡大してみて下さい。
またpull型でデータを取得するので、対象ホストにエージェント等を入れる必要が無く、ある程度のスペックのマシンで動作させれば遅延なども気にならないです。いくつのノード見ているかは多分言っちゃいけない気がするので割愛します。あと、ユーザー権限とかログの表示とか、pullする処理のチューニングとか(そもそもが糞重いので、難点でもありますが)も全部GUIで出来るので、CLIとかにジンマシン出る様なメンバーがいるチームにはピッタリだと思います。

じゃあ、なんであんなにディスった愛情一杯にCactiの事を話したの?

問題はインストールした後の話です。Cactiでグラフを作成する場合大雑把にですが

  1. どうやってデータを取得するかの定義(Data Queries、Data Input Methodsなど)
  2. RRDToolに入れるデータの定義(Data Templates)
  3. RRDToolに入っているデータをグラフ表示する定義(Graph Templates)
  4. ホストの定義(device)

をする必要があります。

で、テンプレートは上記の1〜3までが出来ているので、後はホスト毎にそれを設定してあげれば使えるんですが、問題はテンプレートが無い場合です。上記の1〜3を自分で設定する必要があるのです。で、この作業の労力は「作成するグラフの種類」×「そのグラフ内に表示させる値」×「登録するホスト数」である程度見積もれる訳です。なので、一つのグラフ内に10個くらいのデータを表示させるグラフを作成する時や、グラフとしては簡単だけど100ホストに登録する場合はかなりキツイです。ニルヴァーナ見れます。マウスのクリック音が段々大きく感じてきます。優しかった祖母を思い出して泣きそうになった事もあります。なんでかというと、基本GUI操作(ブラウザ)なんですね。なので、一度新しいテンプレートを取り入れたら、後はひたすらクリックです。

CLIからの操作もあるらしいですが、自信を持ってやれるレベルのドキュメントとかが見つからなかったのでやめました。あと、Cacti使いは大体「俺・・・このテンプレを作り終わったら別のエージェント型グラフツールを検証するんだ・・・」って思いますが、テンプレ作り終わったらもう脳がほげほげしているので、設定して終わりです。また次の作成時に同じ事を思い出すだけです。

あと、テンプレートをよく見て貰えると分かりますが、何が書いているかよく見ても分かりません。ポルナレフでは無いです。いやポルナレフかも知れません。XMLファイルに記述された恐ろしい量のテキストを見ると、「どこかのテンプレートをエクスポートして、ちょっと書き換えれば今回のグラフすぐ作れるはず!」という夢は崩れ去るのです。もちろんスーパーハカーなら大丈夫なんでしょうけど。

あと、この間死にかけたのはテスト環境の0.8.7最新版で作ったテンプレートを本番に取り込もうとしたら、本番が0.8.7gぐらいで一個古いVerだった為に取り込めないという問題もありました。逆は出来ました。そのグラフはグラフ内に10個くらいのリソースを設定していたので、もうくぁyhfはhdfdhふぃあsふぉsdふぁいhf

あと、一番面倒くさいのは各設定の意味を掴めるまで「お前は何を言っているんだ??」とずっと思うことです。詳細な設定が出来るという事はそういう事です。

そうは言っても良いですよ、Cacti

なんかCactiのプロダクト面というより僕の技術力の低さやただの愚痴じゃねーのという話が大半なので元に戻します。個人的にCacti向きなシステムとして、

  1. 台数が50台が一つの目安?(設定するコスト)
  2. 台数もさることながら、サーバの種類も重要。OSがWindowsやらLinuxやらで入り乱れていると大変です。
  3. Web+DB+バックエンド数種類とか理想。共通化出来ない各サーバ固有のリソース監視が一杯入るような物だと死ねる気がする。
  4. テンプレートを効率良く探す。プロが作ったものが一番。
  5. テンプレートにない物を色々やるくらいなら、別のサラッと作れるグラフツールと併用する。
  6. 例えば、MySQLCactiでやる、それ以外はmunin、頻繁にグラフを追加する部分はGrowthForecastとか。

とかな気がします。

結局

適材適所ですね!
僕は、ぶつくさ「めんどうくせー」とか言いながらCactiの設定をチマチマやっていて、それをTwitter

と言って貰い、俺は本当に駄目だなぁと思って今はスピーカーで話をした通りGrowthForecastも使い始めています。良いですよGrowthForecast。グラフ増やすの楽です。