Node.js
使用我们的 Node.js 配置文件分析器增强您的 Node.js 应用程序性能。与 Pyroscope 无缝集成,它提供对应用程序操作的实时洞察,帮助您识别和解决性能瓶颈。这种集成对于希望提高效率、减少延迟并保持最佳应用程序性能的 Node.js 开发人员至关重要。
注意
有关支持每种语言的配置文件类型列表,请参阅 支持的配置文件类型。
开始之前
要捕获和分析配置文件数据,您需要托管 Pyroscope OSS 服务器或托管 具有 Grafana Cloud 配置文件的 Pyroscope 实例(需要免费 Grafana Cloud 帐户)。
Pyroscope服务器可以是用于开发的本地服务器或用于生产的远程服务器。
将Node.js性能分析添加到您的应用程序
要开始分析Node.js应用程序,您需要在您的应用程序中包含npm模块
npm install @pyroscope/nodejs
# or
yarn add @pyroscope/nodejs
配置Node.js客户端
将以下代码添加到您的应用程序
const Pyroscope = require('@pyroscope/nodejs');
Pyroscope.init({
serverAddress: 'http://pyroscope:4040',
appName: 'myNodeService'
});
Pyroscope.start()
注意
如果您愿意,可以使用Grafana Alloy使用拉模式。
配置选项
初始化参数 | 环境变量 | 类型 | 描述 |
---|---|---|---|
`appName` | PYROSCOPE_APPLICATION_NAME | 字符串 | 设置service_name 标签 |
serverAddress | PYROSCOPE_SERVER_ADDRESS | 字符串 | Pyroscope服务器URL |
basicAuthUser | n/a | 字符串 | 基本认证的用户名/ Grafana Cloud堆栈用户ID(默认"" ) |
basicAuthPassword | n/a | 字符串 | 基本认证的密码/ Grafana Cloud API密钥(默认"" ) |
flushIntervalMs | PYROSCOPE_FLUSH_INTERVAL_MS | 数字 | 将配置文件发送到服务器的间隔(默认60000 ) |
heapSamplingIntervalBytes | PYROSCOPE_HEAP_SAMPLING_INTERVAL_BYTES | 数字 | 样本之间的平均字节数(默认524288 ) |
heapStackDepth | PYROSCOPE_HEAP_STACK_DEPTH | 数字 | 堆样本的最大堆栈深度(默认64 ) |
wallSamplingDurationMs | PYROSCOPE_WALL_SAMPLING_DURATION_MS | 数字 | 单个墙配置文件的持续时间(默认60000 ) |
wallSamplingIntervalMicros | PYROSCOPE_WALL_SAMPLING_INTERVAL_MICROS | 数字 | 收集墙样本的间隔(默认10000 ) |
wallCollectCpuTime | PYROSCOPE_WALL_COLLECT_CPU_TIME | 布尔值 | 启用墙配置文件的CPU时间收集(默认false ) |
tags | n/a | LabelSet | 应用于收集的所有配置文件的静态标签(默认{} ) |
sourceMapper | n/a | SourceMapper | 提供源文件映射信息(默认undefined ) |
将性能分析标签添加到Node.js应用程序
静态标签
您可以将静态标签添加到性能分析数据中。这些标签可以用于在UI中筛选数据并应用于收集的所有配置文件。常见的静态标签包括
hostname
region
team
Pyroscope.init({
serverAddress: 'http://pyroscope:4040',
appName: 'myNodeService',
tags: {
region: ENV['region']
},
});
Pyroscope.start()
动态标签用于墙/ CPU配置文件
在墙和CPU配置文件中,标签也可以动态附加,有助于区分不同的代码路径
Pyroscope.wrapWithLabels({ vehicle: 'bike' }, () =>
slowCode()
);
将数据发送到Pyroscope OSS或Grafana Cloud
Pyroscope.init({
serverAddress: 'http://pyroscope:4040',
appName: 'myNodeService',
tags: {
region: ENV['region']
},
basicAuthUser: ENV['PYROSCOPE_BASIC_AUTH_USER'],
basicAuthPassword: ENV['PYROSCOPE_BASIC_AUTH_PASSWORD'],
// Optional Pyroscope tenant ID (only needed if using multi-tenancy). Not needed for Grafana Cloud.
// tenantID: ENV['PYROSCOPE_TENANT_ID'],
});
Pyroscope.start()
要将数据发送到Pyroscope,请将serverAddress
占位符替换为适当的服务器URL。这可能可以是Grafana Cloud Pyroscope URL或您自己的自定义Pyroscope服务器URL。
如果您需要将数据发送到Grafana Cloud,您将需要配置HTTP基本身份验证。将basicAuthUser
替换为您的Grafana Cloud堆栈用户ID,将basicAuthPassword
替换为您的Grafana Cloud API密钥。
如果您的Pyroscope服务器启用了多租户,您将需要配置租户ID。将tenantID
替换为您的Pyroscope租户ID。
故障排除
将DEBUG
环境变量设置为pyroscope
提供额外的调试信息。
DEBUG=pyroscope node index.js