Simple Log Service は、ルールベースのデータ消費機能を提供します。Simple Log Service Processing Language(SPL)を使用して、Simple Log Service 内のデータを消費する前に処理できます。このトピックでは、ルールベースのデータ消費機能の概念、利点、シナリオ、課金ルール、およびコンシューマーについて説明します。
しくみ
ルールベースのデータ消費とは、SPL を使用してエンティティがリアルタイムでログデータを消費することを指します。エンティティには、サードパーティソフトウェア、さまざまなプログラミング言語のアプリケーション、クラウドサービス、およびストリームコンピューティングフレームワークが含まれます。SPL は、半構造化ログデータをサポートする高性能処理言語です。Simple Log Service は、SPL を使用して、半構造化ログデータを前処理およびクレンジングします。たとえば、Simple Log Service は、行でデータをフィルタリングし、列でデータをプルーニングし、正規表現を使用してデータを抽出し、JSON フィールドを抽出できます。このようにして、クライアントは構造化データを取得して消費できます。SPL 構文の詳細については、「SPL 構文」をご参照ください。
ルールベースのデータ消費機能とクエリおよび分析機能はどちらもデータの読み取りに使用されます。2 つの機能の違いの詳細については、「LogHub と LogSearch の違い」をご参照ください。
シナリオ
ルールベースのデータ消費機能は、データを消費する前にデータを前処理する必要があるストリームコンピューティングおよびリアルタイムコンピューティングのシナリオに適しています。たとえば、行でデータをフィルタリングし、列でデータをプルーニングし、正規表現を使用してデータを抽出し、JSON フィールドを抽出する必要があります。ルールベースのデータ消費機能は時間依存であり、数秒以内にデータ消費を実装します。カスタムデータ保存期間を設定できます。
利点
インターネット経由でデータを消費できます。これにより、トラフィックコストが削減されます。
たとえば、ログデータを Simple Log Service に書き込み、インターネット経由でログデータを消費し、ログデータをフィルタリングしてから、フィルタリング後に取得されたログデータを内部システムに配布するとします。ルールベースのデータ消費機能を使用すると、SPL を使用して Simple Log Service 内のログデータをフィルタリングできます。このようにして、有効なログデータのみが関連するコンシューマーに送信され、トラフィックコストが削減されます。
Simple Log Service 内でデータを計算できます。これにより、ローカル CPU 消費が削減され、計算プロセスが高速化されます。
たとえば、ログデータを Simple Log Service に書き込み、オンプレミスマシンを使用してログデータを消費してから、オンプレミスマシンでログデータを計算するとします。ルールベースのデータ消費機能を使用すると、SPL を使用して Simple Log Service 内のログデータを計算できます。これにより、ローカルリソースの消費が削減されます。
課金ルール
Logstore で従量課金制の課金モードを使用している場合、ルールベースのデータ消費に対して課金されません。ただし、パブリック Simple Log Service エンドポイント経由でデータがプルされる場合、インターネット経由の読み取りトラフィックに対して課金されます。トラフィックは、圧縮後のデータサイズに基づいて計算されます。詳細については、「従量課金制の課金対象項目」をご参照ください。
Logstore で機能別課金モードを使用している場合、Simple Log Service での計算に対して課金されます。パブリック Simple Log Service エンドポイントにアクセスする場合、インターネットトラフィックに対して課金される場合があります。詳細については、「機能別課金の課金対象項目」をご参照ください。
コンシューマー
次の表に、ルールベースのデータ消費機能でサポートされているコンシューマーを示します。
タイプ | コンシューマー | 説明 |
さまざまなプログラミング言語のアプリケーション | さまざまなプログラミング言語のアプリケーション | Java、Python、Go などのプログラミング言語で開発されたアプリケーションは、コンシューマーグループとして Simple Log Service 内のデータを消費できます。詳細については、「Simple Log Service SDK を使用したログデータの消費」および「コンシューマーグループを使用したログの消費」をご参照ください。 ベストプラクティス: Simple Log Service SDK を使用して SPL ベースの消費を実行する |
クラウドサービス | Realtime Compute for Apache Flink | Realtime Compute for Apache Flink を使用して、Simple Log Service 内のデータをリアルタイムで消費できます。詳細については、「Simple Log Service コネクタ」をご参照ください。 ベストプラクティス: |
ストリームコンピューティングフレームワーク | Apache Kafka | 要件がある場合は、チケットを送信してください。 |
使用上の注意
ルールベースのデータ消費には、Simple Log Service での複雑な計算が含まれます。SPL ベースの計算の複雑さとデータ機能の違いにより、Simple Log Service がデータを読み取るときのレイテンシがわずかに増加します。たとえば、Simple Log Service が 5 MB のデータを読み取ると、読み取りレイテンシが 10 ~ 100 ミリ秒増加します。ほとんどの場合、読み取りレイテンシが増加しても、Simple Log Service によるデータの読み取りからオンプレミスマシンでのデータの計算までに使用される合計時間は短縮されます。
ルールベースのデータ消費機能を使用していて、無効な SPL 構文または欠落しているソースフィールドが存在する場合、データが失われたり、データ消費が失敗したりする可能性があります。詳細については、「エラーの処理」をご参照ください。
ルールベースのデータ消費機能を使用する場合、最大 4 KB の SPL 文を指定できます。
ルールベースのデータ消費とシャードからの通常のリアルタイムデータ消費には、同じ読み取り制限があります。ルールベースのデータ消費の読み取りトラフィックとは、SPL ベースのデータ処理前の生データのサイズを指します。制限の詳細については、「データの読み取りと書き込み」をご参照ください。
FAQ
ルールベースのデータ消費で ShardReadQuotaExceed エラーが発生した場合はどうすればよいですか。
このエラーは、データの読み取りトラフィックがシャードの読み取り容量を超えたために発生します。解決策:
コンシューマーが待機して再試行できるようにします。
シャードを分割します。シャードが分割されると、新しいデータが消費されます。これにより、各シャードの読み取り速度が低下します。
ルールベースのデータ消費のスロットリングポリシーとは何ですか。
ルールベースのデータ消費のスロットリングポリシーは、通常のデータ消費のスロットリングポリシーと同じです。詳細については、「データの読み取りと書き込み」をご参照ください。ルールベースのデータ消費のトラフィックとは、SPL ベースのデータ処理前の生データのサイズを指します。
圧縮された生データのサイズが 100 MB で、注:
* | where method = 'POST'
SPL 文を使用してデータがフィルタリングされた場合、コンシューマーに返される圧縮データのサイズは 20 MB です。読み取りトラフィックは、100 MB に基づいて計算されます。
ルールベースのデータ消費機能を使用した後、[プロジェクトの監視] タブの [トラフィック/分] グラフの送信トラフィックが少ないのはなぜですか。
[トラフィック/分] グラフの送信トラフィックとは、SPL ベースのデータ処理後のデータサイズを指します。指定した SPL 文に行フィルタリングや列プルーニングなど、データサイズを縮小するために使用される命令が含まれている場合、送信トラフィックが少ない可能性があります。詳細については、「プロジェクトの監視」をご参照ください。