Apollo Server 集成性能监控

Apollo Server开箱支持Apollo Engine,只是由于某些不可知的原因Apollo Engine的 API 在国内不可访问(我是真不知道为什么这个 API 会被墙的),所以只能另外想办法了.

Apollo Server本身有一个Apollo Tracing可以用于性能监控的扩展,通过扩展Apollo Tracing收集指标传输到分布式跟踪系统中.
另外有一个开源库Apollo Opentracing可以收集指标,传输到Jaeger或者Zipkin中,通过JaegerZipkin实现性能监控和分析.

秉着方便,直接使用Apollo Opentracing.分布式跟踪系统使用Jaeger.

使用 Docker 搭建Jaeger

Jaeger 官方文档

在浏览器打开 http://localhost:16686 访问Jaeger

搭建Apollo Server

mkdir apollo-opentracing-demo cd apollo-opentracing-demo yarn init -y yarn add apollo-server
// index.js const { ApolloServer, gql } = require('apollo-server')  const typeDefs = gql`   type Query {     hello: String   } `  const resolvers = {   Query: {     hello: () => 'world',   }, }  const server = new ApolloServer({   typeDefs,   resolvers, })  server.listen().then(({ url }) => {   console.log(`  Server ready at ${url}`) })

运行

node index.js

集成Apollo Opentracing

yarn add apollo-opentracing jaeger-client
// tracer.js const { default: OpentracingExtension } = require('apollo-opentracing') const { initTracer } = require('jaeger-client')  const config = {   serviceName: 'apollo-opentracing-demo',   sampler: {     type: 'const',     param: 1,   },   reporter: {     logSpans: true,     collectorEndpoint: 'http://localhost:14268/api/traces',   }, }  const options = {   logger: {     info(msg) {       console.log('INFO ', msg)     },     error(msg) {       console.log('ERROR', msg)     },   }, }  const tracer = initTracer(config, options)  const opentracingExtension = () => {   console.log(123)   return new OpentracingExtension({     local: tracer,     server: tracer,   }) } module.exports = {   opentracingExtension, }
const { opentracingExtension } = require('./tracer.js') // 引入扩展  ...  const server = new ApolloServer({   typeDefs,   resolvers,   extensions: [opentracingExtension], // 使用扩展 }) ...

使用

用浏览器打开 http://localhost:4000/

使用以下语句查询

query {   hello }

然后打开 http://localhost:16686

点击Find Traces就能看到刚刚查询的指标

参考

脚本宝典为你提供优质服务
脚本宝典 » Apollo Server 集成性能监控

发表评论

提供最优质的资源集合

立即查看 了解详情