すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Simple Log Service SDK for Node.jsを使用して専用SQL機能を使用する

最終更新日:Sep 05, 2024

このトピックでは、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

課金されます

'* | select count(method)'

クエリ 文。 形式: Search statement | Analytic statement 詳細については、「構文」をご参照ください。

デフォルトでは、Simple Log Serviceは100行のデータを返します。 LIMIT句を使用して、返すデータ行の数を指定できます。 詳細は、「LIMIT句」をご参照ください。

powerSql

ブール値

課金されません

true

専用SQL機能を使用するかどうかを指定します。 詳細については、「Dedicated SQLの有効化」をご参照ください。 有効な値:

  • true: 専用SQL機能を使用します。

  • false (デフォルト): 標準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の有効化」をご参照ください。 有効な値:

  • true: 専用SQL機能を使用します。

  • false (デフォルト): 標準SQL機能を使用します。