本文介紹通過Node.js SDK使用SQL獨享版的程式碼範例。
前提條件
已建立RAM使用者並完成授權。具體操作,請參見建立RAM使用者並完成授權。
已配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_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獨享版。
- 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 | 是 |
| Log Service查詢和分析語句,格式為 Log Service預設返回100行結果,您也可以使用LIMIT子句指定返回結果的行數。更多資訊,請參見LIMIT子句。 |
powerSql | Boolean | 否 | true | 是否使用SQL獨享版。更多資訊,請參見開啟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獨享版。
|