SlideShare a Scribd company logo
1Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Ingest Node
Scripting Deep Dive
Acroquest Technology株式会社
Senior Consultant / Elastic Certified Engineer
吉岡 洋 @Hirosh_Yoshioka
はじめに
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1.今日話すこと
①Ingest Nodeの例外処理グッドプラクティス
2.今日話さないこと
①Ingest APIの解説
目次
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1.Ingest Nodeとは
2.例外処理
3.Circuit Breaker
自己紹介
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Acroquest Technology株式会社
2. 吉岡 洋(@Hirosh_Yoshioka)
3. 業務
− Elastic Stackのコンサルティング全般
(全文検索/ログ分析/セキュリティ分析/可視化)
4. その他
− 世界初のElastic Certified Engineer
− 日本初のElastic社認定コンサルタント
− Elastic User Group Tokyo運営
Acroquest Technology株式会社
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. 新横浜にあるITベンチャー
①Great Place To Work(R) Institute Japan実施
働きがいのある会社ランキング第1位(3回受賞)
2. 事業(データ活用ビジネス)
①Elastic Stack活用コンサルティングサービス
– 検証/設計/構築/運用支援など
– Elastic Certified Engineer:5名
②IoTデータ分析プラットフォーム
③機械学習/AI
1. Ingest Nodeとは
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1-1. Ingest Nodeとは?
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. 特徴
①Elasticsearchにドキュメントをインデクシングする際の
前処理として、様々なデータ加工を行う機能。
②Ingest Nodeの役割を持ったノードで実行される。
2. メリット
①ローコード開発(各種Processor+Painless Script)
②加工処理のSimulationが可能(Simulate pipeline API)
③加工処理をスケール可能(複数台Ingest Node)
1-2. Ingest Nodeの利用シーン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Logstashと異なり、既存データの加工が可能
2. データ保守で利用シーンが多い
No 概要 利用API Logstashによる代替
1 新規投入データの加工 ・Index API
・Bulk API
可能
2 既存データの加工
・フィールド追加や値の変更
・Update By Query API 不可能
3 既存データの加工
・マッピング構造の変更
・Analyzer関連の変更
・Reindex API 不可能
1-3. Ingest Nodeで可能な加工処理
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Document操作
①特定条件でDrop
2. フィールド操作
①追加/削除/リネーム/値セット
3. Index名操作
①日付を付与、投入先インデックスを変更
4. 文字列操作
①CSV/JSONパース、文字列置換/正規表現抽出
②大文字/小文字化
1-3. Ingest Nodeで可能な加工処理
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5. 配列操作
①Split/Append/Join/Sort
6. データ付与
①GeoIP/Enrich
7. 教師あり機械学習モデルの推論
①言語判定
②回帰/分類
8. Painless Script
①例)文字列配列に対して正規表現で文字列を抽出する
2. 例外処理
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2-1. エラー発生時の挙動
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Processorでエラーが発生するとインデクシングはSkipされる
① 正しいデータ加工/デバッグのため、例外処理は重要
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [{
"rename": {
"field": "server_name",
"target_field": "host.name"
}
}]
},
"docs": [
{ "_source":{ "xxx": "vega" } }
]
}
{
"docs" : [{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "field [server_name] doesn't exist"
}
],
"type" : "illegal_argument_exception",
"reason" : "field [server_name] doesn't exist"
}
}]
}
server_nameフィールドが存在しない
2-2. 例外処理パターン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. 代表的な5つの例外処理パターン
No 概要 利用機能
1 各Processorを対象にエラーをCatchする
(エラー発生時にリカバリする処理)
on_failureパラメータ
2 Pipeline全体を対象にエラーをCatchする
(想定外エラー発生時の処理)
on_failureブロック
3 エラーが発生しても処理を継続する
(例外をCatchして何もしない)
ignore_failureパラメータ
4 Processorの実行条件を記述する
(主にNullチェックで利用)
ifパラメータ
5 Nullチェックを簡易化する
(スクリプト記述量が減る)
Null Safeオペレータ(?.)
2-2. 例外処理パターン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2. Pipeline全体を対象にエラーをCatchする(on_failureブロック)
"on_failure" : [{
"set" : {
"field" : "error.message",
"value" : "{{ _ingest.on_failure_message }}"
},
"set" : {
"field" : "_index",
"value" : "error-index"
}
}]
想定外のエラーが発生した場合、
①error.messageにエラー内容を設定
②投入先をerror-indexに変更
※https://www.elastic.co/guide/en/elasticsearch/reference/current/handling-failure-in-pipelines.html
2-2. 例外処理パターン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4. Processorの実行条件を記述する(ifパラメータ)
PUT _ingest/pipeline/remove_temp
{
"processors": [
{
"remove": {
"field": "temp"
"if": "ctx.temp != null"
}
}
]
}
tempフィールドが存在する場合、
削除する
※https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-conditionals.html
2-2. 例外処理パターン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5. Nullチェックを簡易化する(Null Safeオペレータ)
PUT _ingest/pipeline/drop_guests_network
{
"processors": [
{
"drop": {
"if": "ctx.network?.name == 'Guest'"
}
}
]
}
network階層が存在しない場合、
左辺はnullを返す
※https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-conditional-nullcheck.html
3. Circuit breaker
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Ingest Nodeを実装して
いざ、データを投入!
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
データを投入すると
Circuit Breakerが
発動してデータ登録失敗
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3-1. Script compilation circuit breaker(~7.8)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. すべてのスクリプト処理を1つの閾値で判定
2. スクリプトCompileは5分間に75回まで
①script.max_compilations_rate
②あまり上げ過ぎると、OOMEのリスクが高まる
3. スクリプトCacheは100(Compile結果が入る)
①script.cache.max_size
②Elastic Cloudでは変更不可
4. Ingest Nodeでスクリプトにカウントされるもの
①Pipeline Processor/Script Processor/ifパラメータ
3-2. Circuit breaker対策
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Script ProcessorをStored Script(事前コンパイル)にする
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"script": {"id": "double"}
}
]
},
"docs": [
{
"_source":{"number": 33}
}
]
}
POST _scripts/double/
{
"script": {
"lang": "painless",
"source": "ctx.number2 = ctx.number * 2"
}
}
3-2. Circuit breaker対策
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_type" : "_doc",
"_id" : "_id",
"_source" : {
"number" : 33,
"number2" : 66
},
"_ingest" : {
"timestamp" : "2020-08-25T17:57:16.391823Z"
}
}
}
]
}
データを投入すると
再びCircuit Breakerが
発動してデータ登録失敗
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Processor毎に
存在するifパラメータは
Stored Scriptに
登録できない
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Elastic Stack 7.9で改善
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3-3. Script compilation circuit breaker(7.9~)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Circuit breakerの設定はContext単位に設定可能
①script.context.$CONTEXT.max_compilations_rate
②script.context.$CONTEXT.cache_max_size
$CONTEXT
Cache
(デフォルト)
Compile Rate
(デフォルト)
ingest 200 制限なし
processor_conditional 200 制限なし
aggs 100 75/5m
bucket_aggregation 100 75/5m
field 100 75/5m
score 100 75/5m
: : :
3-4. Ingest Node Pipelines(7.9~)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Kibana UIで
Ingest Nodeを
簡単に編集
まとめ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. Ingest Nodeはローコード開発のデータ加工基盤
2. 5つの例外処理パターンを利用する
3. Ingest Nodeで多数のScriptを利用する場合は
Circuit Breakerが発生しやすい
4. 解決策は以下
①Stored Scriptを積極利用する
②Ver.7.9以上を利用する
ご清聴ありがとうございました。
Evolve the Earth with Emotion of Technology
Copyright © Acroquest Technology Co., Ltd. All rights reserved.

