def dashboard_row_postgresql(panel_id, node): queries_transactions = [] queries_rows = [] queries_conflicts = [] queries_blocks = [] queries_buffers = [] for measurement in [ 'commit', 'rollback', ]: queries_transactions.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "postgresql" and r["_field"] == "xact_{measurement}" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _field: "{measurement}" }}) ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }) for measurement in [ 'deleted', 'fetched', 'inserted', 'returned', 'updated', ]: queries_rows.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "postgresql" and r["_field"] == "tup_{measurement}" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _field: "{measurement}" }}) ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }) for measurement in [ 'conflicts', 'deadlocks', ]: queries_conflicts.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "postgresql" and r["_field"] == "{measurement}" and r["host"] == "{node.name}" ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }) for measurement in [ 'read', 'hit', ]: queries_blocks.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "postgresql" and r["_field"] == "blks_{measurement}" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _field: "{measurement}" }}) ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }) for measurement, alias in { 'alloc': 'allocated', 'backend': 'written by backend', 'backend_fsync': 'fsync by backend', 'checkpoint': 'written during checkpoints', 'clean': 'written by background writer', }.items(): queries_buffers.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "postgresql" and r["_field"] == "buffers_{measurement}" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _field: "{alias}" }}) ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }) return { 'title': 'postgresql', 'collapse': False, 'editable': False, 'height': '200px', 'panels': [ { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name} ${__field.labels.db}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 6, 'stack': True, 'steppedLine': False, 'targets': queries_transactions, 'thresholds': [], 'timeRegions': [], 'title': 'postgresql transactions per second', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': 0, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name} ${__field.labels.db}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 6, 'stack': True, 'steppedLine': False, 'targets': queries_rows, 'thresholds': [], 'timeRegions': [], 'title': 'postgresql rows per second', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': 0, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name} ${__field.labels.db}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 4, 'stack': True, 'steppedLine': False, 'targets': queries_conflicts, 'thresholds': [], 'timeRegions': [], 'title': 'postgresql conflicts/deadlocks', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': 0, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name} ${__field.labels.db}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 4, 'stack': True, 'steppedLine': False, 'targets': queries_blocks, 'thresholds': [], 'timeRegions': [], 'title': 'postgresql blocks read per second', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': 0, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 4, 'stack': True, 'steppedLine': False, 'targets': queries_buffers, 'thresholds': [], 'timeRegions': [], 'title': 'postgresql buffers', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': 0, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, ], }