feat(platform): expose structured capacity metrics
This commit is contained in:
@@ -25,8 +25,16 @@ type Report struct {
|
||||
}
|
||||
|
||||
type Totals struct {
|
||||
ActiveConnections int64 `json:"active_connections"`
|
||||
KafkaLag float64 `json:"kafka_lag"`
|
||||
ActiveConnections int64 `json:"active_connections"`
|
||||
KafkaLag float64 `json:"kafka_lag"`
|
||||
BridgeConsumerPending float64 `json:"bridge_consumer_pending"`
|
||||
BridgeAckPending float64 `json:"bridge_ack_pending"`
|
||||
BridgeBatchPendingMessages float64 `json:"bridge_batch_pending_messages"`
|
||||
FastWriterConsumerPending float64 `json:"fast_writer_consumer_pending"`
|
||||
FastWriterAckPending float64 `json:"fast_writer_ack_pending"`
|
||||
FastWriterBatchPending float64 `json:"fast_writer_batch_pending_messages"`
|
||||
HistoryBatchPending float64 `json:"history_batch_pending_messages"`
|
||||
HistoryRowsPending float64 `json:"history_rows_pending"`
|
||||
}
|
||||
|
||||
type ServiceCheck struct {
|
||||
@@ -52,6 +60,14 @@ func Evaluate(metricsByService map[string]string) Report {
|
||||
report.Totals.KafkaLag += metrics["vehicle_history_kafka_lag"]
|
||||
report.Totals.KafkaLag += metrics["vehicle_stat_kafka_lag"]
|
||||
report.Totals.KafkaLag += metrics["vehicle_realtime_kafka_lag"]
|
||||
report.Totals.BridgeConsumerPending += metrics["vehicle_bridge_nats_consumer_pending"]
|
||||
report.Totals.BridgeAckPending += metrics["vehicle_bridge_nats_consumer_ack_pending"]
|
||||
report.Totals.BridgeBatchPendingMessages += metrics["vehicle_bridge_batch_pending_messages"]
|
||||
report.Totals.FastWriterConsumerPending += metrics["vehicle_fast_writer_nats_consumer_pending"]
|
||||
report.Totals.FastWriterAckPending += metrics["vehicle_fast_writer_nats_consumer_ack_pending"]
|
||||
report.Totals.FastWriterBatchPending += metrics["vehicle_fast_writer_batch_pending_messages"]
|
||||
report.Totals.HistoryBatchPending += metrics["vehicle_history_batch_pending_messages"]
|
||||
report.Totals.HistoryRowsPending += metrics["vehicle_history_batch_pending_rows"]
|
||||
report.Findings = append(report.Findings, findingsForMetrics(metrics)...)
|
||||
}
|
||||
if len(report.Findings) > 0 {
|
||||
|
||||
@@ -41,6 +41,7 @@ vehicle_bridge_batch_pending_messages 1001`,
|
||||
vehicle_fast_writer_nats_consumer_pending{consumer="vehicle-fast-writer",stream="VEHICLE_INGEST"} 12001
|
||||
vehicle_fast_writer_batch_pending_messages 9`,
|
||||
"history": `vehicle_history_batch_pending_messages 6
|
||||
vehicle_history_batch_pending_rows 7
|
||||
vehicle_history_kafka_lag{topic="vehicle.raw.go.jt808.v1",partition="0"} 42`,
|
||||
})
|
||||
|
||||
@@ -63,4 +64,22 @@ vehicle_history_kafka_lag{topic="vehicle.raw.go.jt808.v1",partition="0"} 42`,
|
||||
t.Fatalf("finding missing %q in:\n%s", want, joined)
|
||||
}
|
||||
}
|
||||
if report.Totals.BridgeAckPending != 101 {
|
||||
t.Fatalf("bridge ack pending = %v, want 101", report.Totals.BridgeAckPending)
|
||||
}
|
||||
if report.Totals.BridgeConsumerPending != 12001 {
|
||||
t.Fatalf("bridge consumer pending = %v, want 12001", report.Totals.BridgeConsumerPending)
|
||||
}
|
||||
if report.Totals.FastWriterAckPending != 11 {
|
||||
t.Fatalf("fast writer ack pending = %v, want 11", report.Totals.FastWriterAckPending)
|
||||
}
|
||||
if report.Totals.FastWriterBatchPending != 9 {
|
||||
t.Fatalf("fast writer batch pending = %v, want 9", report.Totals.FastWriterBatchPending)
|
||||
}
|
||||
if report.Totals.HistoryBatchPending != 6 {
|
||||
t.Fatalf("history batch pending = %v, want 6", report.Totals.HistoryBatchPending)
|
||||
}
|
||||
if report.Totals.HistoryRowsPending != 7 {
|
||||
t.Fatalf("history rows pending = %v, want 7", report.Totals.HistoryRowsPending)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user