From 8f2711f72816ba49b2f57a813efd4c10e81d561d Mon Sep 17 00:00:00 2001 From: Li Wei Date: Wed, 11 Jun 2025 10:22:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8A=A0=E5=85=A5=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E4=BB=A5=E5=8F=8A=20pnpm=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/data/pingping.sqlite | Bin 925696 -> 7573504 bytes backend/logs/app.log | 18231 ++++++++++++++++++ backend/package.json | 6 +- backend/src/index.ts | 33 +- backend/src/routes/systemHealth.ts | 29 + backend/src/services/monitoringService.ts | 160 +- backend/src/services/systemHealthService.ts | 158 + frontend/index.html | 2 +- frontend/package.json | 6 +- frontend/pnpm-lock.yaml | 72 + frontend/src/App.vue | 2 + frontend/src/components/SystemAlert.vue | 81 + frontend/src/components/SystemStatus.vue | 249 + frontend/src/views/Settings.vue | 6 +- frontend/vite.config.ts | 4 +- package.json | 43 + pnpm-workspace.yaml | 3 + start.sh | 61 + stop.sh | 23 + 19 files changed, 19156 insertions(+), 13 deletions(-) create mode 100644 backend/logs/app.log create mode 100644 backend/src/routes/systemHealth.ts create mode 100644 backend/src/services/systemHealthService.ts create mode 100644 frontend/src/components/SystemAlert.vue create mode 100644 frontend/src/components/SystemStatus.vue create mode 100644 package.json create mode 100644 pnpm-workspace.yaml create mode 100755 start.sh create mode 100755 stop.sh diff --git a/backend/data/pingping.sqlite b/backend/data/pingping.sqlite index 87a8cf8888983085d95ce91b627824369d3e513f..1e484d72d6dc08a27e5e386cb00aa9425d7519f9 100644 GIT binary patch literal 7573504 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

