このトピックでは、Simple Log Service SDK for Node.jsの使用を開始し、一般的な操作を実行する方法について説明します。 たとえば、プロジェクトの作成、Logstoreの作成、ログの書き込み、ログの照会ができます。
前提条件
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のインストール」をご参照ください。
サンプルコード
Node.jsコードを作成してログを収集する
この例では、SLSQuickStart.jsという名前のファイルが作成されます。 このファイルのサンプルコードでは、API操作を呼び出してプロジェクトを作成し、Logstoreを作成し、インデックスを作成し、ログを書き込み、ログを照会する方法の例を示します。 例:
const ALY = require('aliyun-sdk') 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, // 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 of the SDK. The value is fixed. apiVersion: '2015-06-01' }) // Required. The name of the project. const projectName = "you_project_name" // Required. The name of the Logstore. const logstoreName= "your_logstore_name" // Create a project. function createProject () { const param = { projectDetail: { projectName, description: "description about project" } } sls.createProject(param, function(err, data) { if (err) { console.error('error:', err) } else { console.log('The project is created', data) } }) } // Create a Logstore. function createLogStore() { const param = { projectName, logstoreDetail: { logstoreName: logstoreName, // Required. The retention period of data. Unit: days. If you set the ttl parameter to 3650, data is permanently stored. ttl: 3, // Required. The number of shards. shardCount: 2 } } sls.createLogstore(param, function (err, data) { if (err) { console.log(err) } else { console.log(' The Logstore is created', data) } }) } // Create indexes for the Logstore. function createIndex () { const param = { projectName, logstoreName, indexDetail: { line: { token: [";"], include_keys: ["key2", "key3"], caseSensitive:false } } } sls.createIndex(param, function(err, data) { if (err) { console.log(err) } else { console.log('Indexes for the Logstore are created', data) } }) } // Write logs. function writeLog () { const param = { projectName, logStoreName: logstoreName, logGroup: { // Required. The logs that you want to write. logs: [ { time: Math.floor(new Date().getTime() / 1000), contents: [ { key: 'a', value: '1' }, { key: 'a', value: '2' }, { key: 'a', value: '3' } ] } ], topic: 'vv', source: '127.0.0.1' } } sls.putLogs(param, function (err, data) { if (err) { console.error('error:', err) } else { console.log('Logs are written', data) } }) } // Query logs. function queryLog () { // Query logs of the last hour. const to = Math.floor(new Date().getTime() / 1000) const from = to - 3600 const param = { // Required. The name of the project. projectName, // Required. The name of the Logstore. logStoreName: logstoreName, // Required. The start time. The value is accurate to the second. from, // Required. The end time. The value is accurate to the second. to, // Optional. The topic of logs. topic: "", // Optional. The keyword that is used to query logs. If you leave this parameter empty, all logs are queried. query: "" } sls.getLogs(param, function (err, data) { if(err) { console.error('error:', err) } else{ console.log('Logs of the last hour are queried', data) } }) } // Call the following functions: createProject() setTimeout(() => { createLogStore() }, 10 * 1000) setTimeout(() => { createIndex() }, 20 * 1000) setTimeout(() => { writeLog() }, 80 * 1000) setTimeout(() => { queryLog() }, 90 * 1000)
サンプル出力:
The project is created {request_id: '6125F2E882518E4618E7C316', headers: {…}, body: {…}} The Logstore is created {request_id: '6125F2F295D4E2210BE5BD59', headers: {…}, body: {…}} Indexes for the Logstore are created {request_id: '6125F2FCE681A8360B6B3365', headers: {…}, body: {…}} Logs are written {request_id: '6125F3380EBCCCA1834DBD83', headers: {…}, body: {…}} Logs of the last hour are queried {request_id: '6125F34214C3A33B68052D5C', headers: {…}, body: {…}}
サンプルコードの詳細については、「Alibaba Cloud Simple Log Service SDK For Node.js」をご参照ください。
Logtailを使用してNode.jsログを収集する
Logtailを使用して、Node.jsのlog4jsモジュールからNode.jsログを収集できます。 詳細については、「Node.jsログの収集」をご参照ください。