全部產品
Search
文件中心

Simple Log Service:通過Node.js SDK使用SQL獨享版

更新時間:Jun 30, 2024

本文介紹通過Node.js SDK使用SQL獨享版的程式碼範例。

前提條件

  • 已建立RAM使用者並完成授權。具體操作,請參見建立RAM使用者並完成授權

  • 已配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數

    重要
    • 阿里雲帳號的AccessKey擁有所有API的存取權限,建議您使用RAM使用者的AccessKey進行API訪問或日常營運。

    • 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

  • 已完成Node.js SDK安裝。更多資訊,請參見安裝Node.js SDK

背景資訊

Log Service提供SQL獨享版,用於增強SQL分析能力,支援千億行資料的計算。更多資訊,請參見開啟SQL獨享版

Log Service提供executeLogStoreSql介面和executeProjectSql介面,協助您更簡單的使用SQL獨享版。
  • executeLogStoreSql介面:在指定Logstore中使用SQL獨享版。該介面支援的查詢和分析文法相容標準的SQL92文法,格式為查詢語句|分析語句,其中分析語句採用標準的SQL92文法。
  • executeProjectSql介面:在指定Project中使用SQL獨享版。該介面支援的查詢和分析文法為標準的SQL92文法,即您的過濾條件和查詢時間要寫在SQL分析語句的WHERE語句中。
說明 如果您執行分析操作時,需要先過濾一部分資料再分析,建議您使用查詢語句|分析語句文法,效率更高,即推薦使用executeLogStoreSql介面。

程式碼範例

程式碼範例如下,更多資訊,請參見Aliyun Log Node.js SDK

const ALY = require('./node_modules/aliyun-sdk/index')

var sls = new ALY.SLS({
    // 本樣本從環境變數中擷取AccessKey ID和AccessKey Secret。
    "accessKeyId": process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,                  
    "secretAccessKey": process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET, 
    //本樣本從環境變數中擷取SecurityToken。
    "securityToken" : process.env.ALIYUN_SECURITY_TOKEN,

    //Log Service的服務入口。此處以杭州為例,其它地區請根據實際情況填寫。
    endpoint: 'http://cn-hangzhou.log.aliyuncs.com',

    //Log ServiceAPI版本號碼,無需修改。
    apiVersion: '2015-06-01'

    //可選配置。
    //,httpOptions: {
    //    timeout: 1000  //1秒, 預設沒有timeout。
    //} 
});
module.exports = sls;

//Project名稱。
var projectName = 'aliyun-test-project';
//Logstore名稱。
var logStoreName = 'aliyun-test-logstore';
//查詢的結束時間。
var to = Math.floor(new Date().getTime() / 1000);
//查詢的開始時間。
var from = to - 900; //15分鐘。

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']); //處理的日誌行數。
        console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']);  //SQL分析執行的時間長度。
        console.log('cores',data.headers['x-log-cpu-cores']);     //開啟SQL獨享版後,執行SQL分析所使用的CPU核心數。
        console.log('cpuSec',data.headers['x-log-cpu-sec']);      //開啟SQL獨享版後,執行SQL分析所花費的CPU時間,單位為秒。SQL獨享版按照CPU時間計費,更多資訊,請參見計費項目。
        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']); //處理的日誌行數。
        console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']);  //SQL分析執行的時間長度。
        console.log('cores',data.headers['x-log-cpu-cores']);     //開啟SQL獨享版後,執行SQL分析所使用的CPU核心數。
        console.log('cpuSec',data.headers['x-log-cpu-sec']);      //開啟SQL獨享版後,執行SQL分析所花費的CPU時間,單位為秒。SQL獨享版按照CPU時間計費,更多資訊,請參見計費項目。
        console.log('success:', data);
    
    });            

調用executeLogStoreSql介面使用SQL獨享版,介面格式如下:

sls.executeLogStoreSql({
        projectName: projectName,
        logStoreName: logStoreName,
        from: from,
        to: to, 
        query:  '*|select count(method)',
        powerSql:true 
    })

各個參數說明如下表所示。

參數名稱

類型

是否必選

樣本

說明

projectName

String

aliyun-project-test

Project名稱。

在配置基本資料時,已定義projectName,此處無需配置。

logStoreName

String

aliyun-logstore-test

Logstore名稱。

在配置基本資料時,已定義logStoreName,此處無需配置。

from

Long

1718760075

查詢的起始時間。Unix時間戳記格式,表示從1970-1-1 00:00:00 UTC計算起的秒數。

在配置基本資料時,已定義from,此處無需配置。

to

Long

1718788875

查詢的結束時間。Unix時間戳記格式,表示從1970-1-1 00:00:00 UTC計算起的秒數。

在配置基本資料時,已定義to,此處無需配置。

query

String

'*|select count(method)'

Log Service查詢和分析語句,格式為查詢語句|分析語句。更多資訊,請參見基礎文法

Log Service預設返回100行結果,您也可以使用LIMIT子句指定返回結果的行數。更多資訊,請參見LIMIT子句

powerSql

Boolean

true

是否使用SQL獨享版。更多資訊,請參見開啟SQL獨享版

  • true:使用SQL獨享版。

  • false(預設值):使用SQL普通版。

調用executeProjectSql介面使用SQL獨享版,介面格式如下:

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

Project名稱。

在配置基本資料時,已定義projectName,此處無需配置。

query

String

select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())

標準的SQL語句,即您的查詢語句要寫在SQL分析語句的WHERE語句中。

Log Service預設返回100行結果,您也可以使用LIMIT子句指定返回結果的行數。更多資訊,請參見LIMIT子句

powerSql

Boolean

true

是否使用SQL獨享版。更多資訊,請參見開啟SQL獨享版

  • true:使用SQL獨享版。

  • false(預設值):使用SQL普通版。