:::: MENU ::::

JIRA/Confluence/BitbucketServerのユーザーアクセスログ出力とログフォーマット変更

Pocket

出力時のログフォーマットを忘れることが多いため記事にしておく。
書いてて思ったのだが、これ思いっきりフォーマット変えるとツールのログ診断使えなくるかも。

JIRA

log4j

log4jで出力したいときは下記URLを参考にすればよい。

How to Enable User Access Logging – Atlassian Documentation

Tomcat

Tomcat Valveで出力したいときは下記URLを参考にする。

Audit Confluence Using the Tomcat Valve Component – Atlassian Documentation

だが、例で載っているフォーマットはパースしにくくてあとで困ることになるので、
普通にApache2ライクなものにしておく。いまならLTSVのほうが汎用的かな?

[JRASERVER-59405] Add thread name to Tomcat access.log logger – Atlassian JIRA
の提案を受け入れて、かつ X-Forward-for を追記したものにする。

# vi ${INSTALL_DIC}/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs" prefix="access_log" suffix=".log"
       pattern="%a %{jira.request.id}r %{jira.request.username}r %t %I "%m %U%q %H" %s %b %D "%{Referer}i" "%{User-Agent}i" "%{jira.request.assession.id}r" %{X-Forwarded-For}i"/>

これで ${JIRA_INSTALL}/log/access_log.%Y-%m-%d.log というファイルで出力される。

fluentdのformatは以下のような感じ

format /^(?<remote>[^ ]*) (?<request.id>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] (?<thread>[^ ]*) "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*) (?<response.time>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<ssession.id>[^\"]*)" (?<forwarder>[^\"]*))?/

Confluence

log4j

JIRAと一緒

Tomcat

JIRAと一緒だけど jira.request.id に当たるものが見当たらなかったので削除、
jira.request.assession.id は User session id で代替。

Apache Tomcat Configuration Reference (6.0.53) – The Valve Component

# vi ${CONFLUENCE_INSTALL}/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs" prefix="access_log" suffix=".log" 
       pattern="%a %{X-AUSERNAME}o %t %I "%m %U%q %H" %s %b %D "%{Referer}i" "%{User-Agent}i" "%S" %{X-Forwarded-For}i" />

fluentdのformatは以下のような感じ

format /^(?<remote>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] (?<thread>[^ ]*) "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*) (?<response.time>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<ssession.id>[^\"]*)"  (?<forwarder>[^\"]*))?/

Bitbucket Server

Tomcat

Bitbucket Serverはたしかデフォルトでアクセスログは吐かれていたはず。
ただ他のツールと初期のフォーマットがまるで違います。
Tomcatのvalve設定して他と合わせてほうが綺麗かも。

How to read the Bitbucket Server Log Formats – Atlassian Documentation
Configure Bitbucket Server Logging – Atlassian Documentation

nginx等でプロキシさせている場合はアクセス元のIPを呼び出す用の設定が必要。
Log the original IP address when Bitbucket Server is behind a load balancer – Atlassian Documentation

Bitbucket Serverのデフォルトログ用のfluentdのformatは以下のような感じ

format /^(?<forwarder>[^,]*),?(?<remote>[^ ]*) \| (?<protocol>[^ ]*) \| (?<request.id>[^ ]*) \| (?<user>[^ ]*) \| (?<time>[^\|]*) \| "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" \| "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" \| (?<code>[^ ]*) \| (?<byte.read>[^ ]*) \| (?<byte.written>[^ ]*) \| (?<labels>[^\|]*) \| (?<response.time>[^ ]*) \| (?<session.id>[^\ ]*) \|/
Pocket