npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

swan-log-analytics

v1.6.2

Published

支持配置化的分析SwanSSR日志

Downloads

5

Readme

ssr-log-analytics

支持配置化的分析SwanSSR日志

[toc]

Get Start

npm install -g swan-log-analytics
ssrp --help
cat path/to/node.log.2020072218 | ssrp # 分析日志文件 path/to/node.log.2020072218

Target 配置

在运行ssrp命令时可以使用--target path/to/target.json指定一个 Target File(如不指定,则默认使用自带的default-target.json文件)它是一个JSON文件,格式类似于:

[
  {
    "name": "SSR Count",
    "parserName": "BluebirdInfo",
    "valueExp": "$.intent",
    "valueType": "count"
  },
  {
    "name": "BlueBird all_t",
    "parserName": "BluebirdInfo",
    "valueExp": "$.hTiming.hAll - $.timing.downloadBody",
    "idName": "Path\nRequest Id",
    "idExp": "[$.path, $.requestId].join('\\n')",
    "valueType": "value"
  },
  ...
]

输出如下:


╔═══════════╤═════════╤═══════╗
║ SSR Count │ Percent │ Count ║
╟───────────┼─────────┼───────╢
║ ssr       │ 100.00% │ 1568  ║
╚═══════════╧═════════╧═══════╝

╔════════════════╤═══════╤══════════════════════════╤════════════════════════════════════╤══════════════════════════╤════════════════════════════════╤══════════════════════════╤══════════════════════════╤══════════════════════════╗
║ BlueBird all_t │ Avg   │ Min                      │ 50% Line                           │ 80% Line                 │ 90% Line                       │ 99% Line                 │ 99.99% Line              │ Max                      ║
╟────────────────┼───────┼──────────────────────────┼────────────────────────────────────┼──────────────────────────┼────────────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────╢
║ Value          │ 41.81 │ 4.286580810546875        │ 32.5355941772461                   │ 54.18648986816406        │ 73.38887176513671              │ 193.00723815917968       │ 316.1943298339844        │ 316.1943298339844        ║
╟────────────────┼───────┼──────────────────────────┼────────────────────────────────────┼──────────────────────────┼────────────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────╢
║ Path           │ -     │ puffer/default           │ duershow/template_article_vertical │ duershow/nbest_guide     │ duershow/short_video_square_v2 │ dpl/dpl_templates        │ dpl/dpl_templates_2_0    │ dpl/dpl_templates_2_0    ║
║ Request Id     │       │ request_8171666981092554 │ request_34641834250056935          │ request_5335305289962853 │ request_10639886688399192      │ request_9104324820658392 │ request_8846124495077263 │ request_8846124495077263 ║
╚════════════════╧═══════╧══════════════════════════╧════════════════════════════════════╧══════════════════════════╧════════════════════════════════╧══════════════════════════╧══════════════════════════╧══════════════════════════╝


...

其中:

  • name: 展示结果使用的名称,随便填
  • parserName: 使用的解析器(Parser),目前有如下几种解析器可选择:
    • BluebirdInfo: 解析 Bluebird 请求日志([INFO] bluebird),具体结构见BluebirdInfo Parser
    • BluebirdError: 解析 Bluebird 错误日志([ERROR] bluebird) ,具体结构详见下文BluebirdError Parser
    • SwanInfo: 解析 Swan 请求日志([INFO] swan) ,具体结构详见下文SwanInfo Parser
  • valueType: 收集数据的收集方式,有如下方式可选:
    • value: 样例。收集值本身,然后计算平均值、50分位、最大值等信息
    • count: 样例。收集值出现的次数,比如状态 2004 出现的次数、占比等
    • valueInfo: 样例。与value计算逻辑类似,不过最终要求valueExp要解析出一个对象,对象的key为name,value为参与计算的值。此类型在你想统计很多很多value时十分有用
  • valueExp: 取值表达式,其中$为解析器(Parser)解析出的结构。如$.intent代表取解析后结构中的intent字段 此字段支持进行表达式运算,语法与 JavaScript 表达式相同。示例:
    • $.hTiming.hAll - $.timing.downloadBody
    • $.hTiming.hAll - $.timing.downloadBody > 300 ? 'Yes' : 'No'
  • idExp: 可选,ID计算表达式,输出结果可额外包含ID字段供用户定位到具体用户,语法同valueExp。如:
    • $.logid 取 logid
    • $.logid + ' | ' + $.requestId' 取 logid 和 RequestId
    • new Date($.date).toLocaleTimeString() 取时间
  • idName: 可选,显示在输出结果ID字段的显示名称
  • idLimit: 可选,在输出结果中包含多少条ID
  • (不推荐)~~key~~: 推荐使用valueExp来代替。取值的路径,如hTiming.hAll,实际上等同于使用valueExp字段的$.hTiming.hAll
  • (不推荐)~~idKey~~: 推荐使用valueExp来代替。可选,收集数据时可收集该条请求的ID,便于定位请求。如logidrequestId等,语法与key相同

可用的 Parser

BluebirdInfo Parser

可以把如下日志

