ねこすけのWebスキル
トップ > 2003年12月

2003年12月

サーバーダウン

サーバーがダウンした。
ログを見ると
kernel: Out of Memory: Killed process 2789 (libhttpd.ep).
というメッセージがあり、その後不安定になっている。
メモリ不足らしい。
元々テスト用の自宅サーバなので、Xまでインストールしている。
リモートアクセスができなくなったので、実際にサーバーの画面でログインするといきなり再起動。
ログを見ると
gdm[3641]: gdm_slave_xioerror_handler: X の致命的エラー - :0を再起動します

ただし、前回の再起動から本体でのログインまでの間のログがない。
その間12時間。完全にハングアップしていたらしい。
単純にメモり不足なのか?
あまりメモリがあったのでとりあえず増設して様子見。

更新日:2003年12月14日16:25

expect

データのバックアップを効率的に行うのに何が最適化模索中。
rsyncで別サーバーに移すのが簡単で効率的だが、自動化するのにパスワードの入力を求められ、滞っていた。
先月のLinuxWorld(2003.12)にexpectというスクリプトがあり、試そうと思ったが、rpmでインストールしようとしても

エラー: 依存性の欠如:
libtk.so.0 は expect-5.32.2-67 に必要とされています
libX11.so.6 は expect-5.32.2-67 に必要とされています

と表示され、必要パッケージを追うのが面倒でそのままにしていた。
今回調べて見るとlaser5のページが非常にわかりやすくパッケージを追うのに適していた。
結局下記のURLから必要パッケージをダウンロードしてきて

http://l5web.laser5.co.jp/rpm2html/7.2exp/tcl-8.3.3-65.i386.html
http://l5web.laser5.co.jp/rpm2html/7.2exp/tk-8.3.3-65.i386.html
http://l5web.laser5.co.jp/rpm2html/7.2exp/XFree86-libs-4.1.0-3.i386.html

下記の順番にインストールを実行

rpm -ivh XFree86-libs-4.1.0-3.i386.rpm
rpm -ivh tcl-8.3.3-65.i386.rpm
rpm -ivh tk-8.3.3-65.i386.rpm
rpm -ivh expect-5.32.2-67.i386.rpm

無事expectが使えるようになった。
昔の通信ソフトのマクロを思わせる書き方。
以前IT企業のデータ通信関連セクションで、いろいろなサービスを監視していて、ログから抽出できないようなものに対し、通信ソフトのマクロ機能で監視を行っていたのを思い出した。

エラーが発生するとMML(MusicMacroLanguage?)でかかれた音楽がなって、その音楽により対応が変わっていた。なぜか「暴れん坊将軍のテーマ曲」が異常終了のアラームだったな。

更新日:2003年12月09日23:10

クロールを記録する

SEOを行う上で必要なことの一つにロボットがいつクロールして、その結果がいつ反映されるかとう地味な作業がある。意外と面倒なため、実際にこれを行わず、他者の状況を聞いていつ頃効果が出るはずだと想定することも多い様だが、本当は対象サイトを調べた方がいい。

手作業で行うと
 ログを開く
 クローラのログだけ抽出
 どのページがクロールされたか記録
 ファイルに記録し、履歴として蓄積

毎日これを繰り返し時々
 トップページのクロール数は月に何件
 第一階層ページのクロールは月に何件
 新規ページをつくった場合のクロールは何日後

などを把握する。

面倒ですね。
作ってみようと思います。

複数サイトを運営しているのでそれにも対応し、かつ、将来的にFTPで他のサーバーのログをGetできるようにすることも考え、プログラムはいくつかに分割します。DBとの連携部分はPHPで行います。

こんな感じですかね。

シェル生成
DBからログファイルの場所を取得

シェル実行
抽出プログラム名 日付 ファイル名 ユーザー名 

抽出プログラム
引数から日付 ファイル名 ユーザー名 ロボット名をもらう
クロールロボットの設定ファイルから情報を読み取る
ファイルを開き、対象日の対象対象ロボットのクロール跡を発見
日付、時間、ユーザー名、ロボット名、対象URL DBに書き込む IPアドレスを書き込む

表示プログラム1 ユーザー把握(デイリー)
引数から ユーザー名 日付をもらう
DBから対象ユーザーのその月のロボット別クロール状況表示
DBから対象日の閲覧ページのログを表示

表示プログラム2 全体把握(デイリー)
引数から月をもらう
DBからユーザー別対象月のログをカウントする
表示する

表示プログラム3 特定URLのクロール記録(スポット)
引数でURLのをもらう
DBからそのURLのロボット別クロールの最近の10件を表示

表示プログラムの定期的に実行し、メールで読めるようにする。
これで常に監視できるし、過去の履歴も簡単に追えますね。
プログラムも難しいところはなさそう。
さあ作ってみよう。

更新日:2003年12月07日09:45

インポート

とある仕事の案件で、まぐまぐにあるメールをMTへインポートする作業を行った。
まぐまぐのバックアップからwgetでファイルをダウンロードし、
PHPでMovableTypeのファイルに一括変換。
本文の中にあるタイトルや日付などをそのままエントリーの情報として使う。
決まったフォーマットであればこのような手段が有効だと認識。
ちなみに本来はPHPではなく、Perlで行うべきかな。
なんとなくWeb化しやすいようにと思い、PHPで作成。

更新日:2003年12月03日08:00

テンプレート分解

MovableTypeのトップページのテンプレートを分解してみた。
変数とスタイルシートのClassやIDを確認した。
複雑に思えたスタイルの適用も思ったよりシンプルであった。
変数については何に使っているのか不明なものがいくつかあった。

更新日:2003年12月01日07:55

netcat

LinuxWorld1月号の記事でサーバー監視シェルが紹介されていた。
その中で使われてたコマンドにncというコマンドを使っていた。
netcatというコマンドで、telnetの代わりにコマンドラインでTCPたUDPの通信を可能とするものだった。
標準パッケージのRPMの中にある様なので早速インストール。
サンプルスクリプトを実行したところ問題なく使えた。
何かと使えそうなコマンドである。

更新日:2003年12月01日07:51