3.0.2 • Published 8 days ago

@beincom/node-profile v3.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 days ago

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<string, string | number> = {
            pod: process.env.pod,
            version: process.env.version,
          };

          const tags: Record<string, string> = {};

          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

Container

docker logs -f 6ba

Logs

3.0.2

8 days ago

3.0.1

8 days ago

2.7.8

8 days ago

2.7.7

8 days ago

2.8.9

8 days ago

2.8.8

8 days ago

2.7.4

9 days ago

2.7.3

10 days ago

2.7.6

9 days ago

2.7.5

9 days ago

2.4.1

10 days ago

2.6.1

10 days ago

2.5.1

10 days ago

2.7.2

10 days ago

2.7.1

10 days ago

1.4.1

10 days ago

1.3.1

10 days ago

1.2.1

10 days ago

1.1.1

14 days ago

1.0.1

16 days ago

1.0.0

16 days ago