node-otel-monitor
v0.1.7-alpha
Published
NestJS monitoring package with OpenTelemetry
Readme
📦 nestjs-monitor
Modulo NestJS per monitoraggio avanzato con:
- 📈 Log strutturati, metriche e tracing distribuito con
@opentelemetry/sdk-node- 🌐 Compatibile con Grafana Cloud
📁 Struttura del pacchetto
nestjs-monitor/
├── src/
├── dist/
├── README.md
├── package.json
├── tsconfig.json🚀 Installazione
Nel progetto, esegui npm i node-otel-monitor
🔧 Uso
1. AppModule – abilita logging e otel
import { Module } from '@nestjs/common';
import { OtelModule } from 'node-otel-monitor';
@Module({
imports: [
OtelModule.forRoot({
serviceName: 'my-nest-app',
instanceId: '<grafana_instance_id>',
apiKey: '<grafana_api_key>',
}),
],
})
export class AppModule {}⚠️ IMPORTANTE: Se stai utilizzando questo modulo come dipendenza in un altro servizio NestJS, assicurati che:
- Il modulo
OtelModulesia importato prima di qualsiasi altro modulo che potrebbe utilizzare logging - Se incontri l'errore
context.getValue is not a function, significa che il contesto OpenTelemetry non è stato inizializzato correttamente. Il modulo ora gestisce automaticamente questo problema con un'inizializzazione robusta.
2. main.ts – imposta logger globale
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { OtelLoggerService } from 'node-otel-monitor';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const logger = app.get(OtelLoggerService);
app.useLogger(logger);
await app.listen(3000);
}
bootstrap();3. Usa logger iniettato
import { Injectable } from '@nestjs/common';
import { OtelLoggerService } from 'node-otel-monitor';
@Injectable()
export class MyService {
constructor(private readonly logger: OtelLoggerService) {}
doWork() {
this.logger.log('Lavoro avviato');
}
}📡 Dati su Grafana Cloud
| Tipo | Destinazione Grafana Cloud | Protocollo | Query di esempio |
|-----------|-----------------------------|------------|--------------------------------|
| Logs | Loki | REST | {job="my-nest-app"} |
| Metriche | Prometheus | OTLP/HTTP | otel_scope_info |
| Traces | Tempo | OTLP/HTTP | service.name = "my-nest-app" |
🧪 Requisiti
- NestJS 9 o superiore
- Node.js >= 16
- Grafana Cloud con:
- Instance ID (numerico)
- API Key con permessi per metrics, logs, e traces