[2020-07-22 14:37:41.687] [INFO] bluebird - {"intent":"ssr","logid":"[empty.logid ssr]","requestId":"request_16172620260695503","path":"puffer/history_collection","ssrRenderResult":{"hasCommands":true,"ssrT":"94.835","status":0,"msg":"ok"},"healthInfo":{"lastQps":3,"processingRequestCount":1},"ssrRenderInfo":{"clientName":"puffer","moduleName":"history_collection","needCommands":true,"onlyData":true,"renderSwanConfig":{"theme":"puffer"},"tplName":null,"sourceType":null,"sourceSubType":null,"viewBackground":"DEFAULT","originModuleName":"history_collection","originRoutedModuleName":"history_collection","moduleHash":"d7f128"},"ssrRequestInfo":{"query":"??????","logid":"[empty.logid ssr]"},"ssrDeviceInfo":{"width":1024,"height":600,"devicePixelRatio":1,"enableWakeup":true,"swanVersion":"Swan/1.36.8 JsCore/1.36.5","theme":"puffer"},"config":{"_global":{"_disabled":false,"_whenGetReadyError":"EXIT","_whenCanUseError":"EMIT_EVENT","_whenRunError":"EMIT_EVENT","debug":false},"_public":{"ssr-client-cache":{"enabled":false,"forceRefresh":{"moduleNames":[]},"include":{"moduleNames":["endless_square","endless_square_v2"]},"exclude":{"moduleNames":[]}}},"_core":{"_global":{"_disabled":false,"_whenGetReadyError":"EXIT","_whenCanUseError":"EMIT_EVENT","_whenRunError":"EMIT_EVENT","debug":false},"_public":{"ssr-client-cache":{"enabled":false,"forceRefresh":{"moduleNames":[]},"include":{"moduleNames":["endless_square","endless_square_v2"]},"exclude":{"moduleNames":[]}}},"_core":{"debug":true,"qpsProtect":{"maxQps":80,"outputResult":{"statusCode":200,"head":{"Content-Type":"application/json"},"body":"{\"status\":9999, \"msg\":\"The QSP is overflowing.\"}"}}},"debug":true,"qpsProtect":{"maxQps":80,"outputResult":{"statusCode":200,"head":{"Content-Type":"application/json"},"body":"{\"status\":9999, \"msg\":\"The QSP is overflowing.\"}"}}}},"hTiming":{"hAll":110.56,"hInput":1.99,"hOutput":5.89,"hResolve":100.63,"hMiddleware":105.83,"hEngine":1.9,"hEngineInput":0.42,"hEngineOutput":1.44,"hEngineResolve":0.04,"hQueuing":1.97},"timing":{"onRequest":110.56397247314453,"resolver onRequest":100.66239166259766,"resolver execMiddlewares":100.6346664428711,"exec resolver.ssr-render-commands":100.52449035644531,"output-processor onRequest":5.887046813964844,"output-processor execMiddlewares":5.842079162597656,"exec output-processor.ssr-compress":3.047454833984375,"input-processor onRequest":1.9861984252929688,"input-processor execMiddlewares":1.711212158203125,"downloadBody":0.9182662963867188,"exec output-processor.ssr-logger":0.5603561401367188,"beforeExec output-processor.none-of-business":0.5386886596679688,"queuing output-processor.none-of-business":0.5344009399414062,"exec input-processor.ssr-route":0.4734954833984375,"beforeExec output-processor.ssr-product-trace-logger":0.41925048828125,"queuing output-processor.ssr-product-trace-logger":0.4152679443359375,"exec input-processor.ssr-record-log-info":0.25736236572265625,"queuing worker resolver.ssr-render-commands":0.21166229248046875,"exec output-processor.ssr-write-body":0.1521759033203125,"beforeExec input-processor.generate-request-id":0.14609527587890625,"queuing input-processor.generate-request-id":0.142578125,"exec output-processor.ssr-bluebird-logger":0.10068511962890625,"exec input-processor.ssr-rewrite-info":0.08469390869140625,"beforeExec output-processor.echo-json":0.0807037353515625,"exec input-processor.intent-recognizer":0.07891845703125,"queuing output-processor.echo-json":0.078460693359375,"exec output-processor.ssr-write-code-head":0.0770416259765625,"exec input-processor.generate-request-id":0.072235107421875,"beforeExec output-processor.ssr-clint-cache-sum-info":0.06764984130859375,"queuing output-processor.ssr-clint-cache-sum-info":0.06573486328125,"beforeExec output-processor.echo-message":0.06426239013671875,"beforeExec output-processor.ssr-bluebird-logger":0.06298065185546875,"queuing output-processor.ssr-bluebird-logger":0.06038665771484375,"exec output-processor.ssr-clint-cache-sum-info":0.0589447021484375,"queuing output-processor.echo-message":0.056304931640625,"exec input-processor.ssr-info-parser":0.05507659912109375,"exec input-processor.ssr-generate-native-analytics-info":0.04677581787109375,"beforeExec output-processor.ssr-write-body":0.0397491455078125,"beforeExec output-processor.ssr-logger":0.03911590576171875,"queuing output-processor.ssr-write-body":0.0369873046875,"queuing output-processor.ssr-logger":0.03610992431640625,"exec input-processor.ssr-cdn-speedup":0.0354461669921875,"beforeExec input-processor.ssr-client-cache-render-info":0.03141021728515625,"beforeExec input-processor.intent-recognizer":0.030517578125,"exec output-processor.none-of-business":0.029632568359375,"beforeExec output-processor.ssr-write-code-head":0.029083251953125,"exec output-processor.echo-message":0.02849578857421875,"queuing input-processor.ssr-client-cache-render-info":0.0276031494140625,"beforeExec input-processor.ssr-info-parser":0.0273590087890625,"beforeExec resolver.ssr-render-commands":0.02728271484375,"beforeExec input-processor.ssr-cdn-speedup":0.02716064453125,"queuing output-processor.ssr-write-code-head":0.027008056640625,"queuing input-processor.intent-recognizer":0.02684783935546875,"queuing input-processor.ssr-info-parser":0.02606201171875,"queuing input-processor.ssr-cdn-speedup":0.025543212890625,"beforeExec output-processor.config-write-body":0.02520751953125,"beforeExec output-processor.ssr-compress":0.02478790283203125,"exec input-processor.ssr-ts-route":0.0246734619140625,"queuing resolver.ssr-render-commands":0.02408599853515625,"exec output-processor.echo-json":0.02381134033203125,"beforeExec input-processor.ssr-record-log-info":0.02364349365234375,"exec output-processor.ssr-product-trace-logger":0.023345947265625,"exec input-processor.ssr-client-cache-render-info":0.0233154296875,"queuing output-processor.config-write-body":0.023101806640625,"queuing input-processor.ssr-record-log-info":0.0218658447265625,"beforeExec input-processor.ssr-client-catch-count-etag":0.0216217041015625,"exec input-processor.ssr-client-catch-count-etag":0.0213775634765625,"queuing output-processor.ssr-compress":0.0206298828125,"queuing input-processor.ssr-client-catch-count-etag":0.0201416015625,"beforeExec input-processor.config-parse-info":0.01972198486328125,"beforeExec input-processor.ssr-rewrite-info":0.01970672607421875,"beforeExec input-processor.ssr-ts-route":0.019500732421875,"afterExec output-processor.none-of-business":0.019378662109375,"queuing input-processor.config-parse-info":0.01856231689453125,"exec output-processor.config-write-body":0.01825714111328125,"queuing input-processor.ssr-ts-route":0.0182037353515625,"beforeExec input-processor.ssr-generate-native-analytics-info":0.01720428466796875,"beforeExec input-processor.ssr-route":0.017059326171875,"exec input-processor.config-parse-info":0.01654815673828125,"queuing input-processor.ssr-rewrite-info":0.01641082763671875,"queuing input-processor.ssr-generate-native-analytics-info":0.01599884033203125,"queuing input-processor.ssr-route":0.0157470703125,"afterExec resolver.ssr-render-commands":0.01251983642578125,"afterExec output-processor.echo-message":0.00696563720703125,"afterExec input-processor.generate-request-id":0.00608062744140625,"afterExec output-processor.ssr-compress":0.00518035888671875,"afterExec output-processor.ssr-clint-cache-sum-info":0.00347137451171875,"afterExec output-processor.ssr-write-body":0.003265380859375,"afterExec output-processor.ssr-logger":0.00270843505859375,"afterExec output-processor.ssr-write-code-head":0.00264739990234375,"afterExec output-processor.ssr-product-trace-logger":0.0025482177734375,"afterExec output-processor.ssr-bluebird-logger":0.0021514892578125,"afterExec output-processor.echo-json":0.00208282470703125,"afterExec input-processor.ssr-route":0.00185394287109375,"afterExec input-processor.ssr-record-log-info":0.0016937255859375,"afterExec input-processor.intent-recognizer":0.0016326904296875,"afterExec output-processor.config-write-body":0.00151824951171875,"afterExec input-processor.ssr-ts-route":0.00124359130859375,"afterExec input-processor.ssr-client-cache-render-info":0.00121307373046875,"afterExec input-processor.ssr-rewrite-info":0.0011749267578125,"afterExec input-processor.ssr-cdn-speedup":0.00116729736328125,"afterExec input-processor.ssr-generate-native-analytics-info":0.00110626220703125,"afterExec input-processor.ssr-info-parser":0.0010986328125,"afterExec input-processor.ssr-client-catch-count-etag":0.0010528564453125,"afterExec input-processor.config-parse-info":0.00087738037109375},"timeline":{"onRequest":0,"downloadBody":0.01433563232421875,"/downloadBody":0.9326019287109375,"input-processor onRequest":1.6922988891601562,"input-processor execMiddlewares":1.913238525390625,"beforeExec input-processor.generate-request-id":1.9393997192382812,"queuing input-processor.generate-request-id":1.942169189453125,"/queuing input-processor.generate-request-id":2.084747314453125,"/beforeExec input-processor.generate-request-id":2.0854949951171875,"exec input-processor.generate-request-id":2.0873260498046875,"/exec input-processor.generate-request-id":2.1595611572265625,"afterExec input-processor.generate-request-id":2.1616058349609375,"/afterExec input-processor.generate-request-id":2.1676864624023438,"beforeExec input-processor.intent-recognizer":2.1729812622070312,"queuing input-processor.intent-recognizer":2.1761550903320312,"/queuing input-processor.intent-recognizer":2.2030029296875,"/beforeExec input-processor.intent-recognizer":2.2034988403320312,"exec input-processor.intent-recognizer":2.20379638671875,"/exec input-processor.intent-recognizer":2.28271484375,"afterExec input-processor.intent-recognizer":2.2839508056640625,"/afterExec input-processor.intent-recognizer":2.28558349609375,"beforeExec input-processor.ssr-record-log-info":2.2907791137695312,"queuing input-processor.ssr-record-log-info":2.2921600341796875,"/queuing input-processor.ssr-record-log-info":2.31402587890625,"/beforeExec input-processor.ssr-record-log-info":2.314422607421875,"exec input-processor.ssr-record-log-info":2.3147354125976562,"/exec input-processor.ssr-record-log-info":2.5720977783203125,"afterExec input-processor.ssr-record-log-info":2.5734329223632812,"/afterExec input-processor.ssr-record-log-info":2.5751266479492188,"beforeExec input-processor.ssr-cdn-speedup":2.57843017578125,"queuing input-processor.ssr-cdn-speedup":2.5796279907226562,"/queuing input-processor.ssr-cdn-speedup":2.6051712036132812,"/beforeExec input-processor.ssr-cdn-speedup":2.6055908203125,"exec input-processor.ssr-cdn-speedup":2.6059341430664062,"/exec input-processor.ssr-cdn-speedup":2.6413803100585938,"afterExec input-processor.ssr-cdn-speedup":2.64251708984375,"/afterExec input-processor.ssr-cdn-speedup":2.6436843872070312,"beforeExec input-processor.ssr-info-parser":2.6483840942382812,"queuing input-processor.ssr-info-parser":2.6492691040039062,"/queuing input-processor.ssr-info-parser":2.6753311157226562,"/beforeExec input-processor.ssr-info-parser":2.6757431030273438,"exec input-processor.ssr-info-parser":2.676055908203125,"/exec input-processor.ssr-info-parser":2.7311325073242188,"afterExec input-processor.ssr-info-parser":2.7323379516601562,"/afterExec input-processor.ssr-info-parser":2.7334365844726562,"beforeExec input-processor.ssr-rewrite-info":2.7377853393554688,"queuing input-processor.ssr-rewrite-info":2.7387313842773438,"/queuing input-processor.ssr-rewrite-info":2.7551422119140625,"/beforeExec input-processor.ssr-rewrite-info":2.7574920654296875,"exec input-processor.ssr-rewrite-info":2.757843017578125,"/exec input-processor.ssr-rewrite-info":2.8425369262695312,"afterExec input-processor.ssr-rewrite-info":2.8437423706054688,"/afterExec input-processor.ssr-rewrite-info":2.8449172973632812,"beforeExec input-processor.ssr-ts-route":2.8480606079101562,"queuing input-processor.ssr-ts-route":2.8489608764648438,"/queuing input-processor.ssr-ts-route":2.8671646118164062,"/beforeExec input-processor.ssr-ts-route":2.8675613403320312,"exec input-processor.ssr-ts-route":2.8678817749023438,"/exec input-processor.ssr-ts-route":2.8925552368164062,"afterExec input-processor.ssr-ts-route":2.8936233520507812,"/afterExec input-processor.ssr-ts-route":2.894866943359375,"beforeExec input-processor.ssr-route":2.9029464721679688,"queuing input-processor.ssr-route":2.9038314819335938,"/queuing input-processor.ssr-route":2.9195785522460938,"/beforeExec input-processor.ssr-route":2.9200057983398438,"exec input-processor.ssr-route":2.9203109741210938,"/exec input-processor.ssr-route":3.3938064575195312,"afterExec input-processor.ssr-route":3.3955154418945312,"/afterExec input-processor.ssr-route":3.397369384765625,"beforeExec input-processor.ssr-client-cache-render-info":3.4032058715820312,"queuing input-processor.ssr-client-cache-render-info":3.4046401977539062,"/queuing input-processor.ssr-client-cache-render-info":3.4322433471679688,"/beforeExec input-processor.ssr-client-cache-render-info":3.4346160888671875,"exec input-processor.ssr-client-cache-render-info":3.4349822998046875,"/exec input-processor.ssr-client-cache-render-info":3.4582977294921875,"afterExec input-processor.ssr-client-cache-render-info":3.4594650268554688,"/afterExec input-processor.ssr-client-cache-render-info":3.4606781005859375,"beforeExec input-processor.ssr-client-catch-count-etag":3.4635543823242188,"queuing input-processor.ssr-client-catch-count-etag":3.4645843505859375,"/queuing input-processor.ssr-client-catch-count-etag":3.4847259521484375,"/beforeExec input-processor.ssr-client-catch-count-etag":3.4851760864257812,"exec input-processor.ssr-client-catch-count-etag":3.4854888916015625,"/exec input-processor.ssr-client-catch-count-etag":3.506866455078125,"afterExec input-processor.ssr-client-catch-count-etag":3.50799560546875,"/afterExec input-processor.ssr-client-catch-count-etag":3.5090484619140625,"beforeExec input-processor.ssr-generate-native-analytics-info":3.5119094848632812,"queuing input-processor.ssr-generate-native-analytics-info":3.5127410888671875,"/queuing input-processor.ssr-generate-native-analytics-info":3.5287399291992188,"/beforeExec input-processor.ssr-generate-native-analytics-info":3.52911376953125,"exec input-processor.ssr-generate-native-analytics-info":3.5296554565429688,"/exec input-processor.ssr-generate-native-analytics-info":3.5764312744140625,"afterExec input-processor.ssr-generate-native-analytics-info":3.5775527954101562,"/afterExec input-processor.ssr-generate-native-analytics-info":3.5786590576171875,"beforeExec input-processor.config-parse-info":3.5817489624023438,"queuing input-processor.config-parse-info":3.5825347900390625,"/queuing input-processor.config-parse-info":3.6010971069335938,"/beforeExec input-processor.config-parse-info":3.601470947265625,"exec input-processor.config-parse-info":3.6017837524414062,"/exec input-processor.config-parse-info":3.6183319091796875,"afterExec input-processor.config-parse-info":3.6194229125976562,"/afterExec input-processor.config-parse-info":3.62030029296875,"/input-processor execMiddlewares":3.62445068359375,"/input-processor onRequest":3.678497314453125,"resolver onRequest":3.6837844848632812,"resolver execMiddlewares":3.7050933837890625,"beforeExec resolver.ssr-render-commands":3.7212066650390625,"queuing resolver.ssr-render-commands":3.7232894897460938,"/queuing resolver.ssr-render-commands":3.74737548828125,"/beforeExec resolver.ssr-render-commands":3.7484893798828125,"exec resolver.ssr-render-commands":3.7503738403320312,"queuing worker resolver.ssr-render-commands":3.9310379028320312,"/queuing worker resolver.ssr-render-commands":4.1427001953125,"/exec resolver.ssr-render-commands":104.27486419677734,"afterExec resolver.ssr-render-commands":104.28144836425781,"/afterExec resolver.ssr-render-commands":104.2939682006836,"/resolver execMiddlewares":104.33975982666016,"/resolver onRequest":104.34617614746094,"output-processor onRequest":104.35374450683594,"output-processor execMiddlewares":104.38709259033203,"beforeExec output-processor.echo-message":104.4074935913086,"queuing output-processor.echo-message":104.41429138183594,"/queuing output-processor.echo-message":104.47059631347656,"/beforeExec output-processor.echo-message":104.47175598144531,"exec output-processor.echo-message":104.47274017333984,"/exec output-processor.echo-message":104.50123596191406,"afterExec output-processor.echo-message":104.50334930419922,"/afterExec output-processor.echo-message":104.51031494140625,"beforeExec output-processor.echo-json":104.51805877685547,"queuing output-processor.echo-json":104.51976776123047,"/queuing output-processor.echo-json":104.59822845458984,"/beforeExec output-processor.echo-json":104.59876251220703,"exec output-processor.echo-json":104.59908294677734,"/exec output-processor.echo-json":104.62289428710938,"afterExec output-processor.echo-json":104.6242904663086,"/afterExec output-processor.echo-json":104.62637329101562,"beforeExec output-processor.ssr-clint-cache-sum-info":104.63113403320312,"queuing output-processor.ssr-clint-cache-sum-info":104.63260650634766,"/queuing output-processor.ssr-clint-cache-sum-info":104.6983413696289,"/beforeExec output-processor.ssr-clint-cache-sum-info":104.69878387451172,"exec output-processor.ssr-clint-cache-sum-info":104.69908905029297,"/exec output-processor.ssr-clint-cache-sum-info":104.7580337524414,"afterExec output-processor.ssr-clint-cache-sum-info":104.75941467285156,"/afterExec output-processor.ssr-clint-cache-sum-info":104.76288604736328,"beforeExec output-processor.ssr-write-code-head":104.76869201660156,"queuing output-processor.ssr-write-code-head":104.77025604248047,"/queuing output-processor.ssr-write-code-head":104.7972640991211,"/beforeExec output-processor.ssr-write-code-head":104.79777526855469,"exec output-processor.ssr-write-code-head":104.79808044433594,"/exec output-processor.ssr-write-code-head":104.8751220703125,"afterExec output-processor.ssr-write-code-head":104.87845611572266,"/afterExec output-processor.ssr-write-code-head":104.881103515625,"beforeExec output-processor.ssr-compress":104.88589477539062,"queuing output-processor.ssr-compress":104.88762664794922,"/queuing output-processor.ssr-compress":104.90825653076172,"/beforeExec output-processor.ssr-compress":104.91068267822266,"exec output-processor.ssr-compress":104.9109878540039,"/exec output-processor.ssr-compress":107.95844268798828,"afterExec output-processor.ssr-compress":107.96067810058594,"/afterExec output-processor.ssr-compress":107.96585845947266,"beforeExec output-processor.ssr-write-body":107.97242736816406,"queuing output-processor.ssr-write-body":107.97470092773438,"/queuing output-processor.ssr-write-body":108.01168823242188,"/beforeExec output-processor.ssr-write-body":108.01217651367188,"exec output-processor.ssr-write-body":108.01248931884766,"/exec output-processor.ssr-write-body":108.16466522216797,"afterExec output-processor.ssr-write-body":108.16609191894531,"/afterExec output-processor.ssr-write-body":108.16935729980469,"beforeExec output-processor.config-write-body":108.17555236816406,"queuing output-processor.config-write-body":108.17720794677734,"/queuing output-processor.config-write-body":108.20030975341797,"/beforeExec output-processor.config-write-body":108.20075988769531,"exec output-processor.config-write-body":108.2010498046875,"/exec output-processor.config-write-body":108.21930694580078,"afterExec output-processor.config-write-body":108.2204360961914,"/afterExec output-processor.config-write-body":108.22195434570312,"beforeExec output-processor.none-of-business":108.2247085571289,"queuing output-processor.none-of-business":108.22814178466797,"/queuing output-processor.none-of-business":108.76254272460938,"/beforeExec output-processor.none-of-business":108.76339721679688,"exec output-processor.none-of-business":108.76371002197266,"/exec output-processor.none-of-business":108.79334259033203,"afterExec output-processor.none-of-business":108.79522705078125,"/afterExec output-processor.none-of-business":108.81460571289062,"beforeExec output-processor.ssr-logger":108.99543762207031,"queuing output-processor.ssr-logger":108.99805450439453,"/queuing output-processor.ssr-logger":109.03416442871094,"/beforeExec output-processor.ssr-logger":109.03455352783203,"exec output-processor.ssr-logger":109.03485107421875,"/exec output-processor.ssr-logger":109.59520721435547,"afterExec output-processor.ssr-logger":109.59686279296875,"/afterExec output-processor.ssr-logger":109.59957122802734,"beforeExec output-processor.ssr-product-trace-logger":109.60462951660156,"queuing output-processor.ssr-product-trace-logger":109.60786437988281,"/queuing output-processor.ssr-product-trace-logger":110.02313232421875,"/beforeExec output-processor.ssr-product-trace-logger":110.02388000488281,"exec output-processor.ssr-product-trace-logger":110.02426147460938,"/exec output-processor.ssr-product-trace-logger":110.047607421875,"afterExec output-processor.ssr-product-trace-logger":110.04949951171875,"/afterExec output-processor.ssr-product-trace-logger":110.05204772949219,"beforeExec output-processor.ssr-bluebird-logger":110.056640625,"queuing output-processor.ssr-bluebird-logger":110.05879211425781,"/queuing output-processor.ssr-bluebird-logger":110.11917877197266,"/beforeExec output-processor.ssr-bluebird-logger":110.11962127685547,"exec output-processor.ssr-bluebird-logger":110.11991882324219,"/exec output-processor.ssr-bluebird-logger":110.2206039428711,"afterExec output-processor.ssr-bluebird-logger":110.22210693359375,"/afterExec output-processor.ssr-bluebird-logger":110.22425842285156,"/output-processor execMiddlewares":110.22917175292969,"/output-processor onRequest":110.24079132080078,"/onRequest":110.56397247314453}}

