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

Simple Log Service:Node.js SDK クイックスタート

最終更新日:Sep 05, 2024

このトピックでは、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ログの収集」をご参照ください。