0 && $edn < $lmax ) ? $edn: $lmax; $fmt = '%0'.strlen($edn).'d: '; for (; $stn<=$edn; $stn++ ) { $tstr = htmlspecialchars(mb_convert_encoding($lines[$stn-1],SOURCE_ENCODING,"auto")); $res .= ( $args[2] ? sprintf($fmt,$stn):'').refpre_replace_tab($tstr); } return '
'.$res.'
'; } ?> Linux:サーバのログの情報を収集してSQLITEに投入 のバックアップ(No.2) - HiiHahWIKI - making some notes for... -
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:サーバのログの情報を収集してSQLITEに投入 のバックアップ(No.2)


Linux:サーバのログの情報を収集してSQLITEに投入

サーバが一桁台であれば、目で見てまとめることもできますが、3桁台となるとそうもいかないです。

実際そういう状況に遭遇しているため、シェルをいろいろ作って、最終的にSQLITEに投入して情報をいろいろ見れるようにしました。

せっかくなのでそのまま残します。

01_findlogs.sh
「target.txt」に記載されるサーバにsshでfindコマンドを実行し、結果ファイルを出力します。
02_seikei.sh
01_findlogs.shの出力ファイルを入力として、DBに投入するようにsed、awkを使って整形します。
このシェルの中のsedで、あとからDBでグルーピングしやすいようにどのログかを分かるようにデータを整形してます。
03_CreateTable?.sh
ddl.sqlを実行してsqliteにテーブル、インデックスを作成します。
ddl.sql
03_CreateTable?.shから実行されるDDL文が入ってます。
04_to_sqlite.sh
02_seikei.shの出力ファイルを入力として、03で作ったテーブルにデータを投入します。

各スクリプトの中身

こんな感じです。

なお、01、02、04のスクリプトからは、共通のファイル「target.txt」が入力となります。

■&ref(): File not found: "target.txt" at page "Linux:サーバのログの情報を収集してSQLITEに投入";(IPアドレスもしくはホスト名を1行1レコードで記述)

192.168.1.100
localhost

file01_findlogs.sh

#refpre(01_findlogs.sh,,1);

file02_seikei.sh

#refpre(02_seikei.sh,,1);

file03_CreateTable.sh

#refpre(03_CreateTable?.sh,,1);

fileddl.sql(03で実行されるDDL)

#refpre(ddl.sql,,1);

file04_to_sqlite.sh

#refpre(04_to_sqlite.sh,,1);

データをSQLITEに投入したら、もう好きなように調理してー