IISログ解析


MS Log Parserにて特定のログをDBMSに格納したりできる

例えば以下のような使用方法 (ArcGIS for ServerのRESTタイルアクセスを記録 )


IISログはW3Cである必要あり

LogParser.exe
"SELECT
  TO_TIMESTAMP(date, time) AS dateTime,
  c-ip,
  time-taken,
  cs-uri-stem 
FROM
 C\:inetpub\logs\LogFiles\W3SVC\xxxxx.log
TO
 IISLogsLP 
WHERE
 cs-uri-stem LIKE '/ArcGIS/rest/services/%/MapServer/tile%'"
-o:SQL
-oConnString: "Driver={SQL Server Native Client 10.0}; Server=localhost; Database=IISLogsLP;Trusted_Connection=yes;" 
-ignoreMinwarns:OFF
-createTable:ON
-maxStrFieldLen:8000

画像出力時は、
/ArcGIS/rest/services/%/MapServer/export
cs-uri-queryをカラムに加えたり

必要なDB周りの設定


CREATE DATABASE IISLogsLP
 ON 
 (
  NAME = IISLogsLP_dat,
  FILENAME = 'D:SQLDBIISLogsLP_dat.mdf',
  SIZE = 10,
  FILEGROWTH = 5%
 )
 LOG ON
 (
  NAME = 'IISLogsLP_log',
  FILENAME = 'D:SQLDBIISLogsLP_dat.ldf',
  SIZE = 10MB,
  FILEGROWTH = 5% 
  )
GO

集計のQuery例@SQL Server

SELECT 
  datepart(hh ,tab.dateTime) AS H, 
  COUNT(tab.timeTaken) AS CountNum,
  SUM(tab.timeTaken) AS TIME_SUN
FROM 
    IISLogsLP.dbo.IISLogsLP tab
WHERE 
    dateTime BETWEEN '2013-05-01 00:00:00' AND '2013-05-01 23:59:59'
GROUP BY 
 datepart(hh ,tab.dateTime)
カテゴリー: 運用 タグ: , パーマリンク