通過Node.js SDK使用SQL獨(dú)享版
本文介紹通過Node.js SDK使用SQL獨(dú)享版的代碼示例。
前提條件
已創(chuàng)建RAM用戶并完成授權(quán)。具體操作,請(qǐng)參見創(chuàng)建RAM用戶并完成授權(quán)。
已配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請(qǐng)參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量。
重要阿里云賬號(hào)的AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶的AccessKey進(jìn)行API訪問或日常運(yùn)維。
強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。
已完成Node.js SDK安裝。更多信息,請(qǐng)參見安裝Node.js SDK。
背景信息
日志服務(wù)提供SQL獨(dú)享版,用于增強(qiáng)SQL分析能力,支持千億行數(shù)據(jù)的計(jì)算。更多信息,請(qǐng)參見開啟SQL獨(dú)享版。
- executeLogStoreSql接口:在指定Logstore中使用SQL獨(dú)享版。該接口支持的查詢和分析語法兼容標(biāo)準(zhǔn)的SQL92語法,格式為
查詢語句|分析語句
,其中分析語句采用標(biāo)準(zhǔn)的SQL92語法。 - executeProjectSql接口:在指定Project中使用SQL獨(dú)享版。該接口支持的查詢和分析語法為標(biāo)準(zhǔn)的SQL92語法,即您的過濾條件和查詢時(shí)間要寫在SQL分析語句的WHERE語句中。
查詢語句|分析語句
語法,效率更高,即推薦使用executeLogStoreSql接口。代碼示例
代碼示例如下,更多信息,請(qǐng)參見Aliyun Log Node.js SDK。
const ALY = require('./node_modules/aliyun-sdk/index')
var sls = new ALY.SLS({
// 本示例從環(huán)境變量中獲取AccessKey ID和AccessKey Secret。
"accessKeyId": process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
"secretAccessKey": process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
//本示例從環(huán)境變量中獲取SecurityToken。
"securityToken" : process.env.ALIYUN_SECURITY_TOKEN,
//日志服務(wù)的服務(wù)入口。此處以杭州為例,其它地域請(qǐng)根據(jù)實(shí)際情況填寫。
endpoint: 'http://cn-hangzhou.log.aliyuncs.com',
//日志服務(wù)API版本號(hào),無需修改。
apiVersion: '2015-06-01'
//可選配置。
//,httpOptions: {
// timeout: 1000 //1秒, 默認(rèn)沒有timeout。
//}
});
module.exports = sls;
//Project名稱。
var projectName = 'aliyun-test-project';
//Logstore名稱。
var logStoreName = 'aliyun-test-logstore';
//查詢的結(jié)束時(shí)間。
var to = Math.floor(new Date().getTime() / 1000);
//查詢的開始時(shí)間。
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']); //處理的日志行數(shù)。
console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']); //SQL分析執(zhí)行的時(shí)長(zhǎng)。
console.log('cores',data.headers['x-log-cpu-cores']); //開啟SQL獨(dú)享版后,執(zhí)行SQL分析所使用的CPU核數(shù)。
console.log('cpuSec',data.headers['x-log-cpu-sec']); //開啟SQL獨(dú)享版后,執(zhí)行SQL分析所花費(fèi)的CPU時(shí)間,單位為秒。SQL獨(dú)享版按照CPU時(shí)間計(jì)費(fèi),更多信息,請(qǐng)參見計(jì)費(fèi)項(xiàng)。
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']); //處理的日志行數(shù)。
console.log('elapsed milli',data.headers['x-log-elapsed-millisecond']); //SQL分析執(zhí)行的時(shí)長(zhǎng)。
console.log('cores',data.headers['x-log-cpu-cores']); //開啟SQL獨(dú)享版后,執(zhí)行SQL分析所使用的CPU核數(shù)。
console.log('cpuSec',data.headers['x-log-cpu-sec']); //開啟SQL獨(dú)享版后,執(zhí)行SQL分析所花費(fèi)的CPU時(shí)間,單位為秒。SQL獨(dú)享版按照CPU時(shí)間計(jì)費(fèi),更多信息,請(qǐng)參見計(jì)費(fèi)項(xiàng)。
console.log('success:', data);
});
調(diào)用executeLogStoreSql接口使用SQL獨(dú)享版,接口格式如下:
sls.executeLogStoreSql({
projectName: projectName,
logStoreName: logStoreName,
from: from,
to: to,
query: '*|select count(method)',
powerSql:true
})
各個(gè)參數(shù)說明如下表所示。
參數(shù)名稱 | 類型 | 是否必選 | 示例 | 說明 |
projectName | String | 是 | aliyun-project-test | Project名稱。 在配置基本信息時(shí),已定義projectName,此處無需配置。 |
logStoreName | String | 是 | aliyun-logstore-test | Logstore名稱。 在配置基本信息時(shí),已定義logStoreName,此處無需配置。 |
from | Long | 是 | 1718760075 | 查詢的起始時(shí)間。Unix時(shí)間戳格式,表示從1970-1-1 00:00:00 UTC計(jì)算起的秒數(shù)。 在配置基本信息時(shí),已定義from,此處無需配置。 |
to | Long | 是 | 1718788875 | 查詢的結(jié)束時(shí)間。Unix時(shí)間戳格式,表示從1970-1-1 00:00:00 UTC計(jì)算起的秒數(shù)。 在配置基本信息時(shí),已定義to,此處無需配置。 |
query | String | 是 |
| 日志服務(wù)查詢和分析語句,格式為 日志服務(wù)默認(rèn)返回100行結(jié)果,您也可以使用LIMIT子句指定返回結(jié)果的行數(shù)。更多信息,請(qǐng)參見LIMIT子句。 |
powerSql | Boolean | 否 | true | 是否使用SQL獨(dú)享版。更多信息,請(qǐng)參見開啟SQL獨(dú)享版。
|
調(diào)用executeProjectSql接口使用SQL獨(dú)享版,接口格式如下:
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
})
各個(gè)參數(shù)說明如下表所示。
參數(shù)名稱 | 類型 | 是否必選 | 示例 | 說明 |
projectName | String | 是 | aliyun-project-test | Project名稱。 在配置基本信息時(shí),已定義projectName,此處無需配置。 |
query | String | 是 | select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now()) | 標(biāo)準(zhǔn)的SQL語句,即您的查詢語句要寫在SQL分析語句的WHERE語句中。 日志服務(wù)默認(rèn)返回100行結(jié)果,您也可以使用LIMIT子句指定返回結(jié)果的行數(shù)。更多信息,請(qǐng)參見LIMIT子句。 |
powerSql | Boolean | 否 | true | 是否使用SQL獨(dú)享版。更多信息,請(qǐng)參見開啟SQL獨(dú)享版。
|