Sysmon-0.1.2: src/Sample.hs
import Data.ConfigFile
import Data.Time
import Database.Sybase.Sysmon.Log
import Database.Sybase.Sysmon.SysmonLog (parseSysmon)
import Database.Sybase.Sysmon.SysmonTypes
import Data.Either.Utils (forceEither)
import Control.Monad (when)
import System.IO
import System.Locale (defaultTimeLocale)
-- | Simple application to parse the sysmon report files,
-- to execute simple queries against parsed data, to generate the
-- the hints potentially to consider. See defConfig in SysmonHints
-- module for the default hints configuration. ConfigFile package api
-- is used to change one of the threshold confifuration parameters
--
main = do
tree <- parseSysmon "../data/sysmon_*.out"
when (hasInterval logRequest tree) $ do
print $ "Time interval: " ++ show (timeInterval tree)
print $ "Transactions: " ++ show (numTrans tree)
print $ fmtHints $ hints Nothing hintsCfg tree
where
timeInterval = sysmonTime . average logRequest
numTrans = sum . map (commited . transaction) . list logRequest
hintsCfg = forceEither $ do
let cp = emptyCP
cp <- set cp "DEFAULT" "hiContextSwitchDue" "30.0"
return cp
-- | Request time interval to query
logRequest :: LogRequest
logRequest = Just $ mkInterval start end where
start = readTime defaultTimeLocale timeFormat "Jan 27, 2010 10:00:00"
end = readTime defaultTimeLocale timeFormat "Jan 27, 2010 18:00:00"
timeFormat = "%b %d, %Y %H:%M:%S"