fix(services): считать failover по DNS-пулу а не по статусу ноды
quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 7s
quality / changes (push) Successful in 9s
quality / api (push) Skipped
quality / docker-check (push) Skipped
CD / quality (push) Canceled after 34s
CD / publish (push) Canceled after 0s
quality / web (push) Canceled after 22s

Красный инцидент только если адреса нет в active_addresses, даже при unhealthy.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-08-20 14:53:44 +07:00
co-authored by Cursor
parent 87b0f1a894
commit 994e79e118
5 changed files with 88 additions and 35 deletions
@@ -53,8 +53,8 @@ export function FailoverTimeline({ events }: { events: FailoverEvent[] }) {
return (
<EmptyState
icon={ShieldCheckIcon}
title="Пул стабилен"
description="События появятся, когда нода станет unhealthy или down и будет выведена из пула"
title="Пул в DNS на месте"
description="Красным только адреса, которых нет в активном пуле A-записей"
stackedIcon={false}
centered={false}
/>
@@ -93,8 +93,8 @@ export function FailoverTimeline({ events }: { events: FailoverEvent[] }) {
<TimelineContent className="flex flex-col gap-2">
<p className="text-foreground text-sm">
{isChecking
? 'Health-check ещё не завершён — нода не в активном пуле'
: 'Нода выведена из активного пула'}
? 'Снята с DNS, идёт восстановление'
: 'Снята с DNS — в A-записях этого адреса нет'}
</p>
{event.lastFailureReason ? (
<code
@@ -40,10 +40,12 @@ function failoverCountLabel(count: number): string {
*/
export function ServiceFailoverPanel({
nodes,
activeAddresses,
}: {
nodes: readonly FailoverNodeInput[]
activeAddresses: readonly string[]
}) {
const events = toFailoverEvents(nodes)
const events = toFailoverEvents(nodes, activeAddresses)
return (
<Frame stacked spacing="sm" className="min-w-0 w-full">
@@ -62,7 +64,7 @@ export function ServiceFailoverPanel({
)}
</FrameTitle>
<FrameDescription>
Нездоровые ноды выведены из пула · причина последней ошибки
Только адреса, которых нет в DNS-пуле · не статус строки ноды
</FrameDescription>
</FrameHeader>
@@ -71,7 +73,7 @@ export function ServiceFailoverPanel({
<UnplugIcon aria-hidden="true" />
<AlertTitle>{failoverCountLabel(events.length)}</AlertTitle>
<AlertDescription>
Трафик на эти адреса не идёт, пока health не восстановится
Эти IP сняты с A-записей
</AlertDescription>
</Alert>
) : null}