解析成:

{
  "date": "2020-07-22 14:37:41.687",
  "intent": "ssr",
  "logid": "[empty.logid ssr]",
  "requestId": "request_16172620260695503",
  "path": "puffer/history_collection",
  "ssrRenderResult": {
    "hasCommands": true,
    "ssrT": "94.835",
    "status": 0,
    "msg": "ok"
  },
  "healthInfo": {
    "lastQps": 3,
    "processingRequestCount": 1
  },
  ...
}

valueExp中可用$.healthInfo.lastQps来拿到3,用如下 Target 可计算 QPS 情况

[
  {
    "name": "QPS",
    "parserName": "BluebirdInfo",
    "valueExp": "$.healthInfo.lastQps",
    "idName": "Request ID",
    "idExp": "$.requestId",
    "valueType": "value"
  }
]

输出如下

╔════════════╤═══════╤══════════════════════════╤══════════════════════════╤══════════════════════════╤═══════════════════════════╤═══════════════════════════╤══════════════════════════╗
║ QPS        │ Avg   │ Min                      │ 50% Line                 │ 80% Line                 │ 90% Line                  │ 99% Line                  │ Max                      ║
╟────────────┼───────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼───────────────────────────┼───────────────────────────┼──────────────────────────╢
║ Value      │ 49.72 │ 28                       │ 50                       │ 51                       │ 52                        │ 53                        │ 54                       ║
╟────────────┼───────┼──────────────────────────┼──────────────────────────┼──────────────────────────┼───────────────────────────┼───────────────────────────┼──────────────────────────╢
║ Request ID │ -     │ request_0750907654895765 │ request_6986896887533869 │ request_0634741794082021 │ request_24549228768520792 │ request_08837399306808758 │ request_3920408686269159 ║
╚════════════╧═══════╧══════════════════════════╧══════════════════════════╧══════════════════════════╧═══════════════════════════╧═══════════════════════════╧══════════════════════════╝

