質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.69%

Windowsサーバのパフォーマンスカウンタのネットワークの値がとれない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 792

oftn

score 10

Windowsサーバの性能評価のため、バッチでパフォーマンスカウンタを取得しようとしています。
ディスクI/O、CPU、メモリ、ネットワークの情報を取得しようとしているのですが、
バッチを実行するとネットワークの情報が取得できていません。

どなたか、お力を貸していただけないでしょうか。


出力されたネットワークのファイルの内容

終了しています。お待ちください...                                      
エラー: 有効なカウンターがありません。


set ng_count=0
set loop_count=0
set bef=^\s*[0-9]*[0-9]\.[0-9]
rem ディスクIO情報取得フラグ
set getflg1=0
rem CPU性能情報取得フラグ
set getflg2=0
rem Memory性能情報取得フラグ
set getflg3=0
rem ネットワーク性能情報取得フラグ
set getflg4=0

echo ----------------------------------------------
echo  取得したい性能情報を指定して下さい。         
echo                                               
echo  01.ディスクIO情報                            
echo  02.CPU性能情報                               
echo  03.Memory性能情報                            
echo  04.ネットワーク性能情報                       
echo                                               
echo  99.中止                                      
echo ----------------------------------------------

:select
set userselect=
set /p userselect=数字:

rem 数字判定
echo %userselect% | findstr /r "\<[0-9]*[0-9]\>"
if errorlevel 1 (
    echo.
    echo 数字を入力して下さい。 %getinterval%:NG
    echo.
    set /a ng_count=%ng_count%+1

    rem 2回以上誤ると強制終了させる。
    if %ng_count% == 2 ( goto endend )

    goto select
)

set ng_count=0

rem 取得情報判定
if %userselect% == 99 ( goto endend )

if %userselect% == 01 (
    set getflg1=1
)
if %userselect% == 02 (
    set getflg2=1
)
if %userselect% == 03 (
    set getflg3=1
)
if %userselect% == 04 (
    set getflg4=1
)

rem 取得間隔を確認
echo.
echo ----------------------------------------------
echo  性能情報を取得する間隔を指定して下さい。     
echo ----------------------------------------------

:re
set getinterval=
set /p getinterval=秒単位:

rem 数字判定
echo %getinterval% | findstr /r "\<[0-9]*[0-9]\>"
if errorlevel 1 (
    echo.
    echo 数字を入力して下さい。 %getinterval%:NG
    echo.
    set /a ng_count=%ng_count%+1

    rem 2回以上誤ると強制終了させる。
    if %ng_count% == 2 ( goto endend )

    goto re
)

set ng_count=0

rem 現在時刻を取得しておく。
for /f "usebackq delims=" %%a in (`date /t`) do set nowdate=%%a
for /f "usebackq delims=" %%a in (`echo %TIME%`) do set nowtime=%%a
for /f "usebackq delims=" %%a in (`echo %nowdate%%nowtime%`) do set now=%%a

rem ログファイル用にファイル名に使用できない文字列を削除する。
set timestamp=%now: =_%
set timestamp=%timestamp:/=%
set timestamp=%timestamp::=%

rem ディクスI/Oを取得する。
rem if文の中だとコマンドがエラーとなるため外に逃がす。
if %getflg1% == 1 ( goto getIO )
:reIO

rem CPU情報を取得する。
rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。
if %getflg2% == 1 ( goto getCPU )
:reCPU

rem Memory情報を取得する。
rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。
if %getflg3% == 1 ( goto getMEMORY )
:reMEMORY

rem ネットワーク情報を取得する。
rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。
if %getflg4% == 1 ( goto getNETWORK )
:reNETWORK

:rerere
echo -------------------------------------------------
echo  取得結果はbatと同階層に出力されています。       
echo  終了する時は「y」を押下して下さい。             
echo                                                  
echo  注意!全てのコマンドプロンプトが終了します。    
echo -------------------------------------------------
set /p getcheck=
if "%getcheck%" == "y" (
rem     taskkill /f /im jstat.exe
    taskkill /f /im typeperf.exe

    echo "ファイル加工中です。以下のメッセージは無視して下さい。"
    timeout 3
・・・・

rem ネットワーク情報取得
:getNETWORK
start "Network" /MIN "%SystemRoot%\System32\cmd.exe" /c "1>%timestamp%.network typeperf -si %getinterval%  "\Network Segment\%Net Utilization" "\Network Interface\Bytes Total/Sec""
goto reNETWORK

:endend
endlocal
echo.
echo "処理を終了します。"
timeout 3
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

typeperf -qで、 "\Network Segment\%Net Utilization""\Network Interface\Bytes Total/Sec"が表示されますか?

あと、%はバッチスクリプト中では%%ですね。ここだけ漏れている。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/12 17:08

    解決できました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.69%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる