https://github.com/beincom/bic-node-profiling
https://github.com/beincom/bic-node-profiling
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/beincom/bic-node-profiling
- Owner: beincom
- Created: 2024-05-09T02:18:49.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-16T11:08:37.000Z (about 2 years ago)
- Last Synced: 2025-03-04T20:41:22.055Z (over 1 year ago)
- Language: TypeScript
- Size: 497 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Getting started
```
npm install @beincom/node-profile
# yarn add @beincom/node-profile
```
### Usage
```
# app.module.ts
@Module({
imports: [
ProfileModule.forRootAsync({
useFactory: (configService: ConfigService) => {
const labels: Record = {
pod: process.env.pod,
version: process.env.version,
};
const tags: Record = {};
const profileConfig: ProfileConfig = {
serverAddress: pyroscope.serverAddress,
applicationName: process.env.APP_NAME,
tags: tags,
heap: {
samplingIntervalBytes: Number(process.env.HEAP_INTERVAL_BYTES), // 512 * 1024
stackDepth: Number(process.env.HEAD_STACK_DEPTH), // Maximum is 64
},
wall: {
samplingDurationMs: Number(process.env.WALL_DURATION), // 10 * 1000
samplingIntervalMicros: Number(process.env.WALL_INTERVAL), // 10 * 1000 * 1000
},
};
const profileService = new ProfileService(profileConfig);
profileService.setWallLabels(labels);
profileService.start();
return profileService;
},
inject: [ConfigService],
}),
],
providers: [],
exports: [],
})
export class AppModule {}
```
### Test
```
# pyroscope-config.yaml
log-level: debug
storage:
type: filesystem
path: /var/lib/pyroscope
scrape-configs:
- job-name: testing # any name
enabled-profiles: [cpu, mem] # cpu and mem for cpu and heap
static-configs:
- application: rideshare
spy-name: nodespy # make pyroscope know it's node profiles
targets:
- localhost:3001 # address of your scrape target
labels:
env: dev # labels
```
```
# docker-compose.yaml
version: '3'
services:
pyroscope:
image: grafana/pyroscope:latest
ports:
- "4040:4040"
environment:
- PYROSCOPE_SERVER_TYPE=pyroscope
- PYROSCOPE_STORAGE_TYPE=filesystem
- PYROSCOPE_LOG_LEVEL=debug
- PYROSCOPE_LISTEN_ADDR=0.0.0.0:4040
- PYROSCOPE_STORAGE_PATH=/var/lib/pyroscope
- PYROSCOPE_MODE=pull
volumes:
- pyroscope-data:/var/lib/pyroscope
- ./pyroscope-config.yaml:/etc/pyroscope/pyroscope-config.yaml
volumes:
pyroscope-data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: './pyroscope-data'
```
```
# Run this command:
docker-compose up -d --force-recreate
docker ps
```

```
docker logs -f 6ba
```
