| { |
| "annotations": { |
| "list": [ |
| { |
| "builtIn": 1, |
| "datasource": "-- Grafana --", |
| "enable": true, |
| "hide": true, |
| "iconColor": "rgba(0, 211, 255, 1)", |
| "name": "Annotations & Alerts", |
| "target": { |
| "limit": 100, |
| "matchAny": false, |
| "tags": [], |
| "type": "dashboard" |
| }, |
| "type": "dashboard" |
| } |
| ] |
| }, |
| "editable": true, |
| "gnetId": null, |
| "graphTooltip": 0, |
| "links": [], |
| "panels": [ |
| { |
| "alert": { |
| "conditions": [ |
| { |
| "evaluator": { |
| "params": [ |
| 7200000 |
| ], |
| "type": "gt" |
| }, |
| "operator": { |
| "type": "and" |
| }, |
| "query": { |
| "params": [ |
| "A", |
| "5m", |
| "now" |
| ] |
| }, |
| "reducer": { |
| "params": [], |
| "type": "max" |
| }, |
| "type": "query" |
| } |
| ], |
| "executionErrorState": "alerting", |
| "frequency": "30m", |
| "handler": 1, |
| "name": "Pre-commit job duration per-day alert", |
| "noDataState": "keep_state", |
| "notifications": [] |
| }, |
| "datasource": "BeamPSQL", |
| "description": "Execution time for each pre-commit job.\n\nLong test suite execution impacts developer productivity by delaying the quality signal of a pull request of current HEAD. If tests are consistently slow, developers won't wait for them to complete.\n\nWe aim for under 2 hour execution per test suite, but ideally under 30 mins.", |
| "fieldConfig": { |
| "defaults": { |
| "color": { |
| "mode": "palette-classic" |
| }, |
| "custom": { |
| "axisLabel": "Average job duration", |
| "axisPlacement": "auto", |
| "barAlignment": 0, |
| "drawStyle": "line", |
| "fillOpacity": 0, |
| "gradientMode": "none", |
| "hideFrom": { |
| "legend": false, |
| "tooltip": false, |
| "viz": false |
| }, |
| "lineInterpolation": "linear", |
| "lineWidth": 1, |
| "pointSize": 5, |
| "scaleDistribution": { |
| "type": "linear" |
| }, |
| "showPoints": "never", |
| "spanNulls": true, |
| "stacking": { |
| "group": "A", |
| "mode": "none" |
| }, |
| "thresholdsStyle": { |
| "mode": "line+area" |
| } |
| }, |
| "mappings": [], |
| "min": 0, |
| "thresholds": { |
| "mode": "absolute", |
| "steps": [ |
| { |
| "color": "transparent", |
| "value": null |
| }, |
| { |
| "color": "red", |
| "value": 7200000 |
| } |
| ] |
| }, |
| "unit": "ms" |
| }, |
| "overrides": [] |
| }, |
| "gridPos": { |
| "h": 8, |
| "w": 24, |
| "x": 0, |
| "y": 0 |
| }, |
| "id": 4, |
| "links": [], |
| "options": { |
| "legend": { |
| "calcs": [ |
| "lastNotNull" |
| ], |
| "displayMode": "table", |
| "placement": "right" |
| }, |
| "tooltip": { |
| "mode": "single" |
| } |
| }, |
| "pluginVersion": "8.1.2", |
| "targets": [ |
| { |
| "alias": "", |
| "format": "time_series", |
| "group": [], |
| "metricColumn": "none", |
| "rawQuery": true, |
| "rawSql": "SELECT\n build_timestamp as time,\n build_duration as value,\n substring(job_name from 'beam_PreCommit_#\"%#\"_(Cron|Commit)' for '#') as metric\nFROM\n jenkins_builds\nWHERE\n (build_timestamp BETWEEN $__timeFrom() AND $__timeTo())\n AND build_result = 'SUCCESS'\n AND ((job_name LIKE 'beam_PreCommit_%_Commit')\n OR (job_name LIKE 'beam_PreCommit_%_Cron'))\nORDER BY\n time, metric", |
| "refId": "A", |
| "select": [ |
| [ |
| { |
| "params": [ |
| "value" |
| ], |
| "type": "column" |
| } |
| ] |
| ], |
| "timeColumn": "time", |
| "where": [ |
| { |
| "name": "$__timeFilter", |
| "params": [], |
| "type": "macro" |
| } |
| ] |
| } |
| ], |
| "timeFrom": null, |
| "timeShift": null, |
| "title": "Pre-commit job duration", |
| "type": "timeseries" |
| }, |
| { |
| "datasource": "BeamPSQL", |
| "fieldConfig": { |
| "defaults": { |
| "color": { |
| "mode": "palette-classic" |
| }, |
| "custom": { |
| "axisLabel": "", |
| "axisPlacement": "auto", |
| "barAlignment": 0, |
| "drawStyle": "line", |
| "fillOpacity": 10, |
| "gradientMode": "none", |
| "hideFrom": { |
| "legend": false, |
| "tooltip": false, |
| "viz": false |
| }, |
| "lineInterpolation": "linear", |
| "lineWidth": 1, |
| "pointSize": 5, |
| "scaleDistribution": { |
| "type": "linear" |
| }, |
| "showPoints": "never", |
| "spanNulls": true, |
| "stacking": { |
| "group": "A", |
| "mode": "none" |
| }, |
| "thresholdsStyle": { |
| "mode": "off" |
| } |
| }, |
| "mappings": [], |
| "thresholds": { |
| "mode": "absolute", |
| "steps": [ |
| { |
| "color": "green", |
| "value": null |
| }, |
| { |
| "color": "red", |
| "value": 80 |
| } |
| ] |
| }, |
| "unit": "dtdurationms" |
| }, |
| "overrides": [] |
| }, |
| "gridPos": { |
| "h": 8, |
| "w": 24, |
| "x": 0, |
| "y": 8 |
| }, |
| "id": 6, |
| "links": [], |
| "options": { |
| "legend": { |
| "calcs": [], |
| "displayMode": "table", |
| "placement": "right" |
| }, |
| "tooltip": { |
| "mode": "single" |
| } |
| }, |
| "pluginVersion": "8.1.2", |
| "targets": [ |
| { |
| "format": "time_series", |
| "group": [], |
| "metricColumn": "none", |
| "rawQuery": true, |
| "rawSql": "SELECT\n build_timestamp as time,\n timing_queuingDurationMillis as value,\n substring(job_name from 'beam_PreCommit_#\"%#\"_(Cron|Commit|Phrase)' for '#') as metric\nFROM\n jenkins_builds\nWHERE\n (build_timestamp BETWEEN $__timeFrom() AND $__timeTo())\n AND build_result = 'SUCCESS'\n AND ((job_name LIKE 'beam_PreCommit_%_Commit')\n OR (job_name LIKE 'beam_PreCommit_%_Cron')\n OR (job_name LIKE 'beam_PreCommit_%_Phrase'))\nORDER BY\n time, metric", |
| "refId": "A", |
| "select": [ |
| [ |
| { |
| "params": [ |
| "value" |
| ], |
| "type": "column" |
| } |
| ] |
| ], |
| "timeColumn": "time", |
| "where": [ |
| { |
| "name": "$__timeFilter", |
| "params": [], |
| "type": "macro" |
| } |
| ] |
| } |
| ], |
| "timeFrom": null, |
| "timeShift": null, |
| "title": "Time in queue", |
| "type": "timeseries" |
| }, |
| { |
| "datasource": "BeamPSQL", |
| "fieldConfig": { |
| "defaults": { |
| "color": { |
| "mode": "palette-classic" |
| }, |
| "custom": { |
| "axisLabel": "", |
| "axisPlacement": "auto", |
| "barAlignment": 0, |
| "drawStyle": "line", |
| "fillOpacity": 0, |
| "gradientMode": "none", |
| "hideFrom": { |
| "legend": false, |
| "tooltip": false, |
| "viz": false |
| }, |
| "lineInterpolation": "linear", |
| "lineWidth": 1, |
| "pointSize": 5, |
| "scaleDistribution": { |
| "type": "linear" |
| }, |
| "showPoints": "never", |
| "spanNulls": true, |
| "stacking": { |
| "group": "A", |
| "mode": "none" |
| }, |
| "thresholdsStyle": { |
| "mode": "off" |
| } |
| }, |
| "mappings": [], |
| "thresholds": { |
| "mode": "absolute", |
| "steps": [ |
| { |
| "color": "green", |
| "value": null |
| }, |
| { |
| "color": "red", |
| "value": 80 |
| } |
| ] |
| }, |
| "unit": "dtdurationms" |
| }, |
| "overrides": [] |
| }, |
| "gridPos": { |
| "h": 8, |
| "w": 24, |
| "x": 0, |
| "y": 16 |
| }, |
| "id": 8, |
| "links": [], |
| "options": { |
| "legend": { |
| "calcs": [], |
| "displayMode": "table", |
| "placement": "right" |
| }, |
| "tooltip": { |
| "mode": "single" |
| } |
| }, |
| "pluginVersion": "8.1.2", |
| "targets": [ |
| { |
| "aggregation": "Last", |
| "decimals": 2, |
| "displayAliasType": "Warning / Critical", |
| "displayType": "Regular", |
| "displayValueWithAlias": "Never", |
| "format": "time_series", |
| "group": [], |
| "metricColumn": "none", |
| "rawQuery": true, |
| "rawSql": "SELECT\n DATE_TRUNC('month', build_timestamp) as time,\n percentile_disc(0.9) within group (order by timing_queuingDurationMillis) as value,\n substring(job_name from 'beam_PreCommit_#\"%#\"_(Cron|Commit|Phrase)' for '#') as metric\nFROM\n jenkins_builds\nWHERE\n (build_timestamp BETWEEN $__timeFrom() AND $__timeTo())\n AND build_result = 'SUCCESS'\n AND ((job_name LIKE 'beam_PreCommit_%_Commit')\n OR (job_name LIKE 'beam_PreCommit_%_Cron')\n OR (job_name LIKE 'beam_PreCommit_%_Phrase'))\nGROUP BY\n time, metric\nORDER BY\n time, metric", |
| "refId": "A", |
| "select": [ |
| [ |
| { |
| "params": [ |
| "value" |
| ], |
| "type": "column" |
| } |
| ] |
| ], |
| "timeColumn": "time", |
| "units": "none", |
| "valueHandler": "Number Threshold", |
| "where": [ |
| { |
| "name": "$__timeFilter", |
| "params": [], |
| "type": "macro" |
| } |
| ] |
| } |
| ], |
| "timeFrom": null, |
| "timeShift": null, |
| "title": "Time in queue: 0.9 percentile on month period", |
| "type": "timeseries" |
| } |
| ], |
| "schemaVersion": 30, |
| "style": "dark", |
| "tags": [], |
| "templating": { |
| "list": [] |
| }, |
| "time": { |
| "from": "now-7d", |
| "to": "now" |
| }, |
| "timepicker": { |
| "refresh_intervals": [ |
| "5s", |
| "10s", |
| "30s", |
| "1m", |
| "5m", |
| "15m", |
| "30m", |
| "1h", |
| "2h", |
| "1d" |
| ], |
| "time_options": [ |
| "5m", |
| "15m", |
| "1h", |
| "6h", |
| "12h", |
| "24h", |
| "2d", |
| "7d", |
| "30d" |
| ] |
| }, |
| "timezone": "utc", |
| "title": "Pre-commit Test Latency", |
| "uid": "_TNndF2iz", |
| "version": 1 |
| } |