読者です 読者をやめる 読者になる 読者になる

負荷テストのときにRstudioを利用しました

インフラ
こんにちは、大曲です

今日は、負荷テストのときに利用したRstdioに関しての記事です

負荷テストの概要としては
テストケースを元に4分間の間サーバに負荷をかけてみて
サーバのリソース状況を確認するというものでした
負荷テストでのデータ収集に関して

負荷テストでは、サーバの状態のデータ収集のためにdstatというコマンドを使いました

dstatは、サーバのリソース状況を確認できるコマンドです
あとデータをCSVに出力できる所もポイントです
実際に実行したコマンドは以下の通りです

dstat -tlcmn --io --top-cpu --top-mem --output file.csv

1秒ごとのデータを以下のように出力してくれます

負荷をかけている間、垂れ流しているだけなので便利で重宝しています
これでサーバのリソース状況のデータは集まりました

Rstudioを使うまで

Rstudioを使う前は、Excelでまとめようとしてましたが辛かったです
スクリプトみたいな感じで簡単にしたいなと思い、ちょうど解析勉強会で利用したRstdioを使うことにしました

Rstudioに関しての説明に関しては省きます。
下記のURLを見てください
 

データの読み込み

dstatが出力したデータをそのままRstudioに読み込めないのでデータの整形を行います



dstatに関しての内容と大枠の項目を削除しました

"date/time" -> "datetime" に変更しました
これは、Rstdio側でカラムを指定するときに date/time は date.time と指定する必要があるため

この状態でread.csvで読み込むとRのdata.frame型として格納できます

dstat_data <- read.csv("ファイルパス")

日付の扱いに関して

時間の文字列をオブジェクトに変換できる

時間を文字列ではなく、簡単にオブジェクトに変換できるので
大なり小なりでデータの抽出が簡単になりました

start_time <- as.POSIXct(strptime("2015-02-25 10:00:00","%Y-%m-%d %H:%M:%S"))
stop_time  <- as.POSIXct(strptime("2015-02-25 10:05:00","%Y-%m-%d %H:%M:%S"))
# dstatの日付は「日-月 時間」になっているので、注意してください
dstat_data <- as.POSIXct(strptime(dstat_data$datetime, "%d-%m %H:%M:%S"))
dstat_data <- subset(dstat_data, datetime >= start_time & stop_time >= datetime )


日付オブジェクト変換前

rstdio


日付オブジェクト変換後

rstdio2

各データの集計

データの集計に関しては、以下の関数を作成して分間のデータを集めました



難しいことはしていませんが、面倒なことはやっています
動的にカラムの平均をとっているわけでなく、決め打ちで行っているためあまりいいコードとは言えません!!

data_minute_avg("2015-02-25 10:00:00", "2015-02-25 10:01:00")


こんな感じにまとまります
各項目は分間の平均になります


rstdio3

 

グラフ化

グラフではggplot2を利用しています
ggplot2も有名だと思うので説明は省きます

ggplot(data= result, aes( x = index, y=la, group=title, color=title))
  + geom_line() +  ggtitle("比較 ロードアベレージ")

ggplot(date = [利用するデータ], aes( x = [x軸のカラム], y = [y軸のカラム], group = [グループ分け単位], color = [色分単位] ))

説明するとこんな感じです
ggplotは、奥が深いので色々と試す価値はあると思います


複数のグラフ表示

複数グラフを一つの画像に載せたい場合に下記の関数を使っています




# グラフのオブジェクトを変数に格納する
p1 <- ggplot(data= result, aes( x = index, y=usr, group=title, color=title))
  + geom_line() + ggtitle("比較  CPU Usr")
p2 <- ggplot(data= result, aes( x = index, y=sys, group=title, color=title))
  + geom_line() + ggtitle("比較  CPU Sys")

# 先ほどの関数に渡す 
multiplot(p1,p2)


利用するとこんな感じに出力されます

rstdio4
 

感想

Rstudio使いこなすと面白いことが分かりました
ただ、R言語はあくまで解析用の言語なので あまり複雑にしないことをお勧めします
ほかにアクセスログだったり、DBのステータスの状況とかも簡単にグラフ化できるので
今回利用してよかったと思っています
ちなみに解析勉強会もあるのでそちらでも活用しています
ただ全然、解析できるような知識はないです。。。

アクセスログだったりDBのステータス(InnoDB Status)などもRstudioを使って可視化しています
それらの記事も書くことができたらいいなと思っています