&D`+J*p-_=^awwCT%w{rsLhYc@?Ne-3*?ABz zn@kVx$>g#L1sw-q1x-&D%2;3wPoDj#0uW{q%ZDUK!;6NNH2e}2ociK~7pJ~#0a{(4~P9?6<_U}g+l)*(eCPxEExV9vJhdd%UUY7 zS1^*6?WL&g2CjA~L-o*R!A@D|wx9~LMNAmh|KB7&-tjw3@c#$J60%h3^v%uXamWS8 zEMBXZt#n$s#}RaDz@RTzhP3isgq<4H23D?OSoto(PK~T$*ev`%SzXjPnL6?R=p=(n zy7a$8E1m80|F;I&8s`6*{~uiQrC z{$UHS1=s>?0k!~JfGxllU<+&-3xI;TjVYL=gtjTN%Chsgls}}-uGfidxWA>b#D|(WJ_GB zmfUkSe2H3tFVSoVUFKb(spwe5o*PM9vr>A}k_Wc}$RwD8j{;3fjfB64UT|Yy?}e9L zaOuTBQlg-d;mMrDMM~dg6~KsT$cay9Rbk7LiS{rsLdud7-T-ChNjMEjdUg5p3+Iv} z0T8e%0x=-e1n|r;fD!OyK43zOnLOUNp_ zpMWt)2Dh_r>3_4jRk=ptJU{(k)bBJRn4ubX;ivzLyAb?m=#o(5F8uVrzYAjamP!Aw zT*S~%|NFaela5#=HdOlG0P?Umms7?@##8D2!zti=sj;EVer3CYm}_%0v9<4ky;X30#Gv$DcMS}1d`#NL?n!)>d53Q znzO64C9D5c^tnX&wx&~&KSTsR!mtFQIf(uBPrXNE?~3*RkxeWE zwfxm3<$_7}71aMniE&i_W}*83+Di6=*o5Il6zx`jWWoA>ypFz;S{RIK+FGi|&WF*F ztE!#S4NM-i0K~_miIl>FF293N{-3g9zW(3Oo4U{H_4IR6E;z{6LJj1MbM-T#FrKljkn_kQ@tzjxnL5B>3vKmDNr<-&=vvGn+m zvMW6@ni(2UCh3X&gNmsfIB+02JTWmmnjxYxaa-@`#KfL`lf47C^`?i0_GYr#-hp1t z)RVdeU&M2gfQ2J@&d^gT5S+nX!VL|+bj2K}l{8%vR#6lyY56!ZwuFLUne%TZ4bdT7 zQB3L>?!U~GZBr`>f5FW!3WZs&BsviUNFlFCPTIkN$>%vZutFz$OON845YvH^zBb=n z2L5IH%t>>%aq$@h<85-o zmKuot(dn#%uNLQuIJ<(fdKNkd7fyQ5Kcn$G3HFDgB%E7j{C!vFw@4`V7A&Fyiv4!I zG_lqRijAl}sF7F=La`866n80tT75O{A_&Ez0W^K<_2q7ZP%J)$Fx2LOVm;F$9M;2~ z0Qw3{=zXFRK&+tUGuw!DV?H-GpF;fqDeNJ!1)7@Pw<8~yYu#93t*cuB!0}NW4(tC# z-GK}&L@QU$3+w-hTA)e`(aLw>uXVnPA=bLJ*Z&hmfbt&ZYIS;Lbdb%Zb0gW@$Y56K z@9$5T1?61@8ouM%v5{OZGt`FwVsBK#T%03dAT7qd<%TF$%;ePy?YraEpEZ|Cy%lC%O_%&ooB- zi=u$`U?lKnjs!Ro;7EWY0gePX65vRHBLR*CI1*@-NWd9TRVoVDk#CFOf_|$pxgewx z1e`t6-k(IQ2^4dmZX8Sq**8rNO}@huShN+H(PwZQzREOQ%F`tazR#7 z^{W+VOBNAeOYW;Y?}3tl)AFq%pLh2`KcCl?T{kAkj$i^xb@+}g!Wb?Ds239?x+;b; zchwzHxBx(C@~w3NfK{OY02+*ri|jwN7fnk4J09ksk+RU)RvcUT>?rX6e}?-1j-zdV z))?_We@eChTYxRV7GMi(dJEk7_IziF+x}X=miN9!b=ys!m4_^|uSbrpW7YC{s`Tsu zOqxPDRMhf%vYTr~$DJy33mCtw$0b-9?iT^6k&Zj|q4|o;Qm$0Q6!hD2?Q%|_g504k+a@U#1L-BNFFnHxWo(~2ubrlvd+HnJetEoKD zE3^lvZn-wmayrp+HniGl=85ULf|>&x#l$Ep02LioaS-@x@gG)ctwHZKUm2$0Tyh6e^5dOPuEs6GqhkH#eWu6#EAZ{L}Cjc;8j|Zn1zI zF3SIZYjb-W(wPgM<#qNp3{j$1*IfkZe|U)z_d9F+6k&(P6uUTX4ox-mzj^GtogTaw zkNg=|$p5RFLHNJ8Qy);q!Ie=H`2X|rT{N+qKQ@As-00Xh8M~gTAEtho`eEvasUN0( znEGMrhp8W?ej14SfnTgq{eR1rH1Yoj@W4Oywg8F^PD0$VWhw4>6Neofc5v9iVF!mD z9CmQn!C?o79UOKvP}rfP*x-)g{MIFE>5l7tYN=t14NRfyDT)nT*(n}9<0ZrrE;i7U zu3wK}_)3b@C&0BRdlSm=BES>;e~-xME%ElY^plzcT& zNjOf5D1@jkya~lgtMBFzij!pZ$GXNz=%``nqW6Mjf*u4gZJTb&0Cpb*)?;=Uaj0US zEM~{yqAK<`>cz#bQwM;EP&`1Cnp9LVxi6PV?mjR$IxBtaQ&0t#q5b0zedYg^Gp(E8WVA0sWP3Nt|C40|u|xHSQu< z0f19E;!0lQF2WT6+LDCHYRmNMt^Z%)ekWEsSFCilMk}30U6l05T3W-`|34M;x&*|z zltCN@aTvs55Qjk=25}g~VGxHw90qY32*iO~EcE}I6OT7_{V4|iVGFPY*aB<;wg6jz zEx;CF3v6}^K-T_+O9aIstIvT^`zsY?Id_71@cJdPSul|hPTyC{I4mBoitqe3T%nP5x*1S_+dRC#4T3yT^HtG zAimeTJDm4key3kSu=T?c$VNaPu1dH)@R~}RazVh|lnnxciJ;Z0-Dy$D?dsnw3~&e? zzFN48Y9uHtHEbr(!Z4kbZb7Ne(^D`Oqz?hAV=`DW_p|~j%2J9YN{lk}_n_TMB`KqX zC5I<-5_BkimnuXh&sFeWA_7GcT7z`@7$%)-LN8LP@>M*M04!-zj1s4hpi^+};8YP^ zu7%7j^ddbF{u%@#4HAb`MP-EClH#`bU1a_rr;*S9Hyvz>{iOL6JRHBDJD;CFO{AIM zR}h-p`pNY@cQHdEYD%hJ2!f}ZTxMl2^}*fgTwy{@j*Jg0)wM_0OWLDb$LNo)RS<-v z8IPqjrK1i6i)#vpguW0ePB%BH%F``GgqSoVkpF*iDF6S+<|dt_x@vGu4rI<(&IpA` zCp}{7)VPZv=>(vs{xDULbaIofz~43x>Exo@36V~uXzbdQ|2I%+2F<|od2PfX#POnF z{{Ib}|L6Qa=l?nX&-s7O|8xGI^Z%Ux=lp*I<^K`xiTr;{liSpDR?A6vsQL#{;^`+= zlqm0ku5FYU(F&ukQKE~2kMesMHSQuDCCdB18!Aey&=u27+7|V_Q5}jEZA(RzXo|K^ z;V9AaDe;#Eqr|syl*mycM~NIIa+JtXB1efFC32L=QDOr{iExY6JFm{aqy(bze2AuD zWk?L0#1odpN5qy?J1Ecn+epmIjKAg*03#q8|H(+%`^bQal)Z~QzR$!sBG2!)d_*2s zr_>z%&e3H{$|#5iZNdtTDe*+1bb_7Xmtr#YZvZa{s&WXm3`4E=*F(0;s zpcI91nk_3DP&na-ag_r)Q!7+OpgVgZp!1Gh72y^GKWzDGme^7SZ5o0c5vN1MvOj-@ zNXy>yGK6TxmVJ}m7q2%}9icNAgz+ntR|MrOrPV@GUe&)@B%&S6_*VaBGA&x@Y+#hI zv#aF2t7(W`5%-4dzhk5fgQ_dMl;K%P7tOJ$IzST8? z0k!~JfGx0zEr7D;S1ft&T=r}VVNj8$S!%Uq6}@*PNi;p_B{i3x;`%j|sMhrL=23^~ ztISt&@bN5B2qtqkvied_+Rm{vHqb5g3#+juyfj5YEt4v0y+ZyPf-X%X3){oSyLeHwMK01IDu3SD>7EPPJe6E)?Md4Y{6R&X>L4{seH=gQHahHXQ17oFfx!5vkE9r$bUA7*L! zb?<7WhI^w5x06Ge%w#r`*;A%d--mMP-4l~pWh{MbpMs3&&V#v(GMOISlgVWh3N#4h zB4D5ofQ4+VnzTf!HM}KDugjzoptSDic6CDr`5NY&Jo78B8MaqgDNMhypAJG*Dl$-( zH(221lX`hJd&SQ+_>>@qaT)|3&@(CiZvu(CcLZRCb&x){CW1C*R!M-i53QUsLZwU#{$8 zcLdGf zmz~sgksJyocoE;BBH$(Yvt;`JHbiBjBH%xr0O|i#a|EIEza5cPs}4vArvE|SACL5Z zg>)EdQGlB1DP6}zwVV_>a3mc_W4jLO{{`q)K0ONj|5Huf+d96`_SA-s+xg(w0&D@c z09$}9z!q4E1>oDC7vbACu6&bE+LID2xow2_nm*rO2KKrFAERntQ{cR`9`DgocXYbq7#2791sQK)_Ob+uv8R{&i>c(3|53p(j_V05d2?sXd=@ZMZb z85hBEt=?Fx*8nr<6#E@DN~6pyZ90bR2#5sIt;y)TVZqTu_`--A{w zMew6Q`a;91ZNZmS(E}}v(VKpS3(hf5hRKB1N0#0gNzbp-F%fLbC!>9ttao4LY}1PH zyy|xn1V%3ac^OFqqeqznVrA8%;Mo&LAhyKGEVg8W!tzs1bj3O+M8!U~$*I`-7sP~X zZcyM;2I<$i=4K6c5u{>K6DAC`p{UpjdgpY!22rt&hY@9ORMiuy|A$M65hMLS=KojX zOr7Y@1^?e4TIv3BbFXw!{z#3>P%EwUS322NbVIFl6$DQ_ zT*`_3x8OdZX4a(64!W!)4PC)Kpa1U*Vn5vf&tdF`u^+~M82e%Dhp`{Vei-{?`OZiar}Nw zmAHS3k)RUXUz1XLfD}y1_X;FPDE=qPaevz*p(Fx(bX7hXT7QN}6E6cP7y|N;ND$#3 zLMc=g;Kwm=f7dE#{1voC?WE&Hsr@0Gvzrg~<&z?NchBjFK#HLIr$hJ8MLtY(QwDNlR9X`5 z|A+bF^Zy+$1^=IT77zTx7GMjo1=s>?0k!~JprI{r=QVkwBu09b-vRBnt{52~R-U^5 z3r~LTp{MWt@Q;7*zNa4g;~#(eLj%f%6JulP@gZebdSo;+G@wk<6Z;1hQ#o+pKyr9u zVt6z|y5x!5dPgTF_UxPN9k{JGJv6j8lg;)H^lGLK>2ctio&$(ejYPUbPr0$L_rl9A zxb))Qf$PH%cW{^Rii0m*1;}mbg~&+a+d>�=N+|QZdreED8W9=CMVwbE0C5M8y>{ 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 diff --git a/backend/logs/app.log b/backend/logs/app.log new file mode 100644 index 0000000..3e051ae --- /dev/null +++ b/backend/logs/app.log @@ -0,0 +1,18231 @@ +Tue, 10 Jun 2025 09:53:22 GMT koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md at dist/index.js:81:5 +应用启动时的监控任务初始化逻辑: Router { + opts: {}, + methods: [ + 'HEAD', 'OPTIONS', + 'GET', 'PUT', + 'PATCH', 'POST', + 'DELETE' + ], + exclusive: false, + params: {}, + stack: [ + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [], + stack: [Array], + path: '/', + regexp: /^(?:\/)(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [Array], + stack: [Array], + path: '/:id', + regexp: /^(?:\/([^\/]+))(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [], + stack: [Array], + path: '/', + regexp: /^(?:\/)(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [Array], + stack: [Array], + path: '/:id', + regexp: /^(?:\/([^\/]+))(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [Array], + stack: [Array], + path: '/:id', + regexp: /^(?:\/([^\/]+))(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [Array], + stack: [Array], + path: '/:id/results', + regexp: /^(?:\/([^\/]+)\/results)(?:\/$)?$/i + }, + Layer { + opts: [Object], + name: null, + methods: [Array], + paramNames: [Array], + stack: [Array], + path: '/:id/check', + regexp: /^(?:\/([^\/]+)\/check)(?:\/$)?$/i + } + ], + host: undefined +} +数据库连接成功 +执行系统健康检查... +系统健康状态: healthy +已停止所有监控任务 (0 个) +已启动监控: Deepseek (ID: 1), 间隔: 60秒 +已启动监控: Google (ID: 2), 间隔: 60秒 +已启动监控: Deepseek Ping (ID: 4), 间隔: 60秒 +已启动监控: ChatGPT (ID: 5), 间隔: 60秒 +已启动 4 个监控任务 +监控服务已启动 +服务器运行在 http://localhost:2070 +系统整体健康状态: healthy +[2025-06-10T09:53:26.963Z] <-- GET /api/system/health +[2025-06-10T09:53:27.008Z] --> GET /api/system/health 200 45ms 767b +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T09:53:28.727Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.530Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.373Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 431, + active: true, + lastCheckTime: 2025-06-10T09:53:27.411Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:53:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:22.455Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:53:22.000Z + } +] +[2025-06-10T09:53:28.729Z] --> GET /api/monitoring 200 3ms 1.33kb +[2025-06-10T09:53:57.843Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.530Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.373Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 431, + active: true, + lastCheckTime: 2025-06-10T09:53:27.411Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:53:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:22.455Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:53:22.000Z + } +] +[2025-06-10T09:53:57.849Z] --> GET /api/monitoring 200 6ms 1.33kb +[2025-06-10T09:53:58.642Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.530Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.373Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 431, + active: true, + lastCheckTime: 2025-06-10T09:53:27.411Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:53:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:22.455Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:53:22.000Z + } +] +[2025-06-10T09:53:58.644Z] --> GET /api/monitoring 200 3ms 1.33kb +[2025-06-10T09:54:00.602Z] <-- GET /api/system/health +[2025-06-10T09:54:00.638Z] --> GET /api/system/health 200 36ms 767b +[2025-06-10T09:54:04.987Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.530Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:25.373Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:53:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 431, + active: true, + lastCheckTime: 2025-06-10T09:53:27.411Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:53:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:53:22.455Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:53:22.000Z + } +] +[2025-06-10T09:54:04.989Z] --> GET /api/monitoring 200 2ms 1.33kb +[2025-06-10T09:54:06.272Z] <-- GET /api/monitoring/2 +[2025-06-10T09:54:06.273Z] --> GET /api/monitoring/2 200 1ms 354b +[2025-06-10T09:54:06.274Z] <-- GET /api/monitoring/2/results +[2025-06-10T09:54:06.280Z] --> GET /api/monitoring/2/results 200 6ms 57.42kb +[2025-06-10T09:54:06.959Z] <-- GET /api/system/health +[2025-06-10T09:54:06.983Z] --> GET /api/system/health 200 24ms 767b +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T09:54:28.756Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T09:54:26.419Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:54:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:54:25.377Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:54:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 432, + active: true, + lastCheckTime: 2025-06-10T09:54:27.358Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:54:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:54:22.401Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:54:22.000Z + } +] +[2025-06-10T09:54:28.758Z] --> GET /api/monitoring 200 2ms 1.33kb +[2025-06-10T09:55:18.545Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T09:54:26.419Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:54:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:54:25.377Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:54:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 432, + active: true, + lastCheckTime: 2025-06-10T09:54:27.358Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:54:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:54:22.401Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:54:22.000Z + } +] +[2025-06-10T09:55:18.546Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-10T09:55:20.028Z] <-- GET /api/monitoring/1 +[2025-06-10T09:55:20.029Z] --> GET /api/monitoring/1 200 1ms 370b +[2025-06-10T09:55:20.030Z] <-- GET /api/monitoring/1/results +[2025-06-10T09:55:20.042Z] --> GET /api/monitoring/1/results 200 12ms 293.86kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T09:55:28.686Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:55:25.640Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:55:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:55:25.473Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:55:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 433, + active: true, + lastCheckTime: 2025-06-10T09:55:27.418Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:55:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:55:22.569Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:55:22.000Z + } +] +[2025-06-10T09:55:28.688Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T09:56:28.680Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:56:25.603Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:56:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:56:25.376Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:56:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 434, + active: true, + lastCheckTime: 2025-06-10T09:56:27.359Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:56:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:56:22.436Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:56:22.000Z + } +] +[2025-06-10T09:56:28.682Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T09:57:28.665Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:57:25.541Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:57:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:57:25.393Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:57:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 435, + active: true, + lastCheckTime: 2025-06-10T09:57:27.433Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:57:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:57:22.445Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:57:22.000Z + } +] +[2025-06-10T09:57:28.667Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T09:58:28.657Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:58:25.573Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:58:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:58:25.425Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:58:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 436, + active: true, + lastCheckTime: 2025-06-10T09:58:27.396Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:58:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:58:22.468Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:58:22.000Z + } +] +[2025-06-10T09:58:28.659Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T09:59:28.684Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:59:25.743Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T09:59:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:59:25.443Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T09:59:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 437, + active: true, + lastCheckTime: 2025-06-10T09:59:27.488Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T09:59:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T09:59:22.513Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T09:59:22.000Z + } +] +[2025-06-10T09:59:28.686Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:00:28.687Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:00:25.881Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:00:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:00:25.487Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:00:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 438, + active: true, + lastCheckTime: 2025-06-10T10:00:27.456Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:00:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:00:22.545Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:00:22.000Z + } +] +[2025-06-10T10:00:28.691Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:01:28.668Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:01:25.666Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:01:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:01:26.509Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:01:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 439, + active: true, + lastCheckTime: 2025-06-10T10:01:27.543Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:01:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:01:22.563Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:01:22.000Z + } +] +[2025-06-10T10:01:28.669Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:02:28.730Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:02:26.310Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:02:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:02:25.546Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:02:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 440, + active: true, + lastCheckTime: 2025-06-10T10:02:27.521Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:02:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:02:22.564Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:02:22.000Z + } +] +[2025-06-10T10:02:28.732Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:03:28.674Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:03:25.807Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:03:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:03:26.544Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:03:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 441, + active: true, + lastCheckTime: 2025-06-10T10:03:27.603Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:03:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:03:22.588Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:03:22.000Z + } +] +[2025-06-10T10:03:28.679Z] --> GET /api/monitoring 200 6ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:04:28.724Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:04:25.837Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:04:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:04:25.596Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:04:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 442, + active: true, + lastCheckTime: 2025-06-10T10:04:27.559Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:04:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:04:22.654Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:04:22.000Z + } +] +[2025-06-10T10:04:28.726Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T10:05:28.667Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:05:25.735Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:05:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:05:25.589Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:05:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 443, + active: true, + lastCheckTime: 2025-06-10T10:05:27.617Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:05:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:05:22.626Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:05:22.000Z + } +] +[2025-06-10T10:05:28.669Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:06:28.689Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:06:25.828Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:06:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:06:25.615Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:06:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 444, + active: true, + lastCheckTime: 2025-06-10T10:06:27.590Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:06:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:06:22.672Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:06:22.000Z + } +] +[2025-06-10T10:06:28.690Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:07:28.654Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:07:25.812Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:07:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:07:25.640Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:07:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 445, + active: true, + lastCheckTime: 2025-06-10T10:07:27.679Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:07:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:07:22.684Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:07:22.000Z + } +] +[2025-06-10T10:07:28.657Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:08:28.676Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:08:25.827Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:08:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:08:25.665Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:08:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 446, + active: true, + lastCheckTime: 2025-06-10T10:08:27.650Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:08:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:08:22.740Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:08:22.000Z + } +] +[2025-06-10T10:08:28.678Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:09:28.687Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:09:25.868Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:09:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:09:25.711Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:09:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 447, + active: true, + lastCheckTime: 2025-06-10T10:09:27.765Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:09:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:09:22.762Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:09:22.000Z + } +] +[2025-06-10T10:09:28.689Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:10:28.697Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:10:25.907Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:10:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:10:25.733Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:10:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 448, + active: true, + lastCheckTime: 2025-06-10T10:10:27.767Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:10:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:10:22.803Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:10:22.000Z + } +] +[2025-06-10T10:10:28.701Z] --> GET /api/monitoring 200 5ms 1.33kb +[2025-06-10T10:11:28.689Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:11:25.946Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:11:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:11:25.791Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:11:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 449, + active: true, + lastCheckTime: 2025-06-10T10:11:27.782Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:11:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:11:23.023Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:11:23.000Z + } +] +[2025-06-10T10:11:28.694Z] --> GET /api/monitoring 200 5ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T10:12:28.652Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:12:26.081Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:12:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:12:25.881Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:12:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 450, + active: true, + lastCheckTime: 2025-06-10T10:12:27.757Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:12:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:12:22.928Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:12:22.000Z + } +] +[2025-06-10T10:12:28.654Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:13:28.714Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:13:25.941Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:13:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:13:26.777Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:13:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 451, + active: true, + lastCheckTime: 2025-06-10T10:13:27.812Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:13:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:13:22.822Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:13:22.000Z + } +] +[2025-06-10T10:13:28.718Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:14:28.681Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:14:25.946Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:14:25.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:14:25.803Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:14:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 452, + active: true, + lastCheckTime: 2025-06-10T10:14:27.769Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:14:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:14:22.840Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:14:22.000Z + } +] +[2025-06-10T10:14:28.684Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:15:28.680Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:15:26.853Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:15:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:15:25.817Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:15:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 453, + active: true, + lastCheckTime: 2025-06-10T10:15:27.856Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:15:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:15:22.870Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:15:22.000Z + } +] +[2025-06-10T10:15:28.682Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:16:28.692Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:16:26.001Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:16:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:16:25.847Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:16:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 454, + active: true, + lastCheckTime: 2025-06-10T10:16:27.825Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:16:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:16:22.906Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:16:22.000Z + } +] +[2025-06-10T10:16:28.694Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:17:28.659Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:17:26.042Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:17:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:17:25.849Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:17:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 455, + active: true, + lastCheckTime: 2025-06-10T10:17:27.889Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:17:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:17:22.892Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:17:22.000Z + } +] +[2025-06-10T10:17:28.661Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:18:28.673Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:18:26.096Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:18:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:18:25.893Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:18:25.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 456, + active: true, + lastCheckTime: 2025-06-10T10:18:27.867Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:18:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:18:22.935Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:18:22.000Z + } +] +[2025-06-10T10:18:28.675Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:19:28.660Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:19:26.112Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:19:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:19:26.935Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:19:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 457, + active: true, + lastCheckTime: 2025-06-10T10:19:27.951Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:19:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:19:22.960Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:19:22.000Z + } +] +[2025-06-10T10:19:28.661Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:20:28.685Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:20:26.112Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:20:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T10:20:26.944Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:20:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 458, + active: true, + lastCheckTime: 2025-06-10T10:20:27.931Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:20:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:20:22.989Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:20:22.000Z + } +] +[2025-06-10T10:20:28.686Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:21:28.710Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:21:26.141Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:21:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:21:26.026Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:21:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 459, + active: true, + lastCheckTime: 2025-06-10T10:21:28.021Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:21:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:21:23.070Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:21:23.000Z + } +] +[2025-06-10T10:21:28.711Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:22:28.686Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:22:26.154Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:22:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:22:26.000Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:22:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 460, + active: true, + lastCheckTime: 2025-06-10T10:22:27.974Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:22:27.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:22:23.044Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:22:23.000Z + } +] +[2025-06-10T10:22:28.688Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:23:28.773Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:23:26.178Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:23:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:23:26.025Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:23:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 461, + active: true, + lastCheckTime: 2025-06-10T10:23:28.059Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:23:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:23:23.086Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:23:23.000Z + } +] +[2025-06-10T10:23:28.774Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-10T10:24:28.699Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:24:26.356Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:24:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:24:27.046Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:24:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 462, + active: true, + lastCheckTime: 2025-06-10T10:24:28.026Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:24:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:24:23.095Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:24:23.000Z + } +] +[2025-06-10T10:24:28.700Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:25:28.762Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:25:26.233Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:25:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:25:26.078Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:25:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 463, + active: true, + lastCheckTime: 2025-06-10T10:25:28.117Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:25:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:25:23.135Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:25:23.000Z + } +] +[2025-06-10T10:25:28.763Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:26:28.740Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:26:26.269Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:26:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:26:26.108Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:26:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 464, + active: true, + lastCheckTime: 2025-06-10T10:26:28.088Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:26:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:26:23.162Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:26:23.000Z + } +] +[2025-06-10T10:26:28.741Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:27:28.761Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:27:26.290Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:27:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:27:27.170Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:27:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 465, + active: true, + lastCheckTime: 2025-06-10T10:27:28.162Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:27:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:27:23.214Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:27:23.000Z + } +] +[2025-06-10T10:27:28.762Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:28:28.735Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:28:26.349Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:28:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:28:26.180Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:28:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 466, + active: true, + lastCheckTime: 2025-06-10T10:28:28.187Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:28:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:28:23.243Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:28:23.000Z + } +] +[2025-06-10T10:28:28.737Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T10:29:28.776Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:29:26.422Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:29:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:29:27.142Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:29:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 467, + active: true, + lastCheckTime: 2025-06-10T10:29:28.131Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:29:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:29:23.201Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:29:23.000Z + } +] +[2025-06-10T10:29:28.778Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:30:28.715Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:30:26.486Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:30:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T10:30:27.184Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:30:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 468, + active: true, + lastCheckTime: 2025-06-10T10:30:28.245Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:30:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:30:23.223Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:30:23.000Z + } +] +[2025-06-10T10:30:28.717Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:31:28.743Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:31:26.551Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:31:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:31:26.492Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:31:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 469, + active: true, + lastCheckTime: 2025-06-10T10:31:28.196Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:31:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:31:23.556Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:31:23.000Z + } +] +[2025-06-10T10:31:28.745Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:32:28.737Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:32:26.448Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:32:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:32:26.214Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:32:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 470, + active: true, + lastCheckTime: 2025-06-10T10:32:28.252Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:32:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:32:23.257Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:32:23.000Z + } +] +[2025-06-10T10:32:28.739Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:33:28.745Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:33:26.402Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:33:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:33:26.245Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:33:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 471, + active: true, + lastCheckTime: 2025-06-10T10:33:28.227Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:33:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:33:23.292Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:33:23.000Z + } +] +[2025-06-10T10:33:28.747Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:34:28.848Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:34:27.354Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:34:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:34:27.245Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:34:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 472, + active: true, + lastCheckTime: 2025-06-10T10:34:28.284Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:34:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:34:23.300Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:34:23.000Z + } +] +[2025-06-10T10:34:28.850Z] --> GET /api/monitoring 200 2ms 1.33kb +[2025-06-10T10:35:28.722Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:35:26.412Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:35:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:35:26.268Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:35:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 473, + active: true, + lastCheckTime: 2025-06-10T10:35:28.276Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:35:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:35:23.321Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:35:23.000Z + } +] +[2025-06-10T10:35:28.723Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:36:28.750Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:36:26.437Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:36:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:36:26.278Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:36:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 474, + active: true, + lastCheckTime: 2025-06-10T10:36:28.310Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:36:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:36:23.334Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:36:23.000Z + } +] +[2025-06-10T10:36:28.752Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T10:37:28.782Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:37:26.477Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:37:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:37:26.340Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:37:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 475, + active: true, + lastCheckTime: 2025-06-10T10:37:28.278Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:37:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:37:23.341Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:37:23.000Z + } +] +[2025-06-10T10:37:28.783Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:38:28.742Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:38:27.320Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:38:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:38:26.327Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:38:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 476, + active: true, + lastCheckTime: 2025-06-10T10:38:28.378Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:38:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:38:23.381Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:38:23.000Z + } +] +[2025-06-10T10:38:28.744Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:39:28.711Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:39:26.502Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:39:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:39:27.433Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:39:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 477, + active: true, + lastCheckTime: 2025-06-10T10:39:28.325Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:39:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:39:23.448Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:39:23.000Z + } +] +[2025-06-10T10:39:28.713Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:40:28.745Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:40:26.577Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:40:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:40:27.389Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:40:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 478, + active: true, + lastCheckTime: 2025-06-10T10:40:28.405Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:40:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:40:23.416Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:40:23.000Z + } +] +[2025-06-10T10:40:28.747Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:41:28.791Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:41:26.558Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:41:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:41:26.401Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:41:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 479, + active: true, + lastCheckTime: 2025-06-10T10:41:28.381Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:41:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:41:23.457Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:41:23.000Z + } +] +[2025-06-10T10:41:28.795Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:42:28.762Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:42:26.735Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:42:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:42:27.444Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:42:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 480, + active: true, + lastCheckTime: 2025-06-10T10:42:28.462Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:42:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:42:23.481Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:42:23.000Z + } +] +[2025-06-10T10:42:28.765Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:43:28.755Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:43:26.615Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:43:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:43:26.452Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:43:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 481, + active: true, + lastCheckTime: 2025-06-10T10:43:28.440Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:43:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:43:23.521Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:43:23.000Z + } +] +[2025-06-10T10:43:28.757Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:44:28.735Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:44:26.625Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:44:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:44:26.478Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:44:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 482, + active: true, + lastCheckTime: 2025-06-10T10:44:28.503Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:44:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:44:23.537Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:44:23.000Z + } +] +[2025-06-10T10:44:28.739Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T10:45:28.743Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:45:26.791Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:45:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:45:27.496Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:45:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 483, + active: true, + lastCheckTime: 2025-06-10T10:45:28.477Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:45:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:45:23.552Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:45:23.000Z + } +] +[2025-06-10T10:45:28.744Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:46:28.761Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:46:26.936Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:46:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:46:26.564Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:46:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 484, + active: true, + lastCheckTime: 2025-06-10T10:46:28.556Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:46:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:46:23.573Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:46:23.000Z + } +] +[2025-06-10T10:46:28.767Z] --> GET /api/monitoring 200 6ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:47:28.731Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:47:26.872Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:47:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:47:26.540Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:47:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 485, + active: true, + lastCheckTime: 2025-06-10T10:47:28.519Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:47:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:47:23.599Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:47:23.000Z + } +] +[2025-06-10T10:47:28.734Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:48:28.763Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:48:26.819Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:48:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:48:26.599Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:48:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 486, + active: true, + lastCheckTime: 2025-06-10T10:48:28.605Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:48:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:48:23.648Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:48:23.000Z + } +] +[2025-06-10T10:48:28.765Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:49:28.745Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:49:26.758Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:49:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:49:26.610Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:49:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 487, + active: true, + lastCheckTime: 2025-06-10T10:49:28.577Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:49:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:49:23.713Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:49:23.000Z + } +] +[2025-06-10T10:49:28.747Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:50:28.732Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:50:26.837Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:50:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:50:26.627Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:50:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 488, + active: true, + lastCheckTime: 2025-06-10T10:50:28.668Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:50:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:50:23.669Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:50:23.000Z + } +] +[2025-06-10T10:50:28.733Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-10T10:51:28.706Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:51:26.817Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:51:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:51:26.654Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:51:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 489, + active: true, + lastCheckTime: 2025-06-10T10:51:28.638Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:51:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:51:23.706Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:51:23.000Z + } +] +[2025-06-10T10:51:28.708Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-10T10:52:28.757Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:52:27.781Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:52:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:52:27.713Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:52:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 490, + active: true, + lastCheckTime: 2025-06-10T10:52:28.716Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:52:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:52:23.734Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:52:23.000Z + } +] +[2025-06-10T10:52:28.758Z] --> GET /api/monitoring 200 1ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:53:28.737Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:53:27.008Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:53:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:53:26.805Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:53:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 491, + active: true, + lastCheckTime: 2025-06-10T10:53:28.680Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:53:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:53:24.002Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:53:24.000Z + } +] +[2025-06-10T10:53:28.738Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:54:28.763Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:54:26.922Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:54:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:54:26.804Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:54:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 491, + active: true, + lastCheckTime: 2025-06-10T10:53:28.680Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:53:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:54:23.777Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:54:23.000Z + } +] +[2025-06-10T10:54:28.764Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:55:28.721Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:55:26.912Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:55:26.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:55:26.761Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:55:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 492, + active: true, + lastCheckTime: 2025-06-10T10:54:28.774Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:54:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:55:23.819Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:55:23.000Z + } +] +[2025-06-10T10:55:28.722Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T10:56:28.761Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:56:27.844Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:56:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:56:27.885Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:56:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 493, + active: true, + lastCheckTime: 2025-06-10T10:55:28.789Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:55:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:56:24.072Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:56:24.000Z + } +] +[2025-06-10T10:56:28.763Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:57:28.714Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:57:27.167Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:57:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:57:26.814Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:57:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 494, + active: true, + lastCheckTime: 2025-06-10T10:56:28.819Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:56:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:57:23.925Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:57:23.000Z + } +] +[2025-06-10T10:57:28.716Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T10:58:28.790Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:58:27.219Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:58:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:58:26.841Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:58:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 495, + active: true, + lastCheckTime: 2025-06-10T10:57:28.791Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:57:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:58:23.893Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:58:23.000Z + } +] +[2025-06-10T10:58:28.791Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-10T10:59:28.704Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T10:59:27.893Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T10:59:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:59:26.872Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T10:59:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 496, + active: true, + lastCheckTime: 2025-06-10T10:58:28.880Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:58:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T10:59:23.933Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T10:59:23.000Z + } +] +[2025-06-10T10:59:28.706Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:00:28.753Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:00:27.064Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:00:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:00:27.943Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:00:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 497, + active: true, + lastCheckTime: 2025-06-10T10:59:28.859Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T10:59:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:00:23.937Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:00:23.000Z + } +] +[2025-06-10T11:00:28.757Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:01:28.743Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:01:27.232Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:01:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:01:27.950Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:01:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 498, + active: true, + lastCheckTime: 2025-06-10T11:00:28.937Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:00:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:01:23.967Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:01:23.000Z + } +] +[2025-06-10T11:01:28.744Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:02:28.774Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:02:27.110Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:02:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:02:26.949Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:02:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 499, + active: true, + lastCheckTime: 2025-06-10T11:01:28.902Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:01:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:02:24.006Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:02:24.000Z + } +] +[2025-06-10T11:02:28.776Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:03:28.772Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:03:27.160Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:03:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:03:26.972Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:03:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 500, + active: true, + lastCheckTime: 2025-06-10T11:02:28.992Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:02:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:03:24.020Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:03:24.000Z + } +] +[2025-06-10T11:03:28.774Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:04:28.823Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:04:27.205Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:04:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:04:26.993Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:04:26.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 501, + active: true, + lastCheckTime: 2025-06-10T11:03:28.940Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:03:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:04:24.049Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:04:24.000Z + } +] +[2025-06-10T11:04:28.827Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:05:28.741Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:05:27.999Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:05:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:05:28.035Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:05:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 502, + active: true, + lastCheckTime: 2025-06-10T11:04:29.030Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:04:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:05:24.045Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:05:24.000Z + } +] +[2025-06-10T11:05:28.747Z] --> GET /api/monitoring 200 6ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:06:28.757Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:06:27.200Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:06:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:06:27.157Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:06:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 503, + active: true, + lastCheckTime: 2025-06-10T11:05:28.993Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:05:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:06:24.210Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:06:24.000Z + } +] +[2025-06-10T11:06:28.762Z] --> GET /api/monitoring 200 5ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:07:28.777Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:06:27.200Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:06:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:07:28.073Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:07:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 504, + active: true, + lastCheckTime: 2025-06-10T11:06:29.074Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:06:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:07:24.124Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:07:24.000Z + } +] +[2025-06-10T11:07:28.781Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:08:28.761Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:08:27.397Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:08:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:08:27.112Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:08:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 505, + active: true, + lastCheckTime: 2025-06-10T11:07:29.047Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:07:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:08:24.163Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:08:24.000Z + } +] +[2025-06-10T11:08:28.764Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:09:28.801Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:09:27.484Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:09:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:09:27.139Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:09:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 506, + active: true, + lastCheckTime: 2025-06-10T11:08:29.132Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:08:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:09:24.274Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:09:24.000Z + } +] +[2025-06-10T11:09:28.802Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:10:28.791Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:10:27.405Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:10:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:10:27.170Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:10:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 507, + active: true, + lastCheckTime: 2025-06-10T11:09:29.104Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:09:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:10:24.209Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:10:24.000Z + } +] +[2025-06-10T11:10:28.792Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:11:28.768Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:11:27.344Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:11:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:11:27.189Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:11:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 508, + active: true, + lastCheckTime: 2025-06-10T11:10:29.194Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:10:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:11:24.225Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:11:24.000Z + } +] +[2025-06-10T11:11:28.770Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:12:28.791Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:12:27.420Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:12:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:12:28.238Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:12:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 509, + active: true, + lastCheckTime: 2025-06-10T11:11:29.246Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:11:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:12:24.336Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:12:24.000Z + } +] +[2025-06-10T11:12:28.796Z] --> GET /api/monitoring 200 5ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:13:28.712Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:13:27.381Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:13:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:13:27.233Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:13:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 510, + active: true, + lastCheckTime: 2025-06-10T11:12:29.195Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:12:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:13:24.282Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:13:24.000Z + } +] +[2025-06-10T11:13:28.716Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:14:28.822Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:14:27.443Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:14:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:14:27.248Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:14:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 511, + active: true, + lastCheckTime: 2025-06-10T11:13:29.264Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:13:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:14:24.303Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:14:24.000Z + } +] +[2025-06-10T11:14:28.825Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-10T11:15:28.754Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:15:28.332Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:15:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:15:27.266Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:15:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 512, + active: true, + lastCheckTime: 2025-06-10T11:14:29.228Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:14:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:15:24.309Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:15:24.000Z + } +] +[2025-06-10T11:15:28.755Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:16:28.760Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:16:28.300Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:16:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:16:28.321Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:16:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 513, + active: true, + lastCheckTime: 2025-06-10T11:15:29.328Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:15:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:16:24.451Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:16:24.000Z + } +] +[2025-06-10T11:16:28.761Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:17:28.758Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:17:27.493Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:17:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:17:27.333Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:17:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 514, + active: true, + lastCheckTime: 2025-06-10T11:16:29.285Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:16:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:17:24.373Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:17:24.000Z + } +] +[2025-06-10T11:17:28.759Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:18:28.747Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:18:27.516Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:18:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:18:27.357Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:18:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 515, + active: true, + lastCheckTime: 2025-06-10T11:17:29.386Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:17:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:18:24.412Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:18:24.000Z + } +] +[2025-06-10T11:18:28.750Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:19:28.756Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:19:27.535Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:19:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:19:27.380Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:19:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 516, + active: true, + lastCheckTime: 2025-06-10T11:18:29.343Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:18:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:19:24.430Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:19:24.000Z + } +] +[2025-06-10T11:19:28.758Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:20:28.780Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:20:27.570Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:20:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:20:28.404Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:20:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 517, + active: true, + lastCheckTime: 2025-06-10T11:19:29.416Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:19:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:20:24.456Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:20:24.000Z + } +] +[2025-06-10T11:20:28.783Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:21:28.709Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:21:27.835Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:21:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:21:27.426Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:21:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 518, + active: true, + lastCheckTime: 2025-06-10T11:20:29.388Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:20:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:21:24.479Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:21:24.000Z + } +] +[2025-06-10T11:21:28.711Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-10T11:22:28.734Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:22:28.501Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:22:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:22:28.454Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:22:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 519, + active: true, + lastCheckTime: 2025-06-10T11:21:29.465Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:21:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:22:24.520Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:22:24.000Z + } +] +[2025-06-10T11:22:28.736Z] --> GET /api/monitoring 200 2ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:23:28.750Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:23:27.827Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:23:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:23:27.484Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:23:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 520, + active: true, + lastCheckTime: 2025-06-10T11:22:29.441Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:22:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:23:24.522Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:23:24.000Z + } +] +[2025-06-10T11:23:28.752Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:24:28.814Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:24:27.656Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:24:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:24:27.504Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:24:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 521, + active: true, + lastCheckTime: 2025-06-10T11:23:29.519Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:23:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:24:24.550Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:24:24.000Z + } +] +[2025-06-10T11:24:28.816Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:25:28.972Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:25:27.690Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:25:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:25:27.533Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:25:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 522, + active: true, + lastCheckTime: 2025-06-10T11:24:29.488Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:24:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:25:24.612Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:25:24.000Z + } +] +[2025-06-10T11:25:28.974Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:26:28.745Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:26:27.728Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:26:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:26:27.566Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:26:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 523, + active: true, + lastCheckTime: 2025-06-10T11:25:29.570Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:25:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:26:24.613Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:26:24.000Z + } +] +[2025-06-10T11:26:28.746Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:27:28.705Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:27:27.940Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:27:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:27:27.628Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:27:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 524, + active: true, + lastCheckTime: 2025-06-10T11:26:29.548Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:26:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:27:24.791Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:27:24.000Z + } +] +[2025-06-10T11:27:28.708Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-10T11:28:28.718Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:28:28.611Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:28:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:28:27.622Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:28:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 525, + active: true, + lastCheckTime: 2025-06-10T11:27:29.637Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:27:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:28:24.668Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:28:24.000Z + } +] +[2025-06-10T11:28:28.720Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +[2025-06-10T11:29:28.712Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:29:27.977Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:29:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T11:29:28.646Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:29:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 526, + active: true, + lastCheckTime: 2025-06-10T11:28:29.601Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:28:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:29:24.713Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:29:24.000Z + } +] +[2025-06-10T11:29:28.714Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:30:28.711Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:30:28.052Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:30:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T11:30:28.690Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:30:28.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 527, + active: true, + lastCheckTime: 2025-06-10T11:29:29.694Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:29:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:30:24.732Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:30:24.000Z + } +] +[2025-06-10T11:30:28.713Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:31:28.697Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:31:27.871Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:31:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:31:27.715Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:31:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 528, + active: true, + lastCheckTime: 2025-06-10T11:30:29.665Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:30:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:31:24.778Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:31:24.000Z + } +] +[2025-06-10T11:31:28.699Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:32:28.718Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:32:27.885Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:32:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:32:27.727Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:32:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 529, + active: true, + lastCheckTime: 2025-06-10T11:31:29.764Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:31:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:32:24.788Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:32:24.000Z + } +] +[2025-06-10T11:32:28.721Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:33:28.695Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:33:27.964Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:33:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:33:27.752Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:33:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 530, + active: true, + lastCheckTime: 2025-06-10T11:32:29.706Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:32:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:33:24.803Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:33:24.000Z + } +] +[2025-06-10T11:33:28.699Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:34:28.734Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:34:28.026Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:34:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:34:27.758Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:34:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 531, + active: true, + lastCheckTime: 2025-06-10T11:33:29.798Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:33:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:34:24.800Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:34:24.000Z + } +] +[2025-06-10T11:34:28.736Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:35:28.693Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:35:28.020Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:35:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:35:27.788Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:35:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 532, + active: true, + lastCheckTime: 2025-06-10T11:34:29.732Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:34:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:35:24.833Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:35:24.000Z + } +] +[2025-06-10T11:35:28.699Z] --> GET /api/monitoring 200 6ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:36:28.716Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:36:27.978Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:36:27.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:35:27.788Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:35:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 533, + active: true, + lastCheckTime: 2025-06-10T11:35:29.827Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:35:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:36:24.861Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:36:24.000Z + } +] +[2025-06-10T11:36:28.718Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:37:28.692Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:37:28.004Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:37:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:37:27.841Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:37:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 534, + active: true, + lastCheckTime: 2025-06-10T11:36:29.801Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:36:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:37:24.901Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:37:24.000Z + } +] +[2025-06-10T11:37:28.695Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:38:28.734Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:38:28.007Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:38:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:38:27.853Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:38:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 535, + active: true, + lastCheckTime: 2025-06-10T11:37:29.881Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:37:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:38:24.893Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:38:24.000Z + } +] +[2025-06-10T11:38:28.736Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:39:28.753Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:39:28.061Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:39:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:38:27.853Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:38:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 536, + active: true, + lastCheckTime: 2025-06-10T11:38:29.828Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:38:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:39:24.926Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:39:24.000Z + } +] +[2025-06-10T11:39:28.755Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:40:28.734Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:40:28.033Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:40:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:40:27.880Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:40:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 537, + active: true, + lastCheckTime: 2025-06-10T11:39:29.885Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:39:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:40:24.931Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:40:24.000Z + } +] +[2025-06-10T11:40:28.736Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:41:28.735Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:41:28.046Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:41:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:41:27.894Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:41:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 538, + active: true, + lastCheckTime: 2025-06-10T11:40:29.853Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:40:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:41:24.990Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:41:24.000Z + } +] +[2025-06-10T11:41:28.737Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:42:28.694Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:42:28.080Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:42:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:41:27.894Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:41:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 539, + active: true, + lastCheckTime: 2025-06-10T11:41:29.922Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:41:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:42:24.950Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:42:24.000Z + } +] +[2025-06-10T11:42:28.696Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:43:28.761Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:43:28.097Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:43:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:43:27.946Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:43:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 540, + active: true, + lastCheckTime: 2025-06-10T11:42:29.941Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:42:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:43:25.003Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:43:25.000Z + } +] +[2025-06-10T11:43:28.763Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T11:44:28.704Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:43:28.097Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T11:43:28.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:44:27.972Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T11:44:27.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 541, + active: true, + lastCheckTime: 2025-06-10T11:43:29.978Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T11:43:29.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T11:44:25.024Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T11:44:25.000Z + } +] +[2025-06-10T11:44:28.707Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 5 +Traceroute 超时: chatgpt.com +Traceroute 完成: chatgpt.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: ChatGPT +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务宕机通知: Deepseek Ping +发送宕机通知: Deepseek Ping, 连续失败次数: 3 +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: Deepseek Ping +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +已发送服务宕机通知: Deepseek Ping +发送宕机通知: Deepseek Ping, 连续失败次数: 3 +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: Deepseek Ping +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: ChatGPT +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: ChatGPT +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 5 +Traceroute 超时: chatgpt.com +Traceroute 完成: chatgpt.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:50:20.066Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T14:49:33.263Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:49:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:49:32.225Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:49:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 727, + active: true, + lastCheckTime: 2025-06-10T14:49:34.262Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:49:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:49:29.278Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:49:29.000Z + } +] +[2025-06-10T14:50:20.068Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:51:20.020Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:50:32.401Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:50:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:50:32.229Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:50:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 728, + active: true, + lastCheckTime: 2025-06-10T14:50:34.271Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:50:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:50:29.284Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:50:29.000Z + } +] +[2025-06-10T14:51:20.021Z] --> GET /api/monitoring 200 1ms 1.33kb +停止 traceroute 进程: 5 +Traceroute 超时: chatgpt.com +Traceroute 完成: chatgpt.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:52:20.052Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T14:51:33.240Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:51:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T14:51:33.261Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:51:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 729, + active: true, + lastCheckTime: 2025-06-10T14:51:34.278Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:51:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:51:29.281Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:51:29.000Z + } +] +[2025-06-10T14:52:20.053Z] --> GET /api/monitoring 200 1ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:53:20.019Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:52:32.410Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:52:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:52:32.249Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:52:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 730, + active: true, + lastCheckTime: 2025-06-10T14:52:34.230Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:52:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:52:29.314Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:52:29.000Z + } +] +[2025-06-10T14:53:20.021Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:54:20.074Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:53:32.420Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:53:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:53:32.258Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:53:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 731, + active: true, + lastCheckTime: 2025-06-10T14:53:34.320Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:53:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:53:29.301Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:53:29.000Z + } +] +[2025-06-10T14:54:20.075Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:55:20.045Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:54:32.475Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:54:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:54:32.266Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:54:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 732, + active: true, + lastCheckTime: 2025-06-10T14:54:34.244Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:54:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:54:29.324Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:54:29.000Z + } +] +[2025-06-10T14:55:20.046Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:56:20.075Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:55:32.702Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:55:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T14:55:33.290Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:55:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 733, + active: true, + lastCheckTime: 2025-06-10T14:55:34.320Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:55:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:55:29.314Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:55:29.000Z + } +] +[2025-06-10T14:56:20.076Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:57:20.074Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:56:32.445Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:56:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:56:32.288Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:56:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 734, + active: true, + lastCheckTime: 2025-06-10T14:56:34.270Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:56:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:56:29.323Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:56:29.000Z + } +] +[2025-06-10T14:57:20.076Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:58:20.043Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T14:57:33.339Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:57:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:57:32.289Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:57:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 735, + active: true, + lastCheckTime: 2025-06-10T14:57:34.354Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:57:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:57:29.341Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:57:29.000Z + } +] +[2025-06-10T14:58:20.048Z] --> GET /api/monitoring 200 6ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T14:59:20.027Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:58:32.506Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:58:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:58:32.300Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:58:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 736, + active: true, + lastCheckTime: 2025-06-10T14:58:34.281Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:58:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:58:29.353Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:58:29.000Z + } +] +[2025-06-10T14:59:20.028Z] --> GET /api/monitoring 200 1ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:00:19.990Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:59:32.467Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T14:59:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:59:32.308Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T14:59:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 737, + active: true, + lastCheckTime: 2025-06-10T14:59:34.342Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T14:59:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T14:59:29.360Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T14:59:29.000Z + } +] +[2025-06-10T15:00:19.993Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:01:20.003Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:00:33.404Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:00:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:00:33.320Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:00:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 738, + active: true, + lastCheckTime: 2025-06-10T15:00:34.297Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:00:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:00:29.366Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:00:29.000Z + } +] +[2025-06-10T15:01:20.006Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:02:20.504Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:01:32.487Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:01:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:01:32.330Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:01:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 739, + active: true, + lastCheckTime: 2025-06-10T15:01:34.368Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:01:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:01:29.458Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:01:29.000Z + } +] +[2025-06-10T15:02:20.505Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:03:20.258Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:02:32.485Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:02:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:02:32.326Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:02:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 740, + active: true, + lastCheckTime: 2025-06-10T15:02:34.306Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:02:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:02:29.372Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:02:29.000Z + } +] +[2025-06-10T15:03:20.259Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:04:20.034Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:03:32.498Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:03:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:03:32.336Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:03:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 741, + active: true, + lastCheckTime: 2025-06-10T15:03:34.370Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:03:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:03:29.381Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:03:29.000Z + } +] +[2025-06-10T15:04:20.039Z] --> GET /api/monitoring 200 5ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:05:20.070Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:04:32.516Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:04:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:04:33.341Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:04:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 742, + active: true, + lastCheckTime: 2025-06-10T15:04:34.325Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:04:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:04:29.401Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:04:29.000Z + } +] +[2025-06-10T15:05:20.071Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:06:20.026Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:05:33.416Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:05:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:05:32.349Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:05:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 743, + active: true, + lastCheckTime: 2025-06-10T15:05:34.385Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:05:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:05:29.402Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:05:29.000Z + } +] +[2025-06-10T15:06:20.027Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:07:20.036Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:06:32.576Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:06:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:06:32.372Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:06:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 744, + active: true, + lastCheckTime: 2025-06-10T15:06:34.403Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:06:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:06:29.424Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:06:29.000Z + } +] +[2025-06-10T15:07:20.038Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:08:19.977Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:07:32.524Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:07:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:07:33.353Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:07:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 745, + active: true, + lastCheckTime: 2025-06-10T15:07:34.342Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:07:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:07:29.425Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:07:29.000Z + } +] +[2025-06-10T15:08:19.979Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:09:19.979Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:08:33.357Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:08:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:08:32.371Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:08:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 746, + active: true, + lastCheckTime: 2025-06-10T15:08:34.403Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:08:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:08:29.419Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:08:29.000Z + } +] +[2025-06-10T15:09:19.980Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:10:20.039Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T15:09:33.372Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:09:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:09:32.379Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:09:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 747, + active: true, + lastCheckTime: 2025-06-10T15:09:34.361Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:09:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:09:29.414Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:09:29.000Z + } +] +[2025-06-10T15:10:20.040Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:11:19.983Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:10:32.764Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:10:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:10:32.389Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:10:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 748, + active: true, + lastCheckTime: 2025-06-10T15:10:34.421Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:10:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:10:29.440Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:10:29.000Z + } +] +[2025-06-10T15:11:19.984Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:12:20.041Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:11:33.255Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:11:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:11:32.396Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:11:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 749, + active: true, + lastCheckTime: 2025-06-10T15:11:34.369Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:11:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:11:29.441Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:11:29.000Z + } +] +[2025-06-10T15:12:20.042Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:13:19.990Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:12:33.446Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:12:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:12:32.407Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:12:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 750, + active: true, + lastCheckTime: 2025-06-10T15:12:34.442Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:12:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:12:29.449Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:12:29.000Z + } +] +[2025-06-10T15:13:19.991Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:14:20.037Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T15:13:33.422Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:13:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:13:32.415Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:13:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 751, + active: true, + lastCheckTime: 2025-06-10T15:13:34.393Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:13:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:13:29.472Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:13:29.000Z + } +] +[2025-06-10T15:14:20.038Z] --> GET /api/monitoring 200 1ms 1.33kb +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:15:19.995Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 3, + active: true, + lastCheckTime: 2025-06-10T15:14:33.407Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:14:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:14:32.454Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:14:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 752, + active: true, + lastCheckTime: 2025-06-10T15:14:34.455Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:14:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:14:29.570Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:14:29.000Z + } +] +[2025-06-10T15:15:19.997Z] --> GET /api/monitoring 200 2ms 1.33kb +已发送服务恢复通知: ChatGPT +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:16:19.990Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:15:32.586Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:15:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:15:33.418Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:15:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 753, + active: true, + lastCheckTime: 2025-06-10T15:15:34.409Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:15:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:15:29.483Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:15:29.000Z + } +] +[2025-06-10T15:16:19.991Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:17:19.990Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:16:32.599Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:16:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:16:33.467Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:16:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 754, + active: true, + lastCheckTime: 2025-06-10T15:16:34.479Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:16:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:16:29.513Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:16:29.000Z + } +] +[2025-06-10T15:17:19.995Z] --> GET /api/monitoring 200 5ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:18:20.005Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:17:33.513Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:17:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:17:33.439Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:17:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 755, + active: true, + lastCheckTime: 2025-06-10T15:17:34.428Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:17:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:17:29.478Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:17:29.000Z + } +] +[2025-06-10T15:18:20.006Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:19:20.040Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:18:33.507Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:18:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:18:32.461Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:18:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 756, + active: true, + lastCheckTime: 2025-06-10T15:18:34.490Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:18:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:18:29.513Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:18:29.000Z + } +] +[2025-06-10T15:19:20.044Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:20:20.064Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:19:32.677Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:19:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:19:33.474Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:19:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 757, + active: true, + lastCheckTime: 2025-06-10T15:19:34.447Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:19:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:19:30.578Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:19:30.000Z + } +] +[2025-06-10T15:20:20.068Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:21:20.036Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:20:32.625Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:20:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T15:20:33.470Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:20:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 758, + active: true, + lastCheckTime: 2025-06-10T15:20:34.524Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:20:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:20:29.515Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:20:29.000Z + } +] +[2025-06-10T15:21:20.037Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:22:20.040Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:21:33.459Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:21:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:21:32.474Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:21:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 759, + active: true, + lastCheckTime: 2025-06-10T15:21:34.456Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:21:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:21:29.522Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:21:29.000Z + } +] +[2025-06-10T15:22:20.041Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:23:20.168Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:22:32.648Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:22:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:22:32.488Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:22:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 760, + active: true, + lastCheckTime: 2025-06-10T15:22:34.516Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:22:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:22:29.528Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:22:29.000Z + } +] +[2025-06-10T15:23:20.169Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:24:20.072Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:23:32.927Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:23:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:23:33.481Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:23:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 761, + active: true, + lastCheckTime: 2025-06-10T15:23:34.467Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:23:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:23:29.530Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:23:29.000Z + } +] +[2025-06-10T15:24:20.073Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:25:20.002Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:24:32.711Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:24:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:24:32.505Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:24:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 762, + active: true, + lastCheckTime: 2025-06-10T15:24:34.540Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:24:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:24:29.546Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:24:29.000Z + } +] +[2025-06-10T15:25:20.003Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:26:20.005Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:25:32.665Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:25:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:25:32.507Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:25:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 763, + active: true, + lastCheckTime: 2025-06-10T15:25:34.486Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:25:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:25:29.555Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:25:29.000Z + } +] +[2025-06-10T15:26:20.008Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:27:20.011Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:26:32.894Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:26:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:26:32.516Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:26:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 764, + active: true, + lastCheckTime: 2025-06-10T15:26:34.549Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:26:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:26:29.568Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:26:29.000Z + } +] +[2025-06-10T15:27:20.013Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:28:19.982Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:27:32.684Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:27:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:27:32.525Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:27:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 765, + active: true, + lastCheckTime: 2025-06-10T15:27:34.506Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:27:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:27:29.561Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:27:29.000Z + } +] +[2025-06-10T15:28:19.983Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:29:20.012Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:28:32.689Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:28:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:28:33.557Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:28:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 766, + active: true, + lastCheckTime: 2025-06-10T15:28:34.565Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:28:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:28:29.580Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:28:29.000Z + } +] +[2025-06-10T15:29:20.013Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:30:20.017Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:29:32.797Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:29:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:29:33.536Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:29:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 767, + active: true, + lastCheckTime: 2025-06-10T15:29:34.513Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:29:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:29:29.594Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:29:29.000Z + } +] +[2025-06-10T15:30:20.018Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:31:20.168Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:30:32.914Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:30:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:30:32.545Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:30:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 768, + active: true, + lastCheckTime: 2025-06-10T15:30:34.582Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:30:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:30:29.588Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:30:29.000Z + } +] +[2025-06-10T15:31:20.170Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:32:19.990Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:31:32.713Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:31:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:31:32.560Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:31:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 769, + active: true, + lastCheckTime: 2025-06-10T15:31:34.530Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:31:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:31:29.622Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:31:29.000Z + } +] +[2025-06-10T15:32:19.992Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:33:20.051Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:32:32.716Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:32:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:32:32.561Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:32:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 770, + active: true, + lastCheckTime: 2025-06-10T15:32:34.600Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:32:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:32:29.620Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:32:29.000Z + } +] +[2025-06-10T15:33:20.055Z] --> GET /api/monitoring 200 4ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:34:20.067Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:33:32.724Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:33:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:33:32.562Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:33:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 771, + active: true, + lastCheckTime: 2025-06-10T15:33:34.545Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:33:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:33:29.623Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:33:29.000Z + } +] +[2025-06-10T15:34:20.069Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:35:20.060Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:34:32.782Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:34:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:34:32.579Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:34:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 772, + active: true, + lastCheckTime: 2025-06-10T15:34:34.616Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:34:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:34:29.656Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:34:29.000Z + } +] +[2025-06-10T15:35:20.061Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:36:19.988Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:35:33.020Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:35:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:35:32.582Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:35:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 773, + active: true, + lastCheckTime: 2025-06-10T15:35:34.568Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:35:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:35:29.630Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:35:29.000Z + } +] +[2025-06-10T15:36:19.989Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:37:20.011Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:36:32.802Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:36:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:36:33.584Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:36:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 774, + active: true, + lastCheckTime: 2025-06-10T15:36:34.628Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:36:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:36:29.652Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:36:29.000Z + } +] +[2025-06-10T15:37:20.012Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:38:20.006Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:37:32.761Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:37:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:37:32.598Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:37:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 775, + active: true, + lastCheckTime: 2025-06-10T15:37:34.577Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:37:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:37:29.663Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:37:29.000Z + } +] +[2025-06-10T15:38:20.007Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:39:20.027Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:38:33.636Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:38:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:38:32.611Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:38:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 776, + active: true, + lastCheckTime: 2025-06-10T15:38:34.644Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:38:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:38:29.657Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:38:29.000Z + } +] +[2025-06-10T15:39:20.028Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:40:20.013Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-10T15:39:33.619Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:39:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:39:33.639Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:39:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 777, + active: true, + lastCheckTime: 2025-06-10T15:39:34.597Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:39:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:39:29.661Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:39:29.000Z + } +] +[2025-06-10T15:40:20.017Z] --> GET /api/monitoring 200 4ms 1.34kb +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:41:20.067Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 3, + active: true, + lastCheckTime: 2025-06-10T15:40:33.657Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:40:34.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:40:32.632Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:40:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 778, + active: true, + lastCheckTime: 2025-06-10T15:40:34.664Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:40:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:40:29.693Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:40:29.000Z + } +] +[2025-06-10T15:41:20.069Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:42:20.060Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 4, + active: true, + lastCheckTime: 2025-06-10T15:41:33.691Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:41:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:41:33.650Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:41:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 779, + active: true, + lastCheckTime: 2025-06-10T15:41:34.626Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:41:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:41:29.684Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:41:29.000Z + } +] +[2025-06-10T15:42:20.062Z] --> GET /api/monitoring 200 2ms 1.34kb +已发送服务恢复通知: ChatGPT +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:43:20.012Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:42:32.895Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:42:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:42:32.638Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:42:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 780, + active: true, + lastCheckTime: 2025-06-10T15:42:34.675Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:42:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:42:29.703Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:42:29.000Z + } +] +[2025-06-10T15:43:20.013Z] --> GET /api/monitoring 200 1ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:44:20.022Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:43:32.808Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:43:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:43:32.643Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:43:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 781, + active: true, + lastCheckTime: 2025-06-10T15:43:34.628Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:43:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:43:30.387Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:43:30.000Z + } +] +[2025-06-10T15:44:20.023Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:45:20.036Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:44:33.660Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:44:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:44:32.658Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:44:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 782, + active: true, + lastCheckTime: 2025-06-10T15:44:34.687Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:44:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:44:29.702Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:44:29.000Z + } +] +[2025-06-10T15:45:20.039Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:46:19.994Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:45:33.670Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:45:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:45:32.661Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:45:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 783, + active: true, + lastCheckTime: 2025-06-10T15:45:34.643Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:45:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:45:29.725Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:45:29.000Z + } +] +[2025-06-10T15:46:19.995Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:47:19.983Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:46:33.732Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:46:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:46:33.683Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:46:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 784, + active: true, + lastCheckTime: 2025-06-10T15:46:34.713Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:46:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:46:29.724Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:46:29.000Z + } +] +[2025-06-10T15:47:19.985Z] --> GET /api/monitoring 200 2ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:48:20.018Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:47:32.894Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:47:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:47:32.686Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:47:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 785, + active: true, + lastCheckTime: 2025-06-10T15:47:34.660Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:47:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:47:29.726Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:47:29.000Z + } +] +[2025-06-10T15:48:20.019Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:49:19.981Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:48:33.695Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:48:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:48:33.714Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:48:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 786, + active: true, + lastCheckTime: 2025-06-10T15:48:34.726Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:48:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:48:29.736Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:48:29.000Z + } +] +[2025-06-10T15:49:19.984Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:50:19.998Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:49:32.856Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:49:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:49:32.695Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:49:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 787, + active: true, + lastCheckTime: 2025-06-10T15:49:34.676Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:49:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:49:29.741Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:49:29.000Z + } +] +[2025-06-10T15:50:20.001Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:51:20.074Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:50:33.730Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:50:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:50:32.710Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:50:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 788, + active: true, + lastCheckTime: 2025-06-10T15:50:34.745Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:50:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:50:29.766Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:50:29.000Z + } +] +[2025-06-10T15:51:20.075Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:52:20.009Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:51:32.969Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:51:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:51:32.716Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:51:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 789, + active: true, + lastCheckTime: 2025-06-10T15:51:34.739Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:51:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:51:29.772Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:51:29.000Z + } +] +[2025-06-10T15:52:20.011Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:53:20.024Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:52:33.173Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:52:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:52:32.727Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:52:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 790, + active: true, + lastCheckTime: 2025-06-10T15:52:34.787Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:52:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:52:29.773Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:52:29.000Z + } +] +[2025-06-10T15:53:20.025Z] --> GET /api/monitoring 200 1ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:54:20.103Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:53:33.782Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:53:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:53:32.731Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:53:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 791, + active: true, + lastCheckTime: 2025-06-10T15:53:34.714Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:53:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:53:29.785Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:53:29.000Z + } +] +[2025-06-10T15:54:20.104Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:55:20.084Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:54:32.897Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:54:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:54:33.748Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:54:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 792, + active: true, + lastCheckTime: 2025-06-10T15:54:34.800Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:54:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:54:29.793Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:54:29.000Z + } +] +[2025-06-10T15:55:20.085Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:56:20.048Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:55:33.768Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:55:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:55:32.744Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:55:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 793, + active: true, + lastCheckTime: 2025-06-10T15:55:34.728Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:55:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:55:29.798Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:55:29.000Z + } +] +[2025-06-10T15:56:20.050Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T15:57:19.983Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:56:32.910Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:56:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:56:32.745Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:56:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 794, + active: true, + lastCheckTime: 2025-06-10T15:56:34.785Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:56:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:56:29.800Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:56:29.000Z + } +] +[2025-06-10T15:57:19.984Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:58:20.080Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:57:33.129Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:57:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:57:32.762Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:57:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 795, + active: true, + lastCheckTime: 2025-06-10T15:57:34.737Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:57:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:57:29.808Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:57:29.000Z + } +] +[2025-06-10T15:58:20.082Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T15:59:20.042Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:58:33.833Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:58:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:58:32.769Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:58:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 796, + active: true, + lastCheckTime: 2025-06-10T15:58:34.803Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:58:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:58:29.817Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:58:29.000Z + } +] +[2025-06-10T15:59:20.043Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T16:00:20.069Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:59:32.933Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T15:59:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T15:59:33.764Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T15:59:33.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 797, + active: true, + lastCheckTime: 2025-06-10T15:59:34.753Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T15:59:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T15:59:29.822Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T15:59:29.000Z + } +] +[2025-06-10T16:00:20.070Z] --> GET /api/monitoring 200 2ms 1.33kb +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +[2025-06-10T16:01:20.011Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:00:32.942Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T16:00:32.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:00:32.779Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T16:00:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 798, + active: true, + lastCheckTime: 2025-06-10T16:00:34.812Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T16:00:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:00:29.838Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T16:00:29.000Z + } +] +[2025-06-10T16:01:20.013Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T16:02:19.985Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:01:33.161Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T16:01:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:01:32.787Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T16:01:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 799, + active: true, + lastCheckTime: 2025-06-10T16:01:34.764Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T16:01:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:01:29.861Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T16:01:29.000Z + } +] +[2025-06-10T16:02:19.986Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T16:03:20.044Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:02:33.800Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T16:02:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:02:32.793Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T16:02:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 800, + active: true, + lastCheckTime: 2025-06-10T16:02:34.830Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T16:02:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:02:29.850Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T16:02:29.000Z + } +] +[2025-06-10T16:03:20.045Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T16:04:19.977Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:03:33.023Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T16:03:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:03:32.807Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T16:03:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 801, + active: true, + lastCheckTime: 2025-06-10T16:03:34.840Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T16:03:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:03:29.844Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T16:03:29.000Z + } +] +[2025-06-10T16:04:19.978Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-10T16:05:20.009Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-10T16:04:33.858Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-10T16:04:33.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:04:32.817Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-10T16:04:32.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 802, + active: true, + lastCheckTime: 2025-06-10T16:04:34.851Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-10T16:04:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-10T16:04:29.858Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-10T16:04:29.000Z + } +] +[2025-06-10T16:05:20.011Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: ChatGPT +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 5 +Traceroute 超时: chatgpt.com +Traceroute 完成: chatgpt.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +DNS 解析失败: getaddrinfo EAI_AGAIN chatgpt.com +Traceroute 完成: chatgpt.com (退出码: 2) +DNS 解析失败: getaddrinfo EAI_AGAIN www.google.com +Traceroute 完成: www.google.com (退出码: 2) +DNS 解析失败: getaddrinfo EAI_AGAIN chatgpt.com +Traceroute 完成: chatgpt.com (退出码: 2) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务宕机通知: Deepseek Ping +发送宕机通知: Deepseek Ping, 连续失败次数: 3 +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: Deepseek Ping +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:40:13.856Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:39:44.089Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:39:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:39:43.932Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:39:43.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1317, + active: true, + lastCheckTime: 2025-06-11T00:39:45.995Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:39:45.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:39:40.965Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:39:40.000Z + } +] +[2025-06-11T00:40:13.859Z] --> GET /api/monitoring 200 3ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:41:12.921Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:40:44.115Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:40:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:40:43.968Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:40:43.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1318, + active: true, + lastCheckTime: 2025-06-11T00:40:45.940Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:40:45.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:40:41.087Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:40:41.000Z + } +] +[2025-06-11T00:41:12.923Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:42:13.982Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:41:44.179Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:41:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-11T00:41:45.003Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:41:45.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1319, + active: true, + lastCheckTime: 2025-06-11T00:41:46.013Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:41:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:41:41.029Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:41:41.000Z + } +] +[2025-06-11T00:42:13.983Z] --> GET /api/monitoring 200 1ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:43:13.964Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:42:44.164Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:42:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:42:44.012Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:42:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1320, + active: true, + lastCheckTime: 2025-06-11T00:42:45.987Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:42:45.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:42:41.072Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:42:41.000Z + } +] +[2025-06-11T00:43:13.965Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:44:14.003Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-11T00:43:45.082Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:43:45.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:43:44.033Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:43:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1321, + active: true, + lastCheckTime: 2025-06-11T00:43:46.069Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:43:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:43:41.090Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:43:41.000Z + } +] +[2025-06-11T00:44:14.004Z] --> GET /api/monitoring 200 1ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:45:13.959Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:44:44.229Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:44:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:44:44.099Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:44:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1322, + active: true, + lastCheckTime: 2025-06-11T00:44:46.037Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:44:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:44:41.142Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:44:41.000Z + } +] +[2025-06-11T00:45:13.960Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:46:13.967Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:45:44.322Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:45:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:45:44.077Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:45:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1323, + active: true, + lastCheckTime: 2025-06-11T00:45:46.109Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:45:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:45:41.130Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:45:41.000Z + } +] +[2025-06-11T00:46:13.968Z] --> GET /api/monitoring 200 2ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:47:14.011Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:46:44.255Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:46:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:46:44.098Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:46:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1324, + active: true, + lastCheckTime: 2025-06-11T00:46:46.082Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:46:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:46:41.150Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:46:41.000Z + } +] +[2025-06-11T00:47:14.012Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:48:13.982Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:47:44.337Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:47:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:47:44.135Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:47:44.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1325, + active: true, + lastCheckTime: 2025-06-11T00:47:46.168Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:47:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:47:41.190Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:47:41.000Z + } +] +[2025-06-11T00:48:13.983Z] --> GET /api/monitoring 200 1ms 1.33kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T00:49:24.070Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:48:44.314Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:48:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-11T00:48:45.173Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:48:45.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1326, + active: true, + lastCheckTime: 2025-06-11T00:48:46.135Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:48:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:48:41.209Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:48:41.000Z + } +] +[2025-06-11T00:49:24.073Z] --> GET /api/monitoring 200 3ms 1.34kb +[2025-06-11T00:49:41.926Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:48:44.314Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T00:48:44.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-11T00:48:45.173Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T00:48:45.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1326, + active: true, + lastCheckTime: 2025-06-11T00:48:46.135Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T00:48:46.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T00:49:41.247Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T00:49:41.000Z + } +] +[2025-06-11T00:49:41.927Z] --> GET /api/monitoring 200 1ms 1.34kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +已发送服务宕机通知: ChatGPT +发送宕机通知: ChatGPT, 连续失败次数: 3 +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: ChatGPT +已发送服务宕机通知: Deepseek Ping +发送宕机通知: Deepseek Ping, 连续失败次数: 3 +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +已发送服务恢复通知: Deepseek Ping +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T01:30:59.004Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:30:45.475Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T01:30:45.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:30:45.177Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T01:30:45.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1368, + active: true, + lastCheckTime: 2025-06-11T01:30:47.159Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T01:30:47.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:30:42.238Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T01:30:42.000Z + } +] +[2025-06-11T01:30:59.008Z] --> GET /api/monitoring 200 4ms 1.33kb +[2025-06-11T01:31:00.893Z] <-- GET /api/system/health +[2025-06-11T01:31:00.935Z] --> GET /api/system/health 200 42ms 769b +[2025-06-11T01:31:06.937Z] <-- GET /api/monitoring/5 +[2025-06-11T01:31:06.939Z] --> GET /api/monitoring/5 200 2ms 348b +[2025-06-11T01:31:06.941Z] <-- GET /api/monitoring/5/results +[2025-06-11T01:31:06.950Z] --> GET /api/monitoring/5/results 200 9ms 70.71kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T01:36:56.053Z] <-- POST /api/monitoring/5/check +[2025-06-11T01:36:56.721Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:36:45.522Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T01:36:45.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:36:45.350Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T01:36:45.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1374, + active: true, + lastCheckTime: 2025-06-11T01:36:47.252Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T01:36:47.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T01:36:42.314Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T01:36:42.000Z + } +] +[2025-06-11T01:36:56.723Z] --> GET /api/monitoring 200 2ms 1.33kb +[2025-06-11T01:36:59.253Z] --> POST /api/monitoring/5/check 200 3,200ms 1.04kb +[2025-06-11T01:37:01.239Z] <-- GET /api/monitoring/5/results +[2025-06-11T01:37:01.248Z] --> GET /api/monitoring/5/results 200 9ms 71.1kb +[2025-06-11T01:37:01.248Z] <-- GET /api/monitoring/5 +[2025-06-11T01:37:01.249Z] --> GET /api/monitoring/5 200 1ms 348b +[2025-06-11T01:37:01.364Z] <-- GET /api/monitoring/5 +[2025-06-11T01:37:01.364Z] --> GET /api/monitoring/5 200 0ms 348b +[2025-06-11T01:37:01.365Z] <-- GET /api/monitoring/5/results +[2025-06-11T01:37:01.371Z] --> GET /api/monitoring/5/results 200 6ms 71.1kb +[2025-06-11T01:37:18.279Z] <-- GET /api/system/health +[2025-06-11T01:37:18.285Z] <-- GET /api/settings/email +[2025-06-11T01:37:18.286Z] --> GET /api/settings/email 200 1ms 153b +[2025-06-11T01:37:18.316Z] --> GET /api/system/health 200 38ms 769b +[2025-06-11T01:37:18.328Z] <-- GET /api/settings/notification +[2025-06-11T01:37:18.329Z] --> GET /api/settings/notification 200 1ms 114b +[2025-06-11T01:37:18.348Z] <-- GET /api/settings/logs +[2025-06-11T01:37:18.349Z] --> GET /api/settings/logs 200 1ms 133b +[2025-06-11T01:37:18.360Z] <-- GET /api/settings/logs/stats +[2025-06-11T01:37:18.361Z] --> GET /api/settings/logs/stats 200 1ms 136b +[2025-06-11T01:37:25.271Z] <-- GET /api/system/health +[2025-06-11T01:37:25.305Z] --> GET /api/system/health 200 34ms 769b +[2025-06-11T01:37:37.906Z] <-- POST /api/settings/email/test +测试邮件配置失败: Error: Invalid login: 535 Error: authentication failed, system busy + at SMTPConnection._formatError (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:809:19) + at SMTPConnection._actionAUTHComplete (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34) + at SMTPConnection. (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:556:26) + at SMTPConnection._processResponse (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:993:20) + at SMTPConnection._onData (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:774:14) + at SMTPConnection._onSocketData (/it/Pingping/backend/node_modules/.pnpm/nodemailer@6.10.1/node_modules/nodemailer/lib/smtp-connection/index.js:195:44) + at TLSSocket.emit (node:events:515:28) + at addChunk (node:internal/streams/readable:377:12) + at readableAddChunk (node:internal/streams/readable:350:9) + at Readable.push (node:internal/streams/readable:287:10) { + code: 'EAUTH', + response: '535 Error: authentication failed, system busy', + responseCode: 535, + command: 'AUTH PLAIN' +} +[2025-06-11T01:37:39.340Z] --> POST /api/settings/email/test 500 1,434ms 116b +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +停止 traceroute 进程: 2 +Traceroute 超时: www.google.com +Traceroute 完成: www.google.com (退出码: null) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:11:05.105Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.149Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.006Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1408, + active: true, + lastCheckTime: 2025-06-11T02:10:48.053Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:10:48.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:43.054Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:10:43.000Z + } +] +[2025-06-11T02:11:05.106Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:11:06.995Z] <-- GET /api/system/health +[2025-06-11T02:11:07.032Z] --> GET /api/system/health 200 37ms 769b +[2025-06-11T02:11:16.516Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.149Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.006Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1408, + active: true, + lastCheckTime: 2025-06-11T02:10:48.053Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:10:48.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:43.054Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:10:43.000Z + } +] +[2025-06-11T02:11:16.517Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:11:22.034Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.149Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.006Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1408, + active: true, + lastCheckTime: 2025-06-11T02:10:48.053Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:10:48.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:43.054Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:10:43.000Z + } +] +[2025-06-11T02:11:22.035Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:11:23.968Z] <-- GET /api/system/health +[2025-06-11T02:11:24.006Z] --> GET /api/system/health 200 38ms 769b +[2025-06-11T02:11:24.223Z] <-- GET /api/monitoring/2 +[2025-06-11T02:11:24.224Z] --> GET /api/monitoring/2 200 1ms 355b +[2025-06-11T02:11:24.224Z] <-- GET /api/monitoring/2/results +[2025-06-11T02:11:24.233Z] --> GET /api/monitoring/2/results 200 9ms 59.27kb +[2025-06-11T02:11:28.950Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.149Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:46.006Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:10:46.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1408, + active: true, + lastCheckTime: 2025-06-11T02:10:48.053Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:10:48.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:10:43.054Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:10:43.000Z + } +] +[2025-06-11T02:11:28.951Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:11:33.096Z] <-- GET /api/monitoring/5 +[2025-06-11T02:11:33.097Z] --> GET /api/monitoring/5 200 1ms 348b +[2025-06-11T02:11:33.097Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:11:33.104Z] --> GET /api/monitoring/5/results 200 7ms 72.12kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:11:51.150Z] <-- PUT /api/monitoring/5 +停止监控: 5 +已启动监控: ChatGPT (ID: 5), 间隔: 60秒 +[2025-06-11T02:11:51.161Z] --> PUT /api/monitoring/5 200 11ms 348b +[2025-06-11T02:11:51.180Z] <-- GET /api/monitoring/5 +[2025-06-11T02:11:51.181Z] --> GET /api/monitoring/5 200 1ms 348b +[2025-06-11T02:11:56.191Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:55.202Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:11:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:46.005Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:11:46.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1409, + active: true, + lastCheckTime: 2025-06-11T02:11:47.979Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:11:47.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:43.053Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:11:43.000Z + } +] +[2025-06-11T02:11:56.193Z] --> GET /api/monitoring 200 2ms 1.33kb +[2025-06-11T02:12:04.339Z] <-- GET /api/monitoring/4 +[2025-06-11T02:12:04.341Z] --> GET /api/monitoring/4 200 2ms 360b +[2025-06-11T02:12:04.342Z] <-- GET /api/monitoring/4/results +[2025-06-11T02:12:04.356Z] --> GET /api/monitoring/4/results 200 14ms 92.05kb +[2025-06-11T02:12:11.214Z] <-- PUT /api/monitoring/4 +停止监控: 4 +已启动监控: Deepseek Ping (ID: 4), 间隔: 60秒 +[2025-06-11T02:12:11.226Z] --> PUT /api/monitoring/4 200 12ms 360b +[2025-06-11T02:12:11.235Z] <-- GET /api/monitoring/4 +[2025-06-11T02:12:11.238Z] --> GET /api/monitoring/4 200 3ms 360b +[2025-06-11T02:12:13.124Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:55.202Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:11:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:46.005Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:12:11.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1409, + active: true, + lastCheckTime: 2025-06-11T02:11:47.979Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:11:47.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:43.053Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:11:43.000Z + } +] +[2025-06-11T02:12:13.125Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:12:15.032Z] <-- GET /api/monitoring/5 +[2025-06-11T02:12:15.035Z] --> GET /api/monitoring/5 200 3ms 348b +[2025-06-11T02:12:15.052Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:12:15.060Z] --> GET /api/monitoring/5/results 200 8ms 71.98kb +[2025-06-11T02:12:20.965Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:55.202Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:11:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:12:15.182Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:12:15.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 0, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1409, + active: true, + lastCheckTime: 2025-06-11T02:11:47.979Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:11:47.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:43.053Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:11:43.000Z + } +] +[2025-06-11T02:12:20.966Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:12:23.343Z] <-- GET /api/monitoring/2 +[2025-06-11T02:12:23.344Z] --> GET /api/monitoring/2 200 1ms 355b +[2025-06-11T02:12:23.357Z] <-- GET /api/monitoring/2/results +[2025-06-11T02:12:23.365Z] --> GET /api/monitoring/2/results 200 8ms 59.27kb +[2025-06-11T02:12:28.142Z] <-- PUT /api/monitoring/2 +停止监控: 2 +已启动监控: Google (ID: 2), 间隔: 60秒 +[2025-06-11T02:12:28.153Z] --> PUT /api/monitoring/2 200 11ms 355b +[2025-06-11T02:12:28.160Z] <-- GET /api/monitoring/2 +[2025-06-11T02:12:28.161Z] --> GET /api/monitoring/2 200 1ms 355b +[2025-06-11T02:12:30.281Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:55.202Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:11:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:12:15.182Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:12:15.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1409, + active: true, + lastCheckTime: 2025-06-11T02:11:47.979Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:12:28.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 5000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:11:43.053Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:11:43.000Z + } +] +[2025-06-11T02:12:30.284Z] --> GET /api/monitoring 200 3ms 1.33kb +[2025-06-11T02:12:32.643Z] <-- GET /api/monitoring/1 +[2025-06-11T02:12:32.644Z] --> GET /api/monitoring/1 200 1ms 370b +[2025-06-11T02:12:32.646Z] <-- GET /api/monitoring/1/results +[2025-06-11T02:12:32.662Z] --> GET /api/monitoring/1/results 200 16ms 301.61kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:12:52.767Z] <-- PUT /api/monitoring/1 +停止监控: 1 +已启动监控: Deepseek (ID: 1), 间隔: 60秒 +[2025-06-11T02:12:52.778Z] --> PUT /api/monitoring/1 200 11ms 370b +[2025-06-11T02:12:52.789Z] <-- GET /api/monitoring/1 +[2025-06-11T02:12:52.790Z] --> GET /api/monitoring/1 200 1ms 370b +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-11T02:13:27.210Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1, + active: true, + lastCheckTime: 2025-06-11T02:12:55.180Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:12:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:13:14.276Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:13:14.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1410, + active: true, + lastCheckTime: 2025-06-11T02:12:34.214Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:12:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:12:52.873Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:12:52.000Z + } +] +[2025-06-11T02:13:27.211Z] --> GET /api/monitoring 200 1ms 1.34kb +[2025-06-11T02:13:31.179Z] <-- GET /api/monitoring/5 +[2025-06-11T02:13:31.180Z] --> GET /api/monitoring/5 200 1ms 350b +[2025-06-11T02:13:31.181Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:13:31.190Z] --> GET /api/monitoring/5/results 200 9ms 72.31kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:13:56.745Z] <-- GET /api/settings/logs/download +[2025-06-11T02:13:56.771Z] --> GET /api/settings/logs/download 200 26ms 445.78kb +[2025-06-11T02:14:15.564Z] <-- POST /api/monitoring/5/check +[2025-06-11T02:14:19.611Z] --> POST /api/monitoring/5/check 200 4,047ms 1.13kb +Traceroute 完成: chatgpt.com (退出码: 0) +[2025-06-11T02:14:21.632Z] <-- GET /api/monitoring/5 +[2025-06-11T02:14:21.635Z] --> GET /api/monitoring/5 200 3ms 350b +[2025-06-11T02:14:21.636Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:14:21.651Z] --> GET /api/monitoring/5/results 200 15ms 72.63kb +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: chatgpt.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:17:48.800Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 2, + active: true, + lastCheckTime: 2025-06-11T02:16:55.237Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:16:55.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:14.300Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:17:14.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1415, + active: true, + lastCheckTime: 2025-06-11T02:17:34.207Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:17:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:16:52.882Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:16:52.000Z + } +] +[2025-06-11T02:17:48.801Z] --> GET /api/monitoring 200 1ms 1.34kb +[2025-06-11T02:18:10.720Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:54.420Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:17:54.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:14.300Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:17:14.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1415, + active: true, + lastCheckTime: 2025-06-11T02:17:34.207Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:17:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:52.884Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:17:52.000Z + } +] +[2025-06-11T02:18:10.721Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:18:12.369Z] <-- GET /api/monitoring/2 +[2025-06-11T02:18:12.370Z] --> GET /api/monitoring/2 200 1ms 355b +[2025-06-11T02:18:12.373Z] <-- GET /api/monitoring/2/results +[2025-06-11T02:18:12.381Z] --> GET /api/monitoring/2/results 200 8ms 59.28kb +[2025-06-11T02:18:14.066Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:54.420Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:17:54.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:14.300Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:17:14.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1415, + active: true, + lastCheckTime: 2025-06-11T02:17:34.207Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:17:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:52.884Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:17:52.000Z + } +] +[2025-06-11T02:18:14.067Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:18:16.714Z] <-- GET /api/monitoring/5 +[2025-06-11T02:18:16.715Z] --> GET /api/monitoring/5 200 1ms 348b +[2025-06-11T02:18:16.716Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:18:16.727Z] --> GET /api/monitoring/5/results 200 11ms 73.16kb +Traceroute 完成: www.google.com (退出码: 0) +[2025-06-11T02:18:48.798Z] <-- GET /api/monitoring +获取监控项: [ + Monitor { + id: 5, + name: 'ChatGPT', + type: 'ping', + host: 'chatgpt.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:54.420Z, + createdAt: 2025-06-09T10:14:17.000Z, + updatedAt: 2025-06-11T02:17:54.000Z + }, + Monitor { + id: 4, + name: 'Deepseek Ping', + type: 'ping', + host: 'chat.deepseek.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:18:14.317Z, + createdAt: 2025-04-14T15:58:32.000Z, + updatedAt: 2025-06-11T02:18:14.000Z + }, + Monitor { + id: 2, + name: 'Google', + type: 'ping', + host: 'www.google.com', + port: 1, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '', + status: 'down', + consecutiveFailures: 1416, + active: true, + lastCheckTime: 2025-06-11T02:18:34.265Z, + createdAt: 2025-04-14T15:47:52.000Z, + updatedAt: 2025-06-11T02:18:34.000Z + }, + Monitor { + id: 1, + name: 'Deepseek', + type: 'https', + host: 'chat.deepseek.com', + port: 443, + path: '/', + timeout: 6000, + interval: 60, + expectedStatus: 200, + expectedContent: '深度求索', + status: 'up', + consecutiveFailures: 0, + active: true, + lastCheckTime: 2025-06-11T02:17:52.884Z, + createdAt: 2025-04-14T15:47:37.000Z, + updatedAt: 2025-06-11T02:17:52.000Z + } +] +[2025-06-11T02:18:48.799Z] --> GET /api/monitoring 200 1ms 1.33kb +[2025-06-11T02:18:57.762Z] <-- GET /api/monitoring/5 +[2025-06-11T02:18:57.763Z] --> GET /api/monitoring/5 200 1ms 348b +[2025-06-11T02:18:57.763Z] <-- GET /api/monitoring/5/results +[2025-06-11T02:18:57.771Z] --> GET /api/monitoring/5/results 200 8ms 73.16kb +Traceroute 完成: chat.deepseek.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) +Traceroute 完成: www.google.com (退出码: 0) diff --git a/backend/package.json b/backend/package.json index 45d1d58..96740e1 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,10 +3,14 @@ "version": "1.0.0", "main": "dist/index.js", "scripts": { - "start": "node dist/index.js", + "start": "NODE_ENV=production node dist/index.js", + "start:daemon": "NODE_ENV=production nohup node dist/index.js > logs/app.log 2>&1 &", + "start:bg": "NODE_ENV=production node dist/index.js &", + "stop": "pkill -f 'node.*dist/index.js'", "dev": "ts-node src/index.ts", "build": "tsc", "watch": "tsc -w", + "logs": "tail -f logs/app.log", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], diff --git a/backend/src/index.ts b/backend/src/index.ts index a4e0ab8..ac5e381 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -8,6 +8,7 @@ import { config } from './config'; import monitoringRoutes from './controllers/monitoring'; import notificationRoutes from './controllers/notification'; import settingsRoutes from './routes/settings'; +import systemHealthRoutes from './routes/systemHealth'; // 创建Koa应用 const app = new Koa(); @@ -50,6 +51,7 @@ app.use(bodyParser()); router.use('/api/monitoring', monitoringRoutes.routes()); router.use('/api/notification', notificationRoutes.routes()); router.use('/api/settings', settingsRoutes.routes()); +router.use('/api/system', systemHealthRoutes.routes()); // 使用路由中间件 app.use(router.routes()); @@ -77,15 +79,44 @@ async function startServer() { try { // 初始化数据库连接 await AppDataSource.initialize(); - console.log('数据库连接成功'); + // 导入健康检查和监控服务 + const { systemHealthService } = await import('./services/systemHealthService'); + const { monitoringService } = await import('./services/monitoringService'); + + // 执行系统健康检查 + console.log('执行系统健康检查...'); + const health = await systemHealthService.checkSystemHealth(); + + // 显示健康检查结果 + console.log(`系统健康状态: ${health.overall}`); + + // 检查关键依赖 + const criticalIssues = health.dependencies.filter(d => d.required && !d.available); + if (criticalIssues.length > 0) { + console.warn('⚠️ 发现关键依赖缺失:'); + criticalIssues.forEach(issue => { + console.warn(` - ${issue.name}: ${issue.error}`); + const instructions = systemHealthService.getInstallInstructions(issue.name); + if (instructions !== '{}') { + console.warn(` 安装方法: ${instructions}`); + } + }); + } + + // 启动监控服务 + await monitoringService.startAllMonitoring(); + console.log('监控服务已启动'); + // 启动服务器 app.listen(config.server.port, () => { console.log(`服务器运行在 http://localhost:${config.server.port}`); + console.log(`系统整体健康状态: ${health.overall}`); }); } catch (error) { console.error('启动服务器失败:', error); + process.exit(1); } } diff --git a/backend/src/routes/systemHealth.ts b/backend/src/routes/systemHealth.ts new file mode 100644 index 0000000..af72306 --- /dev/null +++ b/backend/src/routes/systemHealth.ts @@ -0,0 +1,29 @@ +import Router from 'koa-router'; +import { systemHealthService } from '../services/systemHealthService'; + +const router = new Router(); + +// 获取系统健康状态 +router.get('/health', async (ctx) => { + try { + const health = await systemHealthService.checkSystemHealth(); + ctx.body = { success: true, data: health }; + } catch (error: any) { + ctx.status = 500; + ctx.body = { success: false, message: error.message }; + } +}); + +// 获取依赖安装说明 +router.get('/install/:dependency', async (ctx) => { + try { + const dependency = ctx.params.dependency; + const instructions = systemHealthService.getInstallInstructions(dependency); + ctx.body = { success: true, data: JSON.parse(instructions) }; + } catch (error: any) { + ctx.status = 500; + ctx.body = { success: false, message: error.message }; + } +}); + +export default router; \ No newline at end of file diff --git a/backend/src/services/monitoringService.ts b/backend/src/services/monitoringService.ts index a988010..c929083 100644 --- a/backend/src/services/monitoringService.ts +++ b/backend/src/services/monitoringService.ts @@ -329,6 +329,12 @@ class MonitoringService { }); } catch (err: any) { console.error(`DNS 解析失败: ${err.message}`); + // 将DNS错误信息保存到结果中 + result.dnsResolution = JSON.stringify({ + error: `DNS解析失败: ${err.message}`, + errorCode: err.code || 'UNKNOWN', + timestamp: new Date().toISOString() + }); } // 设置初始 traceroute 消息 @@ -355,8 +361,8 @@ class MonitoringService { await monitorRepository.save(monitor); - // 异步执行 traceroute,不阻塞主流程 - this.executeTracerouteAsync(monitor, savedResult.id); + // 异步执行 traceroute(带降级策略),不阻塞主流程 + this.executeTracerouteWithFallback(monitor, savedResult.id); return savedResult; } @@ -411,6 +417,123 @@ class MonitoringService { } } + // 检查traceroute工具可用性并使用降级策略 + private async executeTracerouteWithFallback(monitor: Monitor, resultId: number) { + const resultRepository = AppDataSource.getRepository(MonitorResult); + + // 尝试使用traceroute + const tracerouteAvailable = await this.checkCommandAvailable('traceroute'); + if (tracerouteAvailable) { + return this.executeTracerouteAsync(monitor, resultId); + } + + // Windows系统尝试tracert + if (process.platform === 'win32') { + const tracertAvailable = await this.checkCommandAvailable('tracert'); + if (tracertAvailable) { + return this.executeTracertAsync(monitor, resultId); + } + } + + // 降级到ping路由检测 + return this.executePingRouteAsync(monitor, resultId); + } + + private async checkCommandAvailable(command: string): Promise { + try { + const { spawn } = require('child_process'); + return new Promise((resolve) => { + const child = spawn(command, ['--help']); + child.on('error', () => resolve(false)); + child.on('close', () => resolve(true)); + setTimeout(() => { + child.kill(); + resolve(false); + }, 5000); + }); + } catch { + return false; + } + } + + private async executeTracertAsync(monitor: Monitor, resultId: number) { + // Windows tracert实现 + try { + const resultRepository = AppDataSource.getRepository(MonitorResult); + const { spawn } = require('child_process'); + let output = ''; + + const child = spawn('tracert', ['-d', '-h', '5', monitor.host]); + + this.tracerouteProcesses.set(monitor.id, { childProcess: child, resultId }); + + child.stdout.on('data', (data: Buffer) => { + output += data.toString(); + }); + + child.stderr.on('data', (data: Buffer) => { + output += data.toString(); + }); + + child.on('close', async () => { + this.tracerouteProcesses.delete(monitor.id); + const result = await resultRepository.findOne({ where: { id: resultId } }); + if (result) { + result.traceroute = output || 'Tracert 完成,但没有输出'; + await resultRepository.save(result); + } + }); + + child.on('error', async (err: any) => { + this.tracerouteProcesses.delete(monitor.id); + const result = await resultRepository.findOne({ where: { id: resultId } }); + if (result) { + result.traceroute = `Tracert 执行失败: ${err.message}`; + await resultRepository.save(result); + } + }); + } catch (error: any) { + console.error('Tracert 执行失败:', error); + } + } + + private async executePingRouteAsync(monitor: Monitor, resultId: number) { + // 使用ping作为降级方案 + try { + const resultRepository = AppDataSource.getRepository(MonitorResult); + const { spawn } = require('child_process'); + let output = ''; + + const pingArgs = process.platform === 'win32' + ? ['-n', '5', monitor.host] + : ['-c', '5', monitor.host]; + + const child = spawn('ping', pingArgs); + + child.stdout.on('data', (data: Buffer) => { + output += data.toString(); + }); + + child.on('close', async () => { + const result = await resultRepository.findOne({ where: { id: resultId } }); + if (result) { + result.traceroute = `网络连通性测试 (降级模式):\n${output}`; + await resultRepository.save(result); + } + }); + + child.on('error', async () => { + const result = await resultRepository.findOne({ where: { id: resultId } }); + if (result) { + result.traceroute = '无法获取路由信息: 相关网络工具不可用'; + await resultRepository.save(result); + } + }); + } catch (error: any) { + console.error('降级路由检测失败:', error); + } + } + // 异步执行 traceroute private async executeTracerouteAsync(monitor: Monitor, resultId: number) { try { @@ -418,8 +541,8 @@ class MonitoringService { // 根据操作系统选择命令 const cmd = process.platform === 'win32' - ? `tracert -d -h 15 ${monitor.host}` - : `traceroute -n -m 15 ${monitor.host}`; + ? `tracert -d -h 5 ${monitor.host}` + : `traceroute -n -m 5 ${monitor.host}`; // 检查监控项是否仍处于激活状态 const monitorRepository = AppDataSource.getRepository(Monitor); @@ -439,10 +562,10 @@ class MonitoringService { let command, args; if (process.platform === 'win32') { command = 'tracert'; - args = ['-d', '-h', '15', monitor.host]; + args = ['-d', '-h', '5', monitor.host]; } else { command = 'traceroute'; - args = ['-n', '-m', '15', monitor.host]; + args = ['-n', '-m', '5', monitor.host]; } // 创建子进程 @@ -451,6 +574,25 @@ class MonitoringService { // 将进程保存到 Map 中,以便能够在需要时终止它 this.tracerouteProcesses.set(monitor.id, { childProcess, resultId }); + // 监听进程错误事件(如命令不存在等系统级错误) + childProcess.on('error', async (err: any) => { + console.error(`Traceroute 进程错误: ${err.message}`); + + // 从 Map 中移除进程 + this.tracerouteProcesses.delete(monitor.id); + + // 更新数据库中的结果 + const result = await resultRepository.findOne({ where: { id: resultId } }); + if (result) { + let errorMessage = `Traceroute 执行失败: ${err.message}`; + if (err.code === 'ENOENT') { + errorMessage = 'Traceroute 命令不存在,请确保系统已安装 traceroute 工具'; + } + result.traceroute = errorMessage; + await resultRepository.save(result); + } + }); + // 收集输出 childProcess.stdout.on('data', (data: Buffer) => { output += data.toString(); @@ -488,7 +630,11 @@ class MonitoringService { // 更新数据库中的结果 const result = await resultRepository.findOne({ where: { id: resultId } }); if (result) { - result.traceroute = `无法执行 Traceroute: ${err.message}`; + let errorMessage = `Traceroute 启动失败: ${err.message}`; + if (err.code === 'ENOENT') { + errorMessage = 'Traceroute 命令不存在,请确保系统已安装 traceroute 工具'; + } + result.traceroute = errorMessage; await resultRepository.save(result); } diff --git a/backend/src/services/systemHealthService.ts b/backend/src/services/systemHealthService.ts new file mode 100644 index 0000000..fea798c --- /dev/null +++ b/backend/src/services/systemHealthService.ts @@ -0,0 +1,158 @@ +import { exec } from 'child_process'; +import { promisify } from 'util'; +import fs from 'fs'; +import { AppDataSource } from '../index'; + +const execPromise = promisify(exec); + +interface SystemDependency { + name: string; + command: string; + description: string; + required: boolean; +} + +interface SystemHealth { + overall: 'healthy' | 'warning' | 'critical'; + dependencies: DependencyStatus[]; + resources: ResourceStatus; + database: DatabaseStatus; + timestamp: Date; +} + +interface DependencyStatus { + name: string; + available: boolean; + version?: string; + error?: string; + required: boolean; +} + +interface ResourceStatus { + diskSpace: string; + memoryUsage: string; + uptime: string; +} + +interface DatabaseStatus { + connected: boolean; + error?: string; +} + +class SystemHealthService { + private dependencies: SystemDependency[] = [ + { name: 'traceroute', command: 'traceroute --version', description: 'Linux路由追踪工具', required: true }, + { name: 'ping', command: 'ping -c 1 127.0.0.1', description: '网络连通性测试工具', required: true }, + { name: 'curl', command: 'curl --version', description: 'HTTP客户端工具', required: false }, + { name: 'nslookup', command: 'nslookup localhost', description: 'DNS查询工具', required: false } + ]; + + async checkSystemHealth(): Promise { + const dependencyStatuses = await this.checkDependencies(); + const resources = await this.checkResources(); + const database = await this.checkDatabase(); + + const overall = this.calculateOverallHealth(dependencyStatuses, database); + + return { + overall, + dependencies: dependencyStatuses, + resources, + database, + timestamp: new Date() + }; + } + + private async checkDependencies(): Promise { + const results: DependencyStatus[] = []; + + for (const dep of this.dependencies) { + try { + const { stdout } = await execPromise(dep.command); + results.push({ + name: dep.name, + available: true, + version: stdout.trim().split('\n')[0], + required: dep.required + }); + } catch (error: any) { + results.push({ + name: dep.name, + available: false, + error: error.message, + required: dep.required + }); + } + } + + return results; + } + + private async checkResources(): Promise { + try { + const memUsage = process.memoryUsage(); + const uptime = process.uptime(); + + return { + diskSpace: '检查中...', + memoryUsage: `${Math.round(memUsage.heapUsed / 1024 / 1024)}MB / ${Math.round(memUsage.heapTotal / 1024 / 1024)}MB`, + uptime: `${Math.floor(uptime / 3600)}小时${Math.floor((uptime % 3600) / 60)}分钟` + }; + } catch (error) { + return { + diskSpace: '无法检测', + memoryUsage: '无法检测', + uptime: '无法检测' + }; + } + } + + private async checkDatabase(): Promise { + try { + if (AppDataSource.isInitialized) { + await AppDataSource.query('SELECT 1'); + return { connected: true }; + } else { + return { connected: false, error: '数据库未初始化' }; + } + } catch (error: any) { + return { connected: false, error: error.message }; + } + } + + private calculateOverallHealth(deps: DependencyStatus[], db: DatabaseStatus): 'healthy' | 'warning' | 'critical' { + if (!db.connected) return 'critical'; + + const requiredMissing = deps.filter(d => d.required && !d.available); + if (requiredMissing.length > 0) return 'critical'; + + const optionalMissing = deps.filter(d => !d.required && !d.available); + if (optionalMissing.length > 0) return 'warning'; + + return 'healthy'; + } + + getInstallInstructions(dependency: string): string { + const instructions: any = { + traceroute: { + ubuntu: 'sudo apt-get install traceroute', + centos: 'sudo yum install traceroute', + alpine: 'apk add traceroute' + }, + ping: { + ubuntu: 'sudo apt-get install iputils-ping', + centos: 'sudo yum install iputils', + alpine: 'apk add iputils' + }, + curl: { + ubuntu: 'sudo apt-get install curl', + centos: 'sudo yum install curl', + alpine: 'apk add curl' + } + }; + + return JSON.stringify(instructions[dependency] || {}); + } +} + +export const systemHealthService = new SystemHealthService(); \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index dde16aa..f3bd473 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ - Vite + Vue + TS + Pingping - 网络拨测工具

diff --git a/frontend/package.json b/frontend/package.json index 18dd311..dfe47ed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,9 +4,13 @@ "version": "0.0.0", "type": "module", "scripts": { + "start": "vite --host 0.0.0.0 --port 3000", + "start:bg": "nohup vite --host 0.0.0.0 --port 3000 > logs/frontend.log 2>&1 &", + "stop": "pkill -f 'vite'", "dev": "vite", "build": "vue-tsc -b && vite build", - "preview": "vite preview" + "preview": "vite preview", + "logs": "tail -f logs/frontend.log" }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index a6cb971..6160142 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -14,12 +14,18 @@ importers: axios: specifier: ^1.8.4 version: 1.8.4 + echarts: + specifier: ^5.6.0 + version: 5.6.0 element-plus: specifier: ^2.9.7 version: 2.9.7(vue@3.5.13(typescript@5.7.3)) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.3) + vue-echarts: + specifier: ^7.0.3 + version: 7.0.3(@vue/runtime-core@3.5.13)(echarts@5.6.0)(vue@3.5.13(typescript@5.7.3)) vue-router: specifier: ^4.5.0 version: 4.5.0(vue@3.5.13(typescript@5.7.3)) @@ -481,56 +487,67 @@ packages: resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.40.0': resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.40.0': resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.40.0': resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.40.0': resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.40.0': resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.40.0': resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.40.0': resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.40.0': resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.40.0': resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.40.0': resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} @@ -837,6 +854,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + echarts@5.6.0: + resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} + electron-to-chromium@1.5.136: resolution: {integrity: sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==} @@ -1330,6 +1350,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1397,6 +1420,17 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-demi@0.13.11: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} engines: {node: '>=12'} @@ -1408,6 +1442,16 @@ packages: '@vue/composition-api': optional: true + vue-echarts@7.0.3: + resolution: {integrity: sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==} + peerDependencies: + '@vue/runtime-core': ^3.0.0 + echarts: ^5.5.1 + vue: ^2.7.0 || ^3.1.1 + peerDependenciesMeta: + '@vue/runtime-core': + optional: true + vue-eslint-parser@10.1.3: resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1453,6 +1497,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zrender@5.6.1: + resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} + snapshots: '@ampproject/remapping@2.3.0': @@ -2227,6 +2274,11 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + echarts@5.6.0: + dependencies: + tslib: 2.3.0 + zrender: 5.6.1 + electron-to-chromium@1.5.136: {} element-plus@2.9.7(vue@3.5.13(typescript@5.7.3)): @@ -2728,6 +2780,8 @@ snapshots: dependencies: typescript: 5.7.3 + tslib@2.3.0: {} + tslib@2.8.1: {} type-check@0.4.0: @@ -2758,10 +2812,24 @@ snapshots: vscode-uri@3.1.0: {} + vue-demi@0.13.11(vue@3.5.13(typescript@5.7.3)): + dependencies: + vue: 3.5.13(typescript@5.7.3) + vue-demi@0.14.10(vue@3.5.13(typescript@5.7.3)): dependencies: vue: 3.5.13(typescript@5.7.3) + vue-echarts@7.0.3(@vue/runtime-core@3.5.13)(echarts@5.6.0)(vue@3.5.13(typescript@5.7.3)): + dependencies: + echarts: 5.6.0 + vue: 3.5.13(typescript@5.7.3) + vue-demi: 0.13.11(vue@3.5.13(typescript@5.7.3)) + optionalDependencies: + '@vue/runtime-core': 3.5.13 + transitivePeerDependencies: + - '@vue/composition-api' + vue-eslint-parser@10.1.3(eslint@9.24.0): dependencies: debug: 4.4.0 @@ -2807,3 +2875,7 @@ snapshots: yallist@3.1.1: {} yocto-queue@0.1.0: {} + + zrender@5.6.1: + dependencies: + tslib: 2.3.0 diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 73c7ec1..3cca02f 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -54,6 +54,7 @@ + @@ -83,6 +84,7 @@ import { Moon, Sunny, } from '@element-plus/icons-vue'; +import SystemAlert from './components/SystemAlert.vue'; const route = useRoute(); const isDarkMode = ref(localStorage.getItem('theme') === 'dark'); diff --git a/frontend/src/components/SystemAlert.vue b/frontend/src/components/SystemAlert.vue new file mode 100644 index 0000000..39a6d6e --- /dev/null +++ b/frontend/src/components/SystemAlert.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/SystemStatus.vue b/frontend/src/components/SystemStatus.vue new file mode 100644 index 0000000..c7b925c --- /dev/null +++ b/frontend/src/components/SystemStatus.vue @@ -0,0 +1,249 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index 45fc3aa..9141559 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -6,6 +6,9 @@ + + +