k8s.io/test-infra@v0.0.0-20240520184403-27c6b4c223d8/config/prow/cluster/monitoring/mixins/grafana_dashboards/deck.jsonnet (about) 1 local grafana = import 'grafonnet/grafana.libsonnet'; 2 local dashboard = grafana.dashboard; 3 local graphPanel = grafana.graphPanel; 4 local prometheus = grafana.prometheus; 5 local template = grafana.template; 6 7 local legendConfig = { 8 legend+: { 9 sideWidth: 250, 10 }, 11 }; 12 13 local dashboardConfig = { 14 uid: 'c27162ae7ad9ce08d2dcfa2d5ce7fee8', 15 }; 16 17 dashboard.new( 18 'deck dashboard', 19 time_from='now-1h', 20 schemaVersion=18, 21 ) 22 .addTemplate( 23 template.new( 24 'path', 25 'prometheus', 26 'label_values(deck_http_request_duration_seconds_count{job="deck"}, path)', 27 label='path', 28 allValues='.*', 29 includeAll=true, 30 refresh='time', 31 ) 32 ) 33 .addTemplate( 34 template.new( 35 'method', 36 'prometheus', 37 'label_values(deck_http_request_duration_seconds_count{job="deck"}, method)', 38 label='method', 39 allValues='.*', 40 includeAll=true, 41 refresh='time', 42 ) 43 ) 44 .addTemplate( 45 template.new( 46 'status', 47 'prometheus', 48 'label_values(deck_http_request_duration_seconds_count{job="deck"}, status)', 49 label='status', 50 allValues='.*', 51 includeAll=true, 52 refresh='time', 53 ) 54 ) 55 .addPanel( 56 (graphPanel.new( 57 'median latency with (pre-defined) paths, method ${method}, and status ${status}', 58 description='histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="<path>", method=~"${method}", status=~"${status}"}[5m])) by (le))', 59 datasource='prometheus', 60 legend_alignAsTable=true, 61 legend_rightSide=true, 62 legend_values=true, 63 legend_current=true, 64 legend_avg=true, 65 legend_sort='avg', 66 legend_sortDesc=true, 67 ) + legendConfig) 68 .addTarget(prometheus.target( 69 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/tide", method=~"${method}", status=~"${status}"}[5m])) by (le))', 70 legendFormat='/tide', 71 )) 72 .addTarget(prometheus.target( 73 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/plugin-help.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 74 legendFormat='/plugin-help.js', 75 )) 76 .addTarget(prometheus.target( 77 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/data.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 78 legendFormat='/data.js', 79 )) 80 .addTarget(prometheus.target( 81 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/prowjobs.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 82 legendFormat='/prowjobs.js', 83 )) 84 .addTarget(prometheus.target( 85 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/pr-data.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 86 legendFormat='/pr-data.js', 87 )) 88 .addTarget(prometheus.target( 89 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/log", method=~"${method}", status=~"${status}"}[5m])) by (le))', 90 legendFormat='/log', 91 )) 92 .addTarget(prometheus.target( 93 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/rerun", method=~"${method}", status=~"${status}"}[5m])) by (le))', 94 legendFormat='/rerun', 95 )) 96 .addTarget(prometheus.target( 97 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/spyglass/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 98 legendFormat='/spyglass/', 99 )) 100 .addTarget(prometheus.target( 101 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/view/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 102 legendFormat='/view/', 103 )) 104 .addTarget(prometheus.target( 105 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/job-history/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 106 legendFormat='/job-history/', 107 )) 108 .addTarget(prometheus.target( 109 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path="/pr-history/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 110 legendFormat='/pr-history/', 111 )) 112 .addTarget(prometheus.target( 113 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{path="others", method=~"${method}", status=~"${status}"}[5m])) by (le))', 114 legendFormat='others', 115 )), gridPos={ 116 h: 9, 117 w: 24, 118 x: 0, 119 y: 0, 120 }) 121 .addPanel( 122 (graphPanel.new( 123 'latency percentile with path ${path}, method ${method}, and status ${status}', 124 description='histogram_quantile(<phi>, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (le))', 125 datasource='prometheus', 126 legend_alignAsTable=true, 127 legend_rightSide=true, 128 legend_values=true, 129 legend_current=true, 130 legend_avg=true, 131 legend_sort='avg', 132 legend_sortDesc=true, 133 ) + legendConfig) 134 .addTarget(prometheus.target( 135 'histogram_quantile(0.99, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (le))', 136 legendFormat='phi=0.99', 137 )) 138 .addTarget(prometheus.target( 139 'histogram_quantile(0.95, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (le))', 140 legendFormat='phi=0.95', 141 )) 142 .addTarget(prometheus.target( 143 'histogram_quantile(0.5, sum(rate(deck_http_request_duration_seconds_bucket{job="deck", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (le))', 144 legendFormat='phi=0.5', 145 )), gridPos={ 146 h: 9, 147 w: 24, 148 x: 0, 149 y: 0, 150 }) 151 .addPanel( 152 (graphPanel.new( 153 'traffic: couter by status with path ${path} and method ${method}', 154 description='sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m])) by (status)', 155 datasource='prometheus', 156 legend_alignAsTable=true, 157 legend_rightSide=true, 158 legend_values=true, 159 legend_current=true, 160 legend_avg=true, 161 legend_sort='avg', 162 legend_sortDesc=true, 163 ) + legendConfig) 164 .addTarget(prometheus.target( 165 'sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m])) by (status)', 166 legendFormat='{{status}}', 167 )), gridPos={ 168 h: 9, 169 w: 24, 170 x: 0, 171 y: 0, 172 }) 173 .addPanel( 174 (graphPanel.new( 175 'status percentage with path ${path} and method ${method}', 176 description='sum(rate(deck_http_request_duration_seconds_count{job="deck", status=~"n..", path=~"$path", method=~"$method"}[5m]))/sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path"}[5m]))', 177 datasource='prometheus', 178 legend_alignAsTable=true, 179 legend_rightSide=true, 180 legend_values=true, 181 legend_current=true, 182 legend_avg=true, 183 legend_sort='avg', 184 legend_sortDesc=true, 185 min='0', 186 max='1', 187 stack=true, 188 ) + legendConfig) 189 .addTarget(prometheus.target( 190 'sum(rate(deck_http_request_duration_seconds_count{job="deck", status=~"2..", path=~"$path", method=~"$method"}[5m]))/sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m]))', 191 legendFormat='2XX', 192 )) 193 .addTarget(prometheus.target( 194 'sum(rate(deck_http_request_duration_seconds_count{job="deck", status=~"3..", path=~"$path", method=~"$method"}[5m]))/sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m]))', 195 legendFormat='3XX', 196 )) 197 .addTarget(prometheus.target( 198 'sum(rate(deck_http_request_duration_seconds_count{job="deck", status=~"4..", path=~"$path", method=~"$method"}[5m]))/sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m]))', 199 legendFormat='4XX', 200 )) 201 .addTarget(prometheus.target( 202 'sum(rate(deck_http_request_duration_seconds_count{job="deck", status=~"5..", path=~"$path", method=~"$method"}[5m]))/sum(rate(deck_http_request_duration_seconds_count{job="deck", path=~"$path", method=~"$method"}[5m]))', 203 legendFormat='5XX', 204 )), gridPos={ 205 h: 9, 206 w: 24, 207 x: 0, 208 y: 0, 209 }) 210 .addPanel( 211 (graphPanel.new( 212 'apdex score with target 2.5s and tolerance 10s, path ${path}, method ${method}, and status ${status}', 213 description='( sum(rate(deck_http_request_duration_seconds_bucket{job="deck", le="2.5", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job) + sum(rate(deck_http_request_duration_seconds_bucket{job="deck", le="10", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job) ) / 2 / sum(rate(deck_http_request_duration_seconds_count{path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job)', 214 datasource='prometheus', 215 legend_alignAsTable=true, 216 legend_rightSide=true, 217 legend_values=true, 218 legend_current=true, 219 min='0', 220 max='1', 221 ) + legendConfig) 222 .addTarget(prometheus.target( 223 '( sum(rate(deck_http_request_duration_seconds_bucket{job="deck", le="2.5", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job) + sum(rate(deck_http_request_duration_seconds_bucket{job="deck", le="10", path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job) ) / 2 / sum(rate(deck_http_request_duration_seconds_count{path=~"${path}", method=~"${method}", status=~"${status}"}[5m])) by (job)', 224 )), gridPos={ 225 h: 9, 226 w: 24, 227 x: 0, 228 y: 0, 229 }) 230 .addPanel( 231 (graphPanel.new( 232 'median response size with (pre-defined) paths, method ${method}, and status ${status}', 233 description='histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="<path>", method=~"${method}", status=~"${status}"}[5m])) by (le))', 234 datasource='prometheus', 235 legend_alignAsTable=true, 236 legend_rightSide=true, 237 legend_values=true, 238 legend_current=true, 239 legend_avg=true, 240 legend_sort='avg', 241 legend_sortDesc=true, 242 ) + legendConfig) 243 .addTarget(prometheus.target( 244 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/tide", method=~"${method}", status=~"${status}"}[5m])) by (le))', 245 legendFormat='/tide', 246 )) 247 .addTarget(prometheus.target( 248 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/plugin-help.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 249 legendFormat='/plugin-help.js', 250 )) 251 .addTarget(prometheus.target( 252 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/data.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 253 legendFormat='/data.js', 254 )) 255 .addTarget(prometheus.target( 256 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/prowjobs.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 257 legendFormat='/prowjobs.js', 258 )) 259 .addTarget(prometheus.target( 260 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/pr-data.js", method=~"${method}", status=~"${status}"}[5m])) by (le))', 261 legendFormat='/pr-data.js', 262 )) 263 .addTarget(prometheus.target( 264 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/log", method=~"${method}", status=~"${status}"}[5m])) by (le))', 265 legendFormat='/log', 266 )) 267 .addTarget(prometheus.target( 268 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/rerun", method=~"${method}", status=~"${status}"}[5m])) by (le))', 269 legendFormat='/rerun', 270 )) 271 .addTarget(prometheus.target( 272 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/spyglass/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 273 legendFormat='/spyglass/', 274 )) 275 .addTarget(prometheus.target( 276 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/view/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 277 legendFormat='/view/', 278 )) 279 .addTarget(prometheus.target( 280 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/job-history/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 281 legendFormat='/job-history/', 282 )) 283 .addTarget(prometheus.target( 284 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{job="deck", path="/pr-history/", method=~"${method}", status=~"${status}"}[5m])) by (le))', 285 legendFormat='/pr-history/', 286 )) 287 .addTarget(prometheus.target( 288 'histogram_quantile(0.5, sum(rate(deck_http_response_size_bytes_bucket{path="others", method=~"${method}", status=~"${status}"}[5m])) by (le))', 289 legendFormat='others', 290 )), gridPos={ 291 h: 9, 292 w: 24, 293 x: 0, 294 y: 0, 295 }) 296 + dashboardConfig