Skip to content

Commit

Permalink
chore: Add telemetry system
Browse files Browse the repository at this point in the history
Added new file 'telemetry.guard.ts' in 'src/api/guards' directory.
Modified 'index.router.ts' in 'src/api/routes' directory to integrate the new telemetry system.

This change improves the monitoring and data gathering capabilities of the application, allowing for better performance analysis and potential issue detection.
  • Loading branch information
dgcode-tec committed Jul 15, 2024
1 parent 7a675e7 commit e33893d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/api/guards/telemetry.guard.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import axios from 'axios';
import { NextFunction, Request, Response } from 'express';
import fs from 'fs';

const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));

interface TelemetryData {
route: string;
apiVersion: string;
timestamp: Date;
}

class Telemetry {
public collectTelemetry(req: Request, res: Response, next: NextFunction): void {
const telemetry: TelemetryData = {
route: req.path,
apiVersion: `${packageJson.version}`,
timestamp: new Date(),
};

axios
.post('https://log.evolution-api.com/telemetry', telemetry)
.then(() => {})
.catch((error) => {
console.error('Telemetry error', error);
});

next();
}
}

export default Telemetry;
5 changes: 5 additions & 0 deletions src/api/routes/index.router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import fs from 'fs';
import { configService, WaBusiness } from '../../config/env.config';
import { authGuard } from '../guards/auth.guard';
import { instanceExistsGuard, instanceLoggedGuard } from '../guards/instance.guard';
import Telemetry from '../guards/telemetry.guard';
import { ChatwootRouter } from '../integrations/chatwoot/routes/chatwoot.router';
import { RabbitmqRouter } from '../integrations/rabbitmq/routes/rabbitmq.router';
import { S3Router } from '../integrations/s3/routes/s3.router';
Expand Down Expand Up @@ -36,11 +37,15 @@ const router = Router();
const serverConfig = configService.get('SERVER');
const guards = [instanceExistsGuard, instanceLoggedGuard, authGuard['apikey']];

const telemetry = new Telemetry();

const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));

if (!serverConfig.DISABLE_MANAGER) router.use('/manager', new ViewsRouter().router);

router
.use((req, res, next) => telemetry.collectTelemetry(req, res, next))

.get('/', (req, res) => {
res.status(HttpStatus.OK).json({
status: HttpStatus.OK,
Expand Down

0 comments on commit e33893d

Please sign in to comment.