Simple Log Service プロジェクトのログデータは、さまざまな Logstore、Metricstore、またはリージョンにまたがる場合があります。 Simple Log Service の StoreView 機能を使用すると、これらのリソースに対してリージョン間およびストア間の連合クエリを実行できます。
StoreView とは
SLS プロジェクトにおいて、StoreView は、対象とする Logstore または Metricstore 間の関係を定義する仮想リソースです。StoreView を通じてストアを横断してデータをクエリできますが、データを変更することはできません。次の 2 種類があります。StoreView for Logstore は、SPL 構文を使用したクエリ、分析、事前定義をサポートします。StoreView for Metricstore は、Metricstore 横断クエリのみをサポートします。
[[ログタイプのデータビュー]または[時系列タイプのデータビュー]]では、Logstore または Metricstore を横断してデータをクエリできます。たとえば、Logstore 1 と Logstore 2 の両方に age フィールドが含まれ、StoreView 1 で関連付けられている場合、StoreView 1 で age をクエリすると、両方から一致する結果が返されます。

権限
RAM ユーザーまたは RAM ロールとして StoreView を使用するには、必要な権限が必要です。権限は、RAM ユーザーの作成と権限付与、Alibaba Cloud サービス用の RAM ロールの作成と RAM ロールへの権限付与、クロスアカウントのリソースアクセスのための RAM ロールの使用を通じて付与します。
権限は、[システムポリシー]または[カスタムポリシー]を使用して付与できます。
-
システムポリシー: Alibaba Cloud によって事前定義されています。これらのポリシーは使用できますが、変更はできません。
-
Simple Log Service の読み取り専用権限: AliyunLogReadOnlyAccess。
-
Simple Log Service の完全な管理権限: AliyunLogFullAccess。
-
-
カスタムポリシー: ユーザーが作成および管理する、ユーザー定義のポリシーです。
-
RAM ユーザーまたは RAM ロールとして StoreView を作成したり、データをクエリしたりするには、関連付けられているすべての Logstore と Metricstore に対する Logstore 内のログをクエリする権限が必要です。カスタムポリシーに次のステートメントを追加してください。
重要-
ポリシーでは、
Logstoreは Logstore または Metricstore のいずれかを指すことができます。 -
ポリシーでは、
storeviewは [ログタイプのデータビュー]と[時系列タイプのデータビュー]の両方を指すことができます。
{ "Version": "1", "Statement": [ { "Action": "log:GetLogStoreLogs", "Resource":[ "acs:log:*:*:project/${projectName}/Logstore/*", "acs:log:*:*:project/${projectName}/storeview/*" ], "Effect": "Allow" } ] } -
-
制限事項
-
各 Simple Log Service プロジェクトにつき、最大 10 個の[[ログタイプのデータビュー]または[時系列タイプのデータビュー]]
-
各[[ログタイプのデータビュー]または[時系列タイプのデータビュー]]は、最大 50 個の Logstore または Metricstore と関連付けることができます。
-
[[ログタイプのデータビュー]または[時系列タイプのデータビュー]]内のすべての Logstore または Metricstore は、同じ Alibaba Cloud アカウントに属している必要があります。
-
StoreView は、中国本土内でのみリージョン横断分析をサポートします。越境分析はサポートされていません。
事前定義
概念
Logstore の StoreView は、作成時に SPL 構文を使用した事前定義をサポートしています。 事前定義クエリは、SPL コマンドおよび関数、および SPL コマンドおよび関数のキーワードのみをサポートします。 事前定義を使用すると、データをフィルタリングしたり、集計のためにフィールド名を揃えたりできます。 たとえば、LogStore1 の a フィールドと LogStore2 の b フィールドを集計するには、extend a = b を使用して列名を揃えます。 例。
制限事項
事前定義は StoreView for Logstore でのみサポートされており、StoreView for Metricstore ではサポートされていません。
サポートされるコマンド
Logstore の StoreView の事前定義クエリでは、SPL コマンドと関数およびSPL コマンドと関数の演算子がサポートされています。
SQL および SPL 関数の詳細については、「関数の概要」をご参照ください。
例
StoreView for Logstore の作成または変更の詳細については、「StoreView for Logstore の作成」をご参照ください。
たとえば、Logstore 1 のフィールド a と Logstore 2 のフィールド b を集計する必要がある場合、StoreView を作成または変更するときに extend a = b (事前定義) を使用して列名を一致させることができます。
例 1
Logstore1 で * | where a>1 を事前に定義した場合、StoreView 内の a>1 に一致するログのみが以降の分析に含まれます。
実際のクエリは * | where cast(a as integer) > 1 です。データプレビューテーブルは、フィルタリングされたログの a の値が 10 と 9 であり、両方とも 1 より大きいことを示しています。
例 2
Logstore1 で * | extend b = a を事前定義すると、StoreView の Logstore1 に b という名前の列が追加されます。この列は、列 a と同じ値を持ち、後続の集計に使用されます。
extend b = a を事前定義すると、データプレビューテーブルには、Logstore 1 に新しい列 b が追加され、その値が列 a の値と同じであることが示されます。
クエリ
StoreView for Logstore
Logstore の StoreView は、複数の Logstore にまたがるクエリをサポートします。たとえば、ログタイプのデータビュー が LogStore-1 と LogStore-2 に関連付けられており、両方の Logstore に request_method フィールドが含まれている場合、クエリ (request_method:GET or request_method:POST) and status in [200 299] は、LogStore-1 と LogStore-2 の両方から一致するログを返します。クエリ構文については、「クエリ構文と機能」をご参照ください。
[ログタイプのデータビュー]に同一のログコンテンツを持つ 2 つの Logstore が含まれている場合、キーワード検索は両方の Logstore からすべての結果を返します。タグフィールドを使用して、各ログのソース Logstore を識別できます。
クエリ結果では、各ログは __tag__:__logstore__ タグフィールドで識別され、ソース Logstore を示します。たとえば、値が logstore-2 の場合、ログが Logstore 2 からのものであることを示します。
StoreView for Metricstore
StoreView for Metricstore は、ストア横断クエリをサポートします。StoreView for Metricstore が Metricstore 1 と Metricstore 2 に関連付けられている場合、クエリボックスに PromQL ステートメントを入力します。バックエンドは、関連付けられているすべての Metricstore を自動的にクエリします。クエリ構文の詳細については、「メトリックデータのクエリおよび分析構文」をご参照ください。StoreView for Metricstore の作成または変更の詳細については、「Metricstore を横断したデータクエリ」をご参照ください。
StoreView for Metricstore は PromQL クエリのみをサポートします。SQL クエリ、分析、および事前定義はサポートされていません。
[StoreView の作成] ダイアログボックスで、[StoreView 名] に metric_storeview_test などを入力し、[StoreView タイプ] に [時系列] を選択し、[関連ストア] 領域で目的の Metricstore を追加して、[OK] をクリックしてください。
分析
概念
データビュー は、ストアを横断した集計と分析をサポートします。 たとえば、StoreView が LogStore-1 と LogStore-2 に関連付けられており、両方の Logstore にフィールド a が含まれている場合、クエリ * | select a, count(1) group by a は、LogStore-1 と LogStore-2 の両方からフィールド a の合計数を返します。
集計には一貫したフィールドキーが必要です。キー名が異なる場合は、事前定義を使用してデータをフィルタリングし、フィールド名を変更します。詳細については、「事前定義機能」をご参照ください。
制限事項
データ分析は StoreView for Logstore でのみサポートされており、StoreView for Metricstore ではサポートされていません。
サポートされる関数
SQL および SPL 関数の詳細については、「関数の概要」をご参照ください。
例
例 1
[ログタイプのデータビュー]は、同じサービスの同一のログコンテンツを持つ Logstore に関連付けられています。Logstore 間でインデックス設定が同一であることを確認してください (たとえば、全文検索が有効になっているか、フィールドインデックスが同じように設定されているかなど)。その後、Logstore を[ログタイプのデータビュー]に追加してください。
ログタイプのデータビューを作成すると、SQL を使用して分析できます。 直近 15 分間における、異なる status 値の統計結果は、2 つの Logstore からのすべてのログを集計したものです。
クエリステートメントは SELECT status, count(*) AS PV GROUP BY status です。クエリ結果は、status=200 の場合は PV=4、status=302 の場合は PV=8 であることを示しています。
例 2
ログタイプのデータビュー は、同じサービスの異なる Logstore に関連付けられていますが、一部のログフィールドの名前が異なります。 この場合、事前定義された SPL を使用してフィールド名を統一できます。 SPL 文 *|extend request_method = method を使用して、method フィールドを request_method フィールドに名前変更します。 「データのプレビュー」をクリックすると、事前定義の結果をプレビューできます。
後で、 request_method を使用してクエリ分析を行うことができます。
storeview_test StoreView でクエリ * | SELECT request_method, count(*) GROUP BY request_method order by request_method desc を実行してください。グラフは、request_method が GET のリクエストが 4 件、request_method が null のリクエストが 1 件であることを示しています。
StoreView とストアの比較
|
機能 |
Logstore / Metricstore |
StoreView |
|
クイック分析 |
サポート |
サポート |
|
グラフ |
サポート |
サポート |
|
ダッシュボード |
サポート |
サポート |
|
ログのダウンロード |
サポート |
サポート |
|
保存された検索 |
サポート |
サポート対象外 |
|
スケジュール化された SQL |
サポート |
サポート対象外 |
|
アラート |
サポート |
サポート対象外 |
|
ログクラスタリング |
サポート |
サポート対象外 |
|
フィールド分析 |
サポート |
サポート対象外 |