tracing-koa

opentelemetry for koa

Usage no npm install needed!

<script type="module">
  import tracingKoa from 'https://cdn.skypack.dev/tracing-koa';
</script>

README

链路追踪之KOA

使用方法参考test/index.js,原则上只需要在Koa实例化之前,将KoaTracer实例化即可,插件会自动追踪KOA框架流转中的信息,并发送到agent(exporter)中。

npm仓库

tracing-koa

默认链路span信息

插件默认搜集的信息如下图 defaultInfo 默认生成的一个span样例如下如下:

{
                    "traceID": "520fc2895c7145ad789558ede5d9a182",
                    "spanID": "ce04b8f3d8ee1427",
                    "flags": 1,
                    "operationName": "HTTP GET",
                    "references": [],
                    "startTime": 1610543555754276,
                    "duration": 115834,
                    "tags": [
                        {
                            "key": "http.url",
                            "type": "string",
                            "value": "http://127.0.0.1:8082/testSingle"
                        },
                        {
                            "key": "http.method",
                            "type": "string",
                            "value": "GET"
                        },
                        {
                            "key": "http.target",
                            "type": "string",
                            "value": "/testSingle"
                        },
                        {
                            "key": "net.peer.name",
                            "type": "string",
                            "value": "127.0.0.1"
                        },
                        {
                            "key": "net.peer.ip",
                            "type": "string",
                            "value": "127.0.0.1"
                        },
                        {
                            "key": "net.peer.port",
                            "type": "float64",
                            "value": 8082
                        },
                        {
                            "key": "http.host",
                            "type": "string",
                            "value": "127.0.0.1:8082"
                        },
                        {
                            "key": "http.response_content_length_uncompressed",
                            "type": "float64",
                            "value": 134
                        },
                        {
                            "key": "http.status_code",
                            "type": "float64",
                            "value": 200
                        },
                        {
                            "key": "http.status_text",
                            "type": "string",
                            "value": "OK"
                        },
                        {
                            "key": "http.flavor",
                            "type": "string",
                            "value": "1.1"
                        },
                        {
                            "key": "net.transport",
                            "type": "string",
                            "value": "IP.TCP"
                        },
                        {
                            "key": "status.code",
                            "type": "float64",
                            "value": 0
                        },
                        {
                            "key": "status.name",
                            "type": "string",
                            "value": "OK"
                        },
                        {
                            "key": "span.kind",
                            "type": "string",
                            "value": "CLIENT"
                        },
                        {
                            "key": "telemetry.sdk.language",
                            "type": "string",
                            "value": "nodejs"
                        },
                        {
                            "key": "telemetry.sdk.name",
                            "type": "string",
                            "value": "opentelemetry"
                        },
                        {
                            "key": "telemetry.sdk.version",
                            "type": "string",
                            "value": "0.14.0"
                        },
                        {
                            "key": "internal.span.format",
                            "type": "string",
                            "value": "proto"
                        }
                    ],
                    "logs": [],
                    "processID": "p1",
                    "warnings": null
                }

自定义链路span信息

某些应用需要将特定信息存储到span中,具体可以查看 test/index.js 中的测试样例,具体的样例结果截图如下

设置节点属性 /custom/setAttribute

setAttribute

批量设置节点属性 /custom/setAttributes

setAttributes

设置节点状态 /custom/setStatus

setStatus

创建自定义节点 /custom/startSpan

startSpan