import { Pool, PoolStatus } from "./pool"; import * as grpc from "grpc"; import { Sentinel } from "@nimbus/operational"; export class GrpcMonitor { constructor(private readonly pool: Pool) {} reportHealth(sentinel: Sentinel): void { const clientName = this.pool.get().constructor.name; sentinel.addCheck(`${clientName} pool`, (cr) => { switch (this.pool.status) { case PoolStatus.AllConnected: cr.healthy('all clients connected'); break; case PoolStatus.SomeConnected: cr.degraded('only some clients connected', 'check upstream pods _health'); break; case PoolStatus.AllDisconnected: cr.unhealthy('all clients disconnected', 'check upstream pods _health or address config', 'unable to data'); break; } cr.updateHealthCounter(clientName); }); } }