BluebirdError Parser

可以把如下日志

[2020-07-22 14:37:44.455] [ERROR] bluebird - [QPS_OVERFLOW] [P0] [njjs-bac-orp-dumi-sandbox-84708.njjs.baidu.com]: {"qps":80,"time":"2020-07-22T06:37:44.455Z","processingRequestCount":7}

解析成:

{
    "date": "2020-07-22 14:37:44.455",
    "type": "QPS_OVERFLOW",
    "name": "njjs-bac-orp-dumi-sandbox-84708.njjs.baidu.com",
    "level": "P0",
    "context": {
        "qps":80,
        "time":"2020-07-22T06:37:44.455Z",
        "processingRequestCount":7
    }
}

valueExp中可用$.level来拿到P0,用如下 Target 可计算不同level出现的次数

[
  {
    "name": "Error Level",
    "parserName": "BluebirdError",
    "valueExp": "$.level",
    "idName": "Date",
    "idExp": "$.date",
    "valueType": "count"
  }
]

输出如下

╔══════════════╤═════════╤═══════╤════════════════════════════╗
║ Has Commands │ Percent │ Count │ Date                       ║
╟──────────────┼─────────┼───────┼────────────────────────────╢
║ P0           │ 0.46%   │ 41    │ 2020-07-22 14:20:24.929    ║
║              │         │       │ 2020-07-22 14:20:24.936    ║
║              │         │       │ 2020-07-22 14:20:24.952    ║
║              │         │       │ 2020-07-22 14:20:24.954    ║
║              │         │       │ 2020-07-22 14:20:24.982    ║
╟──────────────┼─────────┼───────┼────────────────────────────╢
║ P1           │ 99.54%  │ 8792  │ 2020-07-22 14:18:11.319    ║
║              │         │       │ 2020-07-22 14:18:11.316    ║
║              │         │       │ 2020-07-22 14:18:11.312    ║
║              │         │       │ 2020-07-22 14:18:11.314    ║
║              │         │       │ 2020-07-22 14:18:11.312    ║
╚══════════════╧═════════╧═══════╧════════════════════════════╝

