local grafana = import 'github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet'; local dashboard = grafana.dashboard; local row = grafana.row; local prometheus = grafana.prometheus; local graphPanel = grafana.graphPanel; { grafanaDashboards+:: { 'apache-http.json': dashboard.new( 'Apache Dashboard', time_from='%s' % $._config.dashboardPeriod, editable=false, tags=($._config.dashboardTags), timezone='%s' % $._config.dashboardTimezone, refresh='%s' % $._config.dashboardRefresh, graphTooltip='shared_crosshair', ).addTemplates( [ { current: { text: 'default', value: 'default', }, hide: 0, label: 'Data Source', name: 'datasource', options: [], query: 'prometheus', refresh: 1, regex: '', type: 'datasource', }, { allValue: null, current: {}, datasource: '${datasource}', hide: 0, includeAll: false, label: 'instance', multi: false, name: 'instance', options: [], query: 'label_values(apache_up, instance)', refresh: 2, sort: 1, tagValuesQuery: '', tags: [], tagsQuery: '', type: 'query', useTags: false, }, ] ) .addPanels([ { datasource: { uid: '${datasource}', }, fieldConfig: { defaults: { color: { mode: 'thresholds', }, decimals: 1, mappings: [ { options: { match: 'null', result: { text: 'N/A', }, }, type: 'special', }, ], thresholds: { mode: 'absolute', steps: [ { color: 'green', value: null, }, { color: 'red', value: 80, }, ], }, unit: 's', }, overrides: [], }, gridPos: { h: 3, w: 4, x: 0, y: 0, }, id: 8, links: [], maxDataPoints: 100, options: { colorMode: 'none', graphMode: 'none', justifyMode: 'auto', orientation: 'horizontal', reduceOptions: { calcs: [ 'mean', ], fields: '', values: false, }, textMode: 'auto', }, pluginVersion: '8.4.5', targets: [ { expr: 'apache_uptime_seconds_total{instance=~"$instance"}', format: 'time_series', intervalFactor: 1, refId: 'A', step: 240, }, ], title: 'Uptime', type: 'stat', }, { id: 5, gridPos: { h: 3, w: 20, x: 4, y: 0, }, type: 'state-timeline', title: 'Apache Up / Down', datasource: { uid: '${datasource}', type: 'prometheus', }, pluginVersion: '8.4.5', links: [], options: { mergeValues: false, showValue: 'never', alignValue: 'left', rowHeight: 0.9, legend: { displayMode: 'list', placement: 'right', }, tooltip: { mode: 'single', sort: 'none', }, }, targets: [ { expr: 'apache_up{instance=~"$instance"}', legendFormat: 'Apache up', interval: '', exemplar: true, format: 'time_series', intervalFactor: 1, refId: 'A', step: 240, datasource: { type: 'prometheus', uid: 'grafanacloud-prom', }, }, ], fieldConfig: { defaults: { custom: { lineWidth: 0, fillOpacity: 70, spanNulls: false, }, color: { mode: 'continuous-GrYlRd', }, mappings: [ { type: 'value', options: { '0': { text: 'Down', color: 'red', index: 1, }, '1': { text: 'Up', color: 'green', index: 0, }, }, }, ], thresholds: { mode: 'absolute', steps: [ { color: 'green', value: null, }, ], }, }, overrides: [], }, timeFrom: null, timeShift: null, }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 2, fill: 1, fillGradient: 0, gridPos: { h: 10, w: 12, x: 0, y: 3, }, hiddenSeries: false, id: 3, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, show: true, total: false, values: true, }, lines: true, linewidth: 1, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [], spaceLength: 10, stack: false, steppedLine: false, targets: [ { expr: 'rate(apache_sent_kilobytes_total{instance=~"$instance"}[5m])', format: 'time_series', intervalFactor: 1, legendFormat: 'Kilobytes Sent', refId: 'A', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Current total kbytes sent', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'deckbytes', logBase: 1, show: true, }, { format: 'short', logBase: 1, show: false, }, ], yaxis: { align: false, }, }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 2, fill: 1, fillGradient: 0, gridPos: { h: 10, w: 12, x: 12, y: 3, }, hiddenSeries: false, id: 1, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, show: true, total: false, values: true, }, lines: true, linewidth: 1, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [], spaceLength: 10, stack: false, steppedLine: false, targets: [ { expr: 'rate(apache_accesses_total{instance=~"$instance"}[5m])', format: 'time_series', intervalFactor: 1, legendFormat: 'Accesses', refId: 'A', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Current total apache accesses', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'short', logBase: 1, show: true, }, { format: 'short', logBase: 1, show: false, }, ], yaxis: { align: false, }, }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 2, fill: 1, fillGradient: 0, gridPos: { h: 10, w: 24, x: 0, y: 13, }, hiddenSeries: false, id: 2, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, rightSide: true, show: true, total: false, values: true, }, lines: true, linewidth: 1, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [], spaceLength: 10, stack: true, steppedLine: false, targets: [ { expr: 'apache_scoreboard{instance=~"$instance"}', format: 'time_series', intervalFactor: 1, legendFormat: '{{ state }}', refId: 'A', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Apache scoreboard statuses', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'short', logBase: 1, show: true, }, { format: 'short', logBase: 1, show: false, }, ], yaxis: { align: false, }, }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 2, fill: 1, fillGradient: 0, gridPos: { h: 10, w: 12, x: 0, y: 23, }, hiddenSeries: false, id: 7, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, show: true, total: false, values: true, }, lines: true, linewidth: 1, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [], spaceLength: 10, stack: true, steppedLine: false, targets: [ { expr: 'apache_workers{instance=~"$instance"}\n', format: 'time_series', intervalFactor: 1, legendFormat: '{{ state }}', refId: 'A', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Apache worker statuses', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'short', logBase: 1, show: true, }, { format: 'short', logBase: 1, show: false, }, ], yaxis: { align: false, }, }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 2, fill: 1, fillGradient: 0, gridPos: { h: 10, w: 12, x: 12, y: 23, }, hiddenSeries: false, id: 4, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, show: true, total: false, values: true, }, lines: true, linewidth: 1, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [], spaceLength: 10, stack: false, steppedLine: false, targets: [ { expr: 'apache_cpuload{instance=~"$instance"}', format: 'time_series', intervalFactor: 1, legendFormat: 'Load', refId: 'A', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Apache CPU load', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'short', logBase: 1, min: '0', show: true, }, { format: 'short', logBase: 1, show: false, }, ], yaxis: { align: false, }, }, ]), }, }