前日に、Perl のモジュールの依存関係を修復して1日様子を見たが、MRTGで監視している項目全てが正常な動作をしており、エラーも発生していない事から、どうにか問題は解決したと判断できそうだ。
また7月21日に、メインサーバーのCPUをCeleronから、500円で購入した Pentium 4 (630) に交換してから10日間経過したが、連日の暑さの中でも連続運用していても、ストレス無く運用継続しており、高負荷運転でも、一度もダウンしなかった。
Junk品のCPUでも、性能UPを実感でき、満足している。
OSアップデートの後遺症
7月にメインサーバーのOSをアップデートしてから、MRTG関連に次々と不具合が発生。
OSアップデートとともに、Perl を 5.8.8 から 5.14.2 にアップデートした。
それが原因で、Perl のスクリプトを使った自作ツールが動かなくなっていた。
Perl のアップデートの方法が悪かったような・・・
対策として、pkgdb -F で、Perl 5.8.8 に依存しているモジュールを探し出し、Perl 5.14.2 のモジュールへ依存関係を修正。
これで問題は修正できたと思うが・・・
MRTGでpopアスセス数と受信通数の表示(その3)
MRTGでpopアスセス数と受信通数の表示(その2)
前回、我が家のメインサーバーにあるメールサーバーに対して、メーラーでどの程度アクセスし、何通のメールを受信しているかをMRTGで表示させるツールを作ろうとおもったが、汎用的なツールを作るには、かなり労力が要りそうなので、前提条件を絞った本当にローカルなツールを作ってみた。
まず前提条件として、メーラーの設定で、サーバーにはメールを残さないよう設定すること。
こうすることで、
Jul 29 20:51:32 royalblue popper[28072]: Stats: user 1 26182 47 531608
の様に出力されるqpopperのログの中の、「user」の後に続く、削除した通数をカウントすることで、受信した通数に置き換えることができる(と思う)。
そうすることで、以下の様なperlスクリプトでアクセス数と受信通数とを取得できる。
$access = 0; $receive= 0; open(FILE,"/var/log/POP.log"); while () { if(/Stats/){ $access++; @w1 = split(':',$_); @w2 = split(' ',$w1[4]); $receive += $w2[1]; } } close(FILE);
qpopperのログを順次読み込み、ステータスが「Stats」の行なら正常にアクセスできたログだと判断し、「:」で行を分解。
必要なのは、ユーザ名から始まる文字列の2つ目の数字なので、「:」で区切った5番目の文字列を、更に空白で分割し、2番目の文字列、すなわち、削除した通数を取り出すことにした。
結果として、$accessにはメーラーがメールを取りに行った回数が、$receiveには読み取ったメール通数得られた事になる。
このロジックを使って、実際にMRTGで表示可能なスクリプトの作成を行ってみる。
結果は後日・・・・
MRTGでpopアスセス数と受信通数の表示
先日来からメインサーバーのMRTGの修正等を行ってきたが、このメインサーバーのMRTGでは、
(1)ロードアベレージ
(2)メモリ使用量
(3)ディスク消費量
(4)ネットワークトラフィック
(5)STMP送受信数
(6)POPアクセス数
(1)から(4)については、雑誌等を参考にして自宅サーバー用にローカライズして作ったものを運用してきた。
(5)と(6)は、昔、某ISPに出稼ぎに行かされていた時に、そのISPで使っていたスクリプトを借用して自宅用に改造したものを運用している。
POPのアクセス数だが、数千のユーザがアクセスするISPでは、正常にアクセスできているか、エラー発生状況はどうか。と言った状況把握のためのツールのため、自分しかアクセスしないサーバーでは、あまり意味が無い。
今になって、ふとそんな事に気がつき、最近、広告メールも多くなってきたことだし、普段、何通ほどのメールを取り込んでいるかを表示できないか、考えて巻いた。
qpopperが出力するログ
Jul 27 22:31:32 royalblue popper[28072]: Stats: user 1 26182 47 531608
ログの内容は、アクセス日時、サーバ名、プロセス、ステータス、ユーザー名、削除したメッセージ数、削除したバイト数、サーバに残っているメッセージ数、サーバーに残っているバイト数が記録されている。
現在は、ステータスの内容、Stats or ERRの回数を表示させているが、これを Statsの回数をアクセス数、削除通数を受信通数としてカウントし、改造すればいいと思う・・・
Perlスクリプトでプログラミングしてあるのでそれ程難しくはないと思うが、しばらくプログラミングしていないので、土日にでも改造してみよう。