More Related Content

PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
データ分析を支える技術 DWH再入門
PDF
Amazon Athena 初心者向けハンズオン
PDF
爆速クエリエンジン”Presto”を使いたくなる話
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
PDF
Elasticsearchのサジェスト機能を使った話
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
データ分析を支える技術 DWH再入門
Amazon Athena 初心者向けハンズオン
爆速クエリエンジン”Presto”を使いたくなる話
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
Elasticsearchのサジェスト機能を使った話
DynamoDBの初心者に伝えたい初めて触るときの勘所

What's hot (20)

PDF
PostgreSQLアーキテクチャ入門
PDF
Tune Up AWS Lambda
PPTX
AWSで作る分析基盤
PDF
ガチ(?)対決!OSSのジョブ管理ツール
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PPTX
WiredTigerを詳しく説明
PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
Elasticsearchを使うときの注意点 公開用スライド
PDF
データ分析基盤、どう作る?システム設計のポイント、教えます - Developers.IO 2019 (20191101)
PDF
Spring Cloud Data Flow の紹介 #streamctjp
PPTX
地理分散DBについて
PDF
情報処理技術者のための技術士受験のすすめ
PDF
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
PPTX
ASTERIA WARP運用Tips「RDB連携時のトラブルシューティング 」
PDF
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
PDF
MongoDB概要:金融業界でのMongoDB
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
PDF
Apache Kafka 0.11 の Exactly Once Semantics
PostgreSQLアーキテクチャ入門
Tune Up AWS Lambda
AWSで作る分析基盤
ガチ(?)対決!OSSのジョブ管理ツール
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
20190806 AWS Black Belt Online Seminar AWS Glue
WiredTigerを詳しく説明
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Elasticsearchを使うときの注意点 公開用スライド
データ分析基盤、どう作る?システム設計のポイント、教えます - Developers.IO 2019 (20191101)
Spring Cloud Data Flow の紹介 #streamctjp
地理分散DBについて
情報処理技術者のための技術士受験のすすめ
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
ASTERIA WARP運用Tips「RDB連携時のトラブルシューティング 」
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
MongoDB概要:金融業界でのMongoDB
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
Apache Kafka 0.11 の Exactly Once Semantics
Ad

