見出し画像

ElasticsearchのData Transforms機能の紹介

こんにちは。Airitech株式会社 Big Data AIグループの落合です。

Elasticsearchのバージョン7.7から追加された、Data Transformsの機能について紹介したいと思います。

ElasticsearchのData Transformsとは

Data Transformsとは、Elasticsearchに入っているデータを、何らかの条件で集計して、その結果を別のindexに保存する機能です。

Kibanaを使ったことがある方にとっては、「Data Tableに表示された結果をそのままindexに保存してくれる機能」と考えると分かりやすいと思います。

例えば、アクセスログをIPアドレスごとに集計する使い方や、ECサイトのログをユーザーIDごとに集計する使い方などが考えられます。

また、Data Transformsは、一度だけ実行することもできますが、それだけでなく、定期的に自動で実行されるようにすることもできます。常に最新の集計結果が保存された状態にすることができるため、集計後のindexが最初からある感覚でDashboardを作ることができます。

Data Transformsは、Elasticsearch 7.2でBeta版としてリリースされ、7.7からGA(General Availability)となっています。7.8以降も機能の追加が行われているので、Data Transformsを使いたい場合は、できるだけ新しいバージョンを使うのがよいでしょう。

例えば、7.8で負荷が上がりすぎないようにするThrottling機能の追加されており、7.12でruntime fieldがサポートされるようになっています。なお、Data Transformsは、X-PackのBasic Licenseの機能となっています。OSS版のElasticsearchでは使えないので注意してください。

Data Transformsのメリット:2段階の集計が必要な可視化ができる

ECサイトのアクセスログから、
「ユーザーごとの閲覧したアイテムの種類の数の分布を出したい」
という場合、

(1) ユーザーIDごとに集約してアイテムIDのユニークカウントを出す
(2) (1)の結果の分布を出す

という計算が必要です。

(1)の結果をData Transformsによって保存すれば、(2)の結果をKibanaで表示することができます。

画像2

Data Transformsのメリット:集約するキーの種類が膨大な量でも問題ない

例えば、Firewallのログで、接続先のIPアドレスごとに集計したData Tableを作る場合、IPアドレスの種類が多すぎるとDataTableに全ての集計結果を表示することはできません。Data Tableに表示できるのは大体数万種類までです。

また、「接続先のIPアドレスと接続元のIPアドレスの組み合わせごとに集計したい」というような場合は、組み合わせの数がさらに膨大になります。

このような場合でもData Transformsは問題なく全てのデータを対象に集計処理を行うことができます。

Data Transformsのメリット:データ量の削減が可能

一定期間以上前のデータについては、ログ1件1件のメッセージを確認することは少ないと思います。
過去1年間のトレンドを見たければ、日ごとに集約したデータがあれば十分です。
過去1カ月分のデータは加工せずそのまま残し、1カ月以上前のデータは集約したものだけを残すことで、ディスク使用量を抑えつつ数年分のトレンドを可視化するDashboardがいつでも見られる状態にすることができます。

Data Transformsの使い方

Data Transformsは、Kibanaの画面上で設定できるため、非常に簡単です。

Stack Management -> Transforms

のメニューを開き、「Create transforms」ボタンを押すと作成を開始できます。

こちらの画面は、

・一日単位で集計
・processNameでグループ化
・jobIdでグループ化
・totalExecutionTimeInSecondsの合計値を計算
・ログレベルが「Information」のログの件数をカウント
・ログレベルが「Error」のログの件数をカウント

という設定にしたものです。

previewが表示されるので、期待した通りの内容になっているかをその場で確認することができます。

画像1

「Continuous mode」にチェックを入れると、定期的にジョブが実行され、結果を入れるindexが更新されます。

Continuous modeをオフにすることで、現在あるデータを対象に一度だけ実行することもできます。

画像3

作成したジョブは一覧画面で確認することができます。

まとめ

Data Transformsは、Elasticsearchに格納した時系列データを扱う際に役立つ非常に強力な機能です。

これまで「Kibanaではできない」と思っていた可視化がData Transformsを使えばできるようになる場合もあります。

さまざまな活用方法が考えられるため、すでにElasticsearchをお使いの方はぜひ使ってみてください。

AiritechではElasticsearchのオンライン・トレーニングも実施しています。
興味のある方は、ぜひお申し込みください。

Elasticsearch・Kibanaトレーニング(オンライン)

また、Elasticsearchエンジニアの募集も行っていますので興味のある方はぜひご応募ください。

Airitechの採用情報はこちら

ホームページ



この記事が気に入ったらサポートをしてみませんか?