- 增加 ICMP 协议监控
- 完善删除服务
This commit is contained in:
1 parent
7c39713a45
commit
d5efc72ef4
9 files changed
+160
-127
No files matched your search
@@ -4,7 +4,6 @@ go 1.25.0
|
||||
|
||||
require (
|
||||
github.com/coreos/go-oidc/v3 v3.16.0
|
||||
github.com/docker/docker v28.5.2+incompatible
|
||||
github.com/go-errors/errors v1.5.1
|
||||
github.com/go-orz/orz v0.2.9
|
||||
github.com/go-orz/toolkit v0.1.0
|
||||
@@ -18,6 +17,7 @@ require (
|
||||
github.com/jpillora/backoff v1.0.0
|
||||
github.com/kardianos/service v1.2.4
|
||||
github.com/labstack/echo/v4 v4.13.4
|
||||
github.com/prometheus-community/pro-bing v0.7.0
|
||||
github.com/shirou/gopsutil/v4 v4.25.10
|
||||
github.com/spf13/cobra v1.10.1
|
||||
go.uber.org/zap v1.27.0
|
||||
@@ -30,23 +30,13 @@ require (
|
||||
|
||||
require (
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/containerd/errdefs v1.0.0 // indirect
|
||||
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
||||
github.com/containerd/log v0.1.0 // indirect
|
||||
github.com/distribution/reference v0.6.0 // indirect
|
||||
github.com/docker/go-connections v0.6.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/ebitengine/purego v0.9.0 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.11 // indirect
|
||||
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
||||
github.com/glebarez/sqlite v1.11.0 // indirect
|
||||
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/go-sql-driver/mysql v1.9.3 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
|
||||
@@ -62,17 +52,11 @@ require (
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/moby/docker-image-spec v1.3.1 // indirect
|
||||
github.com/moby/sys/atomicwriter v0.1.0 // indirect
|
||||
github.com/moby/term v0.5.2 // indirect
|
||||
github.com/morikuni/aec v1.0.0 // indirect
|
||||
github.com/ncruces/go-strftime v1.0.0 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.1.1 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/rogpeppe/go-internal v1.13.1 // indirect
|
||||
github.com/sagikazarmark/locafero v0.12.0 // indirect
|
||||
github.com/spf13/afero v1.15.0 // indirect
|
||||
github.com/spf13/cast v1.10.0 // indirect
|
||||
@@ -84,12 +68,6 @@ require (
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
|
||||
go.opentelemetry.io/otel v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.38.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.38.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
|
||||
@@ -101,7 +79,6 @@ require (
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
gorm.io/driver/mysql v1.6.0 // indirect
|
||||
gorm.io/driver/postgres v1.6.0 // indirect
|
||||
gotest.tools/v3 v3.5.2 // indirect
|
||||
modernc.org/libc v1.66.10 // indirect
|
||||
modernc.org/mathutil v1.7.1 // indirect
|
||||
modernc.org/memory v1.11.0 // indirect
|
||||
|
||||
@@ -1,37 +1,15 @@
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
|
||||
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
|
||||
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
|
||||
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
|
||||
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
|
||||
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
|
||||
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
|
||||
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
|
||||
github.com/coreos/go-oidc/v3 v3.16.0 h1:qRQUCFstKpXwmEjDQTIbyY/5jF00+asXzSkmkoa/mow=
|
||||
github.com/coreos/go-oidc/v3 v3.16.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
|
||||
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
|
||||
github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM=
|
||||
github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||
github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=
|
||||
github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=
|
||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
|
||||
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k=
|
||||
github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
|
||||
@@ -46,11 +24,6 @@ github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8b
|
||||
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
||||
github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
|
||||
github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
||||
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-orz/orz v0.2.9 h1:9n3yl+N450nDxEfbfE6OX8muQmWorNp9E7YIpvx0SYQ=
|
||||
@@ -86,8 +59,6 @@ github.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=
|
||||
github.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
@@ -126,30 +97,16 @@ github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuE
|
||||
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA=
|
||||
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
|
||||
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
|
||||
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
|
||||
github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
|
||||
github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
|
||||
github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=
|
||||
github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
|
||||
github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
|
||||
github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
|
||||
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
|
||||
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
||||
github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=
|
||||
github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
|
||||
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/prometheus-community/pro-bing v0.7.0 h1:KFYFbxC2f2Fp6c+TyxbCOEarf7rbnzr9Gw8eIb0RfZA=
|
||||
github.com/prometheus-community/pro-bing v0.7.0/go.mod h1:Moob9dvlY50Bfq6i88xIwfyw7xLFHH69LUgx9n5zqCE=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||
@@ -159,8 +116,6 @@ github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88ee
|
||||
github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI=
|
||||
github.com/shirou/gopsutil/v4 v4.25.10 h1:at8lk/5T1OgtuCp+AwrDofFRjnvosn0nkN2OLQ6g8tA=
|
||||
github.com/shirou/gopsutil/v4 v4.25.10/go.mod h1:+kSwyC8DRUD9XXEHCAFjK+0nuArFJM0lva+StQAcskM=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
|
||||
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
|
||||
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
|
||||
@@ -189,26 +144,6 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ
|
||||
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
|
||||
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
|
||||
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4=
|
||||
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
|
||||
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
|
||||
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
|
||||
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
|
||||
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
||||
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
|
||||
go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4=
|
||||
go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
@@ -241,14 +176,6 @@ golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
|
||||
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc=
|
||||
google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4=
|
||||
google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
|
||||
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
|
||||
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
@@ -269,8 +196,6 @@ gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc=
|
||||
gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw=
|
||||
gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=
|
||||
gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs=
|
||||
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
|
||||
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
|
||||
modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4=
|
||||
modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=
|
||||
modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A=
|
||||
|
||||
@@ -13,6 +13,7 @@ type MonitorItem struct {
|
||||
Target string `json:"target"`
|
||||
HTTPConfig *HTTPMonitorConfig `json:"httpConfig,omitempty"`
|
||||
TCPConfig *TCPMonitorConfig `json:"tcpConfig,omitempty"`
|
||||
ICMPConfig *ICMPMonitorConfig `json:"icmpConfig,omitempty"`
|
||||
}
|
||||
|
||||
// HTTPMonitorConfig HTTP 监控配置
|
||||
@@ -29,3 +30,9 @@ type HTTPMonitorConfig struct {
|
||||
type TCPMonitorConfig struct {
|
||||
Timeout int `json:"timeout"`
|
||||
}
|
||||
|
||||
// ICMPMonitorConfig ICMP 监控配置
|
||||
type ICMPMonitorConfig struct {
|
||||
Timeout int `json:"timeout"` // 超时时间(秒)
|
||||
Count int `json:"count"` // Ping 次数
|
||||
}
|
||||
@@ -663,3 +663,10 @@ func (r *MetricRepo) GetTemperatureMetrics(ctx context.Context, agentID string,
|
||||
|
||||
return metrics, err
|
||||
}
|
||||
|
||||
// DeleteMonitorMetrics 删除指定监控任务的所有指标数据
|
||||
func (r *MetricRepo) DeleteMonitorMetrics(ctx context.Context, monitorID string) error {
|
||||
return r.db.WithContext(ctx).
|
||||
Where("monitor_id = ?", monitorID).
|
||||
Delete(&models.MonitorMetric{}).Error
|
||||
}
|
||||
@@ -35,3 +35,9 @@ func (r *MonitorStatsRepo) FindByMonitorIdIn(ctx context.Context, monitorIds []s
|
||||
Find(&statsList).Error
|
||||
return statsList, err
|
||||
}
|
||||
|
||||
func (r *MonitorStatsRepo) DeleteByMonitorId(ctx context.Context, monitorId string) error {
|
||||
return r.db.WithContext(ctx).
|
||||
Where("monitor_id = ?", monitorId).
|
||||
Delete(&models.MonitorStats{}).Error
|
||||
}
|
||||
@@ -110,6 +110,7 @@ func (s *MonitorService) UpdateMonitor(ctx context.Context, id string, req *Moni
|
||||
return nil, err
|
||||
}
|
||||
|
||||
task.Enabled = req.Enabled
|
||||
task.Name = strings.TrimSpace(req.Name)
|
||||
task.Type = req.Type
|
||||
task.Target = strings.TrimSpace(req.Target)
|
||||
@@ -127,7 +128,7 @@ func (s *MonitorService) UpdateMonitor(ctx context.Context, id string, req *Moni
|
||||
task.HTTPConfig = datatypes.NewJSONType(req.HTTPConfig)
|
||||
task.TCPConfig = datatypes.NewJSONType(req.TCPConfig)
|
||||
|
||||
if err := s.MonitorRepo.UpdateById(ctx, &task); err != nil {
|
||||
if err := s.MonitorRepo.Save(ctx, &task); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -136,9 +137,23 @@ func (s *MonitorService) UpdateMonitor(ctx context.Context, id string, req *Moni
|
||||
|
||||
func (s *MonitorService) DeleteMonitor(ctx context.Context, id string) error {
|
||||
return s.Transaction(ctx, func(ctx context.Context) error {
|
||||
// 删除监控任务
|
||||
if err := s.MonitorRepo.DeleteById(ctx, id); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 删除监控统计数据
|
||||
if err := s.monitorStatsRepo.DeleteByMonitorId(ctx, id); err != nil {
|
||||
s.logger.Error("删除监控统计数据失败", zap.String("monitorId", id), zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
// 删除监控指标数据
|
||||
if err := s.metricRepo.DeleteMonitorMetrics(ctx, id); err != nil {
|
||||
s.logger.Error("删除监控指标数据失败", zap.String("monitorId", id), zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
probing "github.com/prometheus-community/pro-bing"
|
||||
|
||||
"github.com/dushixiang/pika/internal/protocol"
|
||||
)
|
||||
|
||||
@@ -58,6 +60,8 @@ func (c *MonitorCollector) Collect(items []protocol.MonitorItem) []protocol.Moni
|
||||
result = c.checkHTTP(item)
|
||||
case "tcp":
|
||||
result = c.checkTCP(item)
|
||||
case "icmp", "ping":
|
||||
result = c.checkICMP(item)
|
||||
default:
|
||||
result = protocol.MonitorData{
|
||||
ID: item.ID,
|
||||
@@ -231,3 +235,68 @@ func (c *MonitorCollector) checkTCP(item protocol.MonitorItem) protocol.MonitorD
|
||||
result.Message = fmt.Sprintf("TCP connected - %dms", responseTime)
|
||||
return result
|
||||
}
|
||||
|
||||
// checkICMP 检查 ICMP (Ping)
|
||||
func (c *MonitorCollector) checkICMP(item protocol.MonitorItem) protocol.MonitorData {
|
||||
result := protocol.MonitorData{
|
||||
ID: item.ID,
|
||||
Type: item.Type,
|
||||
Target: item.Target,
|
||||
CheckedAt: time.Now().UnixMilli(),
|
||||
}
|
||||
|
||||
// 获取配置,使用默认值
|
||||
icmpCfg := item.ICMPConfig
|
||||
timeout := 5 // 默认 5 秒
|
||||
count := 4 // 默认 Ping 4 次
|
||||
if icmpCfg != nil {
|
||||
if icmpCfg.Timeout > 0 {
|
||||
timeout = icmpCfg.Timeout
|
||||
}
|
||||
if icmpCfg.Count > 0 {
|
||||
count = icmpCfg.Count
|
||||
}
|
||||
}
|
||||
|
||||
// 创建 Pinger
|
||||
pinger, err := probing.NewPinger(item.Target)
|
||||
if err != nil {
|
||||
result.Status = "down"
|
||||
result.Error = fmt.Sprintf("create pinger failed: %v", err)
|
||||
return result
|
||||
}
|
||||
|
||||
// 配置 Pinger
|
||||
pinger.Count = count
|
||||
pinger.Timeout = time.Duration(timeout) * time.Second
|
||||
pinger.Interval = 100 * time.Millisecond
|
||||
|
||||
// 尝试以非特权模式运行(使用 UDP)
|
||||
pinger.SetPrivileged(false)
|
||||
|
||||
// 执行 Ping
|
||||
err = pinger.Run()
|
||||
if err != nil {
|
||||
result.Status = "down"
|
||||
result.Error = fmt.Sprintf("ping failed: %v", err)
|
||||
return result
|
||||
}
|
||||
|
||||
// 获取统计信息
|
||||
stats := pinger.Statistics()
|
||||
|
||||
// 检查是否有成功的包
|
||||
if stats.PacketsRecv > 0 {
|
||||
result.Status = "up"
|
||||
result.ResponseTime = stats.AvgRtt.Milliseconds()
|
||||
packetLoss := int(stats.PacketLoss)
|
||||
result.Message = fmt.Sprintf("ICMP Echo Reply - %d/%d packets, %dms avg, %d%% loss",
|
||||
stats.PacketsRecv, stats.PacketsSent, stats.AvgRtt.Milliseconds(), packetLoss)
|
||||
} else {
|
||||
result.Status = "down"
|
||||
result.Error = fmt.Sprintf("all %d ping attempts failed (timeout: %ds)", count, timeout)
|
||||
result.Message = "100% packet loss"
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -1,21 +1,9 @@
|
||||
import {useCallback, useEffect, useMemo, useRef, useState} from 'react';
|
||||
import type {ActionType, ProColumns} from '@ant-design/pro-components';
|
||||
import {ProTable} from '@ant-design/pro-components';
|
||||
import {
|
||||
App,
|
||||
Button,
|
||||
Divider,
|
||||
Form,
|
||||
Input,
|
||||
InputNumber,
|
||||
Modal,
|
||||
Select,
|
||||
Space,
|
||||
Switch,
|
||||
Tag,
|
||||
} from 'antd';
|
||||
import {App, Button, Divider, Form, Input, InputNumber, Modal, Select, Space, Switch, Tag,} from 'antd';
|
||||
import {PageHeader} from '../../components';
|
||||
import {Plus, RefreshCw, Edit, Trash2, PlusCircle, MinusCircle} from 'lucide-react';
|
||||
import {Edit, MinusCircle, Plus, PlusCircle, RefreshCw, Trash2} from 'lucide-react';
|
||||
import dayjs from 'dayjs';
|
||||
import {getAgentPaging} from '../../api/agent';
|
||||
import type {Agent, MonitorTask, MonitorTaskRequest} from '../../types';
|
||||
@@ -80,6 +68,8 @@ const MonitorList = () => {
|
||||
httpHeaders: [],
|
||||
httpBody: '',
|
||||
tcpTimeout: 5,
|
||||
icmpTimeout: 5,
|
||||
icmpCount: 4,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -108,6 +98,8 @@ const MonitorList = () => {
|
||||
httpHeaders: headers.length > 0 ? headers : [{key: '', value: ''}],
|
||||
httpBody: monitor.httpConfig?.body,
|
||||
tcpTimeout: monitor.tcpConfig?.timeout || 5,
|
||||
icmpTimeout: monitor.icmpConfig?.timeout || 5,
|
||||
icmpCount: monitor.icmpConfig?.count || 4,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -149,6 +141,11 @@ const MonitorList = () => {
|
||||
payload.tcpConfig = {
|
||||
timeout: values.tcpTimeout || 5,
|
||||
};
|
||||
} else if (values.type === 'icmp' || values.type === 'ping') {
|
||||
payload.icmpConfig = {
|
||||
timeout: values.icmpTimeout || 5,
|
||||
count: values.icmpCount || 4,
|
||||
};
|
||||
} else {
|
||||
const headers: Record<string, string> = {};
|
||||
(values.httpHeaders || []).forEach((header: { key?: string; value?: string }) => {
|
||||
@@ -209,11 +206,17 @@ const MonitorList = () => {
|
||||
title: '类型',
|
||||
dataIndex: 'type',
|
||||
width: 80,
|
||||
render: (type) => (
|
||||
<Tag color={type === 'tcp' ? 'blue' : 'green'} className="uppercase">
|
||||
{type}
|
||||
</Tag>
|
||||
),
|
||||
render: (type) => {
|
||||
let color = 'green';
|
||||
if (type === 'tcp') color = 'blue';
|
||||
else if (type === 'icmp' || type === 'ping') color = 'purple';
|
||||
|
||||
return (
|
||||
<Tag color={color} className="uppercase">
|
||||
{type === 'ping' ? 'icmp' : type}
|
||||
</Tag>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '目标',
|
||||
@@ -282,7 +285,7 @@ const MonitorList = () => {
|
||||
<div className="space-y-6">
|
||||
<PageHeader
|
||||
title="服务监控"
|
||||
description="配置 HTTP/TCP 服务可用性检测,集中管理监控策略与探针覆盖范围"
|
||||
description="配置 HTTP/TCP/ICMP 服务可用性检测,集中管理监控策略与探针覆盖范围"
|
||||
actions={[
|
||||
{
|
||||
key: 'refresh',
|
||||
@@ -380,6 +383,7 @@ const MonitorList = () => {
|
||||
options={[
|
||||
{label: 'HTTP / HTTPS', value: 'http'},
|
||||
{label: 'TCP', value: 'tcp'},
|
||||
{label: 'ICMP (Ping)', value: 'icmp'},
|
||||
]}
|
||||
/>
|
||||
</Form.Item>
|
||||
@@ -389,7 +393,13 @@ const MonitorList = () => {
|
||||
name="target"
|
||||
rules={[{required: true, message: '请输入目标地址'}]}
|
||||
>
|
||||
<Input placeholder="HTTP示例:https://example.com/health,TCP示例:example.com:3306"/>
|
||||
<Input placeholder={
|
||||
watchType === 'icmp'
|
||||
? "ICMP示例:8.8.8.8 或 google.com"
|
||||
: watchType === 'tcp'
|
||||
? "TCP示例:example.com:3306"
|
||||
: "HTTP示例:https://example.com/health"
|
||||
}/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label="探针范围" name="agentIds" extra="不选择表示所有探针节点都会执行此监控">
|
||||
@@ -429,6 +439,16 @@ const MonitorList = () => {
|
||||
<Form.Item label="连接超时 (秒)" name="tcpTimeout" initialValue={5}>
|
||||
<InputNumber min={1} max={120} style={{width: '100%'}}/>
|
||||
</Form.Item>
|
||||
) : watchType === 'icmp' ? (
|
||||
<>
|
||||
<Form.Item label="Ping 超时 (秒)" name="icmpTimeout" initialValue={5}>
|
||||
<InputNumber min={1} max={60} style={{width: '100%'}}/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label="Ping 次数" name="icmpCount" initialValue={4} extra="单次检测发送的 ICMP 包数量">
|
||||
<InputNumber min={1} max={10} style={{width: '100%'}}/>
|
||||
</Form.Item>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<Form.Item label="HTTP 方法" name="httpMethod" initialValue="GET">
|
||||
|
||||
+10
-3
@@ -234,10 +234,15 @@ export interface MonitorTcpConfig {
|
||||
timeout?: number;
|
||||
}
|
||||
|
||||
export interface MonitorIcmpConfig {
|
||||
timeout?: number;
|
||||
count?: number;
|
||||
}
|
||||
|
||||
export interface MonitorTask {
|
||||
id: number;
|
||||
name: string;
|
||||
type: 'http' | 'https' | 'tcp';
|
||||
type: 'http' | 'https' | 'tcp' | 'icmp' | 'ping';
|
||||
target: string;
|
||||
description?: string;
|
||||
enabled: boolean;
|
||||
@@ -245,6 +250,7 @@ export interface MonitorTask {
|
||||
interval: number;
|
||||
httpConfig?: MonitorHttpConfig | null;
|
||||
tcpConfig?: MonitorTcpConfig | null;
|
||||
icmpConfig?: MonitorIcmpConfig | null;
|
||||
agentIds?: string[];
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
@@ -252,7 +258,7 @@ export interface MonitorTask {
|
||||
|
||||
export interface MonitorTaskRequest {
|
||||
name: string;
|
||||
type: 'http' | 'https' | 'tcp';
|
||||
type: 'http' | 'https' | 'tcp' | 'icmp' | 'ping';
|
||||
target: string;
|
||||
description?: string;
|
||||
enabled?: boolean;
|
||||
@@ -260,6 +266,7 @@ export interface MonitorTaskRequest {
|
||||
interval: number;
|
||||
httpConfig?: MonitorHttpConfig | null;
|
||||
tcpConfig?: MonitorTcpConfig | null;
|
||||
icmpConfig?: MonitorIcmpConfig | null;
|
||||
agentIds?: string[];
|
||||
}
|
||||
|
||||
@@ -274,7 +281,7 @@ export interface MonitorListResponse {
|
||||
export interface PublicMonitor {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'http' | 'https' | 'tcp';
|
||||
type: 'http' | 'https' | 'tcp' | 'icmp' | 'ping';
|
||||
target: string;
|
||||
showTargetPublic: boolean;
|
||||
description?: string;
|
||||
|
||||
Reference in new issue
Block a user