@eqxjs/nest-opet-electometer
版本: 3.2.1 (稳定)
用于NestJS应用的OpenTeleometter自动仪器. 环绕 @opentelemetry/sdk-node 配备一套预配置的仪器、出口商和资源探测器——都由环境变量驱动.
特征
- 零码仪器 登记一次,所有支助的图书馆都自动安装
- 多个出口商 - OTLP(跟踪、度量、日志)和Azure监测器应用透视
- 自定义 Kafka 宽度浓缩 - 支持KafkaJS,
eqxjs-kafkajs,并用 M1/M2/M3 信件协议解析相容的 Kafka - 自定义套接字 。 IO 跨度浓缩 ——抓取套接字 ID,密钥和M1协议属性
- 云资源检测 自动检测AWS、Azure、GCP、Alibaba、集装箱等
- 伟大的关闭 -听着
SIGTERM财务报告和审定财务报表beforeExit在退出前冲出遥测
安装
npm install @eqxjs/nest-opentelemetry
使用量
注册 SDK 在此之前 您的应用程序负载经过 --require 改为节点.js:
node --require ./node_modules/@eqxjs/nest-opentelemetry/dist/register.js dist/main.js
或者在你身边 package.json 开始脚本 :
{
"scripts": {
"start": "node --require ./node_modules/@eqxjs/nest-opentelemetry/dist/register.js dist/main.js"
}
}
程序用途
您也可以从软件包中导入单个助手 :
import {
getNodeAutoInstrumentations,
getResourceDetectors,
InstrumentationConfigMap,
} from '@eqxjs/nest-opentelemetry';
使用 getNodeAutoInstrumentations(config?) 用自己的仪器列表构建工具列表 NodeSDK 设置,和 getResourceDetectors() 以应用环境驱动的资源探测器列表.
环境变量
出口商
| 变量 | 说明 |
|---|---|
TRACES_URL | 跟踪的 OTLP 端点( 默认 ): http://localhost:4318/v1/traces(中文(简体) ) |
METRICS_URL | 度量衡的OTLP端点( 默认值 : http://localhost:4318/v1/metrics(中文(简体) ) |
LOGGER_URL | 日志的OTLP端点( 默认 ): http://localhost:4318/v1/logs(中文(简体) ) |
APPLICATIONINSIGHTS_CONNECTION_STRING_TRACE | 跟踪的 Azure 监视器连接字符串( 取优先级 ) TRACES_URL(中文(简体) ) |
APPLICATIONINSIGHTS_CONNECTION_STRING_METRIC | Azure 监视器用于度量的连接字符串( 占据优先级 ) METRICS_URL(中文(简体) ) |
APPLICATIONINSIGHTS_CONNECTION_STRING_LOG | 日志的 Azure 监视器连接字符串( 占据优先级 ) LOGGER_URL(中文(简体) ) |
METRIC_EXPORT_INTERVAL | 以毫秒计的计量导出间隔( 默认值 : 60000(中文(简体) ) |
METRIC_PROMETHEUS_PORT | 在这个端口(如:. 8081) (中文(简体) ). 只有在两者都不发生时才生效 APPLICATIONINSIGHTS_CONNECTION_STRING_METRIC 也没有 METRICS_URL 已经设定. |
仪器
| 变量 | 说明 |
|---|---|
OTEL_HTTP_HEADER | 以逗号分隔的 HTTP 标题名称列表, 用于在请求和响应中作为跨度属性捕捉 |
OTEL_NODE_ENABLED_INSTRUMENTATIONS | 逗号分离的仪器后缀列表以启用. 未设置时, 所有仪器都启用 。 示例 http,grpc,pg |
有效数值 OTEL_NODE_ENABLED_INSTRUMENTATIONS数字 :
| 数值 | 图书馆 |
|---|---|
amqplib | AMQP( 拉比特MQ) |
aws-lambda | AWS 兰布达 |
aws-sdk | 一个WS SDK |
bunyan | Bunyan 日志 |
cassandra-driver | 卡桑德拉语Name |
confluent-kafka | 孔通卡夫卡(node-rdkafka) 孔通卡克克克克克克克克克克克克克克克克克克 |
confluent-kafka-js | 卡夫卡镇(KafkaJS) |
connect | 连接 |
cucumber | 黄瓜 |
dataloader | 数据记录器 |
dns | DNS 数据 |
eqxjs-ioredis | EqxJS 离子体 |
eqxjs-kafkajs | EqxJS 卡夫卡JS (英语) |
mongodb2 | MongoDB( 遗留 v2 驱动程序) |
express | 快递 |
fastify | 快捷化 |
fs | 文件系统( fs) |
generic-pool | 一般池 |
graphql | 图QL |
grpc | (原始内容存档于2018-10-21) (英语). gRPC |
hapi | 哈皮,哈皮,哈比,哈比,哈比,哈比,哈比,哈比,哈比,哈比 |
http | HTTP / HTTPS 软件 |
ioredis | 无线 |
kafkajs | 卡夫卡·贾斯 |
knex | Knex 键 |
koa | 科亚 |
lru-memoizer | LRU 纪念器 |
memcached | 记忆 |
mongodb | 蒙戈DB |
mongodb2 | MongoDB( v2 驱动程序) |
mongoose | 乌鸦 |
mysql | MySQL 数据 |
mysql2 | MySQL2 (英语) |
nestjs-core | 雀巢JS核心 |
net | 净额 |
pg | 邮递SQL |
pino | 皮诺伐木机 |
redis | 红色 v2 |
redis-4 | 红色 v4 |
restify | 修复 |
router | 路由器 |
socket.io | 袜子。 内线 |
tedious | 强迫( MSSQL) |
winston | 温斯顿日志 |
资源探测器
| 变量 | 说明 |
|---|---|
OTEL_NODE_RESOURCE_DETECTORS | 以逗号分隔的资源探测器列表. 默认为 all启用 none 以禁用全部. |
可用的探测器值 :
| 数值 | 探测器 |
|---|---|
all | 启用下面的每个探测器 |
none | 禁用所有探测器 |
container | 集装箱标识 |
env | OTEL_RESOURCE_ATTRIBUTES 环境变量 |
host | 主机名 |
os | 操作系统名称和版本 |
process | 进程 PID、运行时名称和版本 |
serviceinstance | 随机服务实例 ID |
alibaba | 阿里巴巴云ECS元数据 |
aws | AWS EC2 / ECS / EKS / Beanstalk / Lambda 元数据 |
azure | Azure App 服务/ 函数/ VM 元数据 |
gcp | 谷歌云平台元数据 |
部署属性(适用于Kafka/Socket.IO跨度)
| 变量 | Span 属性集 |
|---|---|
CLOUD_ZONE | cloud.zone |
DEPLOYMENT_ENV | deployment.environment |
DEPLOYMENT_NAMESPACE | k8s.namespace.name |
辅助仪器
| 图书馆 | 软件包 |
|---|---|
| HTTP / HTTPS 软件 | @opentelemetry/instrumentation-http |
| (原始内容存档于2018-10-21) (英语). gRPC | @opentelemetry/instrumentation-grpc |
| 快递 | @opentelemetry/instrumentation-express |
| 快捷化 | @fastify/otel |
| 科亚 | @opentelemetry/instrumentation-koa |
| 哈皮,哈皮,哈比,哈比,哈比,哈比,哈比,哈比,哈比,哈比 | @opentelemetry/instrumentation-hapi |
| 雀巢JS核心 | @opentelemetry/instrumentation-nestjs-core |
| 袜子。 内线 | @opentelemetry/instrumentation-socket.io |
| 图QL | @opentelemetry/instrumentation-graphql |
| 卡夫卡·贾斯 | opentelemetry-instrumentation-kafkajs |
| EqxJS 卡夫卡JS (英语) | opentelemetry-instrumentation-eqxjs-kafkajs |
| 孔通卡夫卡(node-rdkafka) 孔通卡克克克克克克克克克克克克克克克克克克 | opentelemetry-instrumentation-confluent-kafka |
| 卡夫卡镇(KafkaJS) | opentelemetry-instrumentation-confluent-kafka (单位:千美元)KafkaJSInstrumentation(中文(简体) ) |
| AMQP( 拉比特MQ) | @opentelemetry/instrumentation-amqplib |
| 蒙戈DB | @opentelemetry/instrumentation-mongodb (加强报告功能) |
| MongoDB v2 驱动程序 | opentelemetry-instrumentation-mongodb2 (加强报告功能) |
| 乌鸦 | @opentelemetry/instrumentation-mongoose |
| 邮递SQL | @opentelemetry/instrumentation-pg |
| MySQL / MySQL2 游戏 | @opentelemetry/instrumentation-mysql, (中文(简体) ), @opentelemetry/instrumentation-mysql2 |
| 红色 v2 / v4 | @opentelemetry/instrumentation-redis, (中文(简体) ), @opentelemetry/instrumentation-redis-4 |
| 无线 | @opentelemetry/instrumentation-ioredis, (中文(简体) ), opentelemetry-instrumentation-eqxjs-ioredis |
| 卡桑德拉语Name | @opentelemetry/instrumentation-cassandra-driver |
| 记忆 | @opentelemetry/instrumentation-memcached |
| Knex 键 | @opentelemetry/instrumentation-knex |
| 一个WS SDK | @opentelemetry/instrumentation-aws-sdk |
| AWS 兰布达 | @opentelemetry/instrumentation-aws-lambda |
| DNS 数据 | @opentelemetry/instrumentation-dns |
| 净额 | @opentelemetry/instrumentation-net |
| 页:1 | @opentelemetry/instrumentation-fs |
| 皮诺 | @opentelemetry/instrumentation-pino |
| 温斯顿 | @opentelemetry/instrumentation-winston |
| 邦扬 | @opentelemetry/instrumentation-bunyan |
| 数据记录器 | @opentelemetry/instrumentation-dataloader |
| 一般池 | @opentelemetry/instrumentation-generic-pool |
| LRU 纪念器 | @opentelemetry/instrumentation-lru-memoizer |
| 连接 | @opentelemetry/instrumentation-connect |
| 修复 | @opentelemetry/instrumentation-restify |
| 路由器 | @opentelemetry/instrumentation-router |
| 强迫( MSSQL) | @opentelemetry/instrumentation-tedious |
| 黄瓜 | @opentelemetry/instrumentation-cucumber |
信件协议宽度
卡夫卡生产商/消费者钩和袜子。 IO钩会解析消息有效载荷,并会根据检测到的消息格式添加结构化的跨度属性.
M1 协议
带有一个消息 protocol 字段被解析为M1,并产生除所有M2属性外的以下属性:
| 属性 | 源字段 |
|---|---|
M1.protocol.version | protocol.version |
M1.protocol.command | protocol.command |
M1.protocol.sub_command | protocol.subCommand |
M1.protocol.invoke | protocol.invoke |
M1.protocol.topic | protocol.topic |
M2议定书
带有一个消息 header 字段解析为 M2:
| 属性 | 源字段 |
|---|---|
enduser.id | header.identity.user |
M2.header.version | header.version |
M2.header.org_service | header.orgService |
M2.header.from | header.from |
M2.header.channel | header.channel |
M2.header.broker | header.broker |
M2.header.agent | header.agent |
M2.header.useCase | header.useCase |
M2.header.use_case_step | header.useCaseStep |
M2.header.use_case_age | header.useCaseAge |
M2.header.function_name | header.functionName |
M2.header.session | header.session |
M2.header.transaction | header.transaction |
M3议定书
带有一个消息 service 字段解析为 M3 :
| 属性 | 源字段 |
|---|---|
enduser.id | service.identity.user |
M3.service.version | service.version |
M3.service.org_service | service.orgService |
M3.service.from | service.from |
M3.service.channel | service.channel |
M3.service.broker | service.broker |
M3.service.agent | service.agent |
M3.service.useCase | service.useCase |
M3.service.use_case_step | service.useCaseStep |
M3.service.use_case_age | service.useCaseAge |
M3.service.function_name | service.functionName |
M3.service.session | service.session |
M3.service.transaction | service.transaction |
Kafka span 属性
所有卡夫卡跨度(生产者和消费者)包括:
| 属性 | 说明 |
|---|---|
kafka.direction | produce 或者说 consume |
kafka.topic | 主题名称 |
kafka.key | 消息密钥 |
kafka.partition | 信件分区 |
kafka.offset | 信件删除 |
kafka.header.<name> | 每个信件头值 |
构建
npm run build
输出输出到 ./dist。 。 。 .
许可证
公务员制度委员会