Node.js SDK使开发人员可以非常方便地使用Node.js程序操作阿里云日志服务。本文档通过一个示例来介绍如何使用Node.js SDK将日志数据写入到日志服务。

操作步骤

  1. 创建阿里云账号。

    具体方法请参考阿里云账号注册流程

    为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。

  2. 获取阿里云访问密钥。
    为了使用Node.js SDK,您必须申请阿里密钥云的访问密钥

    登录阿里云密钥管理页面。选择一对用于 SDK 的访问密钥对。如果没有,请创建一对新访问密钥,且保证它处于启用状态。有关如何创建访问密钥,参见准备流程

    该密钥对会在下面的步骤中使用,请妥善保管以防泄露。请参见配置了解更多关于SDK如何使用访问密钥的信息。

  3. 搭建项目。
    1. 使用基于Node.js的web开发框架Express搭建项目。
      关于搭建项目的详细操作步骤请参见文档
    2. 安装morgan
    3. 在搭建好的项目中创建app.js。
      app.js代码如下:
      var express = require('express')
      var morgan = require('morgan')
      var app = express()
      const logger = morgan(function (tokens, req, res) {
        return [
          tokens.method(req, res),
          tokens.url(req, res),
          tokens.status(req, res),
          tokens.res(req, res, 'content-length'), '-',
          tokens['response-time'](req, res), 'ms'
        ].join(' ')
      })
      app.use(logger)
      app.get('/', (req, res) => res.send('Hello World!'))
      app.listen(3000, () => console.log('Example app listening on port 3000!'))
    4. 执行node app.js启动项目。
    打开http://localhost:3000,访问后产生访问日志。访问日志
  4. 将日志写入到日志服务。
    1. 安装aliyun-sdk。
      单击这里下载aliyun-sdk。执行npm install aliyun-sdk命令进行安装。
    2. 在日志服务控制台创建Project和Logstore。
      关于如何创建Project和Logstore请参见准备流程
    3. 将Node.js SDK引用到项目。
      代码如下:
      var express = require('express')
      var morgan = require('morgan')
      var ALY = require('aliyun-sdk') // 引入aliyun-sdk
      var app = express()
      const logger = morgan(function (tokens, req, res) {
        // 获取到日志信息
        const log = [
          tokens.method(req, res),
          tokens.url(req, res),
          tokens.status(req, res),
          tokens.res(req, res, 'content-length'), '-',
          tokens['response-time'](req, res), 'ms'
        ]
      
        var sls = new ALY.SLS({
          "accessKeyId": "LTAIFmOI6sIkV0G9", // 步骤2获取的密钥
          "secretAccessKey": "MMfXY8Pt2awMLw1Zeusvc4o4COClo1", // 步骤2获取的密钥值
          endpoint: 'http://cn-hangzhou.sls.aliyuncs.com',
          apiVersion: '2015-06-01'
        })
        var logGroup = {
          logs: [
            {
              time:  Math.floor(new Date().getTime()/1000), //单位秒
              contents: [ //key-value对
                {
                  key: 'method',
                  value: log[0]
                },
                {
                  key: 'url',
                  value: log[1]
                },
                {
                  key: 'status',
                  value: log[2]
                },
                {
                  key: 'time',
                  value: log[5]
                }
              ]
          }],
          topic: 'topicName', //optional
          source: '127.0.0.1' //optional
        };
        var opt = {
          projectName: 'wangdan-test',
          logStoreName: 'test',
          logGroup
        }
        sls.putLogs(opt,function(error, data) {
          console.log(error, data)
        })
      
        return [
          tokens.method(req, res),
          tokens.url(req, res),
          tokens.status(req, res),
          tokens.res(req, res, 'content-length'), '-',
          tokens['response-time'](req, res), 'ms'
        ].join(' ')
      })
      app.use(logger)
      app.get('/', (req, res) => res.send('Hello World!'))
      app.listen(3000, () => console.log('Example app listening on port 3000!'))
  5. 查看日志。
    在日志服务控制台,找到对应Project下面的Logstore,单击Logstore名称,在查询/分析界面输入查询语句,查看日志数据。
    通过对时间段的限制,可以看到在9月12日18:30到19点之间的访问量是最多的,从而可以把这段时间的访问量做成仪表图记录下来。查看日志