ローカルサーバを整理して、それまでメインPCで行っていた自動処理をほぼすべてそちらで行えるように構築しなおしました。
メイン機で行っていた主な自動化処理は、管理下のWikiのログをDLしSubversionで世代管理をしつつNamazuインデックスを作成し、作成したインデックスをサーバにUPするというものでした。同時に、Namazu検索ログから人気の検索語(例)も作成しています。これらは、Webサーバ側でできればこんなローカルの方でごそごそやる必要はありません。ですが、使用しているWebサーバは共用であり、そんな中で負荷をかけるのは良くないことです。現実的にも、サーバ側では制限に抵触する為実行できなかったりします(時間切れやメモリオーバー)。
実際に導入したアプリケーションは次の通りです。
Subversion (ログの世代管理)
Namazu(Namazuインデックス作成)
ViewVC (Subversionのリポジトリをブラウザから閲覧)
lftp (スクリプトによる自動処理が便利なftpクライアント)
analog (アクセスログの解析)
php (各種自動処理用のScript処理)
主な所はこんなところですが、付随するものも色々導入しています(ViewVCに必要なpythonとか)。
ローカルサーバ機はDebian lennyで動いていますが、これらのプログラムは全てパッケージが存在しており、aptitudeで導入できました。便利になったものです。特にViewVC周りは日本語ドキュメントも少なく、苦労すると思っていたのですが、viewvc.confにリポジトリを登録するあたりくらいでした(root_parentsで全てのリポジトリをお手軽に登録しようとしましたが、上手く行かなかったのでsvn_rootsで全て列記する形にした)。apache2の設定もいじる必要があるのかなと思いきや、既に
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
と書かれている上に、ViewVC導入時に /usr/lib/cgi-bin/viewvc.cgi という風にインストールされているため、http://example.com/cgi-bin/viewvc.cgi とアクセスするだけでViewVCを利用できました。簡単びっくりです。
むしろ、自動化の為の調整が面倒でした。たとえば、lftpでログをDLしてくるScriptを書き直したり、Analogの解析用のConfigファイルを書き直したり、Namazuのインデックス作成用の設定を書き直したり…書き直しばかりですね。ああ、書き直し以外もあります。ログファイルや解析対象ファイルのディレクトリ構成を見通しの良い形に直すとかいうこともやりました。もっとめんどくさかったですが。いくら技術が進んでもそこまでは労力低減は…難しいでしょうね。
ローカルサーバ機に自動処理をまわしたので、メイン機を好きな時に落とせるようになりました。そんなにハイスペックでは無い(Athlon 64 X2 5600+ (Windsor), GeForce 8800GT VRAM 1GB)ので電力消費はやばいほどではないでしょうが、それでも400W位にはなる(電源容量 皮算用 計算機。)ようですので常時付けっぱなしよりは遥かに省エネを期待できそうです(D945GCLF2機は30-60W位という先人の報告有)。
ローカルサーバ機への遠隔操作はPoderosaとWinSCPで行っています。後者だけで出来れば楽なのですが、SSHでのログインでrootは禁止しているのでサーバ上のファイルで操作できないものが出てきたりするのです。そういうのをPoderosaでちょいちょい、とやっています。
そしてお恥ずかしながらのミスを自分のためにメモ。analog解析を各サイト毎に設定ファイルを修正し実際にコマンドが上手く行くか実行して試して上手く行ったので、それをシェルスクリプトに記述しcronで実行させて置きました。帰宅後、ローカルサーバを覗いてみたら………接続できぬ!なんとサーバが無反応に陥っていました。しょうがないので、困った時の究極奥義、電源ボタンからリブートに頼らざるを得ませんでした。
何が原因だったと思います?シェルスクリプトに書いたコマンド各行は全て問題はありませんでした。シェルスクリプト自体を端末から実行させても問題が有りませんでした。ではなぜ?…原因は手抜きにWebminでcron登録を行ったことでした。いえ、Webminが悪いのではありません、私の注意不足なのですが。
実は、Webminではcronジョブを簡単に設定できます。ところがどっこい、この設定画面で『何時に実行するか』しか設定してなかったのです。つまり、他はデフォルト。つまり、『毎日午前5時の毎分に実行する』という状況になっていたわけなのです。ご想像下さい。まず5時にAnalog解析起動…1分経ちました、5時1分にまた別のAnalog解析起動…これが60回続く事になっていたのです。これはサーバがいかれて当たり前です。あ、ちなみに解析対象のログは1.7GBもあります、gzip圧縮をかけた状態で(複数サイト&数年分)。
Muninのログも途中までは残っていました。ログ途絶はcronジョブ開始より約40分後。最終時点でのLoad averageは55でした。DualCore&Hyper-Threading搭載とはいえこれはとんでもない値でしょう。CPUは低電力消費(位が売りの)Atomなのですから。
メモリ自体もRAMを2GB積んでいるにも拘らずswapに派手に溢れ出していました。いやー酷い事をしました、御免なさい、ローカルサーバさん。
教訓。
楽に出来るからといって全てが楽になる訳ではない。人の労力と注意力は必ず必要である。