Skip to main content
Glama
MonitoringService.ts1.96 kB
import { MonitoringService, AnalyticsEngineDataset, } from '../types/monitoring'; import { Logger } from '../utils/logger'; import { SentryService } from './SentryService'; export class MonitoringServiceImpl implements MonitoringService { private analyticsEngine: AnalyticsEngineDataset; private logger: Logger; constructor(analyticsEngine: AnalyticsEngineDataset, logger: Logger) { this.analyticsEngine = analyticsEngine; this.logger = logger; } public trackRequest( method: string, path: string, status: number, duration: number, userId?: string, error?: string, ): void { this.logger.info('Tracking request', { method, path, status, duration }); this.analyticsEngine.writeDataPoint({ indexes: ['requests_total', method.toUpperCase(), path], blobs: [userId || null, error || null], doubles: [status, duration], }); } public trackApiCall( service: string, success: boolean, duration: number, statusCode?: number, ): void { this.logger.info('Tracking API call', { service, success, duration }); this.analyticsEngine.writeDataPoint({ indexes: ['api_calls_total', service], blobs: [success ? 'success' : 'failure'], doubles: [duration, statusCode || 0], }); } public trackError(error: Error, context?: Record<string, unknown>): void { this.logger.error('Tracking error', { errorMessage: error.message, stack: error.stack, context, }); this.analyticsEngine.writeDataPoint({ indexes: ['errors_total'], blobs: [error.name, error.message, error.stack || null], }); SentryService.captureException(error, context); } public trackExecution(label: string, duration: number): void { this.logger.info('Tracking execution', { label, duration }); this.analyticsEngine.writeDataPoint({ indexes: ['execution_time', label], doubles: [duration], }); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/learnwithcc/tally-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server