Similar to Ingest node scripting_deep_dive (16)

PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
PDF
最新版Hadoopクラスタを運用して得られたもの
PPTX
StreamGraph
PDF
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
PPTX
StackStormを活用した運用自動化の実践
PDF
Node.js Tutorial at Hiroshima
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
PDF
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
PDF
Hyperledger Fabric のプラットフォームおよびインフラ運用
PDF
インフラセキュリティブートキャンプ #seccamp
PDF
配布用Supervisordによるnode.jsの運用
PDF
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
PDF
elasticsearchソースコードを読みはじめてみた
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
PPTX
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
Node.jsアプリの開発をモダン化するために取り組んできたこと
最新版Hadoopクラスタを運用して得られたもの
StreamGraph
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
StackStormを活用した運用自動化の実践
Node.js Tutorial at Hiroshima
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Hyperledger Fabric のプラットフォームおよびインフラ運用
インフラセキュリティブートキャンプ #seccamp
配布用Supervisordによるnode.jsの運用
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
elasticsearchソースコードを読みはじめてみた
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
Ad

Recently uploaded (9)

PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research

Ingest node scripting_deep_dive

  • 1. 1Copyright © Acroquest Technology Co., Ltd. All rights reserved. Ingest Node Scripting Deep Dive Acroquest Technology株式会社 Senior Consultant / Elastic Certified Engineer 吉岡 洋 @Hirosh_Yoshioka
  • 2. はじめに Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1.今日話すこと ①Ingest Nodeの例外処理グッドプラクティス 2.今日話さないこと ①Ingest APIの解説
  • 3. 目次 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1.Ingest Nodeとは 2.例外処理 3.Circuit Breaker
  • 4. 自己紹介 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Acroquest Technology株式会社 2. 吉岡 洋(@Hirosh_Yoshioka) 3. 業務 − Elastic Stackのコンサルティング全般 (全文検索/ログ分析/セキュリティ分析/可視化) 4. その他 − 世界初のElastic Certified Engineer − 日本初のElastic社認定コンサルタント − Elastic User Group Tokyo運営
  • 5. Acroquest Technology株式会社 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. 新横浜にあるITベンチャー ①Great Place To Work(R) Institute Japan実施 働きがいのある会社ランキング第1位(3回受賞) 2. 事業(データ活用ビジネス) ①Elastic Stack活用コンサルティングサービス – 検証/設計/構築/運用支援など – Elastic Certified Engineer:5名 ②IoTデータ分析プラットフォーム ③機械学習/AI
  • 6. 1. Ingest Nodeとは Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 7. 1-1. Ingest Nodeとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. 特徴 ①Elasticsearchにドキュメントをインデクシングする際の 前処理として、様々なデータ加工を行う機能。 ②Ingest Nodeの役割を持ったノードで実行される。 2. メリット ①ローコード開発(各種Processor+Painless Script) ②加工処理のSimulationが可能(Simulate pipeline API) ③加工処理をスケール可能(複数台Ingest Node)
  • 8. 1-2. Ingest Nodeの利用シーン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Logstashと異なり、既存データの加工が可能 2. データ保守で利用シーンが多い No 概要 利用API Logstashによる代替 1 新規投入データの加工 ・Index API ・Bulk API 可能 2 既存データの加工 ・フィールド追加や値の変更 ・Update By Query API 不可能 3 既存データの加工 ・マッピング構造の変更 ・Analyzer関連の変更 ・Reindex API 不可能
  • 9. 1-3. Ingest Nodeで可能な加工処理 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Document操作 ①特定条件でDrop 2. フィールド操作 ①追加/削除/リネーム/値セット 3. Index名操作 ①日付を付与、投入先インデックスを変更 4. 文字列操作 ①CSV/JSONパース、文字列置換/正規表現抽出 ②大文字/小文字化
  • 10. 1-3. Ingest Nodeで可能な加工処理 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5. 配列操作 ①Split/Append/Join/Sort 6. データ付与 ①GeoIP/Enrich 7. 教師あり機械学習モデルの推論 ①言語判定 ②回帰/分類 8. Painless Script ①例)文字列配列に対して正規表現で文字列を抽出する
  • 11. 2. 例外処理 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 12. 2-1. エラー発生時の挙動 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Processorでエラーが発生するとインデクシングはSkipされる ① 正しいデータ加工/デバッグのため、例外処理は重要 POST _ingest/pipeline/_simulate { "pipeline": { "processors": [{ "rename": { "field": "server_name", "target_field": "host.name" } }] }, "docs": [ { "_source":{ "xxx": "vega" } } ] } { "docs" : [{ "error" : { "root_cause" : [ { "type" : "illegal_argument_exception", "reason" : "field [server_name] doesn't exist" } ], "type" : "illegal_argument_exception", "reason" : "field [server_name] doesn't exist" } }] } server_nameフィールドが存在しない
  • 13. 2-2. 例外処理パターン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. 代表的な5つの例外処理パターン No 概要 利用機能 1 各Processorを対象にエラーをCatchする (エラー発生時にリカバリする処理) on_failureパラメータ 2 Pipeline全体を対象にエラーをCatchする (想定外エラー発生時の処理) on_failureブロック 3 エラーが発生しても処理を継続する (例外をCatchして何もしない) ignore_failureパラメータ 4 Processorの実行条件を記述する (主にNullチェックで利用) ifパラメータ 5 Nullチェックを簡易化する (スクリプト記述量が減る) Null Safeオペレータ(?.)
  • 14. 2-2. 例外処理パターン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2. Pipeline全体を対象にエラーをCatchする(on_failureブロック) "on_failure" : [{ "set" : { "field" : "error.message", "value" : "{{ _ingest.on_failure_message }}" }, "set" : { "field" : "_index", "value" : "error-index" } }] 想定外のエラーが発生した場合、 ①error.messageにエラー内容を設定 ②投入先をerror-indexに変更 ※https://www.elastic.co/guide/en/elasticsearch/reference/current/handling-failure-in-pipelines.html
  • 15. 2-2. 例外処理パターン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4. Processorの実行条件を記述する(ifパラメータ) PUT _ingest/pipeline/remove_temp { "processors": [ { "remove": { "field": "temp" "if": "ctx.temp != null" } } ] } tempフィールドが存在する場合、 削除する ※https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-conditionals.html
  • 16. 2-2. 例外処理パターン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5. Nullチェックを簡易化する(Null Safeオペレータ) PUT _ingest/pipeline/drop_guests_network { "processors": [ { "drop": { "if": "ctx.network?.name == 'Guest'" } } ] } network階層が存在しない場合、 左辺はnullを返す ※https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-conditional-nullcheck.html
  • 17. 3. Circuit breaker Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 18. Ingest Nodeを実装して いざ、データを投入! Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 20. 3-1. Script compilation circuit breaker(~7.8) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. すべてのスクリプト処理を1つの閾値で判定 2. スクリプトCompileは5分間に75回まで ①script.max_compilations_rate ②あまり上げ過ぎると、OOMEのリスクが高まる 3. スクリプトCacheは100(Compile結果が入る) ①script.cache.max_size ②Elastic Cloudでは変更不可 4. Ingest Nodeでスクリプトにカウントされるもの ①Pipeline Processor/Script Processor/ifパラメータ
  • 21. 3-2. Circuit breaker対策 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Script ProcessorをStored Script(事前コンパイル)にする POST _ingest/pipeline/_simulate { "pipeline": { "processors": [ { "script": {"id": "double"} } ] }, "docs": [ { "_source":{"number": 33} } ] } POST _scripts/double/ { "script": { "lang": "painless", "source": "ctx.number2 = ctx.number * 2" } }
  • 22. 3-2. Circuit breaker対策 Copyright © Acroquest Technology Co., Ltd. All rights reserved. { "docs" : [ { "doc" : { "_index" : "_index", "_type" : "_doc", "_id" : "_id", "_source" : { "number" : 33, "number2" : 66 }, "_ingest" : { "timestamp" : "2020-08-25T17:57:16.391823Z" } } } ] }
  • 25. Elastic Stack 7.9で改善 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 26. 3-3. Script compilation circuit breaker(7.9~) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Circuit breakerの設定はContext単位に設定可能 ①script.context.$CONTEXT.max_compilations_rate ②script.context.$CONTEXT.cache_max_size $CONTEXT Cache (デフォルト) Compile Rate (デフォルト) ingest 200 制限なし processor_conditional 200 制限なし aggs 100 75/5m bucket_aggregation 100 75/5m field 100 75/5m score 100 75/5m : : :
  • 27. 3-4. Ingest Node Pipelines(7.9~) Copyright © Acroquest Technology Co., Ltd. All rights reserved. Kibana UIで Ingest Nodeを 簡単に編集
  • 28. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1. Ingest Nodeはローコード開発のデータ加工基盤 2. 5つの例外処理パターンを利用する 3. Ingest Nodeで多数のScriptを利用する場合は Circuit Breakerが発生しやすい 4. 解決策は以下 ①Stored Scriptを積極利用する ②Ver.7.9以上を利用する
  • 29. ご清聴ありがとうございました。 Evolve the Earth with Emotion of Technology Copyright © Acroquest Technology Co., Ltd. All rights reserved.