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