このトピックでは、Simple Log Service SDK for Node.jsを使用して専用SQL機能を使用する方法について説明します。
前提条件
RAM (Resource Access Management) ユーザーが作成され、必要な権限がRAMユーザーに付与されます。 詳細については、「RAMユーザーの作成とRAMユーザーへの権限付与」をご参照ください。
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数が設定されています。 詳細については、「環境変数の設定」をご参照ください。
重要Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 RAMユーザーのAccessKeyペアを使用して、API操作を呼び出したり、ルーチンのO&Mを実行したりすることを推奨します。
プロジェクトコードにAccessKey IDまたはAccessKey secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
Simple Log Service SDK for Node.jsがインストールされています。 詳細については、「Simple Log Service SDK For Node.jsのインストール」をご参照ください。
背景情報
Simple Log Serviceは、SQL分析機能を強化する専用SQL機能を提供します。 この機能を使用して、数千億のデータレコードを処理できます。 詳細については、「Dedicated SQLの有効化」をご参照ください。
Log Serviceは、executeLogStoreSqlおよびexecuteProjectSql操作を提供します。 これらの操作を呼び出して、Dedicated SQL機能を効率的に使用できます。
executeLogStoreSql: 指定されたLogstoreで専用SQL機能を使用します。 このAPI操作は、SQL-92構文をサポートしています。 クエリステートメントは
Searchステートメント | Analyticステートメント
の形式であり、分析ステートメントは標準のSQL-92構文に従います。executeProjectSql: 指定したプロジェクトで専用SQL機能を使用します。 このAPI操作は、SQL-92構文をサポートしています。 SQL文のWHERE句でフィルター条件と時間範囲を指定する必要があります。
データを分析する前にデータをフィルタリングする場合は、executeLogStoreSql操作を呼び出して、Searchステートメント | Analyticステートメント
形式のクエリステートメントを指定することを推奨します。 これにより、分析効率が向上する。
サンプルコード
次のサンプルコードは、Dedicated SQL機能の使用方法の例を示しています。 詳細については、「Alibaba Cloud Simple Log Service SDK For Node.js」をご参照ください。
const ALY = require('./node_modules/aliyun-sdk/index')
var sls = new ALY.SLS({
// In this example, the AccessKey ID and AccessKey secret are obtained from environment variables.
"accessKeyId": process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
"secretAccessKey": process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
// In this example, the security token is obtained from environment variables.
"securityToken" : process.env.ALIYUN_SECURITY_TOKEN,
// The Simple Log Service endpoint. In this example, the Simple Log Service endpoint for the China (Hangzhou) region is used. Replace the parameter value with the actual endpoint.
endpoint: 'http://cn-hangzhou.log.aliyuncs.com',
// The version number of Simple Log Service API. You do not need to modify the parameter.
apiVersion: '2015-06-01'
// Optional.
//,httpOptions: {
// timeout: 1000 // You can set the parameter to 1 second. By default, the timeout parameter is not specified.
//}
});
module.exports = sls;
// The name of the project.
var projectName = 'aliyun-test-project';
// The name of the Logstore.
var logStoreName = 'aliyun-test-logstore';
// The end of the time range to query.
var to = Math.floor(new Date().getTime() / 1000);
// The beginning of the time range to query.
var from = to - 900; // The value 900 indicates that the query time range is 15 minutes.
sls.executeLogStoreSql({
projectName: projectName,
logStoreName: logStoreName,
from: from,
to: to,
query: '*|select count(method)',
powerSql:true
}, function(err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log(data);
console.log('processed rows',data.headers['x-log-processed-rows']); // The number of rows of log data that is processed.
console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']); // The time that is consumed to execute the SQL statement.
console.log('cores',data.headers['x-log-cpu-cores']); // The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled.
console.log('cpuSec',data.headers['x-log-cpu-sec']); // The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items.
console.log('success:', data);
});
sls.executeProjectSql({
projectName: projectName,
logStoreName: logStoreName,
from: from,
to: to,
query: 'select count(0) from ' + logStoreName + ' where __time__ > '+ from +' and __time__ < '+to+'',
powerSql:true
}, function(err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log(data);
console.log('processed rows',data.headers['x-log-processed-rows']); // The number of rows of log data that is processed.
console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']); // The time that is consumed to execute the SQL statement.
console.log('cores',data.headers['x-log-cpu-cores']); // The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled.
console.log('cpuSec',data.headers['x-log-cpu-sec']); // The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items.
console.log('success:', data);
});
executeLogStoreSql操作を呼び出して、Dedicated SQL機能を使用できます。 次の形式でリクエストを作成する必要があります。
sls.executeLogStoreSql({
projectName: projectName,
logStoreName: logStoreName,
from: from,
to: to,
query: '*|select count(method)',
powerSql:true
})
次の表に、リクエストパラメーターを示します。
パラメーター | データ型 | 必須 | 例 | 説明 |
projectName | String | 課金されます | aliyun-project-test | プロジェクトの名前。 基本設定を構成するときは、projectNameパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。 |
logStoreName | String | 課金されます | aliyun-logstore-test | ログストアの名前 基本設定を構成するときは、logStoreNameパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。 |
から | Long | 課金されます | 1718760075 | 照会する期間の開始時刻です。 この値は、1970年1月1日00:00:00 UTCから経過した秒数を表すUNIXタイムスタンプです。 基本設定を構成するときは、fromパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。 |
に | Long | 課金されます | 1718788875 | 照会する期間の終了時刻を設定します。 この値は、1970年1月1日00:00:00 UTCから経過した秒数を表すUNIXタイムスタンプです。 基本設定を構成するときは、toパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。 |
query | String | 課金されます |
| クエリ 文。 形式: デフォルトでは、Simple Log Serviceは100行のデータを返します。 LIMIT句を使用して、返すデータ行の数を指定できます。 詳細は、「LIMIT句」をご参照ください。 |
powerSql | ブール値 | 課金されません | true | 専用SQL機能を使用するかどうかを指定します。 詳細については、「Dedicated SQLの有効化」をご参照ください。 有効な値:
|
専用SQL機能を使用するには、executeProjectSql操作を呼び出します。 次の形式でリクエストを作成する必要があります。
sls.executeProjectSql({
projectName: projectName,
query: 'select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())',
powerSql:true
})
次の表に、リクエストパラメーターを示します。
パラメーター | データ型 | 必須 | 例 | 説明 |
projectName | String | 課金されます | aliyun-project-test | プロジェクトの名前。 基本設定を構成するときは、projectNameパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。 |
query | String | 課金されます | select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300および__time__ < to_unixtime(now()) | SQL文。 SQL文のWHERE句で検索条件を指定する必要があります。 デフォルトでは、Simple Log Serviceは100行のデータを返します。 LIMIT句を使用して、返すデータ行の数を指定できます。 詳細は、「LIMIT句」をご参照ください。 |
powerSql | ブール値 | 課金されません | true | 専用SQL機能を使用するかどうかを指定します。 詳細については、「Dedicated SQLの有効化」をご参照ください。 有効な値:
|