@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,1771 @@
1
+ {
2
+ "uid": "fc-multiplexing",
3
+ "title": "Flight Deck \u00b7 Multiplexing",
4
+ "tags": [
5
+ "flight-deck",
6
+ "fc"
7
+ ],
8
+ "timezone": "browser",
9
+ "schemaVersion": 39,
10
+ "version": 1,
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": 39,
148
+ "type": "row",
149
+ "title": "Convoy booleans (\u00a74.2 \u2014 named, legible, alertable)",
150
+ "gridPos": {
151
+ "h": 1,
152
+ "w": 24,
153
+ "x": 0,
154
+ "y": 0
155
+ },
156
+ "collapsed": false,
157
+ "panels": []
158
+ },
159
+ {
160
+ "id": 40,
161
+ "type": "stat",
162
+ "title": "held-tx convoy",
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": "short",
176
+ "thresholds": {
177
+ "mode": "absolute",
178
+ "steps": [
179
+ {
180
+ "color": "green",
181
+ "value": null
182
+ },
183
+ {
184
+ "color": "red",
185
+ "value": 1
186
+ }
187
+ ]
188
+ }
189
+ },
190
+ "overrides": []
191
+ },
192
+ "options": {
193
+ "reduceOptions": {
194
+ "calcs": [
195
+ "lastNotNull"
196
+ ]
197
+ },
198
+ "colorMode": "background",
199
+ "graphMode": "area"
200
+ },
201
+ "targets": [
202
+ {
203
+ "datasource": {
204
+ "type": "prometheus",
205
+ "uid": "${DS}"
206
+ },
207
+ "expr": "fc:convoy:heldtx or on() vector(0)",
208
+ "legendFormat": "",
209
+ "refId": "A"
210
+ }
211
+ ]
212
+ },
213
+ {
214
+ "id": 41,
215
+ "type": "stat",
216
+ "title": "pgbouncer convoy",
217
+ "gridPos": {
218
+ "h": 4,
219
+ "w": 4,
220
+ "x": 4,
221
+ "y": 1
222
+ },
223
+ "datasource": {
224
+ "type": "prometheus",
225
+ "uid": "${DS}"
226
+ },
227
+ "fieldConfig": {
228
+ "defaults": {
229
+ "unit": "short",
230
+ "thresholds": {
231
+ "mode": "absolute",
232
+ "steps": [
233
+ {
234
+ "color": "green",
235
+ "value": null
236
+ },
237
+ {
238
+ "color": "red",
239
+ "value": 1
240
+ }
241
+ ]
242
+ }
243
+ },
244
+ "overrides": []
245
+ },
246
+ "options": {
247
+ "reduceOptions": {
248
+ "calcs": [
249
+ "lastNotNull"
250
+ ]
251
+ },
252
+ "colorMode": "background",
253
+ "graphMode": "area"
254
+ },
255
+ "targets": [
256
+ {
257
+ "datasource": {
258
+ "type": "prometheus",
259
+ "uid": "${DS}"
260
+ },
261
+ "expr": "fc:convoy:pgbouncer or on() vector(0)",
262
+ "legendFormat": "",
263
+ "refId": "A"
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ "id": 42,
269
+ "type": "stat",
270
+ "title": "citus fan-out convoy",
271
+ "gridPos": {
272
+ "h": 4,
273
+ "w": 4,
274
+ "x": 8,
275
+ "y": 1
276
+ },
277
+ "datasource": {
278
+ "type": "prometheus",
279
+ "uid": "${DS}"
280
+ },
281
+ "fieldConfig": {
282
+ "defaults": {
283
+ "unit": "short",
284
+ "thresholds": {
285
+ "mode": "absolute",
286
+ "steps": [
287
+ {
288
+ "color": "green",
289
+ "value": null
290
+ },
291
+ {
292
+ "color": "red",
293
+ "value": 1
294
+ }
295
+ ]
296
+ }
297
+ },
298
+ "overrides": []
299
+ },
300
+ "options": {
301
+ "reduceOptions": {
302
+ "calcs": [
303
+ "lastNotNull"
304
+ ]
305
+ },
306
+ "colorMode": "background",
307
+ "graphMode": "area"
308
+ },
309
+ "targets": [
310
+ {
311
+ "datasource": {
312
+ "type": "prometheus",
313
+ "uid": "${DS}"
314
+ },
315
+ "expr": "fc:convoy:citus_fanout or on() vector(0)",
316
+ "legendFormat": "",
317
+ "refId": "A"
318
+ }
319
+ ]
320
+ },
321
+ {
322
+ "id": 43,
323
+ "type": "stat",
324
+ "title": "gRPC parked",
325
+ "gridPos": {
326
+ "h": 4,
327
+ "w": 4,
328
+ "x": 12,
329
+ "y": 1
330
+ },
331
+ "datasource": {
332
+ "type": "prometheus",
333
+ "uid": "${DS}"
334
+ },
335
+ "fieldConfig": {
336
+ "defaults": {
337
+ "unit": "short",
338
+ "thresholds": {
339
+ "mode": "absolute",
340
+ "steps": [
341
+ {
342
+ "color": "green",
343
+ "value": null
344
+ },
345
+ {
346
+ "color": "red",
347
+ "value": 1
348
+ }
349
+ ]
350
+ }
351
+ },
352
+ "overrides": []
353
+ },
354
+ "options": {
355
+ "reduceOptions": {
356
+ "calcs": [
357
+ "lastNotNull"
358
+ ]
359
+ },
360
+ "colorMode": "background",
361
+ "graphMode": "area"
362
+ },
363
+ "targets": [
364
+ {
365
+ "datasource": {
366
+ "type": "prometheus",
367
+ "uid": "${DS}"
368
+ },
369
+ "expr": "max(fc:convoy:grpc_parked) or on() vector(0)",
370
+ "legendFormat": "",
371
+ "refId": "A"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "id": 44,
377
+ "type": "stat",
378
+ "title": "prefetch HOL",
379
+ "gridPos": {
380
+ "h": 4,
381
+ "w": 4,
382
+ "x": 16,
383
+ "y": 1
384
+ },
385
+ "datasource": {
386
+ "type": "prometheus",
387
+ "uid": "${DS}"
388
+ },
389
+ "fieldConfig": {
390
+ "defaults": {
391
+ "unit": "short",
392
+ "thresholds": {
393
+ "mode": "absolute",
394
+ "steps": [
395
+ {
396
+ "color": "green",
397
+ "value": null
398
+ },
399
+ {
400
+ "color": "red",
401
+ "value": 1
402
+ }
403
+ ]
404
+ }
405
+ },
406
+ "overrides": []
407
+ },
408
+ "options": {
409
+ "reduceOptions": {
410
+ "calcs": [
411
+ "lastNotNull"
412
+ ]
413
+ },
414
+ "colorMode": "background",
415
+ "graphMode": "area"
416
+ },
417
+ "targets": [
418
+ {
419
+ "datasource": {
420
+ "type": "prometheus",
421
+ "uid": "${DS}"
422
+ },
423
+ "expr": "fc:convoy:prefetch_hol or on() vector(0)",
424
+ "legendFormat": "",
425
+ "refId": "A"
426
+ }
427
+ ]
428
+ },
429
+ {
430
+ "id": 45,
431
+ "type": "stat",
432
+ "title": "pinned share (F5 \u00b7 Q9 0.8)",
433
+ "gridPos": {
434
+ "h": 4,
435
+ "w": 4,
436
+ "x": 20,
437
+ "y": 1
438
+ },
439
+ "datasource": {
440
+ "type": "prometheus",
441
+ "uid": "${DS}"
442
+ },
443
+ "fieldConfig": {
444
+ "defaults": {
445
+ "unit": "percentunit",
446
+ "decimals": 2,
447
+ "thresholds": {
448
+ "mode": "absolute",
449
+ "steps": [
450
+ {
451
+ "color": "green",
452
+ "value": null
453
+ },
454
+ {
455
+ "color": "yellow",
456
+ "value": 0.6
457
+ },
458
+ {
459
+ "color": "red",
460
+ "value": 0.8
461
+ }
462
+ ]
463
+ }
464
+ },
465
+ "overrides": []
466
+ },
467
+ "options": {
468
+ "reduceOptions": {
469
+ "calcs": [
470
+ "lastNotNull"
471
+ ]
472
+ },
473
+ "colorMode": "background",
474
+ "graphMode": "area"
475
+ },
476
+ "targets": [
477
+ {
478
+ "datasource": {
479
+ "type": "prometheus",
480
+ "uid": "${DS}"
481
+ },
482
+ "expr": "fc:pgbouncer:pinned_share",
483
+ "legendFormat": "",
484
+ "refId": "A"
485
+ }
486
+ ]
487
+ },
488
+ {
489
+ "id": 46,
490
+ "type": "row",
491
+ "title": "1 \u00b7 node-pg lanes",
492
+ "gridPos": {
493
+ "h": 1,
494
+ "w": 24,
495
+ "x": 0,
496
+ "y": 5
497
+ },
498
+ "collapsed": false,
499
+ "panels": []
500
+ },
501
+ {
502
+ "id": 47,
503
+ "type": "timeseries",
504
+ "title": "logical demand",
505
+ "gridPos": {
506
+ "h": 6,
507
+ "w": 6,
508
+ "x": 0,
509
+ "y": 6
510
+ },
511
+ "datasource": {
512
+ "type": "prometheus",
513
+ "uid": "${DS}"
514
+ },
515
+ "fieldConfig": {
516
+ "defaults": {
517
+ "custom": {
518
+ "drawStyle": "line",
519
+ "lineWidth": 1,
520
+ "fillOpacity": 8,
521
+ "showPoints": "never",
522
+ "spanNulls": true
523
+ },
524
+ "unit": "short",
525
+ "min": 0
526
+ },
527
+ "overrides": []
528
+ },
529
+ "options": {
530
+ "legend": {
531
+ "displayMode": "list",
532
+ "placement": "bottom"
533
+ },
534
+ "tooltip": {
535
+ "mode": "multi",
536
+ "sort": "desc"
537
+ }
538
+ },
539
+ "targets": [
540
+ {
541
+ "datasource": {
542
+ "type": "prometheus",
543
+ "uid": "${DS}"
544
+ },
545
+ "expr": "fc:pool:in_use",
546
+ "legendFormat": "in-use {{lane}}",
547
+ "refId": "A"
548
+ },
549
+ {
550
+ "datasource": {
551
+ "type": "prometheus",
552
+ "uid": "${DS}"
553
+ },
554
+ "expr": "fc:pool:waiting",
555
+ "legendFormat": "waiting {{lane}}",
556
+ "refId": "B"
557
+ }
558
+ ]
559
+ },
560
+ {
561
+ "id": 48,
562
+ "type": "timeseries",
563
+ "title": "physical carriers",
564
+ "gridPos": {
565
+ "h": 6,
566
+ "w": 6,
567
+ "x": 6,
568
+ "y": 6
569
+ },
570
+ "datasource": {
571
+ "type": "prometheus",
572
+ "uid": "${DS}"
573
+ },
574
+ "fieldConfig": {
575
+ "defaults": {
576
+ "custom": {
577
+ "drawStyle": "line",
578
+ "lineWidth": 1,
579
+ "fillOpacity": 8,
580
+ "showPoints": "never",
581
+ "spanNulls": true
582
+ },
583
+ "unit": "short",
584
+ "min": 0
585
+ },
586
+ "overrides": []
587
+ },
588
+ "options": {
589
+ "legend": {
590
+ "displayMode": "list",
591
+ "placement": "bottom"
592
+ },
593
+ "tooltip": {
594
+ "mode": "multi",
595
+ "sort": "desc"
596
+ }
597
+ },
598
+ "targets": [
599
+ {
600
+ "datasource": {
601
+ "type": "prometheus",
602
+ "uid": "${DS}"
603
+ },
604
+ "expr": "fc:pool:size",
605
+ "legendFormat": "size {{lane}}",
606
+ "refId": "A"
607
+ },
608
+ {
609
+ "datasource": {
610
+ "type": "prometheus",
611
+ "uid": "${DS}"
612
+ },
613
+ "expr": "fc:pool:idle",
614
+ "legendFormat": "idle {{lane}}",
615
+ "refId": "B"
616
+ }
617
+ ]
618
+ },
619
+ {
620
+ "id": 49,
621
+ "type": "timeseries",
622
+ "title": "wait-to-acquire",
623
+ "gridPos": {
624
+ "h": 6,
625
+ "w": 6,
626
+ "x": 12,
627
+ "y": 6
628
+ },
629
+ "datasource": {
630
+ "type": "prometheus",
631
+ "uid": "${DS}"
632
+ },
633
+ "fieldConfig": {
634
+ "defaults": {
635
+ "custom": {
636
+ "drawStyle": "line",
637
+ "lineWidth": 1,
638
+ "fillOpacity": 8,
639
+ "showPoints": "never",
640
+ "spanNulls": true
641
+ },
642
+ "unit": "short",
643
+ "min": 0
644
+ },
645
+ "overrides": []
646
+ },
647
+ "options": {
648
+ "legend": {
649
+ "displayMode": "list",
650
+ "placement": "bottom"
651
+ },
652
+ "tooltip": {
653
+ "mode": "multi",
654
+ "sort": "desc"
655
+ }
656
+ },
657
+ "targets": [
658
+ {
659
+ "datasource": {
660
+ "type": "prometheus",
661
+ "uid": "${DS}"
662
+ },
663
+ "expr": "fc:pool:acquire_wait_p99_seconds",
664
+ "legendFormat": "acquire p99 {{lane}} (s)",
665
+ "refId": "A"
666
+ }
667
+ ]
668
+ },
669
+ {
670
+ "id": 50,
671
+ "type": "timeseries",
672
+ "title": "saturation",
673
+ "gridPos": {
674
+ "h": 6,
675
+ "w": 6,
676
+ "x": 18,
677
+ "y": 6
678
+ },
679
+ "datasource": {
680
+ "type": "prometheus",
681
+ "uid": "${DS}"
682
+ },
683
+ "fieldConfig": {
684
+ "defaults": {
685
+ "custom": {
686
+ "drawStyle": "line",
687
+ "lineWidth": 1,
688
+ "fillOpacity": 8,
689
+ "showPoints": "never",
690
+ "spanNulls": true
691
+ },
692
+ "unit": "short",
693
+ "min": 0
694
+ },
695
+ "overrides": []
696
+ },
697
+ "options": {
698
+ "legend": {
699
+ "displayMode": "list",
700
+ "placement": "bottom"
701
+ },
702
+ "tooltip": {
703
+ "mode": "multi",
704
+ "sort": "desc"
705
+ }
706
+ },
707
+ "targets": [
708
+ {
709
+ "datasource": {
710
+ "type": "prometheus",
711
+ "uid": "${DS}"
712
+ },
713
+ "expr": "fc:pool:in_use / fc:pool:size",
714
+ "legendFormat": "{{lane}} occupancy",
715
+ "refId": "A"
716
+ }
717
+ ]
718
+ },
719
+ {
720
+ "id": 51,
721
+ "type": "row",
722
+ "title": "2 \u00b7 PgBouncer (client\u2194server multiplexing)",
723
+ "gridPos": {
724
+ "h": 1,
725
+ "w": 24,
726
+ "x": 0,
727
+ "y": 12
728
+ },
729
+ "collapsed": false,
730
+ "panels": []
731
+ },
732
+ {
733
+ "id": 52,
734
+ "type": "timeseries",
735
+ "title": "logical demand",
736
+ "gridPos": {
737
+ "h": 6,
738
+ "w": 6,
739
+ "x": 0,
740
+ "y": 13
741
+ },
742
+ "datasource": {
743
+ "type": "prometheus",
744
+ "uid": "${DS}"
745
+ },
746
+ "fieldConfig": {
747
+ "defaults": {
748
+ "custom": {
749
+ "drawStyle": "line",
750
+ "lineWidth": 1,
751
+ "fillOpacity": 8,
752
+ "showPoints": "never",
753
+ "spanNulls": true
754
+ },
755
+ "unit": "short",
756
+ "min": 0
757
+ },
758
+ "overrides": []
759
+ },
760
+ "options": {
761
+ "legend": {
762
+ "displayMode": "list",
763
+ "placement": "bottom"
764
+ },
765
+ "tooltip": {
766
+ "mode": "multi",
767
+ "sort": "desc"
768
+ }
769
+ },
770
+ "targets": [
771
+ {
772
+ "datasource": {
773
+ "type": "prometheus",
774
+ "uid": "${DS}"
775
+ },
776
+ "expr": "fc:pgbouncer:cl_active",
777
+ "legendFormat": "cl_active {{db_family}}",
778
+ "refId": "A"
779
+ },
780
+ {
781
+ "datasource": {
782
+ "type": "prometheus",
783
+ "uid": "${DS}"
784
+ },
785
+ "expr": "fc:pgbouncer:cl_waiting",
786
+ "legendFormat": "cl_waiting {{db_family}}",
787
+ "refId": "B"
788
+ }
789
+ ]
790
+ },
791
+ {
792
+ "id": 53,
793
+ "type": "timeseries",
794
+ "title": "physical carriers",
795
+ "gridPos": {
796
+ "h": 6,
797
+ "w": 6,
798
+ "x": 6,
799
+ "y": 13
800
+ },
801
+ "datasource": {
802
+ "type": "prometheus",
803
+ "uid": "${DS}"
804
+ },
805
+ "fieldConfig": {
806
+ "defaults": {
807
+ "custom": {
808
+ "drawStyle": "line",
809
+ "lineWidth": 1,
810
+ "fillOpacity": 8,
811
+ "showPoints": "never",
812
+ "spanNulls": true
813
+ },
814
+ "unit": "short",
815
+ "min": 0
816
+ },
817
+ "overrides": []
818
+ },
819
+ "options": {
820
+ "legend": {
821
+ "displayMode": "list",
822
+ "placement": "bottom"
823
+ },
824
+ "tooltip": {
825
+ "mode": "multi",
826
+ "sort": "desc"
827
+ }
828
+ },
829
+ "targets": [
830
+ {
831
+ "datasource": {
832
+ "type": "prometheus",
833
+ "uid": "${DS}"
834
+ },
835
+ "expr": "fc:pgbouncer:sv_active",
836
+ "legendFormat": "sv_active {{db_family}}",
837
+ "refId": "A"
838
+ },
839
+ {
840
+ "datasource": {
841
+ "type": "prometheus",
842
+ "uid": "${DS}"
843
+ },
844
+ "expr": "fc:pgbouncer:sv_idle",
845
+ "legendFormat": "sv_idle {{db_family}}",
846
+ "refId": "B"
847
+ }
848
+ ]
849
+ },
850
+ {
851
+ "id": 54,
852
+ "type": "timeseries",
853
+ "title": "wait-to-acquire",
854
+ "gridPos": {
855
+ "h": 6,
856
+ "w": 6,
857
+ "x": 12,
858
+ "y": 13
859
+ },
860
+ "datasource": {
861
+ "type": "prometheus",
862
+ "uid": "${DS}"
863
+ },
864
+ "fieldConfig": {
865
+ "defaults": {
866
+ "custom": {
867
+ "drawStyle": "line",
868
+ "lineWidth": 1,
869
+ "fillOpacity": 8,
870
+ "showPoints": "never",
871
+ "spanNulls": true
872
+ },
873
+ "unit": "short",
874
+ "min": 0
875
+ },
876
+ "overrides": []
877
+ },
878
+ "options": {
879
+ "legend": {
880
+ "displayMode": "list",
881
+ "placement": "bottom"
882
+ },
883
+ "tooltip": {
884
+ "mode": "multi",
885
+ "sort": "desc"
886
+ }
887
+ },
888
+ "targets": [
889
+ {
890
+ "datasource": {
891
+ "type": "prometheus",
892
+ "uid": "${DS}"
893
+ },
894
+ "expr": "fc:pgbouncer:maxwait_seconds",
895
+ "legendFormat": "maxwait (s)",
896
+ "refId": "A"
897
+ }
898
+ ]
899
+ },
900
+ {
901
+ "id": 55,
902
+ "type": "timeseries",
903
+ "title": "saturation",
904
+ "gridPos": {
905
+ "h": 6,
906
+ "w": 6,
907
+ "x": 18,
908
+ "y": 13
909
+ },
910
+ "datasource": {
911
+ "type": "prometheus",
912
+ "uid": "${DS}"
913
+ },
914
+ "fieldConfig": {
915
+ "defaults": {
916
+ "custom": {
917
+ "drawStyle": "line",
918
+ "lineWidth": 1,
919
+ "fillOpacity": 8,
920
+ "showPoints": "never",
921
+ "spanNulls": true
922
+ },
923
+ "unit": "short",
924
+ "min": 0
925
+ },
926
+ "overrides": []
927
+ },
928
+ "options": {
929
+ "legend": {
930
+ "displayMode": "list",
931
+ "placement": "bottom"
932
+ },
933
+ "tooltip": {
934
+ "mode": "multi",
935
+ "sort": "desc"
936
+ }
937
+ },
938
+ "targets": [
939
+ {
940
+ "datasource": {
941
+ "type": "prometheus",
942
+ "uid": "${DS}"
943
+ },
944
+ "expr": "fc:pgbouncer:pinned_share",
945
+ "legendFormat": "pinned share (0.8 = raise-together line)",
946
+ "refId": "A"
947
+ }
948
+ ]
949
+ },
950
+ {
951
+ "id": 56,
952
+ "type": "row",
953
+ "title": "3 \u00b7 Citus fan-out (coordinator\u2192workers)",
954
+ "gridPos": {
955
+ "h": 1,
956
+ "w": 24,
957
+ "x": 0,
958
+ "y": 19
959
+ },
960
+ "collapsed": false,
961
+ "panels": []
962
+ },
963
+ {
964
+ "id": 57,
965
+ "type": "timeseries",
966
+ "title": "logical demand",
967
+ "gridPos": {
968
+ "h": 6,
969
+ "w": 6,
970
+ "x": 0,
971
+ "y": 20
972
+ },
973
+ "datasource": {
974
+ "type": "prometheus",
975
+ "uid": "${DS}"
976
+ },
977
+ "fieldConfig": {
978
+ "defaults": {
979
+ "custom": {
980
+ "drawStyle": "line",
981
+ "lineWidth": 1,
982
+ "fillOpacity": 8,
983
+ "showPoints": "never",
984
+ "spanNulls": true
985
+ },
986
+ "unit": "short",
987
+ "min": 0
988
+ },
989
+ "overrides": []
990
+ },
991
+ "options": {
992
+ "legend": {
993
+ "displayMode": "list",
994
+ "placement": "bottom"
995
+ },
996
+ "tooltip": {
997
+ "mode": "multi",
998
+ "sort": "desc"
999
+ }
1000
+ },
1001
+ "targets": [
1002
+ {
1003
+ "datasource": {
1004
+ "type": "prometheus",
1005
+ "uid": "${DS}"
1006
+ },
1007
+ "expr": "sum by (pg_node)(fc:pg:citus_backends{source=\"citus\"})",
1008
+ "legendFormat": "fan-out {{pg_node}}",
1009
+ "refId": "A"
1010
+ }
1011
+ ]
1012
+ },
1013
+ {
1014
+ "id": 58,
1015
+ "type": "timeseries",
1016
+ "title": "physical carriers",
1017
+ "gridPos": {
1018
+ "h": 6,
1019
+ "w": 6,
1020
+ "x": 6,
1021
+ "y": 20
1022
+ },
1023
+ "datasource": {
1024
+ "type": "prometheus",
1025
+ "uid": "${DS}"
1026
+ },
1027
+ "fieldConfig": {
1028
+ "defaults": {
1029
+ "custom": {
1030
+ "drawStyle": "line",
1031
+ "lineWidth": 1,
1032
+ "fillOpacity": 8,
1033
+ "showPoints": "never",
1034
+ "spanNulls": true
1035
+ },
1036
+ "unit": "short",
1037
+ "min": 0
1038
+ },
1039
+ "overrides": []
1040
+ },
1041
+ "options": {
1042
+ "legend": {
1043
+ "displayMode": "list",
1044
+ "placement": "bottom"
1045
+ },
1046
+ "tooltip": {
1047
+ "mode": "multi",
1048
+ "sort": "desc"
1049
+ }
1050
+ },
1051
+ "targets": [
1052
+ {
1053
+ "datasource": {
1054
+ "type": "prometheus",
1055
+ "uid": "${DS}"
1056
+ },
1057
+ "expr": "fc:pg:backends_total",
1058
+ "legendFormat": "backends {{pg_node}}",
1059
+ "refId": "A"
1060
+ }
1061
+ ]
1062
+ },
1063
+ {
1064
+ "id": 59,
1065
+ "type": "timeseries",
1066
+ "title": "wait-to-acquire",
1067
+ "gridPos": {
1068
+ "h": 6,
1069
+ "w": 6,
1070
+ "x": 12,
1071
+ "y": 20
1072
+ },
1073
+ "datasource": {
1074
+ "type": "prometheus",
1075
+ "uid": "${DS}"
1076
+ },
1077
+ "fieldConfig": {
1078
+ "defaults": {
1079
+ "custom": {
1080
+ "drawStyle": "line",
1081
+ "lineWidth": 1,
1082
+ "fillOpacity": 8,
1083
+ "showPoints": "never",
1084
+ "spanNulls": true
1085
+ },
1086
+ "unit": "short",
1087
+ "min": 0
1088
+ },
1089
+ "overrides": []
1090
+ },
1091
+ "options": {
1092
+ "legend": {
1093
+ "displayMode": "list",
1094
+ "placement": "bottom"
1095
+ },
1096
+ "tooltip": {
1097
+ "mode": "multi",
1098
+ "sort": "desc"
1099
+ }
1100
+ },
1101
+ "targets": [
1102
+ {
1103
+ "datasource": {
1104
+ "type": "prometheus",
1105
+ "uid": "${DS}"
1106
+ },
1107
+ "expr": "fc:pg:idle_in_tx_age_max_seconds",
1108
+ "legendFormat": "idle-in-tx age (s)",
1109
+ "refId": "A"
1110
+ },
1111
+ {
1112
+ "datasource": {
1113
+ "type": "prometheus",
1114
+ "uid": "${DS}"
1115
+ },
1116
+ "expr": "fc:pg:idle_in_tx_count",
1117
+ "legendFormat": "idle-in-tx count",
1118
+ "refId": "B"
1119
+ }
1120
+ ]
1121
+ },
1122
+ {
1123
+ "id": 60,
1124
+ "type": "timeseries",
1125
+ "title": "saturation",
1126
+ "gridPos": {
1127
+ "h": 6,
1128
+ "w": 6,
1129
+ "x": 18,
1130
+ "y": 20
1131
+ },
1132
+ "datasource": {
1133
+ "type": "prometheus",
1134
+ "uid": "${DS}"
1135
+ },
1136
+ "fieldConfig": {
1137
+ "defaults": {
1138
+ "custom": {
1139
+ "drawStyle": "line",
1140
+ "lineWidth": 1,
1141
+ "fillOpacity": 8,
1142
+ "showPoints": "never",
1143
+ "spanNulls": true
1144
+ },
1145
+ "unit": "short",
1146
+ "min": 0
1147
+ },
1148
+ "overrides": []
1149
+ },
1150
+ "options": {
1151
+ "legend": {
1152
+ "displayMode": "list",
1153
+ "placement": "bottom"
1154
+ },
1155
+ "tooltip": {
1156
+ "mode": "multi",
1157
+ "sort": "desc"
1158
+ }
1159
+ },
1160
+ "targets": [
1161
+ {
1162
+ "datasource": {
1163
+ "type": "prometheus",
1164
+ "uid": "${DS}"
1165
+ },
1166
+ "expr": "sum(fc:pg:citus_backends{source=\"citus\"})",
1167
+ "legendFormat": "total fan-out (256 = convoy line)",
1168
+ "refId": "A"
1169
+ }
1170
+ ]
1171
+ },
1172
+ {
1173
+ "id": 61,
1174
+ "type": "row",
1175
+ "title": "4 \u00b7 gRPC HTTP/2 channels (per target \u2014 #969)",
1176
+ "gridPos": {
1177
+ "h": 1,
1178
+ "w": 24,
1179
+ "x": 0,
1180
+ "y": 26
1181
+ },
1182
+ "collapsed": false,
1183
+ "panels": []
1184
+ },
1185
+ {
1186
+ "id": 62,
1187
+ "type": "timeseries",
1188
+ "title": "logical demand",
1189
+ "gridPos": {
1190
+ "h": 6,
1191
+ "w": 6,
1192
+ "x": 0,
1193
+ "y": 27
1194
+ },
1195
+ "datasource": {
1196
+ "type": "prometheus",
1197
+ "uid": "${DS}"
1198
+ },
1199
+ "fieldConfig": {
1200
+ "defaults": {
1201
+ "custom": {
1202
+ "drawStyle": "line",
1203
+ "lineWidth": 1,
1204
+ "fillOpacity": 8,
1205
+ "showPoints": "never",
1206
+ "spanNulls": true
1207
+ },
1208
+ "unit": "short",
1209
+ "min": 0
1210
+ },
1211
+ "overrides": []
1212
+ },
1213
+ "options": {
1214
+ "legend": {
1215
+ "displayMode": "list",
1216
+ "placement": "bottom"
1217
+ },
1218
+ "tooltip": {
1219
+ "mode": "multi",
1220
+ "sort": "desc"
1221
+ }
1222
+ },
1223
+ "targets": [
1224
+ {
1225
+ "datasource": {
1226
+ "type": "prometheus",
1227
+ "uid": "${DS}"
1228
+ },
1229
+ "expr": "fc:grpc:inflight",
1230
+ "legendFormat": "inflight {{target}} ({{service}})",
1231
+ "refId": "A"
1232
+ }
1233
+ ]
1234
+ },
1235
+ {
1236
+ "id": 63,
1237
+ "type": "timeseries",
1238
+ "title": "physical carriers",
1239
+ "gridPos": {
1240
+ "h": 6,
1241
+ "w": 6,
1242
+ "x": 6,
1243
+ "y": 27
1244
+ },
1245
+ "datasource": {
1246
+ "type": "prometheus",
1247
+ "uid": "${DS}"
1248
+ },
1249
+ "fieldConfig": {
1250
+ "defaults": {
1251
+ "custom": {
1252
+ "drawStyle": "line",
1253
+ "lineWidth": 1,
1254
+ "fillOpacity": 8,
1255
+ "showPoints": "never",
1256
+ "spanNulls": true
1257
+ },
1258
+ "unit": "short",
1259
+ "min": 0
1260
+ },
1261
+ "overrides": []
1262
+ },
1263
+ "options": {
1264
+ "legend": {
1265
+ "displayMode": "list",
1266
+ "placement": "bottom"
1267
+ },
1268
+ "tooltip": {
1269
+ "mode": "multi",
1270
+ "sort": "desc"
1271
+ }
1272
+ },
1273
+ "targets": [
1274
+ {
1275
+ "datasource": {
1276
+ "type": "prometheus",
1277
+ "uid": "${DS}"
1278
+ },
1279
+ "expr": "fc:grpc:ready",
1280
+ "legendFormat": "ready {{target}} ({{service}})",
1281
+ "refId": "A"
1282
+ }
1283
+ ]
1284
+ },
1285
+ {
1286
+ "id": 64,
1287
+ "type": "timeseries",
1288
+ "title": "wait-to-acquire",
1289
+ "gridPos": {
1290
+ "h": 6,
1291
+ "w": 6,
1292
+ "x": 12,
1293
+ "y": 27
1294
+ },
1295
+ "datasource": {
1296
+ "type": "prometheus",
1297
+ "uid": "${DS}"
1298
+ },
1299
+ "fieldConfig": {
1300
+ "defaults": {
1301
+ "custom": {
1302
+ "drawStyle": "line",
1303
+ "lineWidth": 1,
1304
+ "fillOpacity": 8,
1305
+ "showPoints": "never",
1306
+ "spanNulls": true
1307
+ },
1308
+ "unit": "short",
1309
+ "min": 0
1310
+ },
1311
+ "overrides": []
1312
+ },
1313
+ "options": {
1314
+ "legend": {
1315
+ "displayMode": "list",
1316
+ "placement": "bottom"
1317
+ },
1318
+ "tooltip": {
1319
+ "mode": "multi",
1320
+ "sort": "desc"
1321
+ }
1322
+ },
1323
+ "targets": [
1324
+ {
1325
+ "datasource": {
1326
+ "type": "prometheus",
1327
+ "uid": "${DS}"
1328
+ },
1329
+ "expr": "fc:grpc:transient_failure_rate",
1330
+ "legendFormat": "transient-failure s/s {{target}}",
1331
+ "refId": "A"
1332
+ }
1333
+ ]
1334
+ },
1335
+ {
1336
+ "id": 65,
1337
+ "type": "timeseries",
1338
+ "title": "saturation",
1339
+ "gridPos": {
1340
+ "h": 6,
1341
+ "w": 6,
1342
+ "x": 18,
1343
+ "y": 27
1344
+ },
1345
+ "datasource": {
1346
+ "type": "prometheus",
1347
+ "uid": "${DS}"
1348
+ },
1349
+ "fieldConfig": {
1350
+ "defaults": {
1351
+ "custom": {
1352
+ "drawStyle": "line",
1353
+ "lineWidth": 1,
1354
+ "fillOpacity": 8,
1355
+ "showPoints": "never",
1356
+ "spanNulls": true
1357
+ },
1358
+ "unit": "short",
1359
+ "min": 0
1360
+ },
1361
+ "overrides": []
1362
+ },
1363
+ "options": {
1364
+ "legend": {
1365
+ "displayMode": "list",
1366
+ "placement": "bottom"
1367
+ },
1368
+ "tooltip": {
1369
+ "mode": "multi",
1370
+ "sort": "desc"
1371
+ }
1372
+ },
1373
+ "targets": [
1374
+ {
1375
+ "datasource": {
1376
+ "type": "prometheus",
1377
+ "uid": "${DS}"
1378
+ },
1379
+ "expr": "max by (service, target)(fc:convoy:grpc_parked)",
1380
+ "legendFormat": "parked {{target}} (issue-without-settle)",
1381
+ "refId": "A"
1382
+ }
1383
+ ]
1384
+ },
1385
+ {
1386
+ "id": 66,
1387
+ "type": "row",
1388
+ "title": "5 \u00b7 RabbitMQ channels & consumers",
1389
+ "gridPos": {
1390
+ "h": 1,
1391
+ "w": 24,
1392
+ "x": 0,
1393
+ "y": 33
1394
+ },
1395
+ "collapsed": false,
1396
+ "panels": []
1397
+ },
1398
+ {
1399
+ "id": 67,
1400
+ "type": "timeseries",
1401
+ "title": "logical demand",
1402
+ "gridPos": {
1403
+ "h": 6,
1404
+ "w": 6,
1405
+ "x": 0,
1406
+ "y": 34
1407
+ },
1408
+ "datasource": {
1409
+ "type": "prometheus",
1410
+ "uid": "${DS}"
1411
+ },
1412
+ "fieldConfig": {
1413
+ "defaults": {
1414
+ "custom": {
1415
+ "drawStyle": "line",
1416
+ "lineWidth": 1,
1417
+ "fillOpacity": 8,
1418
+ "showPoints": "never",
1419
+ "spanNulls": true
1420
+ },
1421
+ "unit": "short",
1422
+ "min": 0
1423
+ },
1424
+ "overrides": []
1425
+ },
1426
+ "options": {
1427
+ "legend": {
1428
+ "displayMode": "list",
1429
+ "placement": "bottom"
1430
+ },
1431
+ "tooltip": {
1432
+ "mode": "multi",
1433
+ "sort": "desc"
1434
+ }
1435
+ },
1436
+ "targets": [
1437
+ {
1438
+ "datasource": {
1439
+ "type": "prometheus",
1440
+ "uid": "${DS}"
1441
+ },
1442
+ "expr": "fc:mq:ready_total",
1443
+ "legendFormat": "ready",
1444
+ "refId": "A"
1445
+ },
1446
+ {
1447
+ "datasource": {
1448
+ "type": "prometheus",
1449
+ "uid": "${DS}"
1450
+ },
1451
+ "expr": "fc:mq:unacked_total",
1452
+ "legendFormat": "unacked",
1453
+ "refId": "B"
1454
+ }
1455
+ ]
1456
+ },
1457
+ {
1458
+ "id": 68,
1459
+ "type": "timeseries",
1460
+ "title": "physical carriers",
1461
+ "gridPos": {
1462
+ "h": 6,
1463
+ "w": 6,
1464
+ "x": 6,
1465
+ "y": 34
1466
+ },
1467
+ "datasource": {
1468
+ "type": "prometheus",
1469
+ "uid": "${DS}"
1470
+ },
1471
+ "fieldConfig": {
1472
+ "defaults": {
1473
+ "custom": {
1474
+ "drawStyle": "line",
1475
+ "lineWidth": 1,
1476
+ "fillOpacity": 8,
1477
+ "showPoints": "never",
1478
+ "spanNulls": true
1479
+ },
1480
+ "unit": "short",
1481
+ "min": 0
1482
+ },
1483
+ "overrides": []
1484
+ },
1485
+ "options": {
1486
+ "legend": {
1487
+ "displayMode": "list",
1488
+ "placement": "bottom"
1489
+ },
1490
+ "tooltip": {
1491
+ "mode": "multi",
1492
+ "sort": "desc"
1493
+ }
1494
+ },
1495
+ "targets": [
1496
+ {
1497
+ "datasource": {
1498
+ "type": "prometheus",
1499
+ "uid": "${DS}"
1500
+ },
1501
+ "expr": "fc:mq:consumers",
1502
+ "legendFormat": "consumers",
1503
+ "refId": "A"
1504
+ },
1505
+ {
1506
+ "datasource": {
1507
+ "type": "prometheus",
1508
+ "uid": "${DS}"
1509
+ },
1510
+ "expr": "fc:mq:channels",
1511
+ "legendFormat": "channels",
1512
+ "refId": "B"
1513
+ }
1514
+ ]
1515
+ },
1516
+ {
1517
+ "id": 69,
1518
+ "type": "timeseries",
1519
+ "title": "wait-to-acquire",
1520
+ "gridPos": {
1521
+ "h": 6,
1522
+ "w": 6,
1523
+ "x": 12,
1524
+ "y": 34
1525
+ },
1526
+ "datasource": {
1527
+ "type": "prometheus",
1528
+ "uid": "${DS}"
1529
+ },
1530
+ "fieldConfig": {
1531
+ "defaults": {
1532
+ "custom": {
1533
+ "drawStyle": "line",
1534
+ "lineWidth": 1,
1535
+ "fillOpacity": 8,
1536
+ "showPoints": "never",
1537
+ "spanNulls": true
1538
+ },
1539
+ "unit": "short",
1540
+ "min": 0
1541
+ },
1542
+ "overrides": []
1543
+ },
1544
+ "options": {
1545
+ "legend": {
1546
+ "displayMode": "list",
1547
+ "placement": "bottom"
1548
+ },
1549
+ "tooltip": {
1550
+ "mode": "multi",
1551
+ "sort": "desc"
1552
+ }
1553
+ },
1554
+ "targets": [
1555
+ {
1556
+ "datasource": {
1557
+ "type": "prometheus",
1558
+ "uid": "${DS}"
1559
+ },
1560
+ "expr": "fc:mq:confirm_p99_seconds",
1561
+ "legendFormat": "confirm p99 (s)",
1562
+ "refId": "A"
1563
+ }
1564
+ ]
1565
+ },
1566
+ {
1567
+ "id": 70,
1568
+ "type": "timeseries",
1569
+ "title": "saturation",
1570
+ "gridPos": {
1571
+ "h": 6,
1572
+ "w": 6,
1573
+ "x": 18,
1574
+ "y": 34
1575
+ },
1576
+ "datasource": {
1577
+ "type": "prometheus",
1578
+ "uid": "${DS}"
1579
+ },
1580
+ "fieldConfig": {
1581
+ "defaults": {
1582
+ "custom": {
1583
+ "drawStyle": "line",
1584
+ "lineWidth": 1,
1585
+ "fillOpacity": 8,
1586
+ "showPoints": "never",
1587
+ "spanNulls": true
1588
+ },
1589
+ "unit": "short",
1590
+ "min": 0
1591
+ },
1592
+ "overrides": []
1593
+ },
1594
+ "options": {
1595
+ "legend": {
1596
+ "displayMode": "list",
1597
+ "placement": "bottom"
1598
+ },
1599
+ "tooltip": {
1600
+ "mode": "multi",
1601
+ "sort": "desc"
1602
+ }
1603
+ },
1604
+ "targets": [
1605
+ {
1606
+ "datasource": {
1607
+ "type": "prometheus",
1608
+ "uid": "${DS}"
1609
+ },
1610
+ "expr": "fc:convoy:prefetch_hol or on() vector(0)",
1611
+ "legendFormat": "prefetch HOL",
1612
+ "refId": "A"
1613
+ },
1614
+ {
1615
+ "datasource": {
1616
+ "type": "prometheus",
1617
+ "uid": "${DS}"
1618
+ },
1619
+ "expr": "fc:mq:prefetch_effective",
1620
+ "legendFormat": "prefetch effective",
1621
+ "refId": "B"
1622
+ }
1623
+ ]
1624
+ },
1625
+ {
1626
+ "id": 71,
1627
+ "type": "row",
1628
+ "title": "Cardinality self-watch (C5)",
1629
+ "gridPos": {
1630
+ "h": 1,
1631
+ "w": 24,
1632
+ "x": 0,
1633
+ "y": 40
1634
+ },
1635
+ "collapsed": false,
1636
+ "panels": []
1637
+ },
1638
+ {
1639
+ "id": 72,
1640
+ "type": "timeseries",
1641
+ "title": "TSDB active series vs budget",
1642
+ "gridPos": {
1643
+ "h": 6,
1644
+ "w": 24,
1645
+ "x": 0,
1646
+ "y": 41
1647
+ },
1648
+ "datasource": {
1649
+ "type": "prometheus",
1650
+ "uid": "${DS}"
1651
+ },
1652
+ "fieldConfig": {
1653
+ "defaults": {
1654
+ "custom": {
1655
+ "drawStyle": "line",
1656
+ "lineWidth": 1,
1657
+ "fillOpacity": 8,
1658
+ "showPoints": "never",
1659
+ "spanNulls": true,
1660
+ "thresholdsStyle": {
1661
+ "mode": "line"
1662
+ }
1663
+ },
1664
+ "unit": "short",
1665
+ "min": 0,
1666
+ "thresholds": {
1667
+ "mode": "absolute",
1668
+ "steps": [
1669
+ {
1670
+ "color": "green",
1671
+ "value": null
1672
+ },
1673
+ {
1674
+ "color": "yellow",
1675
+ "value": 45000
1676
+ },
1677
+ {
1678
+ "color": "red",
1679
+ "value": 60000
1680
+ }
1681
+ ]
1682
+ }
1683
+ },
1684
+ "overrides": []
1685
+ },
1686
+ "options": {
1687
+ "legend": {
1688
+ "displayMode": "list",
1689
+ "placement": "bottom"
1690
+ },
1691
+ "tooltip": {
1692
+ "mode": "multi",
1693
+ "sort": "desc"
1694
+ }
1695
+ },
1696
+ "targets": [
1697
+ {
1698
+ "datasource": {
1699
+ "type": "prometheus",
1700
+ "uid": "${DS}"
1701
+ },
1702
+ "expr": "fc:self:active_series",
1703
+ "legendFormat": "active series",
1704
+ "refId": "A"
1705
+ }
1706
+ ]
1707
+ },
1708
+ {
1709
+ "id": 73,
1710
+ "type": "state-timeline",
1711
+ "title": "Per-worker swimlane \u2014 what every jest worker ran (fc:test:running, replay-only #972)",
1712
+ "description": "Synthesized by the flight replay importer from markers.ndjson test.start/test.end (\u00a74.4 step 3): one row per (worker, spec), lit while running. Populated only on $DS=VM-replay.",
1713
+ "datasource": {
1714
+ "type": "prometheus",
1715
+ "uid": "$DS"
1716
+ },
1717
+ "gridPos": {
1718
+ "h": 14,
1719
+ "w": 24,
1720
+ "x": 0,
1721
+ "y": 47
1722
+ },
1723
+ "targets": [
1724
+ {
1725
+ "expr": "max by (wid, spec) (fc:test:running)",
1726
+ "legendFormat": "w{{wid}} \u00b7 {{spec}}",
1727
+ "refId": "A"
1728
+ }
1729
+ ],
1730
+ "fieldConfig": {
1731
+ "defaults": {
1732
+ "custom": {
1733
+ "fillOpacity": 72,
1734
+ "lineWidth": 0,
1735
+ "spanNulls": false
1736
+ },
1737
+ "mappings": [
1738
+ {
1739
+ "type": "value",
1740
+ "options": {
1741
+ "0": {
1742
+ "text": "idle",
1743
+ "color": "transparent",
1744
+ "index": 0
1745
+ },
1746
+ "1": {
1747
+ "text": "running",
1748
+ "color": "semi-dark-blue",
1749
+ "index": 1
1750
+ }
1751
+ }
1752
+ }
1753
+ ]
1754
+ },
1755
+ "overrides": []
1756
+ },
1757
+ "options": {
1758
+ "mergeValues": true,
1759
+ "showValue": "never",
1760
+ "rowHeight": 0.82,
1761
+ "alignValue": "left",
1762
+ "legend": {
1763
+ "showLegend": false
1764
+ },
1765
+ "tooltip": {
1766
+ "mode": "single"
1767
+ }
1768
+ }
1769
+ }
1770
+ ]
1771
+ }