SwanInfo Parser

可以把如下日志

[2020-07-23 16:02:56.425] [INFO] swan - {"logid": "e6c0fe5bb5d946b6b846d55d0bd8f9fb","pool_info": {"spareResourceCapacity": 0,"size": 4,"available": 0,"borrowed": 4,"pending": 40,"max": 4,"min": 2},"all_t_beg": "0.000","all_t_fin": "506.777","all_t": "506.777","self_t": "506.777","hostname": "njjs-bac-orp-dumi-sandbox-84708.njjs.baidu.com:8310"}

解析成:

{
  "date": "2020-07-23 16:02:56.425",
  "logid": "e6c0fe5bb5d946b6b846d55d0bd8f9fb",
  "pool_info": {
    "spareResourceCapacity": 0,
    "size": 4,
    "available": 0,
    "borrowed": 4,
    "pending": 40,
    "max": 4,
    "min": 2
  },
  "all_t_beg": "0.000",
  "all_t_fin": "506.777",
  "all_t": "506.777",
  "self_t": "506.777",
  "hostname": "njjs-bac-orp-dumi-sandbox-84708.njjs.baidu.com:8310"
}

valueExp中可用$.self_t来拿到506.777,用如下 Target 可计算 QPS 情况

[
  {
    "name": "self_t",
    "parserName": "SwanInfo",
    "valueExp": "$.self_t",
    "idName": "logid",
    "idExp": "$.logid",
    "valueType": "value"
  }
]

