feat(api): add live status tracking for speakers and BGP sessions
CI / changes (push) Successful in 9s
CI / commitlint (push) Has been skipped
CI / openapi (push) Successful in 24s
CI / web (push) Successful in 29s
CI / go (push) Successful in 43s
CI / bird2 (push) Successful in 15s
CI / release (push) Successful in 3m29s
CI / changes (push) Successful in 9s
CI / commitlint (push) Has been skipped
CI / openapi (push) Successful in 24s
CI / web (push) Successful in 29s
CI / go (push) Successful in 43s
CI / bird2 (push) Successful in 15s
CI / release (push) Successful in 3m29s
- Introduced new schemas for `SpeakerLiveStatus`, `BgpSessionLive`, and `LiveSpeakerPoll` in OpenAPI documentation to support live status queries. - Enhanced the `/v1/speakers` endpoint to include a `live` query parameter, allowing retrieval of real-time speaker and BGP status. - Updated the HTTP API to collect and return live status data for speakers, improving monitoring capabilities. - Modified frontend components to display live status information, enhancing user visibility into speaker health and BGP session states. - Added a new endpoint `/v1/bird/status` for retrieving the local BIRD status, further enriching the network monitoring features.
This commit is contained in:
@@ -845,6 +845,89 @@ components:
|
||||
description: >
|
||||
Расширяемый объект. Ключи agent_domain, agent_secret (только при создании),
|
||||
agent_port, node_ipv4, bird_bgp_source_ipv4, bird_bgp_source_ipv6.
|
||||
live:
|
||||
$ref: "#/components/schemas/SpeakerLiveStatus"
|
||||
description: >
|
||||
При GET /v1/speakers?live=1 — runtime-статус agent и BGP-опроса на ноде.
|
||||
additionalProperties: true
|
||||
|
||||
SpeakerLiveStatus:
|
||||
type: object
|
||||
description: Live runtime snapshot for one speaker (GET /v1/speakers?live=1).
|
||||
properties:
|
||||
label:
|
||||
type: string
|
||||
description: Человекочитаемая метка ноды (agent domain или CP master).
|
||||
agent_ok:
|
||||
type: boolean
|
||||
description: true если agent /v1/agent/health успешен (master — local birdc poll).
|
||||
agent_error:
|
||||
type: string
|
||||
agent_last_sync_at:
|
||||
type: string
|
||||
format: date-time
|
||||
agent_last_applied_revision_id:
|
||||
type: string
|
||||
bgp_poll_ok:
|
||||
type: boolean
|
||||
description: true если birdc (CP) или GET /v1/agent/bird/protocols (replica) успешен.
|
||||
bgp_poll_error:
|
||||
type: string
|
||||
bgp_sessions_total:
|
||||
type: integer
|
||||
bgp_established:
|
||||
type: integer
|
||||
sessions:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/BgpSessionLive"
|
||||
additionalProperties: true
|
||||
|
||||
BgpSessionLive:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
neighbor:
|
||||
type: string
|
||||
state:
|
||||
type: string
|
||||
additionalProperties: true
|
||||
|
||||
LiveSpeakerPoll:
|
||||
type: object
|
||||
description: Метаданные опроса одной ноды в GET /v1/peers?live=1.
|
||||
properties:
|
||||
speaker_id:
|
||||
type: string
|
||||
label:
|
||||
type: string
|
||||
ok:
|
||||
type: boolean
|
||||
session_count:
|
||||
type: integer
|
||||
poll_error:
|
||||
type: string
|
||||
additionalProperties: true
|
||||
|
||||
BirdLocalStatus:
|
||||
type: object
|
||||
description: Статус локального BIRD на хосте API (GET /v1/bird/status).
|
||||
properties:
|
||||
birdc_configured:
|
||||
type: boolean
|
||||
message:
|
||||
type: string
|
||||
error:
|
||||
type: string
|
||||
protocols_excerpt:
|
||||
type: string
|
||||
bgp_sessions_total:
|
||||
type: integer
|
||||
bgp_established:
|
||||
type: integer
|
||||
healthy:
|
||||
type: ["boolean", "null"]
|
||||
additionalProperties: true
|
||||
|
||||
BundleSigningPublicKey:
|
||||
@@ -2216,6 +2299,12 @@ paths:
|
||||
type: ["string", "null"]
|
||||
has_more:
|
||||
type: boolean
|
||||
live_speaker_poll:
|
||||
type: array
|
||||
description: >
|
||||
При live=1 — результат опроса каждой ноды (CP birdc + agent protocols).
|
||||
items:
|
||||
$ref: "#/components/schemas/LiveSpeakerPoll"
|
||||
default:
|
||||
$ref: "#/components/responses/DefaultProblem"
|
||||
post:
|
||||
@@ -2336,6 +2425,14 @@ paths:
|
||||
- $ref: "#/components/parameters/TenantId"
|
||||
- $ref: "#/components/parameters/Cursor"
|
||||
- $ref: "#/components/parameters/Limit"
|
||||
- name: live
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
enum: ["1"]
|
||||
description: >
|
||||
Live-опрос agent /v1/agent/health и BGP protocols на репликах; CP — local birdc.
|
||||
Обогащает каждый item полем `live`.
|
||||
responses:
|
||||
"200":
|
||||
description: Успешно.
|
||||
@@ -2670,6 +2767,26 @@ paths:
|
||||
default:
|
||||
$ref: "#/components/responses/DefaultProblem"
|
||||
|
||||
/v1/bird/status:
|
||||
get:
|
||||
tags: [Deploy]
|
||||
summary: Статус локального BIRD на хосте API
|
||||
description: >
|
||||
Опрос birdc через EVOBGP_BIRDC_SOCKET на процессе API (обычно CP master).
|
||||
На репликах без birdc на CP — birdc_configured=false.
|
||||
operationId: getBirdStatus
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/TenantId"
|
||||
responses:
|
||||
"200":
|
||||
description: Успешно.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/BirdLocalStatus"
|
||||
default:
|
||||
$ref: "#/components/responses/DefaultProblem"
|
||||
|
||||
/v1/bird/reload:
|
||||
post:
|
||||
tags: [Deploy]
|
||||
|
||||
Reference in New Issue
Block a user