Statistics(統計)のプロファイルと使い方
【はじめに】
今月のiRuleではStatistics(統計)のプロファイルと使い方を紹介します。
たとえば特定のURIへのアクセス回数やあるIPサブネットからのアクセス回数など、iRuleで統計情報を収集するケースがあります。
統計情報の収集についてよく知られている方法としては、グローバル変数を利用してカウンター変数を作成するというものがあります。
たとえばRULE_INITにて「set ::header_count 0」でグローバル変数を初期化し、ルール本文で変数の値を設定(増加、減少など)できます。
しかし、グローバル変数を使う場合は、変数の値を参照する際にはログメッセージに出力する必要があります。
つまり必ずトラフィックがトリガーになるイベントを待たなければならず、管理者が任意で表示させることができません。
今回ご紹介するStatisticsプロファイルは、上記のような不便な点を解消します。
名前の通りBIG-IP上のプロファイルですが、実際に動作させるにはiRuleを利用する必要があります。
【メリット】
Webサーバが返すデータのContent Typeについて、各タイプへのアクセス回数をGUIでカウントでき、
統計情報を定期的に収集できる
【タイトル】
Content Type Tracking iRule
【機能解説】
*6種のデータタイプに対して、アクセス回数をカウントアップする
*Statisticsプロファイルの利用でGUIでアクセス回数が表示できる
【設定概要】:
*ContentTypeというStatisticsプロファイルを作成
*Statisticsプロファイルに6種のデータタイプに対してFieldを設定
*Virtual ServerにStatisticsプロファイルを設定
使用手順は以下の通りです。
① Local Traffic >> Profiles >> Other >> Statistics画面で、Createボタンを利用してカスタムプロファイルを作成する
② カスタムプロファイル編集画面でプロファイルのNameを入力する
③ カウンタ(統計用の)変数として利用できる32個の「Field」が用意されています。
使いたい変数に対して、Field 1~32のカスタムチェックボックスをチェックし、Fieldに任意の名前を入力する(例えば「header_count」)
④ Finishedボタンをクリックしカスタムプロファイルを保存する
⑤ Virtual Serverを通常通り設定します。ConfigurationをAdvancedに変更すると、Statistics Profileの設定項目も用意されます。
上記作成したカスタムプロファイルをここで選びます。
⑥ iRuleを作成し、STATS::関連コマンドで上記のプロファイルの中のFieldを呼び出し、値を設定(増加、減少など)します。
上記でStatisticsプロファイルを利用すると、Overview >> Statistics >> Profiles - Statisticsの画面で情報が表示できます。
STATS::関連コマンドについては、下記のページをご参照ください:
http://devcentral.f5.com/s/wiki/default.aspx/iRules.STATS
---------------------------------------------------
【Statistics Profileの定義】
Name: ContentType
Field 1: Images
Field 2: HTML
Field 3: Stylesheets
Field 4: Scripts
Field 5: Documents
Field 6: Other
【iRule定義】
# To view the results, go to Statistics -> Profiles - Statistics
when HTTP_RESPONSE {
switch -glob [HTTP::header "Content-type"] {
"image/*" { STATS::incr "ContentType" "Images" }
"text/html" { STATS::incr "ContentType" "HTML" }
"text/css" { STATS::incr "ContentType" "Stylesheets" }
"*javascript" { STATS::incr "ContentType" "Scripts" }
"text/vbscript" { STATS::incr "ContentType" "Scripts" }
"application/pdf" { STATS::incr "ContentType" "Documents" }
"application/msword" { STATS::incr "ContentType" "Documents" }
"application/*powerpoint" { STATS::incr "ContentType" "Documents" }
"application/*excel" { STATS::incr "ContentType" "Documents" }
"default" { STATS::incr "ContentType" "Other" }
}
}
※F5ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。