Linux:サーバのログの情報を収集してSQLITEに投入 の変更点
Top / Linux:サーバのログの情報を収集してSQLITEに投入
- 追加された行はこの色です。
- 削除された行はこの色です。
- Linux:サーバのログの情報を収集してSQLITEに投入 へ行く。
- Linux:サーバのログの情報を収集してSQLITEに投入 の差分を削除
*Linux:サーバのログの情報を収集してSQLITEに投入 [#fb3d29c3] サーバが一桁台であれば、目で見てまとめることもできますが、3桁台となるとそうもいかないです。 実際そういう状況に遭遇しているため、シェルをいろいろ作って、最終的にSQLITEに投入して情報をいろいろ見れるようにしました。 せっかくなのでそのまま残します。 :01_findlogs.sh|「target.txt」に記載されるサーバにsshでfindコマンドを実行し、結果ファイルを出力します。 :02_seikei.sh|01_findlogs.shの出力ファイルを入力として、DBに投入するようにsed、awkを使って整形します。&br;このシェルの中のsedで、あとからDBでグルーピングしやすいようにどのログかを分かるようにデータを整形してます。 :03_CreateTable.sh|ddl.sqlを実行してsqliteにテーブル、インデックスを作成します。 :ddl.sql|03_CreateTable.shから実行されるDDL文が入ってます。 :04_to_sqlite.sh|02_seikei.shの出力ファイルを入力として、03で作ったテーブルにデータを投入します。 ***各スクリプトの中身 [#j31de0eb] こんな感じです。 なお、01、02、04のスクリプトからは、共通のファイル「target.txt」が入力となります。 ■target.txt(IPアドレスもしくはホスト名を1行1レコードで記述) 192.168.1.100 localhost ■&ref(01_findlogs.sh); #refpre(01_findlogs.sh,,1); ■&ref(02_seikei.sh); #refpre(02_seikei.sh,,1); ■&ref(03_CreateTable.sh); #refpre(03_CreateTable.sh,,1); ■&ref(ddl.sql);(03で実行されるDDL) #refpre(ddl.sql,,1); ■&ref(04_to_sqlite.sh); #refpre(04_to_sqlite.sh,,1); データをSQLITEに投入したら、もう好きなように調理してー ***投入したデータの取り出しサンプル [#b9ce9815] ちなみに、こんな感じのSQLで、各サーバ毎のログの状況が確認できます。 // サーバ一覧を保持するテーブルを作成 CREATE TABLE server ( servername text ); // テーブルにレコードをインサート insert into server(servername) select server from logcheck group by server; // 種別に前方一致するレコードを外部結合して表示する select A.servername, B.filename, B.count_server, B.avg_filesize, B.max_filesize, B.max_date, B.min_date from server A left join ( select server , filename , count(server) 'count_server', avg(filesize) 'avg_filesize', max(filesize) 'max_filesize', max(date) 'max_date', min(date) 'min_date' from logcheck where filename like '/var/log/httpd/access_log%' group by server ) B on A.servername = B.server; 出力はこんな感じ。 servername|filename|count_server|avg_filesize|max_filesize|max_date|min_date servername|filename|count_server|avg_filesize|max_filesize|max_date|min_date server01|/var/log/httpd/access_log.4|88|8215450.44318182|158792484|201201175617|201110011010 server02|||||| server03|||||| server04|||||| server05|/var/log/httpd/access_log.4|88|8131064.11363637|158887060|201201175617|201110040013 server06|/var/log/httpd/access_log.4|88|8235275.89772728|159015231|201201175617|201110040012 server07|/var/log/httpd/access_log.4|88|8234481.61363637|159024446|201201175617|201110044510 *** 参考サイト [#b25e5054] -http://www.dbonline.jp/sqlite/