输出如下

╔════════════╤════════╤══════════════════════════════════╤══════════════════════════════════╤══════════════════════════════════╤══════════════════════════════════╤══════════════════════════════════╤══════════════════════════════════╤══════════════════════════════════╗
║ self_t     │ Avg    │ Min                              │ 50% Line                         │ 80% Line                         │ 90% Line                         │ 99% Line                         │ 99.99% Line                      │ Max                              ║
╟────────────┼────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────╢
║ Value      │ 514.39 │ 7.977                            │ 505.204                          │ 678.278                          │ 765.063                          │ 1039.74                          │ 1316.635                         │ 1316.635                         ║
╟────────────┼────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────╢
║ logid      │ -      │ 23317228c06a4d7dbc5696ce28e22575 │ c2e8d0c78e3744718f161e9f6eb4e0b8 │ 6e80760c919a46908964b0be52be2a04 │ 113aad45a0e6488a907ae5ceefa3f632 │ fa3be95e48ee41239691bd30477d832f │ 579ce92ebd3848cbb1cb78702b5c32eb │ 579ce92ebd3848cbb1cb78702b5c32eb ║
╚════════════╧════════╧══════════════════════════════════╧══════════════════════════════════╧══════════════════════════════════╧══════════════════════════════════╧══════════════════════════════════╧══════════════════════════════════╧══════════════════════════════════╝

