こんにちは、大曲です
今日は、負荷テストのときに利用した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 )
日付オブジェクト変換前
日付オブジェクト変換後
各データの集計
データの集計に関しては、以下の関数を作成して分間のデータを集めました
難しいことはしていませんが、面倒なことはやっています
動的にカラムの平均をとっているわけでなく、決め打ちで行っているためあまりいいコードとは言えません!!
data_minute_avg("2015-02-25 10:00:00", "2015-02-25 10:01:00")
グラフ化
グラフでは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)
感想
Rstudio使いこなすと面白いことが分かりました
ただ、R言語はあくまで解析用の言語なので あまり複雑にしないことをお勧めします
ほかにアクセスログだったり、DBのステータスの状況とかも簡単にグラフ化できるので
今回利用してよかったと思っています
ちなみに解析勉強会もあるのでそちらでも活用しています
ただ全然、解析できるような知識はないです。。。
アクセスログだったりDBのステータス(InnoDB Status)などもRstudioを使って可視化しています
それらの記事も書くことができたらいいなと思っています
アクセスログだったりDBのステータス(InnoDB Status)などもRstudioを使って可視化しています
それらの記事も書くことができたらいいなと思っています