ログファイル情報の統計分析にRを使用したいのですが、「制限された」RコアRPMでさえ、まだインストールされていない多くの依存関係があることがわかりました。周辺機器の必要性のためにそれほど多くのパッケージをインストールしたくありません。
RHEL 6での単純な統計分析のための軽量の代替手段はありますか? stdinで大きな値のセット(1行に1つの値)を受け入れ、最小、最大、平均、中央値、95パーセンタイル、および標準偏差を出力するRスクリプトがあります。
詳細については、grepとawkを使用して、ウェブサーバーのログファイルで特定のパスのGETリクエストを検索し、応答時間を取得し、上記の指標を計算して、ウェブアプリケーションへの変更のパフォーマンスへの影響を測定しています。 。
グラフ作成機能は必要ありません。単純な計算だけです。見落としているものはありますか?
python NumPy パッケージを使用します。これは、yum install numpy
またはpip install numpy
を使用して簡単にインストールできるはずです。
import numpy
n = numpy.random.Rand(100)
print 'min:', n.min()
print 'max:', n.max()
print 'mean:', n.mean()
print 'median:', numpy.median(n)
print '95th:', numpy.percentile(n, 95)
print 'stddev:', n.std()
これにより、基本的な統計を最初から再実装する必要がなくなります。一般に、Python with NumPy and SciPy はRの機能が豊富な代替手段であり、多くの場合 パフォーマンスが向上 。
また、grep
とawk
で解析する独自のログファイルを作成する代わりに、次のようなものを使用できます。 pylogsparser これは「次のセットでパッケージ化されたログパーサーライブラリです。すぐに使用できるパーサー(DHCPd、Squid、Apacheなど)」。
awk
の最小値、最大値、合計値、平均値、中央値は次のとおりです。
BEGIN {
min="unset"
max=0
}
{
values[NR] = $1
total += $1
average = total/NR
if ($1 > max) max = $1
if (min == "unset" || $1 < $min) min = $1
}
END {
median=values[int(NR/2)]
print "MIN:", min
print "MAX:", max
print "TOTAL:", total
print "MEAN:", average
print "MEDIAN:", median
}
標準偏差と95パーセンタイルは、読者の練習問題として残されています。
Perl、PythonまたはRubyのようなプログラミング/スクリプト言語は、これを簡単に実行でき、bc
も利用できます。