ERES + Fluentd かんたんログ活用術の第4弾です。前回の記事では、DBへの出力を行いました。今回はフィルタリング機能についてご紹介します。
DBMotoは一定のインターバル(デフォルト1分)ごとに更新を検知して、ターゲットDBへ反映しています。そして、historyログにはこのインターバルごとにログが追記されるわけですが、各インターバルで毎回、ソースDBに更新があるとは限りません。むしろ更新が「0」件のインターバルの方が多いでしょう。そうなると、更新が「0」件のログに、実際に更新があった時のログが埋もれて、必要な情報を見逃してしまうかもしれません。そこで、今回は更新が「0」件のログは除外して、更新があったインターバルのログのみをDBに出力するようにフィルタリングを行ってみます。
フィルタリングの条件はstatusが「Info」で、totalが「0」のものとします。statusはインターバルが正常終了した場合に「Info」となり、異常終了した場合に「Err」となるので、正常終了したものを対象とします。そして、totalはターゲットDBへの反映に成功した件数(success)と失敗した件数(fail)を足したもの、つまり更新があった件数を表していますので、これが「0」件のものを対象とします。つまり、statusが「Info」かつtotalが「0」でないものをDBへ出力します。
この条件でフィルタリングを行えるプラグインを探したところ、ignoreというプラグインがありましたので、これを利用します。では、早速インストールします。
インストールが完了したら、設定ファイルにフィルターを追加します。
type forward
</source><filter dbmoto.history>
type ignore
regexp1 status Info
regexp2 total ^0
</filter><match dbmoto.history>
type pgjson
~~~~~
</match>
使い方としては、regexp1, regexp2のすべてにマッチしたものを除外します。この記述ではstatusが「Info」かつtotalが「^0」のものを除外しています。「^0」は正規表現で、行頭が0のものを表しています。
設定ファイルを編集したらサービスを再起動して、反映させます。
そして、フィルタリングが有効になった結果が下の図です。更新がないログについては、出力されていません。このようにフィルタリングを行うことで、必要なログ情報のみを収集することができます。
その④ ERESによる可視化につづく
関連するトピックス:
- アドホッククエリと分析機能【エンタープライズ型チャート・レポートツールEspressReportES】
- ERES + Fluentd かんたんログ活用術 – その② DBへの出力
- ERES + Fluentd かんたんログ活用術 – その⓪ Fluentdのインストール
- グラフをドリルダウン表示させる方法[EspressChart]
- Ver5.4での主な新機能について【エンタープライズ型チャート・レポートツールEspressReportES】
- フォーミュラビルダ(Formula Builder)【Javaチャート・グラフ作成ツールEspressChart】
- EspressReport ESサーバの公開アドレス変更方法
- Java11を使用したWebサイト構築でのJavaアプレットに替わるチャート・レポートの対応策:QuickDesigner (EspressReport ES)
- XMLエンコードの設定について【Javaチャート・グラフ作成ツールEspressChart】
- EspressDashboardアーキテクチャとディプロイ【Java対応ダッシュボード配信ツールEspressDashboard】