@marinoscar/platform-api 0.0.0-stage → 0.1.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/LICENSE +21 -0
- package/README.md +106 -2
- package/dist/core/crypto/encryption-key-startup-check.d.ts +29 -0
- package/dist/core/crypto/encryption-key-startup-check.d.ts.map +1 -0
- package/dist/core/crypto/encryption-key-startup-check.js +221 -0
- package/dist/core/crypto/encryption-key-startup-check.js.map +1 -0
- package/dist/core/crypto/secret-cipher.d.ts +151 -0
- package/dist/core/crypto/secret-cipher.d.ts.map +1 -0
- package/dist/core/crypto/secret-cipher.js +452 -0
- package/dist/core/crypto/secret-cipher.js.map +1 -0
- package/dist/core/data-access/index.d.ts +6 -0
- package/dist/core/data-access/index.d.ts.map +1 -0
- package/dist/core/data-access/index.js +19 -0
- package/dist/core/data-access/index.js.map +1 -0
- package/dist/core/data-access/scoped-access.error.d.ts +35 -0
- package/dist/core/data-access/scoped-access.error.d.ts.map +1 -0
- package/dist/core/data-access/scoped-access.error.js +43 -0
- package/dist/core/data-access/scoped-access.error.js.map +1 -0
- package/dist/core/data-access/scoped-client.d.ts +104 -0
- package/dist/core/data-access/scoped-client.d.ts.map +1 -0
- package/dist/core/data-access/scoped-client.js +270 -0
- package/dist/core/data-access/scoped-client.js.map +1 -0
- package/dist/core/data-access/types.d.ts +85 -0
- package/dist/core/data-access/types.d.ts.map +1 -0
- package/dist/core/data-access/types.js +12 -0
- package/dist/core/data-access/types.js.map +1 -0
- package/dist/core/data-access/user-owned-data.registry.d.ts +60 -0
- package/dist/core/data-access/user-owned-data.registry.d.ts.map +1 -0
- package/dist/core/data-access/user-owned-data.registry.js +140 -0
- package/dist/core/data-access/user-owned-data.registry.js.map +1 -0
- package/dist/core/errors/database-seed.exception.d.ts +23 -0
- package/dist/core/errors/database-seed.exception.d.ts.map +1 -0
- package/dist/core/errors/database-seed.exception.js +49 -0
- package/dist/core/errors/database-seed.exception.js.map +1 -0
- package/dist/core/errors/error.dto.d.ts +47 -0
- package/dist/core/errors/error.dto.d.ts.map +1 -0
- package/dist/core/errors/error.dto.js +121 -0
- package/dist/core/errors/error.dto.js.map +1 -0
- package/dist/core/errors/http-exception.filter.d.ts +63 -0
- package/dist/core/errors/http-exception.filter.d.ts.map +1 -0
- package/dist/core/errors/http-exception.filter.js +234 -0
- package/dist/core/errors/http-exception.filter.js.map +1 -0
- package/dist/core/errors/verbatim-error-body.exception.d.ts +46 -0
- package/dist/core/errors/verbatim-error-body.exception.d.ts.map +1 -0
- package/dist/core/errors/verbatim-error-body.exception.js +135 -0
- package/dist/core/errors/verbatim-error-body.exception.js.map +1 -0
- package/dist/core/host/index.d.ts +7 -0
- package/dist/core/host/index.d.ts.map +1 -0
- package/dist/core/host/index.js +14 -0
- package/dist/core/host/index.js.map +1 -0
- package/dist/core/host/platform-host.d.ts +58 -0
- package/dist/core/host/platform-host.d.ts.map +1 -0
- package/dist/core/host/platform-host.js +104 -0
- package/dist/core/host/platform-host.js.map +1 -0
- package/dist/core/host/platform-host.module.d.ts +53 -0
- package/dist/core/host/platform-host.module.d.ts.map +1 -0
- package/dist/core/host/platform-host.module.js +90 -0
- package/dist/core/host/platform-host.module.js.map +1 -0
- package/dist/core/host/ports.d.ts +132 -0
- package/dist/core/host/ports.d.ts.map +1 -0
- package/dist/core/host/ports.js +48 -0
- package/dist/core/host/ports.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +77 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/openapi/openapi-tag.registry.d.ts +80 -0
- package/dist/core/openapi/openapi-tag.registry.d.ts.map +1 -0
- package/dist/core/openapi/openapi-tag.registry.js +72 -0
- package/dist/core/openapi/openapi-tag.registry.js.map +1 -0
- package/dist/core/principal/index.d.ts +6 -0
- package/dist/core/principal/index.d.ts.map +1 -0
- package/dist/core/principal/index.js +3 -0
- package/dist/core/principal/index.js.map +1 -0
- package/dist/core/principal/principal.types.d.ts +222 -0
- package/dist/core/principal/principal.types.d.ts.map +1 -0
- package/dist/core/principal/principal.types.js +22 -0
- package/dist/core/principal/principal.types.js.map +1 -0
- package/dist/core/registry/index.d.ts +4 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +19 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/registry-freeze.service.d.ts +14 -0
- package/dist/core/registry/registry-freeze.service.d.ts.map +1 -0
- package/dist/core/registry/registry-freeze.service.js +55 -0
- package/dist/core/registry/registry-freeze.service.js.map +1 -0
- package/dist/core/registry/registry.d.ts +268 -0
- package/dist/core/registry/registry.d.ts.map +1 -0
- package/dist/core/registry/registry.js +351 -0
- package/dist/core/registry/registry.js.map +1 -0
- package/dist/core/registry/testing.d.ts +29 -0
- package/dist/core/registry/testing.d.ts.map +1 -0
- package/dist/core/registry/testing.js +63 -0
- package/dist/core/registry/testing.js.map +1 -0
- package/dist/doctor/doctor-check.interface.d.ts +100 -0
- package/dist/doctor/doctor-check.interface.d.ts.map +1 -0
- package/dist/doctor/doctor-check.interface.js +95 -0
- package/dist/doctor/doctor-check.interface.js.map +1 -0
- package/dist/doctor/doctor-check.registry.d.ts +37 -0
- package/dist/doctor/doctor-check.registry.d.ts.map +1 -0
- package/dist/doctor/doctor-check.registry.js +96 -0
- package/dist/doctor/doctor-check.registry.js.map +1 -0
- package/dist/doctor/doctor.controller.factory.d.ts +29 -0
- package/dist/doctor/doctor.controller.factory.d.ts.map +1 -0
- package/dist/doctor/doctor.controller.factory.js +121 -0
- package/dist/doctor/doctor.controller.factory.js.map +1 -0
- package/dist/doctor/doctor.module.d.ts +78 -0
- package/dist/doctor/doctor.module.d.ts.map +1 -0
- package/dist/doctor/doctor.module.js +158 -0
- package/dist/doctor/doctor.module.js.map +1 -0
- package/dist/doctor/doctor.options.d.ts +39 -0
- package/dist/doctor/doctor.options.d.ts.map +1 -0
- package/dist/doctor/doctor.options.js +21 -0
- package/dist/doctor/doctor.options.js.map +1 -0
- package/dist/doctor/doctor.service.d.ts +80 -0
- package/dist/doctor/doctor.service.d.ts.map +1 -0
- package/dist/doctor/doctor.service.js +301 -0
- package/dist/doctor/doctor.service.js.map +1 -0
- package/dist/doctor/dto/doctor-query.dto.d.ts +15 -0
- package/dist/doctor/dto/doctor-query.dto.d.ts.map +1 -0
- package/dist/doctor/dto/doctor-query.dto.js +16 -0
- package/dist/doctor/dto/doctor-query.dto.js.map +1 -0
- package/dist/doctor/dto/doctor-report.dto.d.ts +27 -0
- package/dist/doctor/dto/doctor-report.dto.d.ts.map +1 -0
- package/dist/doctor/dto/doctor-report.dto.js +23 -0
- package/dist/doctor/dto/doctor-report.dto.js.map +1 -0
- package/dist/doctor/egress/classify-host.d.ts +73 -0
- package/dist/doctor/egress/classify-host.d.ts.map +1 -0
- package/dist/doctor/egress/classify-host.js +210 -0
- package/dist/doctor/egress/classify-host.js.map +1 -0
- package/dist/doctor/egress/egress.registry.d.ts +34 -0
- package/dist/doctor/egress/egress.registry.d.ts.map +1 -0
- package/dist/doctor/egress/egress.registry.js +70 -0
- package/dist/doctor/egress/egress.registry.js.map +1 -0
- package/dist/doctor/egress/egress.types.d.ts +135 -0
- package/dist/doctor/egress/egress.types.d.ts.map +1 -0
- package/dist/doctor/egress/egress.types.js +42 -0
- package/dist/doctor/egress/egress.types.js.map +1 -0
- package/dist/doctor/egress/index.d.ts +6 -0
- package/dist/doctor/egress/index.d.ts.map +1 -0
- package/dist/doctor/egress/index.js +23 -0
- package/dist/doctor/egress/index.js.map +1 -0
- package/dist/doctor/egress/network-egress.doctor-check.d.ts +78 -0
- package/dist/doctor/egress/network-egress.doctor-check.d.ts.map +1 -0
- package/dist/doctor/egress/network-egress.doctor-check.js +226 -0
- package/dist/doctor/egress/network-egress.doctor-check.js.map +1 -0
- package/dist/doctor/index.d.ts +19 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js +66 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/support-bundle/index.d.ts +12 -0
- package/dist/doctor/support-bundle/index.d.ts.map +1 -0
- package/dist/doctor/support-bundle/index.js +32 -0
- package/dist/doctor/support-bundle/index.js.map +1 -0
- package/dist/doctor/support-bundle/redact.d.ts +76 -0
- package/dist/doctor/support-bundle/redact.d.ts.map +1 -0
- package/dist/doctor/support-bundle/redact.js +236 -0
- package/dist/doctor/support-bundle/redact.js.map +1 -0
- package/dist/doctor/support-bundle/sections/doctor.section.d.ts +81 -0
- package/dist/doctor/support-bundle/sections/doctor.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/doctor.section.js +83 -0
- package/dist/doctor/support-bundle/sections/doctor.section.js.map +1 -0
- package/dist/doctor/support-bundle/sections/egress.section.d.ts +73 -0
- package/dist/doctor/support-bundle/sections/egress.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/egress.section.js +97 -0
- package/dist/doctor/support-bundle/sections/egress.section.js.map +1 -0
- package/dist/doctor/support-bundle/sections/meta.section.d.ts +39 -0
- package/dist/doctor/support-bundle/sections/meta.section.d.ts.map +1 -0
- package/dist/doctor/support-bundle/sections/meta.section.js +89 -0
- package/dist/doctor/support-bundle/sections/meta.section.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts +100 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.js +59 -0
- package/dist/doctor/support-bundle/support-bundle-section.interface.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.controller.d.ts +57 -0
- package/dist/doctor/support-bundle/support-bundle.controller.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.controller.js +141 -0
- package/dist/doctor/support-bundle/support-bundle.controller.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.options.d.ts +92 -0
- package/dist/doctor/support-bundle/support-bundle.options.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.options.js +100 -0
- package/dist/doctor/support-bundle/support-bundle.options.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.registry.d.ts +38 -0
- package/dist/doctor/support-bundle/support-bundle.registry.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.registry.js +90 -0
- package/dist/doctor/support-bundle/support-bundle.registry.js.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.service.d.ts +63 -0
- package/dist/doctor/support-bundle/support-bundle.service.d.ts.map +1 -0
- package/dist/doctor/support-bundle/support-bundle.service.js +244 -0
- package/dist/doctor/support-bundle/support-bundle.service.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/otel-core/index.d.ts +9 -0
- package/dist/otel-core/index.d.ts.map +1 -0
- package/dist/otel-core/index.js +58 -0
- package/dist/otel-core/index.js.map +1 -0
- package/dist/otel-core/metrics/gauge-provider.d.ts +44 -0
- package/dist/otel-core/metrics/gauge-provider.d.ts.map +1 -0
- package/dist/otel-core/metrics/gauge-provider.js +37 -0
- package/dist/otel-core/metrics/gauge-provider.js.map +1 -0
- package/dist/otel-core/metrics/labels.d.ts +79 -0
- package/dist/otel-core/metrics/labels.d.ts.map +1 -0
- package/dist/otel-core/metrics/labels.js +135 -0
- package/dist/otel-core/metrics/labels.js.map +1 -0
- package/dist/otel-core/metrics/metric-name.registry.d.ts +130 -0
- package/dist/otel-core/metrics/metric-name.registry.d.ts.map +1 -0
- package/dist/otel-core/metrics/metric-name.registry.js +134 -0
- package/dist/otel-core/metrics/metric-name.registry.js.map +1 -0
- package/dist/otel-core/metrics/metrics-host.service.d.ts +163 -0
- package/dist/otel-core/metrics/metrics-host.service.d.ts.map +1 -0
- package/dist/otel-core/metrics/metrics-host.service.js +344 -0
- package/dist/otel-core/metrics/metrics-host.service.js.map +1 -0
- package/dist/otel-core/metrics/otel-metrics.module.d.ts +54 -0
- package/dist/otel-core/metrics/otel-metrics.module.d.ts.map +1 -0
- package/dist/otel-core/metrics/otel-metrics.module.js +83 -0
- package/dist/otel-core/metrics/otel-metrics.module.js.map +1 -0
- package/dist/otel-core/sdk/index.d.ts +5 -0
- package/dist/otel-core/sdk/index.d.ts.map +1 -0
- package/dist/otel-core/sdk/index.js +27 -0
- package/dist/otel-core/sdk/index.js.map +1 -0
- package/dist/otel-core/sdk/initialize-otel.d.ts +126 -0
- package/dist/otel-core/sdk/initialize-otel.d.ts.map +1 -0
- package/dist/otel-core/sdk/initialize-otel.js +204 -0
- package/dist/otel-core/sdk/initialize-otel.js.map +1 -0
- package/dist/otel-core/sdk/instance-id.d.ts +29 -0
- package/dist/otel-core/sdk/instance-id.d.ts.map +1 -0
- package/dist/otel-core/sdk/instance-id.js +65 -0
- package/dist/otel-core/sdk/instance-id.js.map +1 -0
- package/dist/otel-core/sdk/service-name.d.ts +28 -0
- package/dist/otel-core/sdk/service-name.d.ts.map +1 -0
- package/dist/otel-core/sdk/service-name.js +63 -0
- package/dist/otel-core/sdk/service-name.js.map +1 -0
- package/dist/otel-core/sdk/telemetry-gate.d.ts +116 -0
- package/dist/otel-core/sdk/telemetry-gate.d.ts.map +1 -0
- package/dist/otel-core/sdk/telemetry-gate.js +297 -0
- package/dist/otel-core/sdk/telemetry-gate.js.map +1 -0
- package/dist/otel-core/spans/request-span-attributes.d.ts +58 -0
- package/dist/otel-core/spans/request-span-attributes.d.ts.map +1 -0
- package/dist/otel-core/spans/request-span-attributes.js +155 -0
- package/dist/otel-core/spans/request-span-attributes.js.map +1 -0
- package/dist/otel-core/spans/trace.decorator.d.ts +36 -0
- package/dist/otel-core/spans/trace.decorator.d.ts.map +1 -0
- package/dist/otel-core/spans/trace.decorator.js +74 -0
- package/dist/otel-core/spans/trace.decorator.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts +15 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js +50 -0
- package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts +14 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.js +178 -0
- package/dist/telemetry/assistant/telemetry-assistant.controller.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts +147 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.js +495 -0
- package/dist/telemetry/assistant/telemetry-assistant.metrics.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.d.ts +216 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.js +1256 -0
- package/dist/telemetry/assistant/telemetry-assistant.service.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts +69 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.js +471 -0
- package/dist/telemetry/assistant/telemetry-assistant.sql.js.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts +15 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts.map +1 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.js +68 -0
- package/dist/telemetry/assistant/telemetry-assistant.sse.js.map +1 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts +92 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts.map +1 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.js +41 -0
- package/dist/telemetry/connection/dto/telemetry-connection.dto.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts +45 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.js +303 -0
- package/dist/telemetry/connection/telemetry-connection-admin.service.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.d.ts +41 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.js +187 -0
- package/dist/telemetry/connection/telemetry-connection-test.service.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.controller.d.ts +14 -0
- package/dist/telemetry/connection/telemetry-connection.controller.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.controller.js +192 -0
- package/dist/telemetry/connection/telemetry-connection.controller.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.schema.d.ts +28 -0
- package/dist/telemetry/connection/telemetry-connection.schema.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.schema.js +106 -0
- package/dist/telemetry/connection/telemetry-connection.schema.js.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.service.d.ts +197 -0
- package/dist/telemetry/connection/telemetry-connection.service.d.ts.map +1 -0
- package/dist/telemetry/connection/telemetry-connection.service.js +461 -0
- package/dist/telemetry/connection/telemetry-connection.service.js.map +1 -0
- package/dist/telemetry/dashboard/sql-literals.d.ts +19 -0
- package/dist/telemetry/dashboard/sql-literals.d.ts.map +1 -0
- package/dist/telemetry/dashboard/sql-literals.js +75 -0
- package/dist/telemetry/dashboard/sql-literals.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts +14 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.js +277 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.controller.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +112 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js +904 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts +212 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.js +486 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.sql.js.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +235 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +269 -0
- package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -0
- package/dist/telemetry/dashboard/verdict-policy.d.ts +51 -0
- package/dist/telemetry/dashboard/verdict-policy.d.ts.map +1 -0
- package/dist/telemetry/dashboard/verdict-policy.js +77 -0
- package/dist/telemetry/dashboard/verdict-policy.js.map +1 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts +21 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts.map +1 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js +59 -0
- package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.js +69 -0
- package/dist/telemetry/doctor/telemetry-connection.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts +33 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.js +105 -0
- package/dist/telemetry/doctor/telemetry-export.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts +38 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js +104 -0
- package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js +65 -0
- package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js.map +1 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts +23 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts.map +1 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.js +91 -0
- package/dist/telemetry/doctor/telemetry-tables.doctor-check.js.map +1 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.d.ts +14 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.js +29 -0
- package/dist/telemetry/dto/telemetry-assistant.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-config.dto.d.ts +59 -0
- package/dist/telemetry/dto/telemetry-config.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-config.dto.js +18 -0
- package/dist/telemetry/dto/telemetry-config.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +397 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.js +118 -0
- package/dist/telemetry/dto/telemetry-dashboard.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-query.dto.d.ts +44 -0
- package/dist/telemetry/dto/telemetry-query.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-query.dto.js +42 -0
- package/dist/telemetry/dto/telemetry-query.dto.js.map +1 -0
- package/dist/telemetry/dto/telemetry-status.dto.d.ts +22 -0
- package/dist/telemetry/dto/telemetry-status.dto.d.ts.map +1 -0
- package/dist/telemetry/dto/telemetry-status.dto.js +12 -0
- package/dist/telemetry/dto/telemetry-status.dto.js.map +1 -0
- package/dist/telemetry/export/parquet-writer.loader.d.ts +13 -0
- package/dist/telemetry/export/parquet-writer.loader.d.ts.map +1 -0
- package/dist/telemetry/export/parquet-writer.loader.js +29 -0
- package/dist/telemetry/export/parquet-writer.loader.js.map +1 -0
- package/dist/telemetry/export/telemetry-export.service.d.ts +39 -0
- package/dist/telemetry/export/telemetry-export.service.d.ts.map +1 -0
- package/dist/telemetry/export/telemetry-export.service.js +185 -0
- package/dist/telemetry/export/telemetry-export.service.js.map +1 -0
- package/dist/telemetry/greptime/greptime-host.d.ts +44 -0
- package/dist/telemetry/greptime/greptime-host.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime-host.js +114 -0
- package/dist/telemetry/greptime/greptime-host.js.map +1 -0
- package/dist/telemetry/greptime/greptime.client.d.ts +171 -0
- package/dist/telemetry/greptime/greptime.client.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime.client.js +352 -0
- package/dist/telemetry/greptime/greptime.client.js.map +1 -0
- package/dist/telemetry/greptime/greptime.errors.d.ts +59 -0
- package/dist/telemetry/greptime/greptime.errors.d.ts.map +1 -0
- package/dist/telemetry/greptime/greptime.errors.js +100 -0
- package/dist/telemetry/greptime/greptime.errors.js.map +1 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.d.ts +27 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.d.ts.map +1 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.js +123 -0
- package/dist/telemetry/handlers/telemetry-retention.handler.js.map +1 -0
- package/dist/telemetry/index.d.ts +37 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +97 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/internal/blank-secret.d.ts +3 -0
- package/dist/telemetry/internal/blank-secret.d.ts.map +1 -0
- package/dist/telemetry/internal/blank-secret.js +14 -0
- package/dist/telemetry/internal/blank-secret.js.map +1 -0
- package/dist/telemetry/internal/csv.d.ts +9 -0
- package/dist/telemetry/internal/csv.d.ts.map +1 -0
- package/dist/telemetry/internal/csv.js +23 -0
- package/dist/telemetry/internal/csv.js.map +1 -0
- package/dist/telemetry/internal/sse.d.ts +23 -0
- package/dist/telemetry/internal/sse.d.ts.map +1 -0
- package/dist/telemetry/internal/sse.js +43 -0
- package/dist/telemetry/internal/sse.js.map +1 -0
- package/dist/telemetry/metrics/groups/database.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/database.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/database.metric-group.js +159 -0
- package/dist/telemetry/metrics/groups/database.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/host.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/host.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/host.metric-group.js +146 -0
- package/dist/telemetry/metrics/groups/host.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.js +159 -0
- package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.js +144 -0
- package/dist/telemetry/metrics/groups/pipeline.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.js +163 -0
- package/dist/telemetry/metrics/groups/queue.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts +7 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.js +103 -0
- package/dist/telemetry/metrics/groups/uptime.metric-group.js.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.d.ts +324 -0
- package/dist/telemetry/metrics/metric-catalog.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.d.ts +30 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.js +37 -0
- package/dist/telemetry/metrics/metric-catalog.helpers.js.map +1 -0
- package/dist/telemetry/metrics/metric-catalog.js +180 -0
- package/dist/telemetry/metrics/metric-catalog.js.map +1 -0
- package/dist/telemetry/metrics/metric-group-registry.service.d.ts +59 -0
- package/dist/telemetry/metrics/metric-group-registry.service.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group-registry.service.js +99 -0
- package/dist/telemetry/metrics/metric-group-registry.service.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.d.ts +113 -0
- package/dist/telemetry/metrics/metric-group.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.js +647 -0
- package/dist/telemetry/metrics/metric-group.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.manifest.d.ts +2 -0
- package/dist/telemetry/metrics/metric-group.manifest.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.manifest.js +30 -0
- package/dist/telemetry/metrics/metric-group.manifest.js.map +1 -0
- package/dist/telemetry/metrics/metric-group.registry.d.ts +109 -0
- package/dist/telemetry/metrics/metric-group.registry.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-group.registry.js +181 -0
- package/dist/telemetry/metrics/metric-group.registry.js.map +1 -0
- package/dist/telemetry/metrics/metric-sql.d.ts +98 -0
- package/dist/telemetry/metrics/metric-sql.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-sql.js +259 -0
- package/dist/telemetry/metrics/metric-sql.js.map +1 -0
- package/dist/telemetry/metrics/metric-values.d.ts +19 -0
- package/dist/telemetry/metrics/metric-values.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-values.js +97 -0
- package/dist/telemetry/metrics/metric-values.js.map +1 -0
- package/dist/telemetry/metrics/metric-verdict.d.ts +20 -0
- package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -0
- package/dist/telemetry/metrics/metric-verdict.js +218 -0
- package/dist/telemetry/metrics/metric-verdict.js.map +1 -0
- package/dist/telemetry/ports.d.ts +575 -0
- package/dist/telemetry/ports.d.ts.map +1 -0
- package/dist/telemetry/ports.js +78 -0
- package/dist/telemetry/ports.js.map +1 -0
- package/dist/telemetry/query/sql-guard.d.ts +71 -0
- package/dist/telemetry/query/sql-guard.d.ts.map +1 -0
- package/dist/telemetry/query/sql-guard.js +258 -0
- package/dist/telemetry/query/sql-guard.js.map +1 -0
- package/dist/telemetry/query/telemetry-availability.d.ts +11 -0
- package/dist/telemetry/query/telemetry-availability.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-availability.js +55 -0
- package/dist/telemetry/query/telemetry-availability.js.map +1 -0
- package/dist/telemetry/query/telemetry-query.errors.d.ts +48 -0
- package/dist/telemetry/query/telemetry-query.errors.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-query.errors.js +100 -0
- package/dist/telemetry/query/telemetry-query.errors.js.map +1 -0
- package/dist/telemetry/query/telemetry-query.service.d.ts +57 -0
- package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-query.service.js +194 -0
- package/dist/telemetry/query/telemetry-query.service.js.map +1 -0
- package/dist/telemetry/query/telemetry-schema.service.d.ts +36 -0
- package/dist/telemetry/query/telemetry-schema.service.d.ts.map +1 -0
- package/dist/telemetry/query/telemetry-schema.service.js +154 -0
- package/dist/telemetry/query/telemetry-schema.service.js.map +1 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +29 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts.map +1 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.js +27 -0
- package/dist/telemetry/stack/dto/telemetry-stack.dto.js.map +1 -0
- package/dist/telemetry/stack/stack-agent.client.d.ts +76 -0
- package/dist/telemetry/stack/stack-agent.client.d.ts.map +1 -0
- package/dist/telemetry/stack/stack-agent.client.js +208 -0
- package/dist/telemetry/stack/stack-agent.client.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts +43 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.js +159 -0
- package/dist/telemetry/stack/telemetry-stack-deploy.handler.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.controller.d.ts +14 -0
- package/dist/telemetry/stack/telemetry-stack.controller.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.controller.js +107 -0
- package/dist/telemetry/stack/telemetry-stack.controller.js.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.service.d.ts +19 -0
- package/dist/telemetry/stack/telemetry-stack.service.d.ts.map +1 -0
- package/dist/telemetry/stack/telemetry-stack.service.js +122 -0
- package/dist/telemetry/stack/telemetry-stack.service.js.map +1 -0
- package/dist/telemetry/tasks/telemetry-retention.task.d.ts +8 -0
- package/dist/telemetry/tasks/telemetry-retention.task.d.ts.map +1 -0
- package/dist/telemetry/tasks/telemetry-retention.task.js +61 -0
- package/dist/telemetry/tasks/telemetry-retention.task.js.map +1 -0
- package/dist/telemetry/telemetry-admin.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-admin.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-admin.controller.js +148 -0
- package/dist/telemetry/telemetry-admin.controller.js.map +1 -0
- package/dist/telemetry/telemetry-config.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-config.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-config.controller.js +73 -0
- package/dist/telemetry/telemetry-config.controller.js.map +1 -0
- package/dist/telemetry/telemetry-explorer.controller.d.ts +14 -0
- package/dist/telemetry/telemetry-explorer.controller.d.ts.map +1 -0
- package/dist/telemetry/telemetry-explorer.controller.js +193 -0
- package/dist/telemetry/telemetry-explorer.controller.js.map +1 -0
- package/dist/telemetry/telemetry-settings.service.d.ts +85 -0
- package/dist/telemetry/telemetry-settings.service.d.ts.map +1 -0
- package/dist/telemetry/telemetry-settings.service.js +278 -0
- package/dist/telemetry/telemetry-settings.service.js.map +1 -0
- package/dist/telemetry/telemetry-status.service.d.ts +28 -0
- package/dist/telemetry/telemetry-status.service.d.ts.map +1 -0
- package/dist/telemetry/telemetry-status.service.js +185 -0
- package/dist/telemetry/telemetry-status.service.js.map +1 -0
- package/dist/telemetry/telemetry-support-bundle.section.d.ts +163 -0
- package/dist/telemetry/telemetry-support-bundle.section.d.ts.map +1 -0
- package/dist/telemetry/telemetry-support-bundle.section.js +187 -0
- package/dist/telemetry/telemetry-support-bundle.section.js.map +1 -0
- package/dist/telemetry/telemetry.module.d.ts +35 -0
- package/dist/telemetry/telemetry.module.d.ts.map +1 -0
- package/dist/telemetry/telemetry.module.js +210 -0
- package/dist/telemetry/telemetry.module.js.map +1 -0
- package/dist/telemetry/telemetry.options.d.ts +176 -0
- package/dist/telemetry/telemetry.options.d.ts.map +1 -0
- package/dist/telemetry/telemetry.options.js +246 -0
- package/dist/telemetry/telemetry.options.js.map +1 -0
- package/dist/telemetry/telemetry.permissions.d.ts +76 -0
- package/dist/telemetry/telemetry.permissions.d.ts.map +1 -0
- package/dist/telemetry/telemetry.permissions.js +85 -0
- package/dist/telemetry/telemetry.permissions.js.map +1 -0
- package/dist/telemetry/telemetry.settings.d.ts +79 -0
- package/dist/telemetry/telemetry.settings.d.ts.map +1 -0
- package/dist/telemetry/telemetry.settings.js +92 -0
- package/dist/telemetry/telemetry.settings.js.map +1 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.d.ts +17 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.d.ts.map +1 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.js +128 -0
- package/dist/telemetry/testing/coach-metric-group.fixture.js.map +1 -0
- package/dist/telemetry/testing/conformance.d.ts +257 -0
- package/dist/telemetry/testing/conformance.d.ts.map +1 -0
- package/dist/telemetry/testing/conformance.js +626 -0
- package/dist/telemetry/testing/conformance.js.map +1 -0
- package/dist/telemetry/testing/index.d.ts +10 -0
- package/dist/telemetry/testing/index.d.ts.map +1 -0
- package/dist/telemetry/testing/index.js +41 -0
- package/dist/telemetry/testing/index.js.map +1 -0
- package/dist/telemetry/testing/metric-schema.fixture.d.ts +73 -0
- package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -0
- package/dist/telemetry/testing/metric-schema.fixture.js +362 -0
- package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -0
- package/dist/telemetry/testing/stub-ports.d.ts +46 -0
- package/dist/telemetry/testing/stub-ports.d.ts.map +1 -0
- package/dist/telemetry/testing/stub-ports.js +119 -0
- package/dist/telemetry/testing/stub-ports.js.map +1 -0
- package/dist/testing/conformance-suite.d.ts +106 -0
- package/dist/testing/conformance-suite.d.ts.map +1 -0
- package/dist/testing/conformance-suite.js +8 -0
- package/dist/testing/conformance-suite.js.map +1 -0
- package/dist/testing/conformance-suites.d.ts +14 -0
- package/dist/testing/conformance-suites.d.ts.map +1 -0
- package/dist/testing/conformance-suites.js +27 -0
- package/dist/testing/conformance-suites.js.map +1 -0
- package/dist/testing/host/in-memory-audit-sink.d.ts +23 -0
- package/dist/testing/host/in-memory-audit-sink.d.ts.map +1 -0
- package/dist/testing/host/in-memory-audit-sink.js +30 -0
- package/dist/testing/host/in-memory-audit-sink.js.map +1 -0
- package/dist/testing/host/in-memory-system-settings-store.d.ts +31 -0
- package/dist/testing/host/in-memory-system-settings-store.d.ts.map +1 -0
- package/dist/testing/host/in-memory-system-settings-store.js +54 -0
- package/dist/testing/host/in-memory-system-settings-store.js.map +1 -0
- package/dist/testing/host/index.d.ts +4 -0
- package/dist/testing/host/index.d.ts.map +1 -0
- package/dist/testing/host/index.js +13 -0
- package/dist/testing/host/index.js.map +1 -0
- package/dist/testing/host/test-platform-host.d.ts +35 -0
- package/dist/testing/host/test-platform-host.d.ts.map +1 -0
- package/dist/testing/host/test-platform-host.js +81 -0
- package/dist/testing/host/test-platform-host.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +32 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/prisma-schema.d.ts +99 -0
- package/dist/testing/prisma-schema.d.ts.map +1 -0
- package/dist/testing/prisma-schema.js +175 -0
- package/dist/testing/prisma-schema.js.map +1 -0
- package/dist/testing/run-platform-conformance.d.ts +70 -0
- package/dist/testing/run-platform-conformance.d.ts.map +1 -0
- package/dist/testing/run-platform-conformance.js +77 -0
- package/dist/testing/run-platform-conformance.js.map +1 -0
- package/dist/testing/suites/cron-enqueue-only.d.ts +46 -0
- package/dist/testing/suites/cron-enqueue-only.d.ts.map +1 -0
- package/dist/testing/suites/cron-enqueue-only.js +177 -0
- package/dist/testing/suites/cron-enqueue-only.js.map +1 -0
- package/dist/testing/suites/user-owned-data.d.ts +86 -0
- package/dist/testing/suites/user-owned-data.d.ts.map +1 -0
- package/dist/testing/suites/user-owned-data.js +329 -0
- package/dist/testing/suites/user-owned-data.js.map +1 -0
- package/package.json +129 -4
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { VERDICT_LEVELS, type VerdictLevel } from '@marinoscar/platform-contract/telemetry';
|
|
2
|
+
/**
|
|
3
|
+
* A `degraded` and a `critical` bound of one verdict rule.
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface VerdictLevelThresholds {
|
|
8
|
+
/** The bound past which the rule reports `degraded`. */
|
|
9
|
+
readonly degraded: number;
|
|
10
|
+
/** The bound past which the rule reports `critical`. */
|
|
11
|
+
readonly critical: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The error-log rule: the current window against the previous one.
|
|
15
|
+
*
|
|
16
|
+
* @stability experimental
|
|
17
|
+
*/
|
|
18
|
+
export interface VerdictErrorLogThresholds {
|
|
19
|
+
/** Error logs needed in the current window before the ratio rule may fire. */
|
|
20
|
+
readonly minCurrent: number;
|
|
21
|
+
/** Ratio to the previous window, `>=`, for degraded. */
|
|
22
|
+
readonly degradedRatio: number;
|
|
23
|
+
/** Ratio to the previous window, `>=`, for critical. */
|
|
24
|
+
readonly criticalRatio: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The unknown-API-route rule (bearer requests only): any is degraded; either
|
|
28
|
+
* bound, `>=`, is critical.
|
|
29
|
+
*
|
|
30
|
+
* @stability experimental
|
|
31
|
+
*/
|
|
32
|
+
export interface VerdictUnknownRouteThresholds {
|
|
33
|
+
/** Bearer requests to unknown routes that make the rule critical. */
|
|
34
|
+
readonly criticalBearerRequests: number;
|
|
35
|
+
/** Distinct unknown `METHOD /path` that make the rule critical. */
|
|
36
|
+
readonly criticalDistinctRoutes: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The collector rule: any failed point is degraded.
|
|
40
|
+
*
|
|
41
|
+
* @stability experimental
|
|
42
|
+
*/
|
|
43
|
+
export interface VerdictCollectorThresholds {
|
|
44
|
+
/** The share of attempted points that failed, %, `>=`, that makes the rule critical. */
|
|
45
|
+
readonly critical: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The thresholds of the dashboard's health verdict, as numbers. See
|
|
49
|
+
* {@link DEFAULT_VERDICT_THRESHOLDS} for the shipped values.
|
|
50
|
+
*
|
|
51
|
+
* @stability experimental
|
|
52
|
+
*/
|
|
53
|
+
export interface VerdictThresholds {
|
|
54
|
+
/** Requests needed before the 5xx and p95 rules may fire. */
|
|
55
|
+
readonly minRequests: number;
|
|
56
|
+
/** 5xx rate, %, `>`. */
|
|
57
|
+
readonly errorRatePct: VerdictLevelThresholds;
|
|
58
|
+
/** Window p95, ms, `>`. */
|
|
59
|
+
readonly p95Ms: VerdictLevelThresholds;
|
|
60
|
+
/** Error logs against the previous window. */
|
|
61
|
+
readonly errorLogs: VerdictErrorLogThresholds;
|
|
62
|
+
/** Minutes without any trace or log after which the verdict is `no_data`. */
|
|
63
|
+
readonly noDataMinutes: number;
|
|
64
|
+
/** Unknown API routes, bearer requests only. */
|
|
65
|
+
readonly unknownRoutes: VerdictUnknownRouteThresholds;
|
|
66
|
+
/** Worst mountpoint, %, `>=`. */
|
|
67
|
+
readonly diskUtilizationPct: VerdictLevelThresholds;
|
|
68
|
+
/** Worst host, %, `>=`. */
|
|
69
|
+
readonly memoryUtilizationPct: VerdictLevelThresholds;
|
|
70
|
+
/** Backends against `max_connections`, %, worst server, `>=`. */
|
|
71
|
+
readonly dbConnectionsPct: VerdictLevelThresholds;
|
|
72
|
+
/** Oldest due pending job, minutes, worst job type, `>=`. */
|
|
73
|
+
readonly oldestPendingJobMinutes: VerdictLevelThresholds;
|
|
74
|
+
/** Certificate lifetime left, days, soonest URL, `<` (fewer is worse). */
|
|
75
|
+
readonly tlsDaysLeft: VerdictLevelThresholds;
|
|
76
|
+
/** Checks an uptime target must have in the lookback before "every check failed" may be critical. */
|
|
77
|
+
readonly uptimeMinChecksForCritical: number;
|
|
78
|
+
/** Share of attempted exporter points that failed, %, `>=`, for critical (any failure is degraded). */
|
|
79
|
+
readonly collectorFailedPct: VerdictCollectorThresholds;
|
|
80
|
+
/** Age of the last successful backup, hours, `>`. */
|
|
81
|
+
readonly backupAgeHours: VerdictLevelThresholds;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The shipped verdict thresholds (the values of the rules in this file's
|
|
85
|
+
* header). An app overrides any of them with
|
|
86
|
+
* `TelemetryModule.forRoot({ dashboard: { verdictThresholds } })`.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const resolved = resolveVerdictThresholds({ noDataMinutes: 10 }); // every other value is the default
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @extensionPoint option
|
|
94
|
+
* @stability stable
|
|
95
|
+
*/
|
|
96
|
+
export declare const DEFAULT_VERDICT_THRESHOLDS: VerdictThresholds;
|
|
97
|
+
/**
|
|
98
|
+
* The shipped verdict thresholds, under their pre-#703 name.
|
|
99
|
+
*
|
|
100
|
+
* @deprecated Use {@link DEFAULT_VERDICT_THRESHOLDS}, or inject the resolved
|
|
101
|
+
* thresholds (`TELEMETRY_VERDICT_THRESHOLDS`) to honour an app's override.
|
|
102
|
+
*
|
|
103
|
+
* @stability experimental
|
|
104
|
+
*/
|
|
105
|
+
export declare const DASHBOARD_VERDICT_THRESHOLDS: VerdictThresholds;
|
|
106
|
+
export { VERDICT_LEVELS, type VerdictLevel };
|
|
107
|
+
/**
|
|
108
|
+
* The summary's health verdict.
|
|
109
|
+
*
|
|
110
|
+
* @stability stable
|
|
111
|
+
*/
|
|
112
|
+
export interface DashboardVerdict {
|
|
113
|
+
/** The worst rule that fired (`no_data` overrides every other rule). */
|
|
114
|
+
level: VerdictLevel;
|
|
115
|
+
/** One line per fired rule: its value, the threshold it crossed and the worst offender. */
|
|
116
|
+
reasons: string[];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The numbers the summary computed, which a {@link VerdictPolicy} judges. An
|
|
120
|
+
* infrastructure input left `undefined` or `null` skips its rule.
|
|
121
|
+
*
|
|
122
|
+
* @stability experimental
|
|
123
|
+
*/
|
|
124
|
+
export interface VerdictInput {
|
|
125
|
+
/** The instant the summary was computed for. */
|
|
126
|
+
now: Date;
|
|
127
|
+
/** Latest trace or log timestamp seen (null when none in the lookback). */
|
|
128
|
+
lastDataAt: Date | null;
|
|
129
|
+
/** Server requests in the window. */
|
|
130
|
+
requests: number;
|
|
131
|
+
/** Of which answered 5xx. */
|
|
132
|
+
errors5xx: number;
|
|
133
|
+
/** Window p95, null without requests. */
|
|
134
|
+
p95Ms: number | null;
|
|
135
|
+
/** Error logs in the window. */
|
|
136
|
+
errorLogs: number;
|
|
137
|
+
/** Error logs in the previous window of equal length. */
|
|
138
|
+
previousErrorLogs: number;
|
|
139
|
+
/** `METHOD /path` with the most 5xx, if any. */
|
|
140
|
+
topErrorRoute?: string | null;
|
|
141
|
+
/** `METHOD /path` with the highest p95, if any. */
|
|
142
|
+
slowestRoute?: string | null;
|
|
143
|
+
/** The most frequent error message, if any. */
|
|
144
|
+
topErrorMessage?: string | null;
|
|
145
|
+
/**
|
|
146
|
+
* Requests WITH a bearer to an unknown route (#650): how many, over how
|
|
147
|
+
* many distinct `METHOD /path` (counted from the bounded top list, which is
|
|
148
|
+
* enough for the threshold), and the top one. Undefined/null when the store
|
|
149
|
+
* cannot tell (no `app.route.matched` column yet): the rule is skipped.
|
|
150
|
+
*/
|
|
151
|
+
unknownRoutes?: {
|
|
152
|
+
/** Bearer requests to unknown routes. */
|
|
153
|
+
bearerRequests: number;
|
|
154
|
+
/** Distinct unknown `METHOD /path` among them. */
|
|
155
|
+
bearerRoutes: number;
|
|
156
|
+
/** The most requested one. */
|
|
157
|
+
topRoute: string | null;
|
|
158
|
+
} | null;
|
|
159
|
+
/** Highest filesystem utilization (%) and its mountpoint. */
|
|
160
|
+
disk?: {
|
|
161
|
+
/** Utilization, %. */
|
|
162
|
+
utilizationPct: number;
|
|
163
|
+
/** The mountpoint. */
|
|
164
|
+
mountpoint: string | null;
|
|
165
|
+
} | null;
|
|
166
|
+
/** Highest memory utilization (%) and its host. */
|
|
167
|
+
memory?: {
|
|
168
|
+
/** Utilization, %. */
|
|
169
|
+
utilizationPct: number;
|
|
170
|
+
/** The host. */
|
|
171
|
+
host: string | null;
|
|
172
|
+
} | null;
|
|
173
|
+
/** Highest backends / max_connections (%) and its server (`instance`). */
|
|
174
|
+
dbConnections?: {
|
|
175
|
+
/** Backends against `max_connections`, %. */
|
|
176
|
+
utilizationPct: number;
|
|
177
|
+
/** The server. */
|
|
178
|
+
instance: string | null;
|
|
179
|
+
} | null;
|
|
180
|
+
/** Oldest due pending job age (seconds) and its job type. */
|
|
181
|
+
oldestPendingJob?: {
|
|
182
|
+
/** Its age, seconds. */
|
|
183
|
+
ageSeconds: number;
|
|
184
|
+
/** Its job type. */
|
|
185
|
+
jobType: string | null;
|
|
186
|
+
} | null;
|
|
187
|
+
/** Worker nodes: how many are stale, and node-offered job types with pending work but no eligible node. */
|
|
188
|
+
nodes?: {
|
|
189
|
+
/** Nodes that missed heartbeats. */
|
|
190
|
+
stale: number;
|
|
191
|
+
/** Node-offered job types with pending work and no eligible node. */
|
|
192
|
+
noEligibleNodeTypes: readonly string[];
|
|
193
|
+
} | null;
|
|
194
|
+
/** Soonest certificate expiry (days) and its URL. */
|
|
195
|
+
tls?: {
|
|
196
|
+
/** Days until the certificate expires (negative: expired). */
|
|
197
|
+
daysLeft: number;
|
|
198
|
+
/** The URL. */
|
|
199
|
+
url: string | null;
|
|
200
|
+
} | null;
|
|
201
|
+
/** Uptime targets whose latest check failed; `allFailed` when every check in the lookback failed. */
|
|
202
|
+
uptimeFailures?: ReadonlyArray<{
|
|
203
|
+
/** The target URL. */
|
|
204
|
+
url: string;
|
|
205
|
+
/** Whether every check in the lookback failed. */
|
|
206
|
+
allFailed: boolean;
|
|
207
|
+
/** Checks in the lookback. */
|
|
208
|
+
checks: number;
|
|
209
|
+
}> | null;
|
|
210
|
+
/** Collector exporter points over the window: failed and sent, and the exporter with the most failures. */
|
|
211
|
+
collector?: {
|
|
212
|
+
/** Points that failed to export. */
|
|
213
|
+
failed: number;
|
|
214
|
+
/** Points sent. */
|
|
215
|
+
sent: number;
|
|
216
|
+
/** The exporter with the most failures. */
|
|
217
|
+
exporter: string | null;
|
|
218
|
+
} | null;
|
|
219
|
+
/** Hours since the last successful backup. */
|
|
220
|
+
backupAgeHours?: number | null;
|
|
221
|
+
}
|
|
222
|
+
/** Characters of an offender (route or message) a reason line keeps. */
|
|
223
|
+
export declare const VERDICT_OFFENDER_CHARS = 80;
|
|
224
|
+
/**
|
|
225
|
+
* The dashboard's health verdict: the worst rule that fired, with one reason
|
|
226
|
+
* per fired rule. The default {@link VerdictPolicy}'s rule set.
|
|
227
|
+
*
|
|
228
|
+
* @param input - the numbers the summary computed.
|
|
229
|
+
* @param thresholds - the resolved thresholds; defaults to {@link DEFAULT_VERDICT_THRESHOLDS}.
|
|
230
|
+
* @returns the level and the reasons.
|
|
231
|
+
*
|
|
232
|
+
* @stability stable
|
|
233
|
+
*/
|
|
234
|
+
export declare function computeVerdict(input: VerdictInput, thresholds?: VerdictThresholds): DashboardVerdict;
|
|
235
|
+
//# sourceMappingURL=telemetry-dashboard.verdict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-dashboard.verdict.d.ts","sourceRoot":"","sources":["../../../src/telemetry/dashboard/telemetry-dashboard.verdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The dashboard's health verdict (issue #577, epic #576)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// One pure function over numbers the summary already computed. Four rules,
|
|
7
|
+
// each with a VOLUME GUARD so a quiet deployment does not flap red on one
|
|
8
|
+
// failed request:
|
|
9
|
+
//
|
|
10
|
+
// 5xx rate > 2 % degraded, > 5 % critical (>= 20 requests)
|
|
11
|
+
// p95 latency > 1000 ms degraded, > 3000 ms critical (>= 20 requests)
|
|
12
|
+
// error logs >= 3x the previous window degraded,
|
|
13
|
+
// >= 10x critical (>= 10 errors now;
|
|
14
|
+
// previous 0 counts as 1)
|
|
15
|
+
// no data now - latest trace/log > 5 min → no_data, overriding
|
|
16
|
+
// every other rule
|
|
17
|
+
// unknown API any request WITH a bearer to an unknown route (#650)
|
|
18
|
+
// routes degraded; >= 20 such requests or >= 3 distinct
|
|
19
|
+
// METHOD /path critical. No volume guard: one request from
|
|
20
|
+
// our own client to a route this build lacks is already a
|
|
21
|
+
// defect (a deploy skew). Anonymous unknown-route requests
|
|
22
|
+
// (scanners) never fire; the summary tile still counts them.
|
|
23
|
+
// A 404 from a MATCHED route never counts here.
|
|
24
|
+
//
|
|
25
|
+
// The level is the worst rule that fired; `reasons` has one line per fired
|
|
26
|
+
// rule with its value, the threshold it crossed and the worst offender.
|
|
27
|
+
//
|
|
28
|
+
// INFRASTRUCTURE RULES (#601), each evaluated only when its input is present
|
|
29
|
+
// (the summary leaves an input undefined when the metric tables behind it do
|
|
30
|
+
// not exist, or hold no fresh rows). No volume guard: each input is already a
|
|
31
|
+
// level, not a rate over a sample.
|
|
32
|
+
//
|
|
33
|
+
// disk utilization >= 85 % degraded, >= 95 % critical (worst mountpoint)
|
|
34
|
+
// memory utilization >= 90 % degraded, >= 97 % critical (worst host)
|
|
35
|
+
// DB connections >= 80 % degraded, >= 95 % critical of max_connections
|
|
36
|
+
// oldest pending job >= 10 min degraded, >= 30 min critical (worst job type)
|
|
37
|
+
// worker nodes any stale node degraded; a node-offered job type with
|
|
38
|
+
// pending work and no eligible node critical
|
|
39
|
+
// TLS certificate < 14 days degraded, < 7 days critical (soonest URL)
|
|
40
|
+
// uptime check latest check failed degraded; every check in the
|
|
41
|
+
// lookback failed (>= 2 checks) critical
|
|
42
|
+
// collector exports any failed point degraded; >= 10 % of attempted
|
|
43
|
+
// points failed critical
|
|
44
|
+
// last backup > 26 h degraded, > 50 h critical
|
|
45
|
+
// =============================================================================
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.VERDICT_OFFENDER_CHARS = exports.VERDICT_LEVELS = exports.DASHBOARD_VERDICT_THRESHOLDS = exports.DEFAULT_VERDICT_THRESHOLDS = void 0;
|
|
48
|
+
exports.computeVerdict = computeVerdict;
|
|
49
|
+
const telemetry_1 = require("@marinoscar/platform-contract/telemetry");
|
|
50
|
+
Object.defineProperty(exports, "VERDICT_LEVELS", { enumerable: true, get: function () { return telemetry_1.VERDICT_LEVELS; } });
|
|
51
|
+
/**
|
|
52
|
+
* The shipped verdict thresholds (the values of the rules in this file's
|
|
53
|
+
* header). An app overrides any of them with
|
|
54
|
+
* `TelemetryModule.forRoot({ dashboard: { verdictThresholds } })`.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const resolved = resolveVerdictThresholds({ noDataMinutes: 10 }); // every other value is the default
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @extensionPoint option
|
|
62
|
+
* @stability stable
|
|
63
|
+
*/
|
|
64
|
+
exports.DEFAULT_VERDICT_THRESHOLDS = {
|
|
65
|
+
/** Requests needed before the 5xx and p95 rules may fire. */
|
|
66
|
+
minRequests: 20,
|
|
67
|
+
errorRatePct: { degraded: 2, critical: 5 },
|
|
68
|
+
p95Ms: { degraded: 1000, critical: 3000 },
|
|
69
|
+
errorLogs: {
|
|
70
|
+
/** Error logs needed in the current window before the ratio rule may fire. */
|
|
71
|
+
minCurrent: 10,
|
|
72
|
+
degradedRatio: 3,
|
|
73
|
+
criticalRatio: 10,
|
|
74
|
+
},
|
|
75
|
+
/** Minutes without any trace or log after which the verdict is `no_data`. */
|
|
76
|
+
noDataMinutes: 5,
|
|
77
|
+
/**
|
|
78
|
+
* Unknown API routes (#650), bearer requests only. Any is degraded; either
|
|
79
|
+
* bound below (`>=`) is critical.
|
|
80
|
+
*/
|
|
81
|
+
unknownRoutes: { criticalBearerRequests: 20, criticalDistinctRoutes: 3 },
|
|
82
|
+
// ---- infrastructure rules (#601) ----
|
|
83
|
+
/** Worst mountpoint, `>=`. */
|
|
84
|
+
diskUtilizationPct: { degraded: 85, critical: 95 },
|
|
85
|
+
/** Worst host, `>=`. */
|
|
86
|
+
memoryUtilizationPct: { degraded: 90, critical: 97 },
|
|
87
|
+
/** Backends against `max_connections`, worst server, `>=`. */
|
|
88
|
+
dbConnectionsPct: { degraded: 80, critical: 95 },
|
|
89
|
+
/** Oldest due pending job, worst job type, `>=`. */
|
|
90
|
+
oldestPendingJobMinutes: { degraded: 10, critical: 30 },
|
|
91
|
+
/** Certificate lifetime left, soonest URL, `<`. */
|
|
92
|
+
tlsDaysLeft: { degraded: 14, critical: 7 },
|
|
93
|
+
/** Checks an uptime target must have in the lookback before "every check failed" may be critical. */
|
|
94
|
+
uptimeMinChecksForCritical: 2,
|
|
95
|
+
/** Share of attempted exporter points that failed, `>=`, for critical (any failure is degraded). */
|
|
96
|
+
collectorFailedPct: { critical: 10 },
|
|
97
|
+
/** Age of the last successful backup, `>`. */
|
|
98
|
+
backupAgeHours: { degraded: 26, critical: 50 },
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* The shipped verdict thresholds, under their pre-#703 name.
|
|
102
|
+
*
|
|
103
|
+
* @deprecated Use {@link DEFAULT_VERDICT_THRESHOLDS}, or inject the resolved
|
|
104
|
+
* thresholds (`TELEMETRY_VERDICT_THRESHOLDS`) to honour an app's override.
|
|
105
|
+
*
|
|
106
|
+
* @stability experimental
|
|
107
|
+
*/
|
|
108
|
+
exports.DASHBOARD_VERDICT_THRESHOLDS = exports.DEFAULT_VERDICT_THRESHOLDS;
|
|
109
|
+
const RANK = { healthy: 0, degraded: 1, critical: 2, no_data: 3 };
|
|
110
|
+
/** Characters of an offender (route or message) a reason line keeps. */
|
|
111
|
+
exports.VERDICT_OFFENDER_CHARS = 80;
|
|
112
|
+
/**
|
|
113
|
+
* The dashboard's health verdict: the worst rule that fired, with one reason
|
|
114
|
+
* per fired rule. The default {@link VerdictPolicy}'s rule set.
|
|
115
|
+
*
|
|
116
|
+
* @param input - the numbers the summary computed.
|
|
117
|
+
* @param thresholds - the resolved thresholds; defaults to {@link DEFAULT_VERDICT_THRESHOLDS}.
|
|
118
|
+
* @returns the level and the reasons.
|
|
119
|
+
*
|
|
120
|
+
* @stability stable
|
|
121
|
+
*/
|
|
122
|
+
function computeVerdict(input, thresholds = exports.DEFAULT_VERDICT_THRESHOLDS) {
|
|
123
|
+
const t = thresholds;
|
|
124
|
+
// No data overrides everything: the other rules would be judging silence.
|
|
125
|
+
const staleMs = input.lastDataAt ? input.now.getTime() - input.lastDataAt.getTime() : Number.POSITIVE_INFINITY;
|
|
126
|
+
if (staleMs > t.noDataMinutes * 60_000) {
|
|
127
|
+
return {
|
|
128
|
+
level: 'no_data',
|
|
129
|
+
reasons: [
|
|
130
|
+
input.lastDataAt
|
|
131
|
+
? `No telemetry received for ${Math.floor(staleMs / 60_000)} min`
|
|
132
|
+
: 'No telemetry received recently',
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
let level = 'healthy';
|
|
137
|
+
const reasons = [];
|
|
138
|
+
const fire = (fired, reason) => {
|
|
139
|
+
if (RANK[fired] > RANK[level])
|
|
140
|
+
level = fired;
|
|
141
|
+
reasons.push(reason);
|
|
142
|
+
};
|
|
143
|
+
if (input.requests >= t.minRequests) {
|
|
144
|
+
const ratePct = (input.errors5xx / input.requests) * 100;
|
|
145
|
+
const at = ratePct > t.errorRatePct.critical ? 'critical' : ratePct > t.errorRatePct.degraded ? 'degraded' : null;
|
|
146
|
+
if (at) {
|
|
147
|
+
fire(at, `5xx rate ${formatNumber(ratePct)}% (> ${t.errorRatePct[at]}%)${offender('top', input.topErrorRoute)}`);
|
|
148
|
+
}
|
|
149
|
+
if (input.p95Ms !== null) {
|
|
150
|
+
const p95 = input.p95Ms;
|
|
151
|
+
const at95 = p95 > t.p95Ms.critical ? 'critical' : p95 > t.p95Ms.degraded ? 'degraded' : null;
|
|
152
|
+
if (at95) {
|
|
153
|
+
fire(at95, `p95 latency ${formatNumber(p95)} ms (> ${t.p95Ms[at95]} ms)${offender('slowest', input.slowestRoute)}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (input.errorLogs >= t.errorLogs.minCurrent) {
|
|
158
|
+
const ratio = input.errorLogs / Math.max(input.previousErrorLogs, 1);
|
|
159
|
+
const at = ratio >= t.errorLogs.criticalRatio ? 'critical' : ratio >= t.errorLogs.degradedRatio ? 'degraded' : null;
|
|
160
|
+
if (at) {
|
|
161
|
+
const threshold = at === 'critical' ? t.errorLogs.criticalRatio : t.errorLogs.degradedRatio;
|
|
162
|
+
fire(at, `Error logs ${input.errorLogs} vs ${input.previousErrorLogs} in the previous window ` +
|
|
163
|
+
`(${formatNumber(ratio)}× ≥ ${threshold}×)${offender('top', input.topErrorMessage)}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (input.unknownRoutes && input.unknownRoutes.bearerRequests > 0) {
|
|
167
|
+
const { bearerRequests, bearerRoutes, topRoute } = input.unknownRoutes;
|
|
168
|
+
const critical = bearerRequests >= t.unknownRoutes.criticalBearerRequests ||
|
|
169
|
+
bearerRoutes >= t.unknownRoutes.criticalDistinctRoutes;
|
|
170
|
+
fire(critical ? 'critical' : 'degraded', `${bearerRequests} ${bearerRequests === 1 ? 'request' : 'requests'} to unknown API routes` +
|
|
171
|
+
(bearerRoutes > 1 ? ` across ${bearerRoutes} routes` : '') +
|
|
172
|
+
(topRoute ? ` (${shorten(topRoute)})` : ''));
|
|
173
|
+
}
|
|
174
|
+
infrastructureRules(input, fire, t);
|
|
175
|
+
return { level, reasons };
|
|
176
|
+
}
|
|
177
|
+
/** `>=` thresholds: the level reached, or null. */
|
|
178
|
+
function atLeast(value, levels) {
|
|
179
|
+
return value >= levels.critical ? 'critical' : value >= levels.degraded ? 'degraded' : null;
|
|
180
|
+
}
|
|
181
|
+
/** The infrastructure rules (#601). Each runs only when its input is present. */
|
|
182
|
+
function infrastructureRules(input, fire, t) {
|
|
183
|
+
if (input.disk) {
|
|
184
|
+
const at = atLeast(input.disk.utilizationPct, t.diskUtilizationPct);
|
|
185
|
+
if (at) {
|
|
186
|
+
fire(at, `Disk ${formatNumber(input.disk.utilizationPct)}% full (≥ ${t.diskUtilizationPct[at]}%)` +
|
|
187
|
+
offender('mountpoint', input.disk.mountpoint));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (input.memory) {
|
|
191
|
+
const at = atLeast(input.memory.utilizationPct, t.memoryUtilizationPct);
|
|
192
|
+
if (at) {
|
|
193
|
+
fire(at, `Memory ${formatNumber(input.memory.utilizationPct)}% used (≥ ${t.memoryUtilizationPct[at]}%)` +
|
|
194
|
+
offender('host', input.memory.host));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (input.dbConnections) {
|
|
198
|
+
const at = atLeast(input.dbConnections.utilizationPct, t.dbConnectionsPct);
|
|
199
|
+
if (at) {
|
|
200
|
+
fire(at, `Database connections at ${formatNumber(input.dbConnections.utilizationPct)}% of max ` +
|
|
201
|
+
`(≥ ${t.dbConnectionsPct[at]}%)${offender('server', input.dbConnections.instance)}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (input.oldestPendingJob) {
|
|
205
|
+
const minutes = input.oldestPendingJob.ageSeconds / 60;
|
|
206
|
+
const at = atLeast(minutes, t.oldestPendingJobMinutes);
|
|
207
|
+
if (at) {
|
|
208
|
+
fire(at, `Oldest pending job waiting ${formatNumber(minutes)} min (≥ ${t.oldestPendingJobMinutes[at]} min)` +
|
|
209
|
+
offender('type', input.oldestPendingJob.jobType));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (input.nodes) {
|
|
213
|
+
const stuck = input.nodes.noEligibleNodeTypes;
|
|
214
|
+
if (stuck.length > 0) {
|
|
215
|
+
fire('critical', `${stuck.length} job type(s) have pending work and no eligible worker node` +
|
|
216
|
+
offender('type', [...stuck].sort().join(', ')));
|
|
217
|
+
}
|
|
218
|
+
if (input.nodes.stale > 0) {
|
|
219
|
+
fire('degraded', `${input.nodes.stale} worker node(s) stale (missed heartbeats)`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (input.tls) {
|
|
223
|
+
const days = input.tls.daysLeft;
|
|
224
|
+
const at = days < t.tlsDaysLeft.critical ? 'critical' : days < t.tlsDaysLeft.degraded ? 'degraded' : null;
|
|
225
|
+
if (at) {
|
|
226
|
+
fire(at, (days < 0
|
|
227
|
+
? `TLS certificate expired ${formatNumber(-days)} days ago`
|
|
228
|
+
: `TLS certificate expires in ${formatNumber(days)} days`) +
|
|
229
|
+
` (< ${t.tlsDaysLeft[at]} days)${offender('url', input.tls.url)}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (input.uptimeFailures && input.uptimeFailures.length > 0) {
|
|
233
|
+
const failures = [...input.uptimeFailures].sort((a, b) => a.url.localeCompare(b.url));
|
|
234
|
+
const down = failures.filter((f) => f.allFailed && f.checks >= t.uptimeMinChecksForCritical);
|
|
235
|
+
const worst = down[0] ?? failures[0];
|
|
236
|
+
fire(down.length > 0 ? 'critical' : 'degraded', down.length > 0
|
|
237
|
+
? `Uptime check failing for every check in the lookback (${down.length} URL(s))${offender('url', worst.url)}`
|
|
238
|
+
: `Uptime check failed on its latest run (${failures.length} URL(s))${offender('url', worst.url)}`);
|
|
239
|
+
}
|
|
240
|
+
if (input.collector && input.collector.failed > 0) {
|
|
241
|
+
const attempted = input.collector.failed + input.collector.sent;
|
|
242
|
+
const pct = attempted > 0 ? (input.collector.failed / attempted) * 100 : 100;
|
|
243
|
+
const at = pct >= t.collectorFailedPct.critical ? 'critical' : 'degraded';
|
|
244
|
+
fire(at, `Collector failed to export ${formatNumber(input.collector.failed)} points (${formatNumber(pct)}% of attempted` +
|
|
245
|
+
`${at === 'critical' ? `, ≥ ${t.collectorFailedPct.critical}%` : ''})${offender('exporter', input.collector.exporter)}`);
|
|
246
|
+
}
|
|
247
|
+
if (input.backupAgeHours !== undefined && input.backupAgeHours !== null) {
|
|
248
|
+
const hours = input.backupAgeHours;
|
|
249
|
+
const at = hours > t.backupAgeHours.critical ? 'critical' : hours > t.backupAgeHours.degraded ? 'degraded' : null;
|
|
250
|
+
if (at)
|
|
251
|
+
fire(at, `Last successful backup ${formatNumber(hours)} h ago (> ${t.backupAgeHours[at]} h)`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function offender(label, value) {
|
|
255
|
+
if (!value)
|
|
256
|
+
return '';
|
|
257
|
+
return ` — ${label}: ${shorten(value)}`;
|
|
258
|
+
}
|
|
259
|
+
/** One line, at most `VERDICT_OFFENDER_CHARS`. */
|
|
260
|
+
function shorten(value) {
|
|
261
|
+
const oneLine = value.replace(/\s+/g, ' ').trim();
|
|
262
|
+
return oneLine.length > exports.VERDICT_OFFENDER_CHARS ? `${oneLine.slice(0, exports.VERDICT_OFFENDER_CHARS - 1)}…` : oneLine;
|
|
263
|
+
}
|
|
264
|
+
/** One decimal, without a trailing `.0`. */
|
|
265
|
+
function formatNumber(value) {
|
|
266
|
+
const rounded = Math.round(value * 10) / 10;
|
|
267
|
+
return Number.isInteger(rounded) ? String(rounded) : rounded.toFixed(1);
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=telemetry-dashboard.verdict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-dashboard.verdict.js","sourceRoot":"","sources":["../../../src/telemetry/dashboard/telemetry-dashboard.verdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type DashboardVerdict, type VerdictInput, type VerdictThresholds } from './telemetry-dashboard.verdict';
|
|
2
|
+
/**
|
|
3
|
+
* Computes the dashboard summary's health verdict.
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface VerdictPolicy {
|
|
8
|
+
/**
|
|
9
|
+
* The verdict for one summary.
|
|
10
|
+
*
|
|
11
|
+
* @param input - the numbers the summary computed.
|
|
12
|
+
* @param thresholds - the resolved thresholds (`TELEMETRY_VERDICT_THRESHOLDS`).
|
|
13
|
+
* @returns the level and one reason per fired rule.
|
|
14
|
+
*/
|
|
15
|
+
compute(input: VerdictInput, thresholds: VerdictThresholds): DashboardVerdict;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Injection token of the {@link VerdictPolicy} the dashboard uses. Bound by
|
|
19
|
+
* `TelemetryModule.forRoot()` to {@link DefaultVerdictPolicy}, or to the
|
|
20
|
+
* app's `dashboard.verdictPolicy`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const moduleRef = await Test.createTestingModule({ imports: [AppModule] })
|
|
25
|
+
* .overrideProvider(VERDICT_POLICY)
|
|
26
|
+
* .useValue({ compute: () => ({ level: 'critical', reasons: ['test'] }) })
|
|
27
|
+
* .compile();
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @extensionPoint token
|
|
31
|
+
* @stability experimental
|
|
32
|
+
*/
|
|
33
|
+
export declare const VERDICT_POLICY: unique symbol;
|
|
34
|
+
/**
|
|
35
|
+
* The platform's verdict rules (`computeVerdict`). Always provided by the
|
|
36
|
+
* telemetry module, so an app policy can inject it and delegate.
|
|
37
|
+
*
|
|
38
|
+
* @stability experimental
|
|
39
|
+
*/
|
|
40
|
+
export declare class DefaultVerdictPolicy implements VerdictPolicy {
|
|
41
|
+
/**
|
|
42
|
+
* The platform rules: no data, 5xx rate, p95, error logs, unknown routes and
|
|
43
|
+
* the infrastructure rules.
|
|
44
|
+
*
|
|
45
|
+
* @param input - the numbers the summary computed.
|
|
46
|
+
* @param thresholds - the resolved thresholds.
|
|
47
|
+
* @returns the level and one reason per fired rule.
|
|
48
|
+
*/
|
|
49
|
+
compute(input: VerdictInput, thresholds: VerdictThresholds): DashboardVerdict;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=verdict-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdict-policy.d.ts","sourceRoot":"","sources":["../../../src/telemetry/dashboard/verdict-policy.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEjI;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC/E;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAAoE,CAAC;AAEzG;;;;;GAKG;AACH,qBACa,oBAAqB,YAAW,aAAa;IACxD;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,GAAG,gBAAgB;CAG9E"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// VERDICT_POLICY: the dashboard's health verdict as a seam (issue #703,
|
|
4
|
+
// Extension Contract rung 3)
|
|
5
|
+
// =============================================================================
|
|
6
|
+
//
|
|
7
|
+
// `TelemetryDashboardService` asks the policy bound to `VERDICT_POLICY` for
|
|
8
|
+
// the summary's verdict, with the resolved thresholds. The default is
|
|
9
|
+
// `DefaultVerdictPolicy`, which is exactly `computeVerdict`. An app that adds
|
|
10
|
+
// a metric group with a rule of its own binds its own policy and DELEGATES to
|
|
11
|
+
// the default for every platform rule:
|
|
12
|
+
//
|
|
13
|
+
// @Injectable()
|
|
14
|
+
// export class AppVerdictPolicy implements VerdictPolicy {
|
|
15
|
+
// constructor(private readonly platform: DefaultVerdictPolicy) {}
|
|
16
|
+
// compute(input: VerdictInput, thresholds: VerdictThresholds): DashboardVerdict {
|
|
17
|
+
// const verdict = this.platform.compute(input, thresholds);
|
|
18
|
+
// // ...add the app's own rule, never weaken a platform one
|
|
19
|
+
// return verdict;
|
|
20
|
+
// }
|
|
21
|
+
// }
|
|
22
|
+
//
|
|
23
|
+
// TelemetryModule.forRoot({ ..., dashboard: { verdictPolicy: { useClass: AppVerdictPolicy } } })
|
|
24
|
+
//
|
|
25
|
+
// and a test swaps it with `.overrideProvider(VERDICT_POLICY).useValue(...)`.
|
|
26
|
+
// =============================================================================
|
|
27
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
28
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
29
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
30
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
31
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.DefaultVerdictPolicy = exports.VERDICT_POLICY = void 0;
|
|
35
|
+
const common_1 = require("@nestjs/common");
|
|
36
|
+
const telemetry_dashboard_verdict_1 = require("./telemetry-dashboard.verdict");
|
|
37
|
+
/**
|
|
38
|
+
* Injection token of the {@link VerdictPolicy} the dashboard uses. Bound by
|
|
39
|
+
* `TelemetryModule.forRoot()` to {@link DefaultVerdictPolicy}, or to the
|
|
40
|
+
* app's `dashboard.verdictPolicy`.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const moduleRef = await Test.createTestingModule({ imports: [AppModule] })
|
|
45
|
+
* .overrideProvider(VERDICT_POLICY)
|
|
46
|
+
* .useValue({ compute: () => ({ level: 'critical', reasons: ['test'] }) })
|
|
47
|
+
* .compile();
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @extensionPoint token
|
|
51
|
+
* @stability experimental
|
|
52
|
+
*/
|
|
53
|
+
exports.VERDICT_POLICY = Symbol.for('@marinoscar/platform/telemetry/VERDICT_POLICY');
|
|
54
|
+
/**
|
|
55
|
+
* The platform's verdict rules (`computeVerdict`). Always provided by the
|
|
56
|
+
* telemetry module, so an app policy can inject it and delegate.
|
|
57
|
+
*
|
|
58
|
+
* @stability experimental
|
|
59
|
+
*/
|
|
60
|
+
let DefaultVerdictPolicy = class DefaultVerdictPolicy {
|
|
61
|
+
/**
|
|
62
|
+
* The platform rules: no data, 5xx rate, p95, error logs, unknown routes and
|
|
63
|
+
* the infrastructure rules.
|
|
64
|
+
*
|
|
65
|
+
* @param input - the numbers the summary computed.
|
|
66
|
+
* @param thresholds - the resolved thresholds.
|
|
67
|
+
* @returns the level and one reason per fired rule.
|
|
68
|
+
*/
|
|
69
|
+
compute(input, thresholds) {
|
|
70
|
+
return (0, telemetry_dashboard_verdict_1.computeVerdict)(input, thresholds);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
exports.DefaultVerdictPolicy = DefaultVerdictPolicy;
|
|
74
|
+
exports.DefaultVerdictPolicy = DefaultVerdictPolicy = __decorate([
|
|
75
|
+
(0, common_1.Injectable)()
|
|
76
|
+
], DefaultVerdictPolicy);
|
|
77
|
+
//# sourceMappingURL=verdict-policy.js.map
|