トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:サーバのログの情報を収集してSQLITEに投入 のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*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
 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/