样例

valueType 为 value

Target 的配置:

[
  {
    "name": "BlueBird all_t",
    "parserName": "BluebirdInfo",
    "valueExp": "$.hTiming.hAll - $.timing.downloadBody",
    "idName": "Path\nRequest Id",
    "idExp": "[$.path, $.requestId].join('\\n')",
    "valueType": "value"
  }
]

输出样例

╔════════════════╤═══════╤══════════════════════════╤════════════════════════════════════╤══════════════════════════╤════════════════════════════════╤══════════════════════════╤══════════════════════════╤══════════════════════════╗
║ BlueBird all_t │ Avg   │ Min                      │ 50% Line                           │ 80% Line                 │ 90% Line                       │ 99% Line                 │ 99.99% Line              │ Max                      ║
╟────────────────┼───────┼──────────────────────────┼────────────────────────────────────┼──────────────────────────┼────────────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────╢
║ Value          │ 41.81 │ 4.286580810546875        │ 32.5355941772461                   │ 54.18648986816406        │ 73.38887176513671              │ 193.00723815917968       │ 316.1943298339844        │ 316.1943298339844        ║
╟────────────────┼───────┼──────────────────────────┼────────────────────────────────────┼──────────────────────────┼────────────────────────────────┼──────────────────────────┼──────────────────────────┼──────────────────────────╢
║ Path           │ -     │ puffer/default           │ duershow/template_article_vertical │ duershow/nbest_guide     │ duershow/short_video_square_v2 │ dpl/dpl_templates        │ dpl/dpl_templates_2_0    │ dpl/dpl_templates_2_0    ║
║ Request Id     │       │ request_8171666981092554 │ request_34641834250056935          │ request_5335305289962853 │ request_10639886688399192      │ request_9104324820658392 │ request_8846124495077263 │ request_8846124495077263 ║
╚════════════════╧═══════╧══════════════════════════╧════════════════════════════════════╧══════════════════════════╧════════════════════════════════╧══════════════════════════╧══════════════════════════╧══════════════════════════╝

valueType 为 count

Target 的配置:

[
    {
        "name": "Has Commands",
        "parserName": "BluebirdInfo",
        "key": "ssrRenderResult.hasCommands",
        "idName": "ID",
        "idExp": "$.requestId",
        "idLimit": 5,
        "valueType": "count"
    }
]

输出样例

╔══════════════╤═════════╤═══════╤════════════════════════════╗
║ Has Commands │ Percent │ Count │ ID                         ║
╟──────────────┼─────────┼───────┼────────────────────────────╢
║ false        │ 0.46%   │ 41    │ request_9986736127922975   ║
║              │         │       │ request_39623550315558664  ║
║              │         │       │ request_2796199321891437   ║
║              │         │       │ request_1653490488995084   ║
║              │         │       │ request_4702562762606821   ║
╟──────────────┼─────────┼───────┼────────────────────────────╢
║ true         │ 99.54%  │ 8792  │ request_8972312821852146   ║
║              │         │       │ request_008504496947879359 ║
║              │         │       │ request_9534020747138754   ║
║              │         │       │ request_6995016848994999   ║
║              │         │       │ request_6041686592879114   ║
╚══════════════╧═════════╧═══════╧════════════════════════════╝

valueType 为 valueInfo

Note: 此功能执行缓慢!

Target 的配置:

[
  {
    "name": "Exec Middleware",
    "parserName": "BluebirdInfo",
    "valueExp": "Object.keys($.timing).filter(key => key.startsWith('exec')).reduce((info, key) => { info[key] = $.timing[key]; return info}, {})",
    "valueType": "valueInfo"
  }
]

输出样例

