AI考拉技术分享-Node基础架构专题(三)

栏目: Node.js · 发布时间: 5年前

内容简介:转眼新年过了,开始了搬砖的日子。在这里给大家拜个晚年,送上一些小知识,希望大家好搬砖!链路追踪工具,base onNode.js >= 8.2.1 required.

转眼新年过了,开始了搬砖的日子。在这里给大家拜个晚年,送上一些小知识,希望大家好搬砖!

klg-tracer

链路追踪工具,base on pandora

Installation

npm install klg-tracer
复制代码

Node.js >= 8.2.1 required.

Features

Pandora 提供基于 OpenTracing 标准的链路追踪信息,在此基础上,klg-tracer 自定义了一些 tags,并支持将 tracer 信息写入 mongo。

QuickStart

一、配合 Pandora 使用,自定义tags

TODO

  1. export 拓展好的类
  2. 覆盖 Pandora 的默认配置

二、将 tracer 结果写入 Mongo

app.ts

import {TraceService, Tracer} from 'klg-tracer'

new TraceService().registerHooks({
    httpServer: {
      useKoa:true, // 在 koa 设置钩子,比直接在 http 层设置钩子稳定
      // 过滤器,只记录特定接口, 注意 return true 的才会被过滤
      requestFilter: function (req) {
        const urlParsed = url.parse(req.url, true);
        return urlParsed.pathname.indexOf('product/') === -1;
      }
    }
  }).registerMongoReporter({
    mongoUrl: config.database.mongodb[0].url,
    collectionName: 'tracer'
  });

复制代码

完整的配置可以见 src/domain

interface TracerOptions {
  httpServer?: {
    recordGetParams?: boolean,    // 是否记录 query
    recordPostData?: boolean,     // 是否记录 post data
    recordResponse?: boolean,     // 是否记录 response
    requestFilter?: requestFilter,  // 过滤器
    interceptor?: interceptor       // 中间件 TODO
  },
  httpClient?: {
    enabled: boolean, options?: {
      recordGetParams?: boolean,
      recordPostData?: boolean,
      recordResponse?: boolean
    }
  },
  mongodb?: { enabled: boolean, options?: any }
}
复制代码

启动你的 Web 服务并访问,相关的请求信息将会写入 tracer 表中。

Search:

db.tracer.find({name : 'http-server'}).sort({_id : -1})
复制代码

Result:

{
    "_id" : ObjectId("5ad99bd3f29cf14de64516b3"),
    "tags" : {
        "httpMethod" : "POST",
        "url" : "/api/v1/account/register",
        "data" : {
            "userId" : "5527da927855af35354c39eb",
            "userRole" : "INVESTOR"
        },
        "response" : {
            "code" : 0,
            "message" : "success",
            "data" : {
                "html" : "html"
            }
        }
    },
    "traceId" : "6e11fe95c2035a7a",
    "name" : "http-server",
    "timestamp" : 1524210643694.0,
    "duration" : 152,
    "createdAt" : ISODate("2018-04-20T07:50:43.874Z"),
    "updatedAt" : ISODate("2018-04-20T07:50:43.874Z"),
    "__v" : 0
}
复制代码

Tracer tags

  1. http server
  • http.method
  • http.path // path
  • http.query // query string
  • http.data // post body, only json
  • http.response
  1. http client
  • http.method
  • http.url // path
  • http.hostname // send to where
  • http.port
  • http.query
  • http.data
  • http.response
  • http.response_size
  • http.status_code
  • http.error_code
  1. mongo todo

Test

$ npm i
$ npm test
复制代码

How it works

tracer

implements session withasync_hooks and cls-hooked

hook

serve : hack http createServer method, register listener.

http-client : hack http request method, register listener.

ChangeLog

3.0.0

  • 基于 Pandorajs 重做,目前只提供 http-server http-client mongo 三个位置的监听

1.2.0

  • koa-server hook add requestFilter options

1.1.0

  • koa-server hook add intercept options

1.0.3

  • http-client hook trace request parameters and response

1.0.0

  • add http-server koa-server hook
  • add http-client hook
  • add mongo report

常见问题

1 thenable 函数会 break cls 的上下文,像 mongoose 和 superagent 都是在 prototype 里添加 then function 来支持 Promise 的,所有都会有这个问题。 目前只能通过改变写法来避免这个问题,例如:

break session

await User.findOne({})
复制代码

work

await User.findOne({}).then()
复制代码

详情见此 issue github.com/midwayjs/pa…

2 mongodb nodejs driver 3.0 版本升级了 apm 的实现,Pandorajs 还未支持 详情见此 issue github.com/midwayjs/pa…

著作权归本文作者所有,未经授权,请勿转载,谢谢。


以上所述就是小编给大家介绍的《AI考拉技术分享-Node基础架构专题(三)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘中的新方法:支持向量机

数据挖掘中的新方法:支持向量机

邓乃扬、田英杰 / 科学出版社 / 2004-6-10 / 53.00元

支持向量机是数据挖掘中的一个新方法。支持向量机能非常成功地处理回归问题(时间序列分析)和模式识别(分类问题、判别分析)等诸多问题,并可推广于预测和综合评价等领域,因此可应用于理科、工科和管理等多种学科。目前国际上支持向量机在理论研究和实际应用两方面都正处于飞速发展阶段。希望本书能促进它在我国的普及与提高。 本书对象既包括关心理论的研究工作者,也包括关心应用的实际工作者。对于有关领域的具有高等......一起来看看 《数据挖掘中的新方法:支持向量机》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码