Skip to content

coajs/coa-ali-sls

Repository files navigation

coa-ali-sls

GitHub license npm version npm downloads PRs Welcome

轻量的阿里云日志服务 SDK for Node.js

来源于一个实际生产项目,将用到的 API 和业务解耦后封装成此库。

后续会根据实际使用情况优化和扩充新的服务。如果急需用到其他接口,可以直接使用阿里云官方 SDK aliyun-sdk/sls 或查看阿里云官方 帮助文档

特征

  • 覆盖了绝大多数使用场景
  • 相对于官方的 SDK,无任何第三方依赖,更轻量简洁
  • 统一了异步表现形式,全部返回 Promise
  • 内置类型引用,无需额外查看文档,开箱即用,IDE 友好

快速开始

安装

yarn add coa-ali-sls

基本用法

import { dayjs } from 'coa-helper'
import { AliSlsService } from 'coa-ali-sls'

// SLS配置
const config = {
  endpoint: 'cn-shanghai-intranet.log.aliyuncs.com',
  project: 'project-name',
  accessKeyId: 'LTAI4XXXXXXXXXXXXXqTgH',
  accessKeySecret: 'Eg02rdV23XXXXXXXXXXXXXXXXXwgw8Pk',
}

// 创建service实例
const service = new AliSlsService(config)

// 定义查询的开始时间和结束时间
const from = dayjs('2020-01-01')
const to = dayjs('2020-01-02')

// 查询指定 Project 下某个 Logstore 中的日志数据
service.getLogs('project-name', from, to)

// 查询指定 Project 下某个 Logstore 中日志的分布情况
service.getHistograms('project-name', from, to)

条件查询

可以使用 AliSlsQuery 构造查询条件进行查询

import { dayjs } from 'coa-helper'
import { AliSlsQuery, AliSlsService } from 'coa-ali-sls'

// 创建service实例
const service = new AliSlsService({
  /* ... */
})

// 定义查询的开始时间和结束时间
const from = dayjs('2020-01-01'),
  to = dayjs('2020-01-02')

// 定义查询条件(全部用法如下)
const query = new AliSlsQuery()
  .dateFormat('__time__', '%m-%d %H:%i:%s', 'time')
  .timeSeries('__time__', 'time', `5m`)
  .column('userId')
  .column('sceneId', 'sceneId')
  .count('*', 'pv')
  .approxDistinct('userId', 'uv')
  .ne('event', 'device-visit')
  .eq('from', 'wxa')
  .notIn('path', ['', 'null'])
  .notLike(field, likes)
  .limit(2000)
  .groupBy('sceneId')
  .orderBy('pv desc')
  .toQuery()

// 按照查询条件查询指定 Project 下某个 Logstore 中的日志数据
await service.getLogs('project-name', from, to, { query })