【はじめに】

今月の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/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ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。