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: 'host', multi: false, name: 'host', options: [], query: 'label_values(apache_up, instance)', refresh: 2, regex: '/([^:]+):.*/', sort: 1, tagValuesQuery: '', tags: [], tagsQuery: '', type: 'query', useTags: false, }, { allValue: null, current: {}, datasource: '${datasource}', hide: 2, includeAll: false, label: null, multi: false, name: 'port', options: [], query: 'label_values(apache_up, instance)', refresh: 1, regex: '/[^:]+:(.*)/', sort: 0, 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=~"$host:$port"}', format: 'time_series', intervalFactor: 1, refId: 'A', step: 240, }, ], title: 'Uptime', type: 'stat', }, { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: { uid: '${datasource}', }, decimals: 0, fill: 7, fillGradient: 0, gridPos: { h: 3, w: 20, x: 4, y: 0, }, hiddenSeries: false, id: 5, legend: { alignAsTable: true, avg: true, current: true, max: true, min: true, rightSide: true, show: true, total: false, values: true, }, lines: true, linewidth: 3, links: [], nullPointMode: 'null', options: { alertThreshold: true, }, percentage: false, pluginVersion: '8.4.5', pointradius: 5, points: false, renderer: 'flot', seriesOverrides: [ { alias: 'Apache Down', color: '#BF1B00', }, { alias: 'Apache Down', transform: 'negative-Y', }, ], spaceLength: 10, stack: false, steppedLine: false, targets: [ { expr: 'count(apache_up{instance=~"$host:$port"} == 1)', format: 'time_series', intervalFactor: 1, legendFormat: 'Apache Up', refId: 'A', step: 240, }, { expr: 'scalar(count(apache_up{instance=~"$host:$port"} == 0))', format: 'time_series', intervalFactor: 1, legendFormat: 'Apache Down', refId: 'B', step: 240, }, ], thresholds: [], timeRegions: [], title: 'Apache Up / Down', tooltip: { shared: true, sort: 0, value_type: 'individual', }, type: 'graph', xaxis: { mode: 'time', show: true, values: [], }, yaxes: [ { format: 'short', logBase: 1, max: '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: 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=~"$host:$port"}[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=~"$host:$port"}[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=~"$host:$port"}', 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=~"$host:$port"}\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=~"$host:$port"}', 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, }, }, ]), }, }