@forgecart/flight-observability 0.202608212205.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2193 @@
1
+ {
2
+ "uid": "fc-flight-deck",
3
+ "title": "Flight Deck",
4
+ "tags": [
5
+ "flight-deck",
6
+ "fc"
7
+ ],
8
+ "timezone": "browser",
9
+ "schemaVersion": 39,
10
+ "version": 3,
11
+ "refresh": "10s",
12
+ "time": {
13
+ "from": "now-30m",
14
+ "to": "now"
15
+ },
16
+ "editable": false,
17
+ "graphTooltip": 1,
18
+ "templating": {
19
+ "list": [
20
+ {
21
+ "name": "DS",
22
+ "label": "datasource",
23
+ "type": "datasource",
24
+ "query": "prometheus",
25
+ "current": {
26
+ "text": "VictoriaMetrics",
27
+ "value": "fc-vm-live"
28
+ },
29
+ "refresh": 1
30
+ },
31
+ {
32
+ "name": "env",
33
+ "label": "env",
34
+ "type": "query",
35
+ "datasource": {
36
+ "type": "prometheus",
37
+ "uid": "${DS}"
38
+ },
39
+ "query": "label_values(up, env)",
40
+ "refresh": 2,
41
+ "includeAll": true,
42
+ "current": {
43
+ "text": "All",
44
+ "value": "$__all"
45
+ }
46
+ },
47
+ {
48
+ "name": "run_type",
49
+ "label": "run_type",
50
+ "type": "custom",
51
+ "query": "dual,picked,single,ladder,survey",
52
+ "current": {
53
+ "text": "dual",
54
+ "value": "dual"
55
+ },
56
+ "options": [
57
+ {
58
+ "text": "dual",
59
+ "value": "dual",
60
+ "selected": true
61
+ },
62
+ {
63
+ "text": "picked",
64
+ "value": "picked",
65
+ "selected": false
66
+ },
67
+ {
68
+ "text": "single",
69
+ "value": "single",
70
+ "selected": false
71
+ },
72
+ {
73
+ "text": "ladder",
74
+ "value": "ladder",
75
+ "selected": false
76
+ },
77
+ {
78
+ "text": "survey",
79
+ "value": "survey",
80
+ "selected": false
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "name": "replay_run",
86
+ "label": "replay run",
87
+ "type": "query",
88
+ "hide": 0,
89
+ "datasource": {
90
+ "type": "prometheus",
91
+ "uid": "$DS"
92
+ },
93
+ "query": {
94
+ "query": "label_values(replay_run)",
95
+ "refId": "FlightReplayRuns"
96
+ },
97
+ "refresh": 2,
98
+ "includeAll": true,
99
+ "allValue": ".*",
100
+ "multi": false,
101
+ "current": {
102
+ "text": "All",
103
+ "value": "$__all"
104
+ },
105
+ "options": [],
106
+ "sort": 1
107
+ }
108
+ ]
109
+ },
110
+ "annotations": {
111
+ "list": [
112
+ {
113
+ "name": "runs",
114
+ "enable": true,
115
+ "hide": false,
116
+ "iconColor": "rgba(64, 130, 240, 0.9)",
117
+ "datasource": {
118
+ "type": "grafana",
119
+ "uid": "-- Grafana --"
120
+ },
121
+ "type": "tags",
122
+ "tags": [
123
+ "fc-run"
124
+ ],
125
+ "limit": 200
126
+ },
127
+ {
128
+ "name": "tests ($run_type)",
129
+ "enable": true,
130
+ "hide": false,
131
+ "iconColor": "rgba(240, 80, 80, 0.9)",
132
+ "datasource": {
133
+ "type": "grafana",
134
+ "uid": "-- Grafana --"
135
+ },
136
+ "type": "tags",
137
+ "tags": [
138
+ "fc-test",
139
+ "run_type:$run_type"
140
+ ],
141
+ "limit": 500
142
+ }
143
+ ]
144
+ },
145
+ "panels": [
146
+ {
147
+ "id": 1,
148
+ "type": "row",
149
+ "title": "0 \u00b7 Triage strip",
150
+ "gridPos": {
151
+ "h": 1,
152
+ "w": 24,
153
+ "x": 0,
154
+ "y": 0
155
+ },
156
+ "collapsed": false,
157
+ "panels": []
158
+ },
159
+ {
160
+ "id": 2,
161
+ "type": "stat",
162
+ "title": "Steal now",
163
+ "gridPos": {
164
+ "h": 4,
165
+ "w": 4,
166
+ "x": 0,
167
+ "y": 1
168
+ },
169
+ "datasource": {
170
+ "type": "prometheus",
171
+ "uid": "${DS}"
172
+ },
173
+ "fieldConfig": {
174
+ "defaults": {
175
+ "unit": "percentunit",
176
+ "decimals": 1,
177
+ "thresholds": {
178
+ "mode": "absolute",
179
+ "steps": [
180
+ {
181
+ "color": "green",
182
+ "value": null
183
+ },
184
+ {
185
+ "color": "yellow",
186
+ "value": 0.05
187
+ },
188
+ {
189
+ "color": "red",
190
+ "value": 0.15
191
+ }
192
+ ]
193
+ }
194
+ },
195
+ "overrides": []
196
+ },
197
+ "options": {
198
+ "reduceOptions": {
199
+ "calcs": [
200
+ "lastNotNull"
201
+ ]
202
+ },
203
+ "colorMode": "background",
204
+ "graphMode": "area"
205
+ },
206
+ "targets": [
207
+ {
208
+ "datasource": {
209
+ "type": "prometheus",
210
+ "uid": "${DS}"
211
+ },
212
+ "expr": "fc:host:cpu_steal_ratio",
213
+ "legendFormat": "",
214
+ "refId": "A"
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "id": 3,
220
+ "type": "stat",
221
+ "title": "Host PSI cpu some",
222
+ "gridPos": {
223
+ "h": 4,
224
+ "w": 4,
225
+ "x": 4,
226
+ "y": 1
227
+ },
228
+ "datasource": {
229
+ "type": "prometheus",
230
+ "uid": "${DS}"
231
+ },
232
+ "fieldConfig": {
233
+ "defaults": {
234
+ "unit": "percentunit",
235
+ "decimals": 1,
236
+ "thresholds": {
237
+ "mode": "absolute",
238
+ "steps": [
239
+ {
240
+ "color": "green",
241
+ "value": null
242
+ },
243
+ {
244
+ "color": "yellow",
245
+ "value": 0.2
246
+ },
247
+ {
248
+ "color": "red",
249
+ "value": 0.6
250
+ }
251
+ ]
252
+ }
253
+ },
254
+ "overrides": []
255
+ },
256
+ "options": {
257
+ "reduceOptions": {
258
+ "calcs": [
259
+ "lastNotNull"
260
+ ]
261
+ },
262
+ "colorMode": "background",
263
+ "graphMode": "area"
264
+ },
265
+ "targets": [
266
+ {
267
+ "datasource": {
268
+ "type": "prometheus",
269
+ "uid": "${DS}"
270
+ },
271
+ "expr": "fc:host:psi_cpu_some_ratio",
272
+ "legendFormat": "",
273
+ "refId": "A"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "id": 4,
279
+ "type": "stat",
280
+ "title": "Throttle tripwire (G5)",
281
+ "gridPos": {
282
+ "h": 4,
283
+ "w": 4,
284
+ "x": 8,
285
+ "y": 1
286
+ },
287
+ "datasource": {
288
+ "type": "prometheus",
289
+ "uid": "${DS}"
290
+ },
291
+ "fieldConfig": {
292
+ "defaults": {
293
+ "unit": "short",
294
+ "thresholds": {
295
+ "mode": "absolute",
296
+ "steps": [
297
+ {
298
+ "color": "green",
299
+ "value": null
300
+ },
301
+ {
302
+ "color": "red",
303
+ "value": 0.001
304
+ }
305
+ ]
306
+ }
307
+ },
308
+ "overrides": []
309
+ },
310
+ "options": {
311
+ "reduceOptions": {
312
+ "calcs": [
313
+ "lastNotNull"
314
+ ]
315
+ },
316
+ "colorMode": "background",
317
+ "graphMode": "area"
318
+ },
319
+ "targets": [
320
+ {
321
+ "datasource": {
322
+ "type": "prometheus",
323
+ "uid": "${DS}"
324
+ },
325
+ "expr": "sum(fc:actor:throttled_periods_delta) or on() vector(0)",
326
+ "legendFormat": "",
327
+ "refId": "A"
328
+ }
329
+ ]
330
+ },
331
+ {
332
+ "id": 5,
333
+ "type": "stat",
334
+ "title": "Idle-in-tx age max",
335
+ "gridPos": {
336
+ "h": 4,
337
+ "w": 4,
338
+ "x": 12,
339
+ "y": 1
340
+ },
341
+ "datasource": {
342
+ "type": "prometheus",
343
+ "uid": "${DS}"
344
+ },
345
+ "fieldConfig": {
346
+ "defaults": {
347
+ "unit": "s",
348
+ "thresholds": {
349
+ "mode": "absolute",
350
+ "steps": [
351
+ {
352
+ "color": "green",
353
+ "value": null
354
+ },
355
+ {
356
+ "color": "yellow",
357
+ "value": 60
358
+ },
359
+ {
360
+ "color": "red",
361
+ "value": 120
362
+ }
363
+ ]
364
+ }
365
+ },
366
+ "overrides": []
367
+ },
368
+ "options": {
369
+ "reduceOptions": {
370
+ "calcs": [
371
+ "lastNotNull"
372
+ ]
373
+ },
374
+ "colorMode": "background",
375
+ "graphMode": "area"
376
+ },
377
+ "targets": [
378
+ {
379
+ "datasource": {
380
+ "type": "prometheus",
381
+ "uid": "${DS}"
382
+ },
383
+ "expr": "fc:pg:idle_in_tx_age_max_seconds",
384
+ "legendFormat": "",
385
+ "refId": "A"
386
+ }
387
+ ]
388
+ },
389
+ {
390
+ "id": 6,
391
+ "type": "stat",
392
+ "title": "Canary /health up",
393
+ "gridPos": {
394
+ "h": 4,
395
+ "w": 4,
396
+ "x": 16,
397
+ "y": 1
398
+ },
399
+ "datasource": {
400
+ "type": "prometheus",
401
+ "uid": "${DS}"
402
+ },
403
+ "fieldConfig": {
404
+ "defaults": {
405
+ "unit": "short",
406
+ "thresholds": {
407
+ "mode": "absolute",
408
+ "steps": [
409
+ {
410
+ "color": "red",
411
+ "value": null
412
+ },
413
+ {
414
+ "color": "green",
415
+ "value": 1
416
+ }
417
+ ]
418
+ }
419
+ },
420
+ "overrides": []
421
+ },
422
+ "options": {
423
+ "reduceOptions": {
424
+ "calcs": [
425
+ "lastNotNull"
426
+ ]
427
+ },
428
+ "colorMode": "background",
429
+ "graphMode": "area"
430
+ },
431
+ "targets": [
432
+ {
433
+ "datasource": {
434
+ "type": "prometheus",
435
+ "uid": "${DS}"
436
+ },
437
+ "expr": "fc:canary:health_success",
438
+ "legendFormat": "",
439
+ "refId": "A"
440
+ }
441
+ ]
442
+ },
443
+ {
444
+ "id": 7,
445
+ "type": "stat",
446
+ "title": "Active series (60k local)",
447
+ "gridPos": {
448
+ "h": 4,
449
+ "w": 4,
450
+ "x": 20,
451
+ "y": 1
452
+ },
453
+ "datasource": {
454
+ "type": "prometheus",
455
+ "uid": "${DS}"
456
+ },
457
+ "fieldConfig": {
458
+ "defaults": {
459
+ "unit": "short",
460
+ "thresholds": {
461
+ "mode": "absolute",
462
+ "steps": [
463
+ {
464
+ "color": "green",
465
+ "value": null
466
+ },
467
+ {
468
+ "color": "yellow",
469
+ "value": 45000
470
+ },
471
+ {
472
+ "color": "red",
473
+ "value": 60000
474
+ }
475
+ ]
476
+ }
477
+ },
478
+ "overrides": []
479
+ },
480
+ "options": {
481
+ "reduceOptions": {
482
+ "calcs": [
483
+ "lastNotNull"
484
+ ]
485
+ },
486
+ "colorMode": "background",
487
+ "graphMode": "area"
488
+ },
489
+ "targets": [
490
+ {
491
+ "datasource": {
492
+ "type": "prometheus",
493
+ "uid": "${DS}"
494
+ },
495
+ "expr": "fc:self:active_series",
496
+ "legendFormat": "",
497
+ "refId": "A"
498
+ }
499
+ ]
500
+ },
501
+ {
502
+ "id": 8,
503
+ "type": "row",
504
+ "title": "1 \u00b7 Weather (host)",
505
+ "gridPos": {
506
+ "h": 1,
507
+ "w": 24,
508
+ "x": 0,
509
+ "y": 5
510
+ },
511
+ "collapsed": false,
512
+ "panels": []
513
+ },
514
+ {
515
+ "id": 9,
516
+ "type": "timeseries",
517
+ "title": "CPU busy / steal / load",
518
+ "gridPos": {
519
+ "h": 7,
520
+ "w": 6,
521
+ "x": 0,
522
+ "y": 6
523
+ },
524
+ "datasource": {
525
+ "type": "prometheus",
526
+ "uid": "${DS}"
527
+ },
528
+ "fieldConfig": {
529
+ "defaults": {
530
+ "custom": {
531
+ "drawStyle": "line",
532
+ "lineWidth": 1,
533
+ "fillOpacity": 8,
534
+ "showPoints": "never",
535
+ "spanNulls": true
536
+ },
537
+ "unit": "percentunit",
538
+ "min": 0
539
+ },
540
+ "overrides": []
541
+ },
542
+ "options": {
543
+ "legend": {
544
+ "displayMode": "list",
545
+ "placement": "bottom"
546
+ },
547
+ "tooltip": {
548
+ "mode": "multi",
549
+ "sort": "desc"
550
+ }
551
+ },
552
+ "targets": [
553
+ {
554
+ "datasource": {
555
+ "type": "prometheus",
556
+ "uid": "${DS}"
557
+ },
558
+ "expr": "fc:host:cpu_busy_ratio",
559
+ "legendFormat": "busy",
560
+ "refId": "A"
561
+ },
562
+ {
563
+ "datasource": {
564
+ "type": "prometheus",
565
+ "uid": "${DS}"
566
+ },
567
+ "expr": "fc:host:cpu_steal_ratio",
568
+ "legendFormat": "steal",
569
+ "refId": "B"
570
+ },
571
+ {
572
+ "datasource": {
573
+ "type": "prometheus",
574
+ "uid": "${DS}"
575
+ },
576
+ "expr": "fc:host:load1 / 32",
577
+ "legendFormat": "load1 (\u00f732)",
578
+ "refId": "C"
579
+ }
580
+ ]
581
+ },
582
+ {
583
+ "id": 10,
584
+ "type": "timeseries",
585
+ "title": "Host PSI some (cpu\u00b7mem\u00b7io)",
586
+ "gridPos": {
587
+ "h": 7,
588
+ "w": 6,
589
+ "x": 6,
590
+ "y": 6
591
+ },
592
+ "datasource": {
593
+ "type": "prometheus",
594
+ "uid": "${DS}"
595
+ },
596
+ "fieldConfig": {
597
+ "defaults": {
598
+ "custom": {
599
+ "drawStyle": "line",
600
+ "lineWidth": 1,
601
+ "fillOpacity": 8,
602
+ "showPoints": "never",
603
+ "spanNulls": true
604
+ },
605
+ "unit": "percentunit",
606
+ "min": 0
607
+ },
608
+ "overrides": []
609
+ },
610
+ "options": {
611
+ "legend": {
612
+ "displayMode": "list",
613
+ "placement": "bottom"
614
+ },
615
+ "tooltip": {
616
+ "mode": "multi",
617
+ "sort": "desc"
618
+ }
619
+ },
620
+ "targets": [
621
+ {
622
+ "datasource": {
623
+ "type": "prometheus",
624
+ "uid": "${DS}"
625
+ },
626
+ "expr": "fc:host:psi_cpu_some_ratio",
627
+ "legendFormat": "cpu",
628
+ "refId": "A"
629
+ },
630
+ {
631
+ "datasource": {
632
+ "type": "prometheus",
633
+ "uid": "${DS}"
634
+ },
635
+ "expr": "fc:host:psi_mem_some_ratio",
636
+ "legendFormat": "mem",
637
+ "refId": "B"
638
+ },
639
+ {
640
+ "datasource": {
641
+ "type": "prometheus",
642
+ "uid": "${DS}"
643
+ },
644
+ "expr": "fc:host:psi_io_some_ratio",
645
+ "legendFormat": "io",
646
+ "refId": "C"
647
+ }
648
+ ]
649
+ },
650
+ {
651
+ "id": 11,
652
+ "type": "timeseries",
653
+ "title": "Memory available / swap-out",
654
+ "gridPos": {
655
+ "h": 7,
656
+ "w": 6,
657
+ "x": 12,
658
+ "y": 6
659
+ },
660
+ "datasource": {
661
+ "type": "prometheus",
662
+ "uid": "${DS}"
663
+ },
664
+ "fieldConfig": {
665
+ "defaults": {
666
+ "custom": {
667
+ "drawStyle": "line",
668
+ "lineWidth": 1,
669
+ "fillOpacity": 8,
670
+ "showPoints": "never",
671
+ "spanNulls": true
672
+ },
673
+ "unit": "short",
674
+ "min": 0
675
+ },
676
+ "overrides": []
677
+ },
678
+ "options": {
679
+ "legend": {
680
+ "displayMode": "list",
681
+ "placement": "bottom"
682
+ },
683
+ "tooltip": {
684
+ "mode": "multi",
685
+ "sort": "desc"
686
+ }
687
+ },
688
+ "targets": [
689
+ {
690
+ "datasource": {
691
+ "type": "prometheus",
692
+ "uid": "${DS}"
693
+ },
694
+ "expr": "fc:host:mem_available_ratio",
695
+ "legendFormat": "available",
696
+ "refId": "A"
697
+ },
698
+ {
699
+ "datasource": {
700
+ "type": "prometheus",
701
+ "uid": "${DS}"
702
+ },
703
+ "expr": "fc:host:pswpout_rate",
704
+ "legendFormat": "pswpout/s (red weather)",
705
+ "refId": "B"
706
+ }
707
+ ]
708
+ },
709
+ {
710
+ "id": 12,
711
+ "type": "timeseries",
712
+ "title": "Victim canary latency (G2)",
713
+ "gridPos": {
714
+ "h": 7,
715
+ "w": 6,
716
+ "x": 18,
717
+ "y": 6
718
+ },
719
+ "datasource": {
720
+ "type": "prometheus",
721
+ "uid": "${DS}"
722
+ },
723
+ "fieldConfig": {
724
+ "defaults": {
725
+ "custom": {
726
+ "drawStyle": "line",
727
+ "lineWidth": 1,
728
+ "fillOpacity": 8,
729
+ "showPoints": "never",
730
+ "spanNulls": true
731
+ },
732
+ "unit": "s",
733
+ "min": 0
734
+ },
735
+ "overrides": []
736
+ },
737
+ "options": {
738
+ "legend": {
739
+ "displayMode": "list",
740
+ "placement": "bottom"
741
+ },
742
+ "tooltip": {
743
+ "mode": "multi",
744
+ "sort": "desc"
745
+ }
746
+ },
747
+ "targets": [
748
+ {
749
+ "datasource": {
750
+ "type": "prometheus",
751
+ "uid": "${DS}"
752
+ },
753
+ "expr": "fc:canary:graphql_duration_seconds",
754
+ "legendFormat": "graphql",
755
+ "refId": "A"
756
+ },
757
+ {
758
+ "datasource": {
759
+ "type": "prometheus",
760
+ "uid": "${DS}"
761
+ },
762
+ "expr": "fc:canary:health_duration_seconds",
763
+ "legendFormat": "/health",
764
+ "refId": "B"
765
+ }
766
+ ]
767
+ },
768
+ {
769
+ "id": 13,
770
+ "type": "row",
771
+ "title": "2 \u00b7 Actors (compose containers + fc-* scopes)",
772
+ "gridPos": {
773
+ "h": 1,
774
+ "w": 24,
775
+ "x": 0,
776
+ "y": 13
777
+ },
778
+ "collapsed": false,
779
+ "panels": []
780
+ },
781
+ {
782
+ "id": 14,
783
+ "type": "timeseries",
784
+ "title": "Actor CPU (cores)",
785
+ "gridPos": {
786
+ "h": 8,
787
+ "w": 12,
788
+ "x": 0,
789
+ "y": 14
790
+ },
791
+ "datasource": {
792
+ "type": "prometheus",
793
+ "uid": "${DS}"
794
+ },
795
+ "fieldConfig": {
796
+ "defaults": {
797
+ "custom": {
798
+ "drawStyle": "line",
799
+ "lineWidth": 1,
800
+ "fillOpacity": 8,
801
+ "showPoints": "never",
802
+ "spanNulls": true
803
+ },
804
+ "unit": "short",
805
+ "min": 0
806
+ },
807
+ "overrides": []
808
+ },
809
+ "options": {
810
+ "legend": {
811
+ "displayMode": "list",
812
+ "placement": "bottom"
813
+ },
814
+ "tooltip": {
815
+ "mode": "multi",
816
+ "sort": "desc"
817
+ }
818
+ },
819
+ "targets": [
820
+ {
821
+ "datasource": {
822
+ "type": "prometheus",
823
+ "uid": "${DS}"
824
+ },
825
+ "expr": "fc:actor:cpu_ratio",
826
+ "legendFormat": "{{actor}}",
827
+ "refId": "A"
828
+ }
829
+ ]
830
+ },
831
+ {
832
+ "id": 15,
833
+ "type": "timeseries",
834
+ "title": "Actor RSS",
835
+ "gridPos": {
836
+ "h": 8,
837
+ "w": 12,
838
+ "x": 12,
839
+ "y": 14
840
+ },
841
+ "datasource": {
842
+ "type": "prometheus",
843
+ "uid": "${DS}"
844
+ },
845
+ "fieldConfig": {
846
+ "defaults": {
847
+ "custom": {
848
+ "drawStyle": "line",
849
+ "lineWidth": 1,
850
+ "fillOpacity": 8,
851
+ "showPoints": "never",
852
+ "spanNulls": true
853
+ },
854
+ "unit": "bytes",
855
+ "min": 0
856
+ },
857
+ "overrides": []
858
+ },
859
+ "options": {
860
+ "legend": {
861
+ "displayMode": "list",
862
+ "placement": "bottom"
863
+ },
864
+ "tooltip": {
865
+ "mode": "multi",
866
+ "sort": "desc"
867
+ }
868
+ },
869
+ "targets": [
870
+ {
871
+ "datasource": {
872
+ "type": "prometheus",
873
+ "uid": "${DS}"
874
+ },
875
+ "expr": "fc:actor:rss_bytes",
876
+ "legendFormat": "{{actor}}",
877
+ "refId": "A"
878
+ }
879
+ ]
880
+ },
881
+ {
882
+ "id": 16,
883
+ "type": "state-timeline",
884
+ "title": "Actor CPU-pressure heat bands (some ratio \u2014 injected hog = vertical band, B1)",
885
+ "gridPos": {
886
+ "h": 8,
887
+ "w": 16,
888
+ "x": 0,
889
+ "y": 22
890
+ },
891
+ "datasource": {
892
+ "type": "prometheus",
893
+ "uid": "${DS}"
894
+ },
895
+ "fieldConfig": {
896
+ "defaults": {
897
+ "custom": {
898
+ "lineWidth": 0,
899
+ "fillOpacity": 72
900
+ },
901
+ "unit": "percentunit",
902
+ "thresholds": {
903
+ "mode": "absolute",
904
+ "steps": [
905
+ {
906
+ "color": "green",
907
+ "value": null
908
+ },
909
+ {
910
+ "color": "yellow",
911
+ "value": 0.05
912
+ },
913
+ {
914
+ "color": "orange",
915
+ "value": 0.2
916
+ },
917
+ {
918
+ "color": "red",
919
+ "value": 0.6
920
+ }
921
+ ]
922
+ },
923
+ "color": {
924
+ "mode": "thresholds"
925
+ }
926
+ },
927
+ "overrides": []
928
+ },
929
+ "options": {
930
+ "showValue": "never",
931
+ "rowHeight": 0.85,
932
+ "legend": {
933
+ "displayMode": "hidden"
934
+ },
935
+ "tooltip": {
936
+ "mode": "single"
937
+ }
938
+ },
939
+ "targets": [
940
+ {
941
+ "datasource": {
942
+ "type": "prometheus",
943
+ "uid": "${DS}"
944
+ },
945
+ "expr": "fc:actor:psi_cpu_some_ratio",
946
+ "legendFormat": "{{actor}}",
947
+ "refId": "A"
948
+ }
949
+ ]
950
+ },
951
+ {
952
+ "id": 17,
953
+ "type": "timeseries",
954
+ "title": "Actor throttled periods (must be 0 \u2014 weights never quotas)",
955
+ "gridPos": {
956
+ "h": 8,
957
+ "w": 8,
958
+ "x": 16,
959
+ "y": 22
960
+ },
961
+ "datasource": {
962
+ "type": "prometheus",
963
+ "uid": "${DS}"
964
+ },
965
+ "fieldConfig": {
966
+ "defaults": {
967
+ "custom": {
968
+ "drawStyle": "line",
969
+ "lineWidth": 1,
970
+ "fillOpacity": 8,
971
+ "showPoints": "never",
972
+ "spanNulls": true
973
+ },
974
+ "unit": "short",
975
+ "min": 0
976
+ },
977
+ "overrides": []
978
+ },
979
+ "options": {
980
+ "legend": {
981
+ "displayMode": "list",
982
+ "placement": "bottom"
983
+ },
984
+ "tooltip": {
985
+ "mode": "multi",
986
+ "sort": "desc"
987
+ }
988
+ },
989
+ "targets": [
990
+ {
991
+ "datasource": {
992
+ "type": "prometheus",
993
+ "uid": "${DS}"
994
+ },
995
+ "expr": "fc:actor:throttled_periods_delta or on() vector(0)",
996
+ "legendFormat": "{{actor}}",
997
+ "refId": "A"
998
+ }
999
+ ]
1000
+ },
1001
+ {
1002
+ "id": 18,
1003
+ "type": "row",
1004
+ "title": "3 \u00b7 Latency (GraphQL all-traffic + held-tx spans)",
1005
+ "gridPos": {
1006
+ "h": 1,
1007
+ "w": 24,
1008
+ "x": 0,
1009
+ "y": 30
1010
+ },
1011
+ "collapsed": false,
1012
+ "panels": []
1013
+ },
1014
+ {
1015
+ "id": 19,
1016
+ "type": "timeseries",
1017
+ "title": "GraphQL p99 / p50 by op_class (ALL traffic \u2014 F2)",
1018
+ "gridPos": {
1019
+ "h": 7,
1020
+ "w": 8,
1021
+ "x": 0,
1022
+ "y": 31
1023
+ },
1024
+ "datasource": {
1025
+ "type": "prometheus",
1026
+ "uid": "${DS}"
1027
+ },
1028
+ "fieldConfig": {
1029
+ "defaults": {
1030
+ "custom": {
1031
+ "drawStyle": "line",
1032
+ "lineWidth": 1,
1033
+ "fillOpacity": 8,
1034
+ "showPoints": "never",
1035
+ "spanNulls": true
1036
+ },
1037
+ "unit": "s",
1038
+ "min": 0
1039
+ },
1040
+ "overrides": []
1041
+ },
1042
+ "options": {
1043
+ "legend": {
1044
+ "displayMode": "list",
1045
+ "placement": "bottom"
1046
+ },
1047
+ "tooltip": {
1048
+ "mode": "multi",
1049
+ "sort": "desc"
1050
+ }
1051
+ },
1052
+ "targets": [
1053
+ {
1054
+ "datasource": {
1055
+ "type": "prometheus",
1056
+ "uid": "${DS}"
1057
+ },
1058
+ "expr": "fc:gql:p99_seconds",
1059
+ "legendFormat": "p99 {{op_class}}",
1060
+ "refId": "A"
1061
+ },
1062
+ {
1063
+ "datasource": {
1064
+ "type": "prometheus",
1065
+ "uid": "${DS}"
1066
+ },
1067
+ "expr": "fc:gql:p50_seconds",
1068
+ "legendFormat": "p50 {{op_class}}",
1069
+ "refId": "B"
1070
+ }
1071
+ ]
1072
+ },
1073
+ {
1074
+ "id": 20,
1075
+ "type": "timeseries",
1076
+ "title": "GraphQL rate by op_class",
1077
+ "gridPos": {
1078
+ "h": 7,
1079
+ "w": 8,
1080
+ "x": 8,
1081
+ "y": 31
1082
+ },
1083
+ "datasource": {
1084
+ "type": "prometheus",
1085
+ "uid": "${DS}"
1086
+ },
1087
+ "fieldConfig": {
1088
+ "defaults": {
1089
+ "custom": {
1090
+ "drawStyle": "line",
1091
+ "lineWidth": 1,
1092
+ "fillOpacity": 8,
1093
+ "showPoints": "never",
1094
+ "spanNulls": true
1095
+ },
1096
+ "unit": "reqps",
1097
+ "min": 0
1098
+ },
1099
+ "overrides": []
1100
+ },
1101
+ "options": {
1102
+ "legend": {
1103
+ "displayMode": "list",
1104
+ "placement": "bottom"
1105
+ },
1106
+ "tooltip": {
1107
+ "mode": "multi",
1108
+ "sort": "desc"
1109
+ }
1110
+ },
1111
+ "targets": [
1112
+ {
1113
+ "datasource": {
1114
+ "type": "prometheus",
1115
+ "uid": "${DS}"
1116
+ },
1117
+ "expr": "fc:gql:rate",
1118
+ "legendFormat": "{{op_class}}",
1119
+ "refId": "A"
1120
+ }
1121
+ ]
1122
+ },
1123
+ {
1124
+ "id": 21,
1125
+ "type": "timeseries",
1126
+ "title": "Held-tx spans vs the live budget (F9)",
1127
+ "gridPos": {
1128
+ "h": 7,
1129
+ "w": 8,
1130
+ "x": 16,
1131
+ "y": 31
1132
+ },
1133
+ "datasource": {
1134
+ "type": "prometheus",
1135
+ "uid": "${DS}"
1136
+ },
1137
+ "fieldConfig": {
1138
+ "defaults": {
1139
+ "custom": {
1140
+ "drawStyle": "line",
1141
+ "lineWidth": 1,
1142
+ "fillOpacity": 8,
1143
+ "showPoints": "never",
1144
+ "spanNulls": true
1145
+ },
1146
+ "unit": "s",
1147
+ "min": 0
1148
+ },
1149
+ "overrides": []
1150
+ },
1151
+ "options": {
1152
+ "legend": {
1153
+ "displayMode": "list",
1154
+ "placement": "bottom"
1155
+ },
1156
+ "tooltip": {
1157
+ "mode": "multi",
1158
+ "sort": "desc"
1159
+ }
1160
+ },
1161
+ "targets": [
1162
+ {
1163
+ "datasource": {
1164
+ "type": "prometheus",
1165
+ "uid": "${DS}"
1166
+ },
1167
+ "expr": "fc:tx:p99_seconds",
1168
+ "legendFormat": "p99 {{op_class}}",
1169
+ "refId": "A"
1170
+ },
1171
+ {
1172
+ "datasource": {
1173
+ "type": "prometheus",
1174
+ "uid": "${DS}"
1175
+ },
1176
+ "expr": "fc:tx:ring_max_seconds",
1177
+ "legendFormat": "ring max (60\u00d71s)",
1178
+ "refId": "B"
1179
+ },
1180
+ {
1181
+ "datasource": {
1182
+ "type": "prometheus",
1183
+ "uid": "${DS}"
1184
+ },
1185
+ "expr": "fc:tx:budget_seconds",
1186
+ "legendFormat": "budget (live gauge)",
1187
+ "refId": "C"
1188
+ }
1189
+ ]
1190
+ },
1191
+ {
1192
+ "id": 22,
1193
+ "type": "row",
1194
+ "title": "4 \u00b7 Database (coordinator + workers, direct \u2014 never the pooler)",
1195
+ "gridPos": {
1196
+ "h": 1,
1197
+ "w": 24,
1198
+ "x": 0,
1199
+ "y": 38
1200
+ },
1201
+ "collapsed": false,
1202
+ "panels": []
1203
+ },
1204
+ {
1205
+ "id": 23,
1206
+ "type": "timeseries",
1207
+ "title": "PG backends by db_family",
1208
+ "gridPos": {
1209
+ "h": 7,
1210
+ "w": 8,
1211
+ "x": 0,
1212
+ "y": 39
1213
+ },
1214
+ "datasource": {
1215
+ "type": "prometheus",
1216
+ "uid": "${DS}"
1217
+ },
1218
+ "fieldConfig": {
1219
+ "defaults": {
1220
+ "custom": {
1221
+ "drawStyle": "line",
1222
+ "lineWidth": 1,
1223
+ "fillOpacity": 8,
1224
+ "showPoints": "never",
1225
+ "spanNulls": true
1226
+ },
1227
+ "unit": "short",
1228
+ "min": 0
1229
+ },
1230
+ "overrides": []
1231
+ },
1232
+ "options": {
1233
+ "legend": {
1234
+ "displayMode": "list",
1235
+ "placement": "bottom"
1236
+ },
1237
+ "tooltip": {
1238
+ "mode": "multi",
1239
+ "sort": "desc"
1240
+ }
1241
+ },
1242
+ "targets": [
1243
+ {
1244
+ "datasource": {
1245
+ "type": "prometheus",
1246
+ "uid": "${DS}"
1247
+ },
1248
+ "expr": "sum by (db_family)(fc:pg:backends)",
1249
+ "legendFormat": "{{db_family}}",
1250
+ "refId": "A"
1251
+ }
1252
+ ]
1253
+ },
1254
+ {
1255
+ "id": 24,
1256
+ "type": "timeseries",
1257
+ "title": "Idle-in-transaction (tech-debt #10)",
1258
+ "gridPos": {
1259
+ "h": 7,
1260
+ "w": 8,
1261
+ "x": 8,
1262
+ "y": 39
1263
+ },
1264
+ "datasource": {
1265
+ "type": "prometheus",
1266
+ "uid": "${DS}"
1267
+ },
1268
+ "fieldConfig": {
1269
+ "defaults": {
1270
+ "custom": {
1271
+ "drawStyle": "line",
1272
+ "lineWidth": 1,
1273
+ "fillOpacity": 8,
1274
+ "showPoints": "never",
1275
+ "spanNulls": true
1276
+ },
1277
+ "unit": "short",
1278
+ "min": 0
1279
+ },
1280
+ "overrides": []
1281
+ },
1282
+ "options": {
1283
+ "legend": {
1284
+ "displayMode": "list",
1285
+ "placement": "bottom"
1286
+ },
1287
+ "tooltip": {
1288
+ "mode": "multi",
1289
+ "sort": "desc"
1290
+ }
1291
+ },
1292
+ "targets": [
1293
+ {
1294
+ "datasource": {
1295
+ "type": "prometheus",
1296
+ "uid": "${DS}"
1297
+ },
1298
+ "expr": "fc:pg:idle_in_tx_age_max_seconds",
1299
+ "legendFormat": "oldest age (s)",
1300
+ "refId": "A"
1301
+ },
1302
+ {
1303
+ "datasource": {
1304
+ "type": "prometheus",
1305
+ "uid": "${DS}"
1306
+ },
1307
+ "expr": "fc:pg:idle_in_tx_count",
1308
+ "legendFormat": "count",
1309
+ "refId": "B"
1310
+ }
1311
+ ]
1312
+ },
1313
+ {
1314
+ "id": 25,
1315
+ "type": "timeseries",
1316
+ "title": "Backends by node / citus fan-out",
1317
+ "gridPos": {
1318
+ "h": 7,
1319
+ "w": 8,
1320
+ "x": 16,
1321
+ "y": 39
1322
+ },
1323
+ "datasource": {
1324
+ "type": "prometheus",
1325
+ "uid": "${DS}"
1326
+ },
1327
+ "fieldConfig": {
1328
+ "defaults": {
1329
+ "custom": {
1330
+ "drawStyle": "line",
1331
+ "lineWidth": 1,
1332
+ "fillOpacity": 8,
1333
+ "showPoints": "never",
1334
+ "spanNulls": true
1335
+ },
1336
+ "unit": "short",
1337
+ "min": 0
1338
+ },
1339
+ "overrides": []
1340
+ },
1341
+ "options": {
1342
+ "legend": {
1343
+ "displayMode": "list",
1344
+ "placement": "bottom"
1345
+ },
1346
+ "tooltip": {
1347
+ "mode": "multi",
1348
+ "sort": "desc"
1349
+ }
1350
+ },
1351
+ "targets": [
1352
+ {
1353
+ "datasource": {
1354
+ "type": "prometheus",
1355
+ "uid": "${DS}"
1356
+ },
1357
+ "expr": "fc:pg:backends_total",
1358
+ "legendFormat": "{{pg_node}} total",
1359
+ "refId": "A"
1360
+ },
1361
+ {
1362
+ "datasource": {
1363
+ "type": "prometheus",
1364
+ "uid": "${DS}"
1365
+ },
1366
+ "expr": "sum by (source)(fc:pg:citus_backends)",
1367
+ "legendFormat": "origin {{source}}",
1368
+ "refId": "B"
1369
+ }
1370
+ ]
1371
+ },
1372
+ {
1373
+ "id": 26,
1374
+ "type": "row",
1375
+ "title": "5 \u00b7 Pools & held transactions (node-pg lanes)",
1376
+ "gridPos": {
1377
+ "h": 1,
1378
+ "w": 24,
1379
+ "x": 0,
1380
+ "y": 46
1381
+ },
1382
+ "collapsed": false,
1383
+ "panels": []
1384
+ },
1385
+ {
1386
+ "id": 27,
1387
+ "type": "timeseries",
1388
+ "title": "Lane occupancy: in-use vs size",
1389
+ "gridPos": {
1390
+ "h": 7,
1391
+ "w": 8,
1392
+ "x": 0,
1393
+ "y": 47
1394
+ },
1395
+ "datasource": {
1396
+ "type": "prometheus",
1397
+ "uid": "${DS}"
1398
+ },
1399
+ "fieldConfig": {
1400
+ "defaults": {
1401
+ "custom": {
1402
+ "drawStyle": "line",
1403
+ "lineWidth": 1,
1404
+ "fillOpacity": 8,
1405
+ "showPoints": "never",
1406
+ "spanNulls": true
1407
+ },
1408
+ "unit": "short",
1409
+ "min": 0
1410
+ },
1411
+ "overrides": []
1412
+ },
1413
+ "options": {
1414
+ "legend": {
1415
+ "displayMode": "list",
1416
+ "placement": "bottom"
1417
+ },
1418
+ "tooltip": {
1419
+ "mode": "multi",
1420
+ "sort": "desc"
1421
+ }
1422
+ },
1423
+ "targets": [
1424
+ {
1425
+ "datasource": {
1426
+ "type": "prometheus",
1427
+ "uid": "${DS}"
1428
+ },
1429
+ "expr": "fc:pool:in_use",
1430
+ "legendFormat": "in-use {{lane}} ({{service}})",
1431
+ "refId": "A"
1432
+ },
1433
+ {
1434
+ "datasource": {
1435
+ "type": "prometheus",
1436
+ "uid": "${DS}"
1437
+ },
1438
+ "expr": "fc:pool:size",
1439
+ "legendFormat": "size {{lane}} ({{service}})",
1440
+ "refId": "B"
1441
+ }
1442
+ ]
1443
+ },
1444
+ {
1445
+ "id": 28,
1446
+ "type": "timeseries",
1447
+ "title": "Lane waiting (client-side queue) + acquire p99",
1448
+ "gridPos": {
1449
+ "h": 7,
1450
+ "w": 8,
1451
+ "x": 8,
1452
+ "y": 47
1453
+ },
1454
+ "datasource": {
1455
+ "type": "prometheus",
1456
+ "uid": "${DS}"
1457
+ },
1458
+ "fieldConfig": {
1459
+ "defaults": {
1460
+ "custom": {
1461
+ "drawStyle": "line",
1462
+ "lineWidth": 1,
1463
+ "fillOpacity": 8,
1464
+ "showPoints": "never",
1465
+ "spanNulls": true
1466
+ },
1467
+ "unit": "short",
1468
+ "min": 0
1469
+ },
1470
+ "overrides": []
1471
+ },
1472
+ "options": {
1473
+ "legend": {
1474
+ "displayMode": "list",
1475
+ "placement": "bottom"
1476
+ },
1477
+ "tooltip": {
1478
+ "mode": "multi",
1479
+ "sort": "desc"
1480
+ }
1481
+ },
1482
+ "targets": [
1483
+ {
1484
+ "datasource": {
1485
+ "type": "prometheus",
1486
+ "uid": "${DS}"
1487
+ },
1488
+ "expr": "fc:pool:waiting",
1489
+ "legendFormat": "waiting {{lane}} ({{service}})",
1490
+ "refId": "A"
1491
+ },
1492
+ {
1493
+ "datasource": {
1494
+ "type": "prometheus",
1495
+ "uid": "${DS}"
1496
+ },
1497
+ "expr": "fc:pool:acquire_wait_p99_seconds",
1498
+ "legendFormat": "acquire p99 {{lane}} (s)",
1499
+ "refId": "B"
1500
+ }
1501
+ ]
1502
+ },
1503
+ {
1504
+ "id": 29,
1505
+ "type": "timeseries",
1506
+ "title": "Held transactions (tech-debt #10, server-side)",
1507
+ "gridPos": {
1508
+ "h": 7,
1509
+ "w": 8,
1510
+ "x": 16,
1511
+ "y": 47
1512
+ },
1513
+ "datasource": {
1514
+ "type": "prometheus",
1515
+ "uid": "${DS}"
1516
+ },
1517
+ "fieldConfig": {
1518
+ "defaults": {
1519
+ "custom": {
1520
+ "drawStyle": "line",
1521
+ "lineWidth": 1,
1522
+ "fillOpacity": 8,
1523
+ "showPoints": "never",
1524
+ "spanNulls": true
1525
+ },
1526
+ "unit": "short",
1527
+ "min": 0
1528
+ },
1529
+ "overrides": []
1530
+ },
1531
+ "options": {
1532
+ "legend": {
1533
+ "displayMode": "list",
1534
+ "placement": "bottom"
1535
+ },
1536
+ "tooltip": {
1537
+ "mode": "multi",
1538
+ "sort": "desc"
1539
+ }
1540
+ },
1541
+ "targets": [
1542
+ {
1543
+ "datasource": {
1544
+ "type": "prometheus",
1545
+ "uid": "${DS}"
1546
+ },
1547
+ "expr": "fc:heldtx:open",
1548
+ "legendFormat": "open ({{service}})",
1549
+ "refId": "A"
1550
+ },
1551
+ {
1552
+ "datasource": {
1553
+ "type": "prometheus",
1554
+ "uid": "${DS}"
1555
+ },
1556
+ "expr": "fc:heldtx:oldest_age_seconds",
1557
+ "legendFormat": "oldest age (s)",
1558
+ "refId": "B"
1559
+ }
1560
+ ]
1561
+ },
1562
+ {
1563
+ "id": 30,
1564
+ "type": "row",
1565
+ "title": "6 \u00b7 Transport & async",
1566
+ "gridPos": {
1567
+ "h": 1,
1568
+ "w": 24,
1569
+ "x": 0,
1570
+ "y": 54
1571
+ },
1572
+ "collapsed": false,
1573
+ "panels": []
1574
+ },
1575
+ {
1576
+ "id": 31,
1577
+ "type": "timeseries",
1578
+ "title": "RabbitMQ queue totals (dark until Q12 lands :15692)",
1579
+ "gridPos": {
1580
+ "h": 7,
1581
+ "w": 6,
1582
+ "x": 0,
1583
+ "y": 55
1584
+ },
1585
+ "datasource": {
1586
+ "type": "prometheus",
1587
+ "uid": "${DS}"
1588
+ },
1589
+ "fieldConfig": {
1590
+ "defaults": {
1591
+ "custom": {
1592
+ "drawStyle": "line",
1593
+ "lineWidth": 1,
1594
+ "fillOpacity": 8,
1595
+ "showPoints": "never",
1596
+ "spanNulls": true
1597
+ },
1598
+ "unit": "short",
1599
+ "min": 0
1600
+ },
1601
+ "overrides": []
1602
+ },
1603
+ "options": {
1604
+ "legend": {
1605
+ "displayMode": "list",
1606
+ "placement": "bottom"
1607
+ },
1608
+ "tooltip": {
1609
+ "mode": "multi",
1610
+ "sort": "desc"
1611
+ }
1612
+ },
1613
+ "targets": [
1614
+ {
1615
+ "datasource": {
1616
+ "type": "prometheus",
1617
+ "uid": "${DS}"
1618
+ },
1619
+ "expr": "fc:mq:ready_total",
1620
+ "legendFormat": "ready",
1621
+ "refId": "A"
1622
+ },
1623
+ {
1624
+ "datasource": {
1625
+ "type": "prometheus",
1626
+ "uid": "${DS}"
1627
+ },
1628
+ "expr": "fc:mq:unacked_total",
1629
+ "legendFormat": "unacked",
1630
+ "refId": "B"
1631
+ }
1632
+ ]
1633
+ },
1634
+ {
1635
+ "id": 32,
1636
+ "type": "timeseries",
1637
+ "title": "MQ confirm p99 / prefetch (F4)",
1638
+ "gridPos": {
1639
+ "h": 7,
1640
+ "w": 6,
1641
+ "x": 6,
1642
+ "y": 55
1643
+ },
1644
+ "datasource": {
1645
+ "type": "prometheus",
1646
+ "uid": "${DS}"
1647
+ },
1648
+ "fieldConfig": {
1649
+ "defaults": {
1650
+ "custom": {
1651
+ "drawStyle": "line",
1652
+ "lineWidth": 1,
1653
+ "fillOpacity": 8,
1654
+ "showPoints": "never",
1655
+ "spanNulls": true
1656
+ },
1657
+ "unit": "short",
1658
+ "min": 0
1659
+ },
1660
+ "overrides": []
1661
+ },
1662
+ "options": {
1663
+ "legend": {
1664
+ "displayMode": "list",
1665
+ "placement": "bottom"
1666
+ },
1667
+ "tooltip": {
1668
+ "mode": "multi",
1669
+ "sort": "desc"
1670
+ }
1671
+ },
1672
+ "targets": [
1673
+ {
1674
+ "datasource": {
1675
+ "type": "prometheus",
1676
+ "uid": "${DS}"
1677
+ },
1678
+ "expr": "fc:mq:confirm_p99_seconds",
1679
+ "legendFormat": "confirm p99 (s)",
1680
+ "refId": "A"
1681
+ },
1682
+ {
1683
+ "datasource": {
1684
+ "type": "prometheus",
1685
+ "uid": "${DS}"
1686
+ },
1687
+ "expr": "fc:mq:prefetch_effective",
1688
+ "legendFormat": "prefetch {{service}}",
1689
+ "refId": "B"
1690
+ }
1691
+ ]
1692
+ },
1693
+ {
1694
+ "id": 33,
1695
+ "type": "timeseries",
1696
+ "title": "Ingest rate (debt #3 \u22651k \u00b7 debt #2/Kafka \u22655k)",
1697
+ "gridPos": {
1698
+ "h": 7,
1699
+ "w": 6,
1700
+ "x": 12,
1701
+ "y": 55
1702
+ },
1703
+ "datasource": {
1704
+ "type": "prometheus",
1705
+ "uid": "${DS}"
1706
+ },
1707
+ "fieldConfig": {
1708
+ "defaults": {
1709
+ "custom": {
1710
+ "drawStyle": "line",
1711
+ "lineWidth": 1,
1712
+ "fillOpacity": 8,
1713
+ "showPoints": "never",
1714
+ "spanNulls": true,
1715
+ "thresholdsStyle": {
1716
+ "mode": "line"
1717
+ }
1718
+ },
1719
+ "unit": "short",
1720
+ "min": 0,
1721
+ "thresholds": {
1722
+ "mode": "absolute",
1723
+ "steps": [
1724
+ {
1725
+ "color": "green",
1726
+ "value": null
1727
+ },
1728
+ {
1729
+ "color": "yellow",
1730
+ "value": 1000
1731
+ },
1732
+ {
1733
+ "color": "red",
1734
+ "value": 5000
1735
+ }
1736
+ ]
1737
+ }
1738
+ },
1739
+ "overrides": []
1740
+ },
1741
+ "options": {
1742
+ "legend": {
1743
+ "displayMode": "list",
1744
+ "placement": "bottom"
1745
+ },
1746
+ "tooltip": {
1747
+ "mode": "multi",
1748
+ "sort": "desc"
1749
+ }
1750
+ },
1751
+ "targets": [
1752
+ {
1753
+ "datasource": {
1754
+ "type": "prometheus",
1755
+ "uid": "${DS}"
1756
+ },
1757
+ "expr": "fc:ingest:events_per_second",
1758
+ "legendFormat": "total events/s",
1759
+ "refId": "A"
1760
+ },
1761
+ {
1762
+ "datasource": {
1763
+ "type": "prometheus",
1764
+ "uid": "${DS}"
1765
+ },
1766
+ "expr": "fc:ingest:events_per_second_by_class",
1767
+ "legendFormat": "{{queue_class}}",
1768
+ "refId": "B"
1769
+ }
1770
+ ]
1771
+ },
1772
+ {
1773
+ "id": 34,
1774
+ "type": "timeseries",
1775
+ "title": "gRPC per target (generic seam, #969)",
1776
+ "gridPos": {
1777
+ "h": 7,
1778
+ "w": 6,
1779
+ "x": 18,
1780
+ "y": 55
1781
+ },
1782
+ "datasource": {
1783
+ "type": "prometheus",
1784
+ "uid": "${DS}"
1785
+ },
1786
+ "fieldConfig": {
1787
+ "defaults": {
1788
+ "custom": {
1789
+ "drawStyle": "line",
1790
+ "lineWidth": 1,
1791
+ "fillOpacity": 8,
1792
+ "showPoints": "never",
1793
+ "spanNulls": true
1794
+ },
1795
+ "unit": "short",
1796
+ "min": 0
1797
+ },
1798
+ "overrides": []
1799
+ },
1800
+ "options": {
1801
+ "legend": {
1802
+ "displayMode": "list",
1803
+ "placement": "bottom"
1804
+ },
1805
+ "tooltip": {
1806
+ "mode": "multi",
1807
+ "sort": "desc"
1808
+ }
1809
+ },
1810
+ "targets": [
1811
+ {
1812
+ "datasource": {
1813
+ "type": "prometheus",
1814
+ "uid": "${DS}"
1815
+ },
1816
+ "expr": "fc:grpc:ready",
1817
+ "legendFormat": "ready {{target}} ({{service}})",
1818
+ "refId": "A"
1819
+ },
1820
+ {
1821
+ "datasource": {
1822
+ "type": "prometheus",
1823
+ "uid": "${DS}"
1824
+ },
1825
+ "expr": "fc:grpc:inflight",
1826
+ "legendFormat": "inflight {{target}} ({{service}})",
1827
+ "refId": "B"
1828
+ }
1829
+ ]
1830
+ },
1831
+ {
1832
+ "id": 35,
1833
+ "type": "row",
1834
+ "title": "7 \u00b7 Sockets & DNS",
1835
+ "gridPos": {
1836
+ "h": 1,
1837
+ "w": 24,
1838
+ "x": 0,
1839
+ "y": 62
1840
+ },
1841
+ "collapsed": false,
1842
+ "panels": []
1843
+ },
1844
+ {
1845
+ "id": 36,
1846
+ "type": "timeseries",
1847
+ "title": "TCP connection states (host)",
1848
+ "gridPos": {
1849
+ "h": 7,
1850
+ "w": 8,
1851
+ "x": 0,
1852
+ "y": 63
1853
+ },
1854
+ "datasource": {
1855
+ "type": "prometheus",
1856
+ "uid": "${DS}"
1857
+ },
1858
+ "fieldConfig": {
1859
+ "defaults": {
1860
+ "custom": {
1861
+ "drawStyle": "line",
1862
+ "lineWidth": 1,
1863
+ "fillOpacity": 8,
1864
+ "showPoints": "never",
1865
+ "spanNulls": true
1866
+ },
1867
+ "unit": "short",
1868
+ "min": 0
1869
+ },
1870
+ "overrides": []
1871
+ },
1872
+ "options": {
1873
+ "legend": {
1874
+ "displayMode": "list",
1875
+ "placement": "bottom"
1876
+ },
1877
+ "tooltip": {
1878
+ "mode": "multi",
1879
+ "sort": "desc"
1880
+ }
1881
+ },
1882
+ "targets": [
1883
+ {
1884
+ "datasource": {
1885
+ "type": "prometheus",
1886
+ "uid": "${DS}"
1887
+ },
1888
+ "expr": "fc:sock:tcp_states",
1889
+ "legendFormat": "{{state}}",
1890
+ "refId": "A"
1891
+ }
1892
+ ]
1893
+ },
1894
+ {
1895
+ "id": 37,
1896
+ "type": "timeseries",
1897
+ "title": "Sockets in use (host)",
1898
+ "gridPos": {
1899
+ "h": 7,
1900
+ "w": 8,
1901
+ "x": 8,
1902
+ "y": 63
1903
+ },
1904
+ "datasource": {
1905
+ "type": "prometheus",
1906
+ "uid": "${DS}"
1907
+ },
1908
+ "fieldConfig": {
1909
+ "defaults": {
1910
+ "custom": {
1911
+ "drawStyle": "line",
1912
+ "lineWidth": 1,
1913
+ "fillOpacity": 8,
1914
+ "showPoints": "never",
1915
+ "spanNulls": true
1916
+ },
1917
+ "unit": "short",
1918
+ "min": 0
1919
+ },
1920
+ "overrides": []
1921
+ },
1922
+ "options": {
1923
+ "legend": {
1924
+ "displayMode": "list",
1925
+ "placement": "bottom"
1926
+ },
1927
+ "tooltip": {
1928
+ "mode": "multi",
1929
+ "sort": "desc"
1930
+ }
1931
+ },
1932
+ "targets": [
1933
+ {
1934
+ "datasource": {
1935
+ "type": "prometheus",
1936
+ "uid": "${DS}"
1937
+ },
1938
+ "expr": "fc:sock:sockets_used",
1939
+ "legendFormat": "used",
1940
+ "refId": "A"
1941
+ }
1942
+ ]
1943
+ },
1944
+ {
1945
+ "id": 38,
1946
+ "type": "timeseries",
1947
+ "title": "DNS: system resolver vs 1.1.1.1 control",
1948
+ "gridPos": {
1949
+ "h": 7,
1950
+ "w": 8,
1951
+ "x": 16,
1952
+ "y": 63
1953
+ },
1954
+ "datasource": {
1955
+ "type": "prometheus",
1956
+ "uid": "${DS}"
1957
+ },
1958
+ "fieldConfig": {
1959
+ "defaults": {
1960
+ "custom": {
1961
+ "drawStyle": "line",
1962
+ "lineWidth": 1,
1963
+ "fillOpacity": 8,
1964
+ "showPoints": "never",
1965
+ "spanNulls": true
1966
+ },
1967
+ "unit": "short",
1968
+ "min": 0
1969
+ },
1970
+ "overrides": []
1971
+ },
1972
+ "options": {
1973
+ "legend": {
1974
+ "displayMode": "list",
1975
+ "placement": "bottom"
1976
+ },
1977
+ "tooltip": {
1978
+ "mode": "multi",
1979
+ "sort": "desc"
1980
+ }
1981
+ },
1982
+ "targets": [
1983
+ {
1984
+ "datasource": {
1985
+ "type": "prometheus",
1986
+ "uid": "${DS}"
1987
+ },
1988
+ "expr": "fc:dns:probe_success",
1989
+ "legendFormat": "up {{probe}}",
1990
+ "refId": "A"
1991
+ },
1992
+ {
1993
+ "datasource": {
1994
+ "type": "prometheus",
1995
+ "uid": "${DS}"
1996
+ },
1997
+ "expr": "fc:dns:probe_duration_seconds",
1998
+ "legendFormat": "latency {{probe}}",
1999
+ "refId": "B"
2000
+ }
2001
+ ]
2002
+ },
2003
+ {
2004
+ "id": 39,
2005
+ "type": "row",
2006
+ "title": "Row 8 \u2014 leak detection + workspace families (P4 #973)",
2007
+ "gridPos": {
2008
+ "h": 1,
2009
+ "w": 24,
2010
+ "x": 0,
2011
+ "y": 70
2012
+ },
2013
+ "collapsed": false
2014
+ },
2015
+ {
2016
+ "id": 40,
2017
+ "type": "timeseries",
2018
+ "title": "CLOSE_WAIT by actor (FcCloseWaitLeak >50 @15m)",
2019
+ "description": "Held-open peer sockets the app never reaped \u2014 the classic fd leak. application_name (#969) names the PG-side twin.",
2020
+ "datasource": {
2021
+ "type": "prometheus",
2022
+ "uid": "$DS"
2023
+ },
2024
+ "gridPos": {
2025
+ "h": 8,
2026
+ "w": 8,
2027
+ "x": 0,
2028
+ "y": 71
2029
+ },
2030
+ "fieldConfig": {
2031
+ "defaults": {
2032
+ "custom": {
2033
+ "lineWidth": 1,
2034
+ "fillOpacity": 8
2035
+ }
2036
+ },
2037
+ "overrides": []
2038
+ },
2039
+ "targets": [
2040
+ {
2041
+ "expr": "fc:leak:close_wait",
2042
+ "legendFormat": "{{actor}}",
2043
+ "refId": "A"
2044
+ }
2045
+ ]
2046
+ },
2047
+ {
2048
+ "id": 41,
2049
+ "type": "timeseries",
2050
+ "title": "RSS slope (bytes/s over 30m \u2014 FcRssLeak ~1MB/min @1h)",
2051
+ "description": "Slow-growth leak view: catches drift long before any memory fence.",
2052
+ "datasource": {
2053
+ "type": "prometheus",
2054
+ "uid": "$DS"
2055
+ },
2056
+ "gridPos": {
2057
+ "h": 8,
2058
+ "w": 8,
2059
+ "x": 8,
2060
+ "y": 71
2061
+ },
2062
+ "fieldConfig": {
2063
+ "defaults": {
2064
+ "custom": {
2065
+ "lineWidth": 1,
2066
+ "fillOpacity": 8
2067
+ },
2068
+ "unit": "Bps"
2069
+ },
2070
+ "overrides": []
2071
+ },
2072
+ "targets": [
2073
+ {
2074
+ "expr": "fc:leak:rss_slope_bytes_per_s",
2075
+ "legendFormat": "{{actor}}",
2076
+ "refId": "A"
2077
+ }
2078
+ ]
2079
+ },
2080
+ {
2081
+ "id": 42,
2082
+ "type": "timeseries",
2083
+ "title": "Outbox: oldest due-unsent + backlog (FcOutboxOldest 120s)",
2084
+ "description": "From the shared pg-custom-queries.yaml (pg_outbox) \u2014 relay stall vs broker refusal.",
2085
+ "datasource": {
2086
+ "type": "prometheus",
2087
+ "uid": "$DS"
2088
+ },
2089
+ "gridPos": {
2090
+ "h": 8,
2091
+ "w": 8,
2092
+ "x": 16,
2093
+ "y": 71
2094
+ },
2095
+ "fieldConfig": {
2096
+ "defaults": {
2097
+ "custom": {
2098
+ "lineWidth": 1,
2099
+ "fillOpacity": 8
2100
+ }
2101
+ },
2102
+ "overrides": []
2103
+ },
2104
+ "targets": [
2105
+ {
2106
+ "expr": "fc:outbox:oldest_seconds",
2107
+ "legendFormat": "oldest (s)",
2108
+ "refId": "A"
2109
+ },
2110
+ {
2111
+ "expr": "fc:outbox:backlog",
2112
+ "legendFormat": "backlog (rows)",
2113
+ "refId": "B"
2114
+ }
2115
+ ]
2116
+ },
2117
+ {
2118
+ "id": 43,
2119
+ "type": "timeseries",
2120
+ "title": "Workspace-pod families (F1: bounded, NO channel labels)",
2121
+ "description": "sum/count/max by tier from namespace-derived relabel (prod); locally pods nest inside k3s and this is honestly empty \u2014 per-pod truth lives in replay. pods_count over tier=workspace-pod IS the tenant counter (debt #1 trigger ~1k).",
2122
+ "datasource": {
2123
+ "type": "prometheus",
2124
+ "uid": "$DS"
2125
+ },
2126
+ "gridPos": {
2127
+ "h": 8,
2128
+ "w": 12,
2129
+ "x": 0,
2130
+ "y": 79
2131
+ },
2132
+ "fieldConfig": {
2133
+ "defaults": {
2134
+ "custom": {
2135
+ "lineWidth": 1,
2136
+ "fillOpacity": 8
2137
+ }
2138
+ },
2139
+ "overrides": []
2140
+ },
2141
+ "targets": [
2142
+ {
2143
+ "expr": "fc:workspace:pods_count",
2144
+ "legendFormat": "pods {{tier}}",
2145
+ "refId": "A"
2146
+ },
2147
+ {
2148
+ "expr": "fc:workspace:cpu_cores",
2149
+ "legendFormat": "cores {{tier}}",
2150
+ "refId": "B"
2151
+ }
2152
+ ]
2153
+ },
2154
+ {
2155
+ "id": 44,
2156
+ "type": "timeseries",
2157
+ "title": "Workspace-pod memory (sum + max by tier)",
2158
+ "description": "Family aggregates only \u2014 generations and MISSION pods cannot collide (F1).",
2159
+ "datasource": {
2160
+ "type": "prometheus",
2161
+ "uid": "$DS"
2162
+ },
2163
+ "gridPos": {
2164
+ "h": 8,
2165
+ "w": 12,
2166
+ "x": 12,
2167
+ "y": 79
2168
+ },
2169
+ "fieldConfig": {
2170
+ "defaults": {
2171
+ "custom": {
2172
+ "lineWidth": 1,
2173
+ "fillOpacity": 8
2174
+ },
2175
+ "unit": "bytes"
2176
+ },
2177
+ "overrides": []
2178
+ },
2179
+ "targets": [
2180
+ {
2181
+ "expr": "fc:workspace:rss_bytes",
2182
+ "legendFormat": "sum {{tier}}",
2183
+ "refId": "A"
2184
+ },
2185
+ {
2186
+ "expr": "fc:workspace:rss_bytes_max",
2187
+ "legendFormat": "max {{tier}}",
2188
+ "refId": "B"
2189
+ }
2190
+ ]
2191
+ }
2192
+ ]
2193
+ }