Skip to content

Commit

Permalink
feat: add global labes for node metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
SocketSomeone committed Dec 29, 2023
1 parent f4919d1 commit fe192c3
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 19 deletions.
12 changes: 2 additions & 10 deletions src/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Module, OnModuleInit } from '@nestjs/common';
import { Module } from '@nestjs/common';
import { NecordModule } from 'necord';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { DocsModule } from './docs/docs.module';
Expand All @@ -7,8 +7,6 @@ import { GeneralModule } from './general/general.module';
import { AppService } from './app.service';
import { TagsModule } from './tags/tags.module';
import { ChangelogModule } from './changelog/changelog.module';
import { metrics } from '@opentelemetry/api';
import { setupNodeMetrics } from '@sesamecare-oss/opentelemetry-node-metrics';

@Module({
imports: [
Expand All @@ -35,10 +33,4 @@ import { setupNodeMetrics } from '@sesamecare-oss/opentelemetry-node-metrics';
],
providers: [AppService]
})
export class AppModule implements OnModuleInit {
public onModuleInit(): any {
const meterProvider = metrics.getMeterProvider();
const meter = meterProvider.getMeter('node-metrics');
setupNodeMetrics(meter);
}
}
export class AppModule {}
2 changes: 1 addition & 1 deletion src/main.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import otelSDK from './tracing';
import { otelSDK } from './tracing';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

Expand Down
26 changes: 18 additions & 8 deletions src/tracing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,35 @@ import {
import { Logger } from '@nestjs/common';
import { Resource } from '@opentelemetry/resources';
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
import { metrics } from '@opentelemetry/api';
import { setupNodeMetrics } from '@sesamecare-oss/opentelemetry-node-metrics';

const logger = new Logger('OpenTelemetry');

const metricReader = new PrometheusExporter({ port: 8081 }, () =>
logger.log('Prometheus scrape endpoint started on port 8081')
);

const otelSDK = new NodeSDK({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'toolkit',
[SemanticResourceAttributes.SERVICE_NAMESPACE]: 'necord',
[SemanticResourceAttributes.SERVICE_VERSION]: '1.0.0'
}),
const resource = new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'toolkit',
[SemanticResourceAttributes.SERVICE_NAMESPACE]: 'necord',
[SemanticResourceAttributes.SERVICE_VERSION]: '1.0.0'
});

const instrumentations = [getNodeAutoInstrumentations()];

export const otelSDK = new NodeSDK({
resource,
metricReader,
instrumentations: [getNodeAutoInstrumentations()],
instrumentations,
resourceDetectors: getResourceDetectors()
});

export default otelSDK;
setImmediate(() => {
const meterProvider = metrics.getMeterProvider();
const meter = meterProvider.getMeter('node-metrics');
setupNodeMetrics(meter, { labels: resource.attributes as any });
});

// You can also use the shutdown method to gracefully shut down the SDK before process shutdown
// or on some operating system signal.
Expand Down

0 comments on commit fe192c3

Please sign in to comment.