diff --git a/dashboard/server/init.ts b/dashboard/server/init.ts index 62ed7ba..cebe62f 100644 --- a/dashboard/server/init.ts +++ b/dashboard/server/init.ts @@ -3,6 +3,9 @@ import { Redis } from "~/server/services/CacheService"; import EmailService from '@services/EmailService'; import StripeService from '~/server/services/StripeService'; import { anomalyLoop } from "./services/AnomalyService"; +import { logger } from "./Logger"; + + const config = useRuntimeConfig(); let connection: mongoose.Mongoose; @@ -10,36 +13,37 @@ let connection: mongoose.Mongoose; export default async () => { - console.log('[SERVER] Initializing'); + logger.info('[SERVER] Initializing'); if (config.EMAIL_SERVICE) { EmailService.init(config.BREVO_API_KEY); - console.log('[EMAIL] Initialized') + logger.info('[EMAIL] Initialized'); } if (config.STRIPE_SECRET) { StripeService.init(config.STRIPE_SECRET, config.STRIPE_WH_SECRET, false); - console.log('[STRIPE] Initialized') + logger.info('[STRIPE] Initialized'); } else { StripeService.disable(); - console.log('[STRIPE] No stripe key - Disabled mode') + logger.warn('[STRIPE] No stripe key - Disabled mode'); } if (!connection || connection.connection.readyState == mongoose.ConnectionStates.disconnected) { - console.log('[DATABASE] Connecting'); + logger.info('[DATABASE] Connecting'); connection = await mongoose.connect(config.MONGO_CONNECTION_STRING); - console.log('[DATABASE] Connected'); + logger.info('[DATABASE] Connected'); } - console.log('[REDIS] Connecting'); + logger.info('[REDIS] Connecting'); await Redis.init(); - console.log('[REDIS] Connected'); + logger.info('[REDIS] Connected'); - console.log('[SERVER] Completed'); + logger.info('[SERVER] Completed'); - console.log('[ANOMALY LOOP] Started'); - anomalyLoop(); + logger.warn('[ANOMALY LOOP] Disabled'); + // anomalyLoop(); + logger.error(new Error('test error')) }; \ No newline at end of file diff --git a/dashboard/server/services/AnomalyService.ts b/dashboard/server/services/AnomalyService.ts index 2504d16..3422ad4 100644 --- a/dashboard/server/services/AnomalyService.ts +++ b/dashboard/server/services/AnomalyService.ts @@ -17,12 +17,12 @@ const anomalyData = { minutes: 0 } async function anomalyCheckAll() { const start = performance.now(); - console.log('START ANOMALY CHECK'); + console.log('[ANOMALY] START ANOMALY CHECK'); const projects = await ProjectModel.find({}, { _id: 1 }); for (const project of projects) { await findAnomalies(project.id); } - const end = start - performance.now(); + const end = performance.now() - start; console.log('END ANOMALY CHECK', end, 'ms'); } @@ -31,6 +31,7 @@ export function anomalyLoop() { anomalyCheckAll(); anomalyData.minutes = 0; } + anomalyData.minutes++; setTimeout(() => anomalyLoop(), 1000 * 60); } @@ -83,22 +84,25 @@ export async function findAnomalies(project_id: string) { ]); - const rootWebsite = websites.reduce((a, e) => { - return a.count > e.count ? a : e; - }); - - const rootDomain = new url.URL(getUrlFromString(rootWebsite._id)).hostname; - const detectedWebsites: string[] = []; - for (const website of websites) { - const websiteDomain = new url.URL(getUrlFromString(website._id)).hostname; + if (websites.length > 0) { + const rootWebsite = websites.reduce((a, e) => { + return a.count > e.count ? a : e; + }); + const rootDomain = new url.URL(getUrlFromString(rootWebsite._id)).hostname; + for (const website of websites) { + const websiteDomain = new url.URL(getUrlFromString(website._id)).hostname; - if (!websiteDomain.includes(rootDomain)) { - detectedWebsites.push(website._id); + if (websiteDomain === 'localhost') continue; + if (websiteDomain === '127.0.0.1') continue; + if (websiteDomain === '0.0.0.0') continue; + + if (!websiteDomain.includes(rootDomain)) { detectedWebsites.push(website._id); } } } + const visitAnomalies = movingAverageAnomaly(visitsTimelineData, WINDOW_SIZE, THRESHOLD); const eventAnomalies = movingAverageAnomaly(eventsTimelineData, WINDOW_SIZE, THRESHOLD); diff --git a/shared/schema/anomalies/AnomalyVisitSchema.ts b/shared/schema/anomalies/AnomalyVisitSchema.ts index 8230098..6faf0b4 100644 --- a/shared/schema/anomalies/AnomalyVisitSchema.ts +++ b/shared/schema/anomalies/AnomalyVisitSchema.ts @@ -3,13 +3,13 @@ import { model, Schema, Types } from 'mongoose'; export type TAnomalyVisit = { project_id: Schema.Types.ObjectId - visitDate: string, + visitDate: Date, created_at: Date } const AnomalyVisitSchema = new Schema({ project_id: { type: Types.ObjectId, required: true }, - visitDate: { type: String, required: true }, + visitDate: { type: Date, required: true }, created_at: { type: Date, required: true }, })