JiraのログをJSON形式で出力する

この記事は、技術系同人サークルふぃーるどのーつとのタイアップ記事です。

MackerelやDataDog、オンプレミスだとZabbixなど、サービス監視のためのサービスやミドルウェアは、ログファイル内のキーワードの出現を監視して、アラートを出力する機能を備えています。

これらの機能は概して、ログファイルの監視をファイルの行単位で行うようになっています。

しかし、下の図のようにプログラムのスタックトレースは複数行をまとめて出力するため、監視の条件を設定する上で複数行をまとめて読み込む必要がある場合があります。

f:id:setoazusa:20180419111316p:plain

以下は、アトラシアン社のJira Software(以下Jira)で、JSON 形式でのログ出力を行い、ログの1 レコードを1 行に集約して出力する設定例です。

設定

log4j-jsonの配置

Jiraはログの出力ライブラリーとしてlog4jを使用しているため、log4jJSON形式でのログ出力を行うためにmichaeltandy/log4j-json を使用します。MavenのセントラルレポジトリーからJarファイルをダウンロードして、(Jiraのインストールディレクトリー)/atlassian-jira/WEB-INF/lib に配置します。

log4j.properties

log4jの設定ファイルを編集します。(Jiraのインストールディレクトリー)/atlassian-jira/WEB-INF/classes/log4j.propertiesを以下の通り編集します。

23行目近辺にlog4j.rootLogger=WARN, console, filelogという記述があるので、以下の通り編集します。

log4j.rootLogger=WARN, console, filelog, watchlog

末尾に以下の記述を追記します。

log4j.appender.watchlog=org.apache.log4j.FileAppender
log4j.appender.watchlog.layout=uk.me.mjt.log4jjson.SimpleJsonLayout
log4j.appender.watchlog.File=/var/atlassian/application-data/jira/log/jira.log.json
log4j.appender.watchlog.layout.ConversionPattern=%d %t %p %X{jira.username} %X{jira.request.id} %X{jira.request.assession.id} %X{jira.request.ipaddr} %X{jira.request.url} [%q{2}] %m%n
log4j.appender.watchlog.MaxFileSize=20480K
log4j.appender.watchlog.MaxBackupIndex=5
log4j.appender.watchlog.DatePattern=.yyyy-MM-dd

サービスの再起動

Jiraのサービスを再起動します。

ログの出力

以上の設定を行うと、以下のようなログが出力されます。

f:id:setoazusa:20180419112407p:plain

監視の設定例

以下は、監視サービス Mackerel のチェック監視の仕組みを使って、ログのスタックトレース内にClientAbortException という文字列が含まれる場合は監視から除外するmackerel-agent.confの設定例です。

[plugin.checks.jira_log]
command = """
check-log \
--file \
/var/atlassian/application-data/jira/log/jira.log.json \
--pattern ERROR --exclude ClientAbortException --return
"""
prevent_alert_auto_close = true

お知らせ

以上は、2018/4/22に開催される技術書典4に出品する新刊「すいーとみゅじっく vol.5 Mackerelではじめる お手軽サーバー監視」にて、題材として取り上げたJiraでのJSON形式でのログ出力について、設定の詳細を記したものです。

同書では、JiraとバックエンドにPostgreSQLを使用したWebシステムを題材として、 MackerelによるWebサービスの監視のノウハウについて述べています。筆者の現場でのアトラシアン製品の運用の経験がもとになっていますので、アトラシアン製品の監視のケーススタディーとしても使えると考えています。

techbookfest.org

fieldnotes.booth.pm