╔═════════════════════════════════════════════════════════╤═══════╤═════════════════════╤═════════════════════╤═════════════════════╤═════════════════════╤═════════════════════╤════════════════════╤════════════════════╗
║ Exec Middleware                                         │ Avg   │ Min                 │ 50% Line            │ 80% Line            │ 90% Line            │ 99% Line            │ 99.99% Line        │ Max                ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec resolver.ssr-render-commands                       │ 33.98 │ 0.01239776611328125 │ 24.891929626464844  │ 44.3218994140625    │ 61.691131591796875  │ 154.6008529663086   │ 248.29937744140625 │ 248.29937744140625 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-compress                      │ 1.14  │ 0.0413818359375     │ 0.7776718139648438  │ 1.7037353515625     │ 2.4621353149414062  │ 5.551422119140625   │ 9.161476135253906  │ 9.161476135253906  ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-logger                        │ 0.56  │ 0.1551361083984375  │ 0.31589508056640625 │ 1.0015945434570312  │ 1.1048583984375     │ 2.079559326171875   │ 4.87579345703125   │ 4.87579345703125   ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-record-log-info                │ 0.27  │ 0.05883026123046875 │ 0.14562225341796875 │ 0.46993255615234375 │ 0.5239639282226562  │ 1.7138595581054688  │ 3.6461944580078125 │ 3.6461944580078125 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-filter-data                    │ 0.26  │ 0.0099945068359375  │ 0.2823486328125     │ 0.38796234130859375 │ 0.44075775146484375 │ 1.4184722900390625  │ 3.035491943359375  │ 3.035491943359375  ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-route                          │ 0.25  │ 0.04076385498046875 │ 0.0955810546875     │ 0.1786651611328125  │ 0.25730133056640625 │ 2.537689208984375   │ 19.672317504882812 │ 19.672317504882812 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-generate-code                  │ 0.21  │ 0.0866546630859375  │ 0.15340423583984375 │ 0.207427978515625   │ 0.2663421630859375  │ 1.0151443481445312  │ 3.47314453125      │ 3.47314453125      ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-write-body                    │ 0.10  │ 0.050262451171875   │ 0.07928466796875    │ 0.11154937744140625 │ 0.1389923095703125  │ 0.2758636474609375  │ 2.8430328369140625 │ 2.8430328369140625 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-clint-cache-sum-info          │ 0.07  │ 0.0223236083984375  │ 0.071624755859375   │ 0.08112335205078125 │ 0.08690643310546875 │ 0.1291046142578125  │ 2.13336181640625   │ 2.13336181640625   ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-bluebird-logger               │ 0.06  │ 0.0388031005859375  │ 0.05493927001953125 │ 0.0626220703125     │ 0.06928253173828125 │ 0.11639404296875    │ 0.5933609008789062 │ 0.5933609008789062 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-client-catch-count-etag        │ 0.06  │ 0.021575927734375   │ 0.02719879150390625 │ 0.036895751953125   │ 0.04346466064453125 │ 0.8671798706054688  │ 4.669586181640625  │ 4.669586181640625  ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-write-code-head               │ 0.05  │ 0.03426361083984375 │ 0.04563140869140625 │ 0.05096435546875    │ 0.055389404296875   │ 0.08282470703125    │ 0.6703262329101562 │ 0.6703262329101562 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-rewrite-info                   │ 0.05  │ 0.0294036865234375  │ 0.04251861572265625 │ 0.0487823486328125  │ 0.0550079345703125  │ 0.0977020263671875  │ 1.5856399536132812 │ 1.5856399536132812 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.generate-request-id                │ 0.04  │ 0.0227813720703125  │ 0.03606414794921875 │ 0.04053497314453125 │ 0.0443115234375     │ 0.07915496826171875 │ 1.5381011962890625 │ 1.5381011962890625 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-cdn-speedup                    │ 0.04  │ 0.0162353515625     │ 0.023529052734375   │ 0.02783966064453125 │ 0.036285400390625   │ 0.36756134033203125 │ 2.1507110595703125 │ 2.1507110595703125 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.intent-recognizer                  │ 0.04  │ 0.02056884765625    │ 0.03387451171875    │ 0.03873443603515625 │ 0.04413604736328125 │ 0.076690673828125   │ 2.4563980102539062 │ 2.4563980102539062 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-info-parser                    │ 0.03  │ 0.01755523681640625 │ 0.023040771484375   │ 0.02639007568359375 │ 0.03102874755859375 │ 0.04557037353515625 │ 1.4704360961914062 │ 1.4704360961914062 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-analytics-logger              │ 0.03  │ 0.0158843994140625  │ 0.02118682861328125 │ 0.02381134033203125 │ 0.0268096923828125  │ 0.04787445068359375 │ 4.3433837890625    │ 4.3433837890625    ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-generate-native-analytics-info │ 0.03  │ 0.01862335205078125 │ 0.0263519287109375  │ 0.02989959716796875 │ 0.03362274169921875 │ 0.069732666015625   │ 3.03289794921875   │ 3.03289794921875   ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-client-cache-render-info       │ 0.03  │ 0.01753997802734375 │ 0.02355194091796875 │ 0.02642822265625    │ 0.02978515625       │ 0.0443878173828125  │ 2.6337127685546875 │ 2.6337127685546875 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.echo-json                         │ 0.02  │ 0.0102081298828125  │ 0.015228271484375   │ 0.017486572265625   │ 0.02062225341796875 │ 0.03787994384765625 │ 0.5502700805664062 │ 0.5502700805664062 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.ssr-product-trace-logger          │ 0.02  │ 0.013336181640625   │ 0.0201568603515625  │ 0.02330780029296875 │ 0.02626800537109375 │ 0.04058074951171875 │ 2.2571868896484375 │ 2.2571868896484375 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.none-of-business                  │ 0.02  │ 0.010162353515625   │ 0.0141754150390625  │ 0.01568603515625    │ 0.0173187255859375  │ 0.0291748046875     │ 0.3874359130859375 │ 0.3874359130859375 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.config-write-body                 │ 0.02  │ 0.00962066650390625 │ 0.0141754150390625  │ 0.015869140625      │ 0.01831817626953125 │ 0.03923797607421875 │ 0.4810943603515625 │ 0.4810943603515625 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec resolver.ssr-echo-code                             │ 0.02  │ 0.01294708251953125 │ 0.017791748046875   │ 0.024810791015625   │ 0.0286102294921875  │ 0.0396575927734375  │ 0.0396575927734375 │ 0.0396575927734375 ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.ssr-ts-route                       │ 0.02  │ 0.0096588134765625  │ 0.01300048828125    │ 0.0152130126953125  │ 0.021453857421875   │ 0.06900787353515625 │ 1.46038818359375   │ 1.46038818359375   ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec output-processor.echo-message                      │ 0.02  │ 0.01146697998046875 │ 0.02021026611328125 │ 0.023345947265625   │ 0.02590179443359375 │ 0.03862762451171875 │ 0.230255126953125  │ 0.230255126953125  ║
╟─────────────────────────────────────────────────────────┼───────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────╢
║ exec input-processor.config-parse-info                  │ 0.01  │ 0.0092315673828125  │ 0.012542724609375   │ 0.013916015625      │ 0.01556396484375    │ 0.025634765625      │ 0.498016357421875  │ 0.498016357421875  ║
╚═════════════════════════════════════════════════════════╧═══════╧═════════════════════╧═════════════════════╧═════════════════════╧═════════════════════╧═════════════════════╧════════════════════╧════════════════════╝