人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

windowsXPのパフォーマンスモニタで15秒単位で取得したCPU,メモリのcsvログが1ヶ月分あります。そのログを1ヶ月単位、日単位、時間単位、分単位に集計してグラフを作成します。現状では、csvログは11:51:00.953と秒数以下もあり、そのままグラフにすると、単位がよくわからず、一度Accessに取り込んでから、left(jikan,8)で分単位に集計して、CPUの使用率の平均をSQLで出力し、再度Excelに張りなおして、グラフを作成しています。
この集計作業を自動化したいので、VBSで組んでもらえないでしょうか。概要は、別エクセルを作成し、日単位、時間単位、分単位のシートを作成し、それぞれのシートに結果を書いてください。よろしくお願いします。

●質問者: kuruma_neko
●カテゴリ:コンピュータ
✍キーワード:00 access CPU CSV Excel
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20

Log Parser」を利用するというのはいかがでしょう?

Log Parser」は、Microsoft が提供している強力な多目的ツールです。

これを利用すると、様々な形式のログファイルを SQL 構文を利用して集計、抽出などの加工を行うことが可能です。

EXE 版(単体実行可能なバージョン)と、DLL 版(COM コンポーネントとして利用可能なバージョン)があります。

「パフォーマンスモニタ」のログファイルにも対応しています。

(詳しい使用方法はインストール先のフォルダの LogParser.chm をご覧ください。)


■ スクリプト センター : Log Parser

http://www.microsoft.com/japan/technet/scriptcenter/tools/logpar...

■ ダウンロードの詳細 : Log Parser 2.2 日本語版

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06...


以下、サンプルコードです(動作確認:Windows 2000 SP4 + Log Parser 2.2)

' File Name : MakeSummaryReport.csv
' Usage : CScript MakeSummaryReport.csv //Nologo
Option Explicit
 
Const g_strDir = "C:\PerfLogs" ' 作業フォルダ(ログファイルのある場所)
Const g_strPerfLog = "CPU_000001.csv" ' ログファイル名(パフォーマンスモニタ)
Const g_strExcelFile = "CPU_Report.xls" ' 集計ファイル
 
Call Main()
 
Sub Main()
 Call MakeSummaryCsv() ' 日、時間、分ごとに集計結果を CSV 出力
 Call ConvertCsvToXls() ' CSV ファイルを Excel ファイルに統合
End Sub
 
' Log Parser の集計機能を利用して集計結果を CSV ファイルに出力する
Sub MakeSummaryCsv()
 Dim oCSVInputFormat
 Set oCSVInputFormat = CreateObject("MSUtil.LogQuery.CSVInputFormat")
 oCSVInputFormat.iTsFormat = "MM/dd/yyyy hh:mm:ss.ll" ' パフォーマンスモニタの時間書式
 oCSVInputFormat.nSkipLines = 1 ' ヘッダ行は読み飛ばす(ユーザー環境に依存するため。マシン名など)
 oCSVInputFormat.headerRow = False
 
 Dim oCSVOutputFormat
 Set oCSVOutputFormat = CreateObject("MSUtil.LogQuery.CSVOutputFormat")
 oCSVOutputFormat.oTsFormat = "yyyy/MM/dd hh:mm:ss"
 
 Dim oLogQuery
 Set oLogQuery = CreateObject("MSUtil.LogQuery")
 oLogQuery.ExecuteBatch GetSummaryQuery( "Day", 86400, "Day.csv" ), oCSVInputFormat, oCSVOutputFormat
 oLogQuery.ExecuteBatch GetSummaryQuery( "Hour", 3600, "Hour.csv" ), oCSVInputFormat, oCSVOutputFormat
 oLogQuery.ExecuteBatch GetSummaryQuery( "Minute", 60, "Minute.csv" ), oCSVInputFormat, oCSVOutputFormat
 
 Set oLogQuery = Nothing
 Set oCSVOutputFormat = Nothing
 Set oCSVInputFormat = Nothing
End Sub
 
Function GetSummaryQuery( ByVal strFieldName, ByVal nSec, ByVal strTableName ) 
 Dim strResult
 strResult = "SELECT" & _
 " QUANTIZE(Field1, " & CLng(nSec) & " ) AS " & strFieldName & "," & _
 " AVG(Field2) AS CPU(Average) " & _
 " INTO " & strTableName & _
 " FROM " & g_strPerfLog & _
 " GROUP BY " & strFieldName
 WScript.Echo strResult
 GetSummaryQuery = strResult
End Function
 
' ADO を使用して CSV ファイルを Excel ファイルのシートに書き込む
Sub ConvertCsvToXls()
 Dim cn
 Set cn = CreateObject("ADODB.Connection")
 Dim strCon
 strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & g_strExcelFile & ";Extended Properties=Excel 8.0"
 cn.Open strCon
 cn.Execute GetConvertQuery( "[Day]", "Day.csv" )
 cn.Execute GetConvertQuery( "[Hour]", "Hour.csv" )
 cn.Execute GetConvertQuery( "[Minute]", "Minute.csv" )
 cn.Close
 Set cn = Nothing
End Sub
 
Function GetConvertQuery( ByVal strNewTableName, ByVal strOldTableName )
 Dim strResult
 strResult = "SELECT * INTO " & strNewTableName & _
 " FROM [Text;DATABASE=" & g_strDir & ";HDR=YES;]." & strOldTableName
 WScript.Echo strResult
 GetConvertQuery = strResult
End Function

以下は「Log Parser」関連情報です。


<関連情報>

■ Tales from the Script: 2005 年 1 月 - ログこそすべて (Log Parser について)

http://www.microsoft.com/japan/technet/community/columns/scripts...

■ Professor Windows ‐ 2005 年 5 月 ‐ Log Parser 2.2 の動作方法

http://www.microsoft.com/japan/technet/community/columns/profwin...

■ Log Parser 2.2 日本語版の半分はコミュニティへの熱意でできています。

http://www.exconn.net/Blogs/team00/archive/2005/05/13/428.aspx

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