グラフ作成を行いやすくするために、pButtonsデータをcsvファイルに抽出するには
まずはこの記事で手短にこの疑問に回答します。 この連載のパート2には、pButtonsから抽出されたパフォーマンスデータのグラフを含めました。 pButtonsの.htmlファイルからmgstat
などのメトリックを抽出してExcelで簡単にグラフ作成する方法として、カット&ペーストよりも素早く行える方法がないか、オフラインで尋ねられました。
pButtonsは、収集したデータをWRCに送信して確認しやすくするために、そのデータを1つのhtmlファイルにコンパイルするのですが、 特に24時間などの長い収集時間で実行されるpButtonsの場合は、mgstat、vmstatなどの時間ベースのデータをグラフィック表示にして確認できれば、トレンドやパターンが見やすくなります。
pButtons データをhtmlファイルにロールアップしてから解凍するのに時間を掛けるのはばかげているように聞こえるかもしれませんが、pButtonsはパフォーマンスの問題をトラブルシューティングするためにWRCが多数のシステムメトリックのビューを取得するためのツールであることを忘れてはいけません。 システムレベルのメトリックとCachéメトリックは個別に実行できますが、この連続作業ではpButtonsを使用してパフォーマンスメトリックを1つのファイルにキャプチャして分析するのが便利です。すべてのCachéインストールにそのファイルのコピーが存在するかコピーをダウンロードできるため、すべての基本メトリックをさまざまなオペレーティングシステムで使用することができます。 また、ほかの方法でデータを収集しているのでなければ、これらのメトリックを1つの単純なルーチンで毎日キャプチャできるようにすると便利です。
_2017年2月。 この記事のスクリプトをPythonで書き直し、インタラクティブhtmlを含むグラフを追加しました。_Pythonユーティリティの方がはるかに役立つと思います。 「Yape - もう1つのpButtonsエクストラクタ(チャートを自動作成)」を参考にしてください。
pButtonsパフォーマンスメトリックをcsvファイルに抽出する
私はAppleのノートパソコンを使用しており、つまりはUnixオペレーティングシステムを実行しているため、csvファイルへのデータの抽出には当然ながら簡単なシェルスクリプトを使用します。 次のスクリプトは、pButtonsの.htmlファイルからmgstat、vmstat、またはWindows Performance Monitorデータを抽出します。 以下の例ではほとんどの*nixシステムにインストールされているPerlを使用していますが、Windowsではほかのスクリプト言語やPowershellを使用する可能性は無限にあります。
あなたが普段使用しているツールで抽出するために必要となるすべての情報を得られるように、私がどのように抽出しているのかを説明します。 htmlファイルにメトリックを区切るためのマーカーが使われていることが重要です。 たとえば、mgstat次のように囲まれています。
<!-- beg_mgstat -->
および
<!-- end_mgstat -->
mgstatセクションには、他にもいくつかの記述子情報があり、その後にmgstat出力の見出し行が続きます。 vmstatとwin_perfmonにも同様のマーカーがあります。
この単純なスクリプトは、開始マーカーを見つけてから、ヘッダー行から終了マーカーの前の行までのすべてを出力します。
#!/usr/bin/perl
# extract_pButtons.pl - Simple extractor for pButtons
# usage: ./extract_pButtons.pl <input pButtons> <search start> <search first line output>
# pButtons has the following markers in the html source
# Metrics Parameters to pass
# -------- -------------------
# mgstat mgstat Date
# windows performance monitor win_perfmon Time
# vmstat vmstat fre
# usage example - Search for mgstat and redirect to .csv file
# ./extract_pButtons.pl DB1_20160211_0001_24Hour_5Sec.html mgstat Date > myMgstatOutput.csv
# usage example - Process a set of html files
# for i in $(ls *.html); do ./extract_pButtons.pl ${i} vmstat fre > ${i}.vmstat.csv ; done
# usage example - Pipeline to add commas
# ./extract_pButtons.pl P570A_CACHE_20150418_0030_day.html vmstat fre | ./make_csv.pl >P570A_CACHE_20150418_0030_day.html.vmstat.csv
$filename=$ARGV[0];
$string=$ARGV[1];
$firstLine=$ARGV[2];
$searchBeg="beg_".$string;
$search2=$firstLine;
$foundEnd="end_".$string;
$foundString=0;
$printIt=0;
$break=0;
open HTMLFILEIN, "<".$filename or die "Bad input file";
while (<HTMLFILEIN>) {
if (/$searchBeg/) {
$foundString=1;
}
# Look for first actual line - use something on header line
if (($foundString==1) && (/$search2/)) {
$printIt=1;
}
# No more data
if (/$foundEnd/) {
$break=1;
}
if ($break==0) {
if ($printIt==1) {
print;
}
}
}
close HTMLFILEIN;
スクリプトの先頭にある#コメントに示される通り、extract_pButtons.plは、データを画面に出力するか、出力をcsvファイルにリダイレクトするか、グラフ作成ユーティリティなど、長いワークフローのパイプラインで使用することができます。 私はオープンソースのgnuplotを使用していますが、Excelでも構いません。
スペース区切りのテキストファイルにカンマを追加する
次の短いPerlスクリプトは、vmstatまたはその他のテキストファイルの出力を処理しやすくするために、カンマ区切りファイルに変換するのに役立ちます。
#!/usr/bin/perl
# Convert space delimited text file to csv
# Usage example 1:
# Will create backup file vmstat.csv.bak and original file called vmstat.csv will be updated
# ./make_csv.pl freecnt.csv
# Usage example 2:
# No backup, original vmstat.txt file stays same, new output csv file
# ./make_csv.pl < vmstat.txt >freecnt.csv
use strict;
# create .bak backup file for each change
$^I = ".bak";
while (<>) {
# remove leading blanks; substitute 1 or more blanks for a single comma
s/^ +//;s/ +/,/g;
print;
}
最後に
pButtonsファイルの.htmlソースを調べて、何が含まれているのかを理解することをお勧めします。 含まれているのはシステムメトリックだけではありません。 たとえば.htmlファイルの上部には、pButtonsが実行するコマンドのリストとバージョン情報が記載されています。
データの抽出やグラフ作成にWindowsスクリプトを使用しているか、より優れた、または異なるワークフローを使用している場合は、開発者コミュニティに投稿してシェアすることをお勧めします。