BIGIP(F5) Memo No.1 iRuleでAccessLog

私のBIGIPとの付き合いは、BIGIPv4のセットアップから始めて今年でキャリア15年。

v12をコツコツセットアップしながら過ごしている日々です。

培ったスキルを紹介していこうと思います。

BIGIP(LTM)でAccessLog(Apache風)を出す方法

ロードバランサの前後でWEB通信のレスポンスを計測したい時はtcpdumpを取得するのが正攻法ですが、

通信パケットをサーバー屋さんが解析するのは一苦労。ネットワーク屋さんにお世話になるはめになりますね。

サーバー屋さんは、Apacheのアクセスログみたいなの取りたいと思うことでしょう。

 

じゃあ、実現してあげましょうと、作ってみたiRuleです。

apacheのケース

CustomLog /../apache/logs/ssl_request_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
  \"%{User-Agent}i\" %T %{JSESSIONID}C %{SSL_PROTOCOL}x %{SSL_CIPHER}x %D"

iRuleで書いた場合

when HTTP_REQUEST {
  set http_request_time [clock clicks -milliseconds]
  set request_log_line "\
[HTTP::request_num],\
[IP::remote_addr],\
[HTTP::method],\
[HTTP::version],\
[HTTP::host],\
\"[HTTP::uri]\",\
\"[HTTP::header value Referer]\",
\"[HTTP::header User-Agent]\",\
\"[HTTP::cookie value JSESSIONID]\",\
[SSL::cipher name],\
[SSL::cipher version],\
[SSL::cipher bits]"
}
 
when HTTP_RESPONSE {
  set http_response_time [ clock clicks -milliseconds ]
  log local0. "$request_log_line,\
[HTTP::status],\
[HTTP::payload length],\
[expr $http_response_time - $http_request_time]"
}