依赖 web框架(要求2.7+)
日志(基于tcp协议)
1 2 "log4js": "^3.0.5", "log4js-logstash-tcp": "^2.0.0"
zipkin
1 2 "zipkin-instrumentation-koa": "^0.22.0", "zipkin-transport-http": "^0.22.0"
代码(ziplin部分) 1 2 3 4 5 6 7 8 9 10 11 # 下游(上游略,上游改localServiceName即可) const {Tracer , BatchRecorder , ExplicitContext } = require ('zipkin' );const {koaMiddleware} = require ('zipkin-instrumentation-koa' );const ctxImpl = new ExplicitContext ();const recorder = new BatchRecorder ({ logger : new HttpLogger ({ endpoint : 'http://192.168.56.100:9411/api/v1/spans' })}); const tracer = new Tracer ({recorder, ctxImpl, localServiceName : 'sapi_carmodel' });const app = new Koa ();app.use (koaMiddleware ({tracer}))
代码(log部分) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var log4js = require ('log4js' );log4js.configure ({ "appenders" : [ { "category" : "tests" , "type" : "log4js-logstash-tcp" , "host" : "localhost" , "port" : 5050 , "fields" : { "instance" : "MyAwsInstance" , "source" : "myApp" , "environment" : "development" } }, { "category" : "tests" , "type" : "console" } ], "levels" : { "tests" : "DEBUG" } });
logstash.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 input { tcp { host => "0.0.0.0" codec => json_lines port => 5050 type => "debug" } } filter{ if [ type] == "debug" { json { source => "message" remove_field => [ "message" ] } } } output { elasticsearch { hosts => [ "es:9200" ] action => "index" codec => json index => "sopei-%{type}-%{+YYYY.MM.dd}" template_name => "sopei" } }
测试代码(上游服务发送请求) 1 2 3 4 5 6 7 8 router.get ('/tests' , async (ctx)=>{ const result = await ctx.rest .get (下游接口); var log = log4js.getLogger ('tests' ); log.debug (result); return ctx.send ('success' ,result) }); # 下游从header获取ctx.request ._trace_id
ps:这里目前得到的message格式不太对,待改
补充docker-compose中的zipkin部分 (关于zipkin,官方提供了三种存储模式,docker-compose ||zipkin-storage )
1 2 3 4 5 6 7 8 9 10 11 zipkin: image: openzipkin/zipkin:2.22.1 container_name: zipkin links: - elasticsearch:es environment: - STORAGE_TYPE=elasticsearch - ES_HOSTS=es:9200 ports: - 9411 :9411