Files
lingniu-vehicle-ingest/docs/ops/go-service-observability.md

2.3 KiB

Go Service Observability

ECS

Host: 115.29.187.205

The Go services expose local-only health and metrics endpoints. They are intended for ECS-local checks, Prometheus scraping through an agent, or SSH troubleshooting. They are not public business APIs.

Endpoints

Service systemd unit Address Health Readiness Metrics
Gateway lingniu-go-gateway.service 127.0.0.1:20211 /healthz /readyz /metrics
History writer lingniu-go-history-writer.service 127.0.0.1:20212 /healthz /readyz /metrics
Stat writer lingniu-go-stat-writer.service 127.0.0.1:20213 /healthz /readyz /metrics
NATS Kafka bridge lingniu-go-nats-kafka-bridge.service 127.0.0.1:20214 /healthz /readyz /metrics
Realtime API lingniu-go-realtime-api.service 0.0.0.0:20200 /healthz /readyz /metrics

Quick Checks

curl -fsS http://127.0.0.1:20211/readyz
curl -fsS http://127.0.0.1:20211/metrics
curl -fsS http://127.0.0.1:20212/readyz
curl -fsS http://127.0.0.1:20213/readyz
curl -fsS http://127.0.0.1:20214/readyz
curl -fsS http://127.0.0.1:20200/readyz

Core Counters

Metric Meaning
vehicle_gateway_frames_total Protocol frames received and parsed by the gateway. Labels: protocol, status.
vehicle_gateway_publish_total Gateway publish result for raw and unified events. Labels: protocol, kind, status.
vehicle_bridge_messages_total NATS messages fetched by the bridge. Labels: subject, status.
vehicle_bridge_kafka_writes_total Bridge writes to Kafka. Labels: topic, status.
vehicle_bridge_nats_acks_total NATS ack results after Kafka write. Labels: subject, status.
vehicle_history_writes_total TDengine history writes. Labels: topic, status.
vehicle_stat_writes_total MySQL metric writes. Labels: topic, status.
vehicle_realtime_updates_total Redis/MySQL realtime projector updates. Labels: topic, status.

First Principle

These metrics are operational telemetry. They should stay out of MySQL and TDengine business tables unless a product query explicitly requires persisted aggregates. Persisted aggregate metrics should be derived from Kafka replay rather than by widening realtime or raw tables.