Nagios/Icinga で MySQL のパフォーマンスデータ履歴を残す


標準の check_mysql を呼び出すラッパースクリプトを書いた。

<pre>#!/bin/sh

LINE=/usr/lib64/nagios/plugins/check_mysql $*
RC=$?

THREADS=echo $LINE | awk '{print $4}'
SLOW_QUERIES=echo $LINE | awk '{print $9}'
OPEN_TABLES=echo $LINE | awk '{print $17}'
QUERIES_PER_SECOND_AVG=echo $LINE | awk '{print $22}'

echo $LINE | threads=$THREADS, slow_queries=$SLOW_QUERIES, open_tables=$OPEN_TABLES, queries_per_second_avg=$QUERIES_PER_SECOND_AVG

exit $RC
</pre>
こんな感じでパフォーマンスデータ(パイプの後ろ)が取れていれば成功。これを Nagios/Icinga のコマンドとして、標準プラグインの代わりに呼び出す。

<pre>$ ./check_mysql2
Uptime: 1296308 Threads: 2 Questions: 3299665 Slow queries: 0 Opens: 73 Flush tables: 1 Open tables: 64 Queries per second avg: 2.545
threads=2, slow_queries=0, open_tables=64, queries_per_second_avg=2.545
</pre>

APCのキャッシュ調整

Webサーバのパフォーマンスが悪いので、いろいろ調べていたらAPC (Alternative PHP Cache) のキャッシュが全然足りないことがわかった。

<div class="separator" style="clear: both; text-align: center;"></div>
フラグメントしまくり。

/etc/php.d/apc.ini の apc.shm_size を 64MB から 256MB に増やしたらゴキゲンになった。

<pre>apc.shm_size=256
</pre>
<div class="separator" style="clear: both; text-align: center;"></div>

Nagios / Icinga で Total Processes の履歴を残す

Nagios や Icinga の標準的プラグインでは、Total Processes や Zombie Processes などのプロセス数の履歴を残せない。check_procs プラグインが「パフォーマンスデータ」を返さないからだ。

Nagios/Icinga のプラグインが返すデータは

<pre>PING ok - Packet loss = 0%, RTA = 0.80 ms
percent_packet_loss=0, rta=0.80
</pre>
のようになっている。パイプ(
)の前が人間が読むデータ、後ろが RDDtool などの別プログラムによって履歴が保存されるパフォーマンスデータだ。Nagios/Icinga は、パイプを見るだけで、その前も、後ろも気にしない。パフォーマンスデータのフォーマットも処理を任せるプラグイン次第ということになっているが、上記のように key=value, key=value, … 形式とすれば標準的なパフォーマンスデータ処理ツールがそのまま使える。

check_procs プラグインは次のようなデータを返す。パフォーマンスデータがない。

<pre>$ /usr/lib64/nagios/plugins/check_procs
PROCS OK: 103 processes
</pre>
これを、以下のような形式を返すようにしてやればいい。

<pre>PROCS OK: 104 processes
procs=104
</pre>
ラッパースクリプトを書くか、check_procs.c を変更してビルドすれば実現できる。今回はラッパースクリプトで楽することにした。

<pre>#!/bin/bash
LINE=/usr/local/nagios/libexec/check_procs $*
RC=$?
COUNT=echo $LINE | awk '{print $3}'
echo $LINE | procs=$COUNT
exit $RC
</pre>http://www.nagios-portal.org/wbb/index.php?page=Thread&postID=100529&l=2

これで Total Processes と Zombie Processes のヒストリが残るようになった。

書かなければよかった

早川義夫さんの『ぼくは本屋のおやじさん』を読んだ。小書店の視点から本の流通を学べた。本屋が自ら取次に仕入れに行くとか、出版社に直接買いに行く(注文を出すのではない)ということもあるのだな。「店売」の意味がようやくわかった。でも一番刺さったのは、最後のこの言葉。

「僕は思う。ものを書くという行為は、自分を正当化するためにとか、自分を売り込むためにとかいうことではない。書くことによって、もしかすると自分が不利になるような、自分の醜さがさらけ出てしまうような、どんなに外に向けて書いたものでも、自分にはねかえってくるようなものでなければならない。どちらかといえば、書かなければよかったと思うようなものが、本来、書かねばならないことなのではないだろうか。」

『憂鬱でなければ仕事じゃない』で幻冬舎社長の見城さんも書いていた。「その人の一番出したくないものを出させるのが編集者の仕事」だと。そういうものでないと人の心を揺さぶることができない。ウェブのページビューや書籍の売上は、読者に与える心の振幅の大きさに比例する。

憂鬱でなければ仕事じゃない

『憂鬱でなければ仕事じゃない』 幻冬舎 見城徹、サイバーエージェント 藤田晋

幻冬舎の創業社長である見城さんと、20歳以上離れた弟分であるサイバーエージェント藤田さんの共著。30以上の主題にわかれた見城さんの原稿に、藤田さんが解説を加えるという構成。編集者出身だからだろうか。見城さんの言葉は力強く、美しい。己が為してきたことの自信と努力に裏打ちされていて、心を打つ。

見城さんの「努力」は半端なものではない。若いころに、当時すでに大作家であり政治家でもあった石原慎太郎と仕事をしたいがために、小説2編を丸暗記して、初対面のときに暗唱して見せたという。他の大作家と仕事をするときも、全著作を読み込み、おべっかでもない、批判でもない、相手が刺激を受けるような内容の手紙を書く。その鍛錬もまた、見城さんの並外れた日本語力の源泉なのだろう。

普段はやらないのだが、久しぶりに、赤線を引きながら読んだ。時間をおいて、再読しようと思う。

・魅力ある人間は自己顕示と自己嫌悪が双子のようにつながっている。その二つを揺れ動くからこそ、人としての幅が生まれる。心が運動すると、そこに風が起こり熱が発生する。それがその人のオーラ。

・人は自分のスケールでしか物事をはかることができない。人が足元にも及ばないほどのすさまじい努力が、僕のいう「努力」。人が寝ているときに寝ないこと。人が休んでいるときに休まないこと。どこから手を付ければいいのかわからない膨大なものに手を付け、最後までやり通すこと。

・努力は基本的に自分を痛める。だからこそ相手の心を打つ。自分を傷めないで、誰が僕に心を動かしてくれるだろうか。

・泣きごとも恨みごとも心の奥深くしまいこんで、すべてをわが身に引き受けると、闘争心が、めらめらと燃え上がる。

・僕にとって大事なものは、物事が成功したときに「俺はまだ闘える」と思えること。

・男子たるものは、一度闘って負けても、やめてはならない。二度目三度目の戦いの後でも、やめてはならない。刀折れ、矢尽きてもやめてはならない。骨が砕け、最後の血の一滴まで流して、初めてやめるのだ。 [新島襄(にいじま じょう・同志社大学創立者)]

・この人と付き合ったら刺激を受ける、新しいステージに行ける、面白い仕事ができると、相手に思わせなければならない。

・貸しが100になった時、僕はその人に、ようやく1つ「お願い」をする。それは僕にとってはビッグ・ビジネスを実現させるために譲れない「お願い」である。

http://www.amazon.co.jp/dp/4062170027?tag=x03c-22