ログ

BIサーバのコミュニティエディションは、初期状態では監査ログが以下のテキストファイルに記録されていく。

今までは、このファイルから定期的にETLツールでDBに取り込んでいたが、そもそもデータベースに記録するように変更する。

監査ログはhibernateデータベースに保存されるが、いくつかマニュアルにはない変更が必要となる。

テーブルの準備

hibernateデータベースに、以下のpro_auditテーブルを作成する。

CREATE TABLE public.pro_audit(
    job_id character varying(160) COLLATE pg_catalog."default",
    inst_id character varying(60) COLLATE pg_catalog."default",
    obj_id character varying(160) COLLATE pg_catalog."default",
    obj_type character varying(60) COLLATE pg_catalog."default",
    actor character varying(60) COLLATE pg_catalog."default",
    message_type character varying(60) COLLATE pg_catalog."default",
    message_name character varying(60) COLLATE pg_catalog."default",
    message_text_value character varying(60) COLLATE pg_catalog."default",
    message_num_value character varying(60) COLLATE pg_catalog."default",
    duration character varying(60) COLLATE pg_catalog."default",
    audit_time character varying(60) COLLATE pg_catalog."default",
    audit_id bigint NOT NULL,
    CONSTRAINT pro_audit_pkey PRIMARY KEY (audit_id)
)

ALTER TABLE public.pro_audit
    OWNER to hibuser;

設定変更

ログ挿入用に利用されるSQLをPostgreSQL用に変更する。以下のPostgreSQL用ファイル

にコピーする。

次に、ログの出力先をデータベースに変更する。以下のファイルを修正する

# データベースに記録する場合
<bean id="IAuditEntry" class="org.pentaho.platform.engine.services.audit.AuditSQLEntry" scope="singleton" />

# テキストファイルに出力
<bean id="IAuditEntry" class="org.pentaho.platform.engine.services.audit.AuditFileEntry" scope="singleton" />

# 監査ログを停止
<bean id="IAuditEntry" class="org.pentaho.platform.engine.core.audit.NullAuditEntry" scope="singleton" />

設定を変更した後は、BIサーバを再起動する。

監査ログを有効にすると大量のDB書き込みが発生するためパフォーマンスに影響が出る場合があるが、小規模な運用の場合は問題なし。