diff --git a/.gitignore b/.gitignore index f1d54bc021..73f10ecd36 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,6 @@ snapshots/ # yarn yarn.lock -.yarn-integrity \ No newline at end of file +.yarn-integrity +yarn-error.log +utils/yarn-error.log \ No newline at end of file diff --git a/alert-policies/mariadb/innodb-pending-reads-and-writes.yml b/alert-policies/mariadb/innodb-pending-reads-and-writes.yml new file mode 100644 index 0000000000..9e01685cce --- /dev/null +++ b/alert-policies/mariadb/innodb-pending-reads-and-writes.yml @@ -0,0 +1,27 @@ +name: InnoDB Pending Reads and Writes + +description: |+ + This alert is triggered when the aggregate number of pending reads and writes in the MySQL buffer pool is greater than 2 for 5 minutes, which indicates the database engine is backlogged and waiting on resources. + +type: STATIC +nrql: + query: "FROM MysqlSample SELECT max(db.innodb.dataPendingReads) + max(db.innodb.dataPendingWrites) FACET displayName" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 2 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/mariadb/max-connection-errors-per-second.yml b/alert-policies/mariadb/max-connection-errors-per-second.yml new file mode 100644 index 0000000000..c7413771a6 --- /dev/null +++ b/alert-policies/mariadb/max-connection-errors-per-second.yml @@ -0,0 +1,29 @@ +name: Max Connection Errors per Second + +description: |+ + This alert is triggered when there is at least one error against the max_connections limit in a 5 minute window, which indicates you have requests to your MariaDB instance that are failing to connect. + This setting's default is 151, but can vary based on the underlying resources available to your instance. You can review your current max_connections limit with this query: + SHOW VARIABLES LIKE 'max_connections'; + +type: STATIC +nrql: + query: "FROM MysqlSample SELECT max(net.connectionErrorsMaxConnectionsPerSecond) FACET displayName" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: AT_LEAST_ONCE + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/mariadb/questions-per-second.yml b/alert-policies/mariadb/questions-per-second.yml new file mode 100644 index 0000000000..e1496800c1 --- /dev/null +++ b/alert-policies/mariadb/questions-per-second.yml @@ -0,0 +1,59 @@ +name: Questions per Second + +description: |+ + This alert is triggered when the current rate of Questions is greater than 2 standard deviations above the baseline for 60s, which could be an early indicator of a saturation problem for your instance. + It is important to note that this alert is disabled by default and you need to edit the configuration in New Relic One to add a targeted MySQL instance: + "WHERE displayName = 'MySql Instance Name'" + This allows the baseline to be calculated against a single instance instead of all running MySQL instances being monitored. + +type: BASELINE +nrql: + # Cannot use FACET in Baseline alerts + query: "FROM MysqlSample SELECT average(query.questionsPerSecond)" + +# Direction in which baseline is set (Default: LOWER_ONLY) +baselineDirection: UPPER_ONLY + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 2 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 1 + thresholdDuration: 300 + thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: false + # Open "Loss of Signal" violation if signal is lost (Default: false) + openViolationOnExpiration: false + # Time in seconds; Max value: 172800 (48hrs), null if closeViolationsOnExpiration and openViolationOnExpiration are both 'false' + expirationDuration: + +# Advanced Signal Settings +signal: + # Max Value for Baseline conditions = 20 + evaluationOffset: 3 + # Type of value that should be used to fill gaps + fillOption: NONE + # Integer; Used in conjunction with STATIC fillOption, otherwise null + fillValue: + +# OPTIONAL: URL of runbook to be sent with notification +runbookUrl: + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/mariadb/slow-queries-per-second.yml b/alert-policies/mariadb/slow-queries-per-second.yml new file mode 100644 index 0000000000..7bc4a942fb --- /dev/null +++ b/alert-policies/mariadb/slow-queries-per-second.yml @@ -0,0 +1,29 @@ +name: Slow Queries per Second + +description: |+ + This alert is triggered when the number of slow queries per second is greater than 5 for 5 minutes, which could indicate capacity issues or a query that has been changed and is experiencing performance issues. + The Slow_queries counter increments based on your settings applied to MySQL's long_query_time parameter (default 10s), which you can review with this query: + SHOW VARIABLES LIKE 'long_query_time'; + +type: STATIC +nrql: + query: "FROM MysqlSample SELECT average(query.slowQueriesPerSecond) FACET displayName" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 5 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/redis/blocked-clients.yml b/alert-policies/redis/blocked-clients.yml new file mode 100644 index 0000000000..bb0e412490 --- /dev/null +++ b/alert-policies/redis/blocked-clients.yml @@ -0,0 +1,27 @@ +name: Blocked clients alert + +description: |+ + This alert is triggered when at least one blocked client occurs. + +type: STATIC +nrql: + query: "SELECT sum(`net.blockedClients`) FROM RedisSample facet entityName" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/redis/current-connections-anomaly.yml b/alert-policies/redis/current-connections-anomaly.yml new file mode 100644 index 0000000000..34063e10af --- /dev/null +++ b/alert-policies/redis/current-connections-anomaly.yml @@ -0,0 +1,62 @@ +name: Anomalies in current connections + +# Description and details +description: | + This alert is triggered when the number of current connections deviates from the norm either up or down. + +# Type of alert: BASELINE | STATIC +type: BASELINE + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# NRQL query +nrql: + query: "SELECT max(`net.connectedClients`) FROM RedisSample facet entityName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +baselineDirection: UPPER_AND_LOWER + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 30 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 3600 + # How many data points must be in violation for the duration + thresholdOccurrences: AT_LEAST_ONCE + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 5 + thresholdDuration: 300 + thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: false + # Open "Loss of Signal" violation if signal is lost (Default: false) + openViolationOnExpiration: false + # Time in seconds; Max value: 172800 (48hrs), null if closeViolationsOnExpiration and openViolationOnExpiration are both 'false' + expirationDuration: + +# Advanced Signal Settings +signal: + # Max Value for Baseline conditions = 20 + evaluationOffset: 3 + # Type of value that should be used to fill gaps + fillOption: NONE + # Integer; Used in conjunction with STATIC fillOption, otherwise null + fillValue: + +# OPTIONAL: URL of runbook to be sent with notification +runbookUrl: + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/dashboards/k6-prometheus/k6-prometheus.json b/dashboards/k6-prometheus/k6-prometheus.json new file mode 100644 index 0000000000..a1bae3befd --- /dev/null +++ b/dashboards/k6-prometheus/k6-prometheus.json @@ -0,0 +1,629 @@ +{ + "name": "k6 - Prometheus", + "description": "", + "pages": [ + { + "name": "k6", + "description": "", + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/K6-logo.svg/1200px-K6-logo.svg.png)" + } + }, + { + "title": "Virtual Users", + "layout": { + "column": 2, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(k6_vus) FROM Metric TIMESERIES SINCE 1800 seconds ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response time: 99th", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(k6_http_req_duration_p99) as '99th' FROM Metric TIMESERIES SINCE 1800 seconds ago" + }, + { + "accountId": 0, + "query": "SELECT max(k6.http_req_duration) as 'Max Duration', average(k6.http_req_duration.median) as 'Median', average(k6.http_req_duration.mean) as 'Avg' FROM Metric TIMESERIES SINCE 1800 seconds ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "All k6 metrics", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 12 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select uniques(metricName) where metricName like 'k6%' limit max" + } + ] + } + }, + { + "title": "Requests total", + "layout": { + "column": 2, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select rate(max(k6_http_reqs_total), 1 seconds) from Metric timeseries 10 second since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests Histogram", + "layout": { + "column": 6, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(`k6_http_reqs_total`, 80, 20) FROM Metric SINCE 30 minutes AGO UNTIL NOW " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data Sent/Received (B)", + "layout": { + "column": 2, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(k6_data_received_total) as 'Data Received', max(k6_data_sent_total) as 'Data Sent' FROM Metric TIMESERIES 10 seconds since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Blocked Requests 99th", + "layout": { + "column": 6, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(k6_http_req_blocked_p99) as 'Blocked Requests' timeseries 10 seconds since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ramping Rate", + "layout": { + "column": 2, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select derivative(k6_http_reqs_total, 30 seconds) as 'Ramping Rate /reqs' from Metric timeseries since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failed Rate", + "layout": { + "column": 6, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select sum(k6_http_req_failed_rate) as 'Failed Rate' from Metric timeseries since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Iterations", + "layout": { + "column": 2, + "row": 13, + "width": 8, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select sum(k6_iterations_total) as 'Total Iterations' from Metric timeseries since 30 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Infrastructure Scaling Impact", + "description": "", + "widgets": [ + { + "title": "ELB Instances (Scalability)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(host) as 'ELB Instances' FROM Metric WHERE appName like '%' TIMESERIES auto SINCE 1800 seconds ago until 2 minutes ago facet host " + } + ] + } + }, + { + "title": "Memory Utilization Percentage", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(apm.service.memory.physical) as 'Percent Utilization' FROM Metric where appName like '%' TIMESERIES SINCE 1800 seconds ago" + } + ] + } + }, + { + "title": "k6 Virtual Users", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(k6.vus) FROM Metric TIMESERIES " + } + ] + } + }, + { + "title": "Requests Per Minute", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(count(*), 1 minute) AS 'Requests per minute' FROM Transaction WHERE appName like '%' TIMESERIES SINCE 1800 seconds ago EXTRAPOLATE" + } + ] + } + }, + { + "title": "CPU Utilization Percentage", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT max(apm.service.cpu.usertime.utilization) FROM Metric WHERE appName like '%' TIMESERIES SINCE 1800 seconds ago" + } + ] + } + }, + { + "title": "Errors by host", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "from TransactionError SELECT count(*) facet host where appName like '%'" + } + ] + } + } + ] + }, + { + "name": "Application Impact", + "description": "", + "widgets": [ + { + "title": "Attribute Sheet", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*), uniqueCount(session) as 'Browser Sessions', max(duration), sum(k6.vus) FROM PageView, Transaction, Metric" + } + ] + } + }, + { + "title": "Transaction Duration Histogram", + "layout": { + "column": 5, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(duration, 0.05, 10) FROM Transaction where appName like '%'" + } + ] + } + }, + { + "title": "k6 Virtual Users", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(k6.vus) as 'k6 VUs' FROM Metric TIMESERIES" + } + ] + } + }, + { + "title": "Duration: Real vs k6", + "layout": { + "column": 1, + "row": 4, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "from Span SELECT sum(duration)as 'k6 User Agents' timeseries where appName like '%' and request.headers.userAgent like 'k6%'" + }, + { + "accountId": 0, + "query": "from Span SELECT sum(duration) as 'Non-k6 User Agents' timeseries where appName like '%' and request.headers.userAgent not like 'k6%' " + } + ] + } + }, + { + "title": "k6 user agents: slowest pages", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "from Span SELECT sum(duration) as '(s), k6 User Agents' where appName like '%' where request.headers.userAgent like 'k6%' facet request.uri " + } + ] + } + }, + { + "title": "Errors: Real vs k6", + "layout": { + "column": 1, + "row": 8, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "from TransactionError SELECT count(error) as 'Non-k6 User Agents' timeseries where appName like '%' AND request.headers.userAgent not like 'k6%' " + }, + { + "accountId": 0, + "query": "from TransactionError SELECT count(error) as 'k6 User Agents' timeseries where appName like '%' AND request.headers.userAgent like 'k6%' " + } + ] + } + }, + { + "title": "real user agents: slowest pages", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "from Span SELECT sum(duration) as '(s), k6 User Agents' where appName like '%' AND request.headers.userAgent not like 'k6%' and request.uri != '/favicon.ico' and request.uri != '/stylesheets/style.css' facet request.uri limit max" + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/k6-prometheus/k6-prometheus.png b/dashboards/k6-prometheus/k6-prometheus.png new file mode 100644 index 0000000000..dcd2e75c6b Binary files /dev/null and b/dashboards/k6-prometheus/k6-prometheus.png differ diff --git a/dashboards/mariadb/mariadb.json b/dashboards/mariadb/mariadb.json new file mode 100644 index 0000000000..a24115fe98 --- /dev/null +++ b/dashboards/mariadb/mariadb.json @@ -0,0 +1,2678 @@ +{ + "name": "MariaDB Overview", + "description": null, + "pages": [ + { + "name": "MariaDB Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![MariaDB logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/bf4f357f1b0eb51e7edd3d617df9370ae5ea6189/quickstarts/mariadb/logo.svg)" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Overview\n[MariaDB](https://www.mysql.com/) Server is one of the most popular open source relational databases. It’s made by the original developers of MySQL and guaranteed to stay open source. It is part of most cloud offerings and the default in most Linux distributions.\n\n---\n\n#### About this dashboard\n\n* For information on the MariaDB on-host integration, please visit the documentation [here](https://docs.newrelic.com/install/mysql/).\n* To view the source code, please visit the [nri-mysql repository](https://github.com/newrelic/nri-mysql).\n* Use the `Node` variable at the top of this page to filter your results." + } + }, + { + "title": "Node Inventory", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n latest(entity.name) AS 'Node'\nFACET \n mysql.hostname AS 'Hostname',\n mysql.clusterNodeType AS 'Node Type',\n mysql.port AS 'TCP Port',\n mysql.version AS 'MariaDB Version',\n mysql.edition AS 'MariaDB Edition'\nWHERE metricName = 'mysql.node.net.maxUsedConnections' AND entity.name IN ( {{mysql_node}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Database Connections\n\nActive connections and connection attempts per second" + } + }, + { + "title": "Current Active Connections", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n latest(mysql.node.net.threadsConnected) AS 'Active Connections'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Max Active Connections", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.net.threadsConnected) AS 'Max Connections'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Connections per Second", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.net.connectionsPerSecond) AS 'Connections per Second'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Database Operations\n\n`SELECT`, `INSERT`, `UPDATE`, and `DELETE` statements executed per second" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Database Waits\n\nWaits per second due to failed requests for a table lock" + } + }, + { + "title": "Operations per Second", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.query.insertPerSecond) AS 'Insert Commands', \n average(mysql.node.query.selectPerSecond) AS 'Select Commands', \n average(mysql.node.query.updatePerSecond) AS 'Update Comands', \n average(mysql.node.query.deletePerSecond) AS 'Delete Commands'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Waits per Second", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.tablesLocksWaitedPerSecond) AS 'Waits'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 14, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Database Queries\n\nTotal queries per second (including stored programs), Percentage of queries per second exceeding the `long_query_time` parameter, and Total queries per second, filtered to only clients (Questions)" + } + }, + { + "title": "Queries per Second", + "layout": { + "column": 1, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.query.queriesPerSecond) AS 'Queries'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Slow Query %", + "layout": { + "column": 5, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n (average(mysql.node.query.slowQueriesPerSecond)/average(mysql.node.query.queriesPerSecond))*100 AS 'Slow Query Rate'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Questions per Second", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.query.questionsPerSecond) AS 'Questions'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 18, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Database Throughput\n\nNetwork byte throughput (Sent and Received) and [InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.html) tables data Read/Write rates" + } + }, + { + "title": "Network Bytes/sec", + "layout": { + "column": 1, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.net.bytesReceivedPerSecond) AS 'Received', \n average(mysql.node.net.bytesSentPerSecond) AS 'Sent'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + }, + { + "title": "InnoDB R/W Bytes/sec", + "layout": { + "column": 7, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.innodb.dataReadBytesPerSecond) AS 'Read InnoDB Data', \n average(mysql.node.innodb.dataWrittenBytesPerSecond) AS 'Write InnoDB Data'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + } + ] + }, + { + "name": "Extended Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Extended Metrics\n\nThis page is populated with the [extended metrics](https://docs.newrelic.com/install/mysql/#extended-metrics) collected when enabled in the [integration configuration file](https://github.com/newrelic/nri-mysql/blob/master/mysql-config.yml.sample).\n\nExample:\n\n```yaml\nintegrations:\n- name: nri-mysql\n env:\n EXTENDED_METRICS: true # Default: false\n ...\n```" + } + }, + { + "title": "Execution Timeout Exceeded per Second", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.maxExecutionTimeExceededPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Temporary Objects\n\nTemp tables and files created per second" + } + }, + { + "title": "Temporary Tables per Second", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.createdTmpTablesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Temporary Tables on Disk per Second", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.createdTmpDiskTablesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Temporary Files per Second", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.createdTmpFilesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Open Tables Cache\n\nHits, Misses, and Overflows per second" + } + }, + { + "title": "Cache Hits per Second", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.tableOpenCacheHitsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Misses per Second", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.tableOpenCacheMissesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Overflows per Second", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.tableOpenCacheOverflowsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Thread Cache\n\nTotal count and rates for creation and misses" + } + }, + { + "title": "Total Threads in Cache", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.threadsCached)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Threads Created per Second", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.threadsCreatedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Thread Cache Miss Rate", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.threadCacheMissRate)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 16, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Query Performance\n\nVarious metrics that indicate performance pressure that could be optimized by redesigning queries and/or tables" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 17, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of joins that perform table scans because they do not use indexes, per second." + } + }, + { + "title": "Full Join per Second", + "layout": { + "column": 2, + "row": 17, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.selectFullJoinPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 17, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of joins per second that used a range search on a reference table." + } + }, + { + "title": "Range Search Join per Second", + "layout": { + "column": 8, + "row": 17, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.selectFullJoinRangePerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 20, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of joins per second without keys that check for key usage after each row." + } + }, + { + "title": "Key Check Join per Second", + "layout": { + "column": 2, + "row": 20, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.selectRangeCheckPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 20, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of joins per second that used ranges on the first table." + } + }, + { + "title": "First Table Range Join per Second", + "layout": { + "column": 8, + "row": 20, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.selectRangePerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 23, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of merge passes that the sort algorithm has had to do, per second." + } + }, + { + "title": "Sort Merge Passes per Second", + "layout": { + "column": 2, + "row": 23, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.sortMergePassesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 23, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of sorts per second that were done using ranges." + } + }, + { + "title": "Sort Range per Second", + "layout": { + "column": 8, + "row": 23, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.sortRangePerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 26, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of sorted rows per second." + } + }, + { + "title": "Sort Rows per Second", + "layout": { + "column": 2, + "row": 26, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.sortRowsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 26, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Number of sorts that were done by scanning the table, per second." + } + }, + { + "title": "Sort Scans per Second", + "layout": { + "column": 8, + "row": 26, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\nmax(mysql.node.sortScanPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Extended InnoDB Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Extended InnoDB Metrics\n\nThis page is populated with both the default and [extended InnoDB metrics](https://docs.newrelic.com/install/mysql/#extended-innodb-metrics), which are collected when enabled in the [integration configuration file](https://github.com/newrelic/nri-mysql/blob/master/mysql-config.yml.sample).\n\nExample:\n\n```yaml\nintegrations:\n- name: nri-mysql\n env:\n EXTENDED_INNODB_METRICS: true # Default: false\n ...\n```" + } + }, + { + "title": "Buffer Pool Requests vs Reads from Disk (%)", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n (latest(mysql.node.innodb.bufferPool.pagesTotal) - latest(mysql.node.innodb.bufferPool.pagesFree))/latest(mysql.node.innodb.bufferPool.pagesTotal)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB Table Activity" + } + }, + { + "title": "InnoDB Read bytes per second", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataReadBytesPerSecond) AS 'Read'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Write bytes per second", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataWrittenBytesPerSecond) AS 'Write'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB Logs and Table Row Locks" + } + }, + { + "title": "InnoDB Log Waits per second", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.logWaitsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Row Lock Waits per second", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.rowLockWaitsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Row Lock Time (ms)", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n average(mysql.node.innodb.rowLockTimeAvg)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB Buffer Pool Pages and Read-Ahead" + } + }, + { + "title": "Buffer Pool Dirty Pages", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.pagesDirty)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Pages Flushed per second", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.pagesFlushedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Read-Ahead Eviction Rate", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.readAheadEvictedPerSecond)/max(mysql.node.innodb.bufferPool.readAheadPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Read Requests per second", + "layout": { + "column": 1, + "row": 16, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.readRequestsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Reads per seond", + "layout": { + "column": 4, + "row": 16, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.readsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Write Requests per second", + "layout": { + "column": 7, + "row": 16, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.writeRequestsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Buffer Pool Waits per second", + "layout": { + "column": 10, + "row": 16, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.bufferPool.waitFreePerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 19, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB `fsync()` Operations, Data, and Redo Log Activity" + } + }, + { + "title": "InnoDB Open Files", + "layout": { + "column": 1, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.numOpenFiles)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB fsync() Operations per second", + "layout": { + "column": 5, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataFsyncsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Pending fsync() Operations", + "layout": { + "column": 9, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataPendingFsyncs)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Pending Reads", + "layout": { + "column": 1, + "row": 23, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataPendingReads)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InnoDB Pending Writes", + "layout": { + "column": 7, + "row": 23, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.dataPendingWrites)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Log Write Requests per second", + "layout": { + "column": 1, + "row": 26, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.logWriteRequestsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Log Writes per second", + "layout": { + "column": 7, + "row": 26, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.logWritesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 29, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB Pages Activity" + } + }, + { + "title": "Pages Created per second", + "layout": { + "column": 1, + "row": 30, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.pagesCreatedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pages Read per second", + "layout": { + "column": 5, + "row": 30, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.pagesReadPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pages Written per second", + "layout": { + "column": 9, + "row": 30, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.pagesWrittenPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 33, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### InnoDB Table Row Activity" + } + }, + { + "title": "Rows Deleted per second", + "layout": { + "column": 1, + "row": 34, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.rowsDeletedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rows Inserted per second", + "layout": { + "column": 7, + "row": 34, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.rowsInsertedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rows Read per second", + "layout": { + "column": 1, + "row": 37, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.rowsReadPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rows Updated per second", + "layout": { + "column": 7, + "row": 37, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.innodb.rowsUpdatedPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Extended MyISAM Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Extended MyISAM Metrics\n\nThis page is populated with the [extended MyISAM metrics](https://docs.newrelic.com/install/mysql/#extended-myisam-metrics) collected when enabled in the [integration configuration file](https://github.com/newrelic/nri-mysql/blob/master/mysql-config.yml.sample).\n\nExample:\n\n```yaml\nintegrations:\n- name: nri-mysql\n env:\n EXTENDED_MY_ISAM_METRICS: true # Default: false\n ...\n```" + } + }, + { + "title": "Key Cache Utilization %", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyCacheUtilization)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Key Blocks Not Flushed", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyBlocksNotFlushed)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Key Read Requests per second", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyReadRequestsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Key Reads per second", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyReadsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Key Write Requests per second", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyWriteRequestsPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Key Writes per second", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.myisam.keyWritesPerSecond)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Extended Cluster Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Extended Cluster Metrics\n\nThis page is populated with the [extended cluster metrics](https://docs.newrelic.com/install/mysql/#extended-slave-cluster-metrics) collected when `extended metrics` are enabled in the [integration configuration file](https://github.com/newrelic/nri-mysql/blob/master/mysql-config.yml.sample) and the integration has found an active slave node (`mysql.node.cluster.slaveRunning: 1`)\n\nExample:\n\n```yaml\nintegrations:\n- name: nri-mysql\n env:\n EXTENDED_METRICS: true # Default: false\n ...\n```" + } + }, + { + "title": "Current Replication Status", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n latest(mysql.clusterSlaveIoRunning) AS 'Slave IO Running',\n latest(mysql.clusterSlaveSqlRunning) AS 'Slave SQL Running'\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Relay Log Files Combines (bytes)", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.relayLogSpace)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Seconds Behind Master Replica Sync", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT\n max(mysql.node.cluster.secondsBehindMaster)\nFACET entity.name AS 'Node'\nWHERE entity.name IN ( {{mysql_node}} )\nTIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "mysql_node", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(entity.name, 5)\nWHERE metricName = 'mysql.node.net.maxUsedConnections'\nSINCE 1 WEEK AGO LIMIT MAX" + }, + "title": "Node", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/mariadb/mariadb1.png b/dashboards/mariadb/mariadb1.png new file mode 100644 index 0000000000..f505d00584 Binary files /dev/null and b/dashboards/mariadb/mariadb1.png differ diff --git a/dashboards/mariadb/mariadb2.png b/dashboards/mariadb/mariadb2.png new file mode 100644 index 0000000000..b2ccacb5df Binary files /dev/null and b/dashboards/mariadb/mariadb2.png differ diff --git a/dashboards/mariadb/mariadb3.png b/dashboards/mariadb/mariadb3.png new file mode 100644 index 0000000000..e060d75b6e Binary files /dev/null and b/dashboards/mariadb/mariadb3.png differ diff --git a/dashboards/windows-certs/windows-certs-expiration.json b/dashboards/windows-certs/windows-certs-expiration.json index 8f8b236ff7..9131892c81 100644 --- a/dashboards/windows-certs/windows-certs-expiration.json +++ b/dashboards/windows-certs/windows-certs-expiration.json @@ -1,575 +1,575 @@ { - "name": "Windows Cert Expiration", - "description": "Dashboard to view hosts with upcoming expiring certs, in 7, 30, 90 and 120 day views", - "pages": [ - { - "name": "Cert Expiration", - "description": null, - "widgets": [ - { - "title": "Hosts With Certs Expiring in 7 Days", - "layout": { - "column": 1, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 7 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + "name": "Windows Cert Expiration", + "description": "Dashboard to view hosts with upcoming expiring certs, in 7, 30, 90 and 120 day views", + "pages": [ + { + "name": "Cert Expiration", + "description": "", + "widgets": [ + { + "title": "Hosts With Certs Expiring in 7 Days", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 }, - { - "title": "Hosts With Certs Expiring in 30 Days", - "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 30 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - { - "title": "Hosts With Certs Expiring in 90 Days", - "layout": { - "column": 1, - "row": 3, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 90 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "WARNING", - "value": 0 - } - ] - } + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 7 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Hosts With Certs Expiring in 30 Days", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 }, - { - "title": "Hosts With Certs Expiring in 120 days", - "layout": { - "column": 7, - "row": 3, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 120 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "WARNING", - "value": 0 - } - ] - } + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - { - "title": "", - "layout": { - "column": 1, - "row": 5, - "width": 12, - "height": 5 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "dataFormatters": [ - { - "format": "%b %d, %Y", - "name": "ExpirationDate", - "type": "custom" - } - ], - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT timestamp, ExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName since 48 hours ago limit max" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 30 since 48 hours ago" } - } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] } - ] - }, - { - "name": "7 Days", - "description": null, - "widgets": [ - { - "title": "Hosts with Certs Expiring in 7 Days", - "layout": { - "column": 1, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 7 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + }, + { + "title": "Hosts With Certs Expiring in 90 Days", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 2 }, - { - "title": "Certs Expiring in 7 Days", - "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(Issuer, subject) where ExpiringIn.Days < 7 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - { - "title": "", - "layout": { - "column": 1, - "row": 3, - "width": 12, - "height": 8 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT timestamp, ExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 7 since 48 hours ago limit max" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 90 since 48 hours ago" } - } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] } - ] - }, - { - "name": "30 Days", - "description": null, - "widgets": [ - { - "title": "Hosts with Certs Expiring in 30 Days", - "layout": { - "column": 1, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 30 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + }, + { + "title": "Hosts With Certs Expiring in 120 days", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 2 }, - { - "title": "Certs Expiring in 30 Days", - "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(Issuer, subject) where ExpiringIn.Days < 30 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - { - "title": "", - "layout": { - "column": 1, - "row": 3, - "width": 12, - "height": 8 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT timestamp, ExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 30 since 48 hours ago limit max" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 120 since 48 hours ago" } - } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] } - ] - }, - { - "name": "90 Days", - "description": null, - "widgets": [ - { - "title": "Hosts with Certs Expiring in 90 Days", - "layout": { - "column": 1, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 90 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] - } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 5 }, - { - "title": "Certs Expiring in 90 Days", - "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(Issuer, subject) where ExpiringIn.Days < 90 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "format": "%b %d, %Y", + "name": "ExpirationDate", + "type": "custom" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT timestamp, certExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName since 48 hours ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + } + ] + }, + { + "name": "7 Days", + "description": null, + "widgets": [ + { + "title": "Hosts with Certs Expiring in 7 Days", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 }, - { - "title": "", - "layout": { - "column": 1, - "row": 3, - "width": 12, - "height": 8 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT timestamp, ExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 90 since 48 hours ago limit max" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 7 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 } + ] + } + }, + { + "title": "Certs Expiring in 7 Days", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(Issuer, subject) where certExpiringIn.Days < 7 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 8 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT timestamp, certExpirationDate, hostname, certExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 7 since 48 hours ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false } } - ] - }, - { - "name": "120 Days", - "description": null, - "widgets": [ - { - "title": "Hosts with Certs Expiring in 120 Days", - "layout": { - "column": 1, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(hostname) WHERE ExpiringIn.Days < 120 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] + } + ] + }, + { + "name": "30 Days", + "description": null, + "widgets": [ + { + "title": "Hosts with Certs Expiring in 30 Days", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 30 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Certs Expiring in 30 Days", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(Issuer, subject) where certExpiringIn.Days < 30 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 8 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT timestamp, certExpirationDate, hostname, certExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 30 since 48 hours ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + } + ] + }, + { + "name": "90 Days", + "description": null, + "widgets": [ + { + "title": "Hosts with Certs Expiring in 90 Days", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 }, - { - "title": "Certs Expiring in 120 Days", - "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT uniqueCount(Issuer, subject) where ExpiringIn.Days < 120 since 48 hours ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [ - { - "alertSeverity": "CRITICAL", - "value": 0 - } - ] + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 90 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Certs Expiring in 90 Days", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(Issuer, subject) where certExpiringIn.Days < 90 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 8 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT timestamp, certExpirationDate, hostname, certExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 90 since 48 hours ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + } + ] + }, + { + "name": "120 Days", + "description": null, + "widgets": [ + { + "title": "Hosts with Certs Expiring in 120 Days", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 }, - { - "title": "", - "layout": { - "column": 1, - "row": 3, - "width": 12, - "height": 8 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM WindowsExpCertSample SELECT timestamp, ExpirationDate, hostname, ExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 120 since 48 hours ago limit max" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(hostname) WHERE certExpiringIn.Days < 120 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Certs Expiring in 120 Days", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT uniqueCount(Issuer, subject) where certExpiringIn.Days < 120 since 48 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 8 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 3882521, + "query": "FROM M365AdfsCertificate SELECT timestamp, certExpirationDate, hostname, certExpiringIn.TotalDays, Issuer, Subject, FriendlyName WHERE ExpiringIn.Days < 120 since 48 hours ago limit max" } + ], + "platformOptions": { + "ignoreTimeRange": false } } - ] - } - ], - "variables": [] - } \ No newline at end of file + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/data-sources/k6-prometheus/config.yml b/data-sources/k6-prometheus/config.yml new file mode 100644 index 0000000000..0b5ccfc187 --- /dev/null +++ b/data-sources/k6-prometheus/config.yml @@ -0,0 +1,9 @@ +id: k6-prometheus +displayName: k6 Prometheus +description: | + New Relic can receive your k6 telemetry data via New Relic's Prometheus remote write integration. Within New Relic you can find your k6 performance data alongside your real users data and server side performance. +install: + primary: + link: + url: https://k6.io/docs/results-output/real-time/prometheus-remote-write/ +icon: logo.svg diff --git a/data-sources/k6-prometheus/logo.svg b/data-sources/k6-prometheus/logo.svg new file mode 100644 index 0000000000..399c7440bb --- /dev/null +++ b/data-sources/k6-prometheus/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/data-sources/k6/logo.png b/data-sources/k6/logo.png deleted file mode 100644 index bf1913c376..0000000000 Binary files a/data-sources/k6/logo.png and /dev/null differ diff --git a/data-sources/k6/logo.svg b/data-sources/k6/logo.svg new file mode 100644 index 0000000000..399c7440bb --- /dev/null +++ b/data-sources/k6/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/quickstarts/k6-prometheus/config.yml b/quickstarts/k6-prometheus/config.yml new file mode 100644 index 0000000000..fc72581044 --- /dev/null +++ b/quickstarts/k6-prometheus/config.yml @@ -0,0 +1,49 @@ +slug: k6-prometheus + +title: k6 Prometheus (remote write) + +description: | + ## Quickstart for k6 Load Test Monitoring + + k6 can send performance metrics to New Relic through the New Relic StatsD integration. By integrating New Relic and k6, you can visualize and correlate test result data, alert on performance data, and share advanced load testing results and their KPI's with your teams. View alongside all of your other telemetry data in New Relic for added insights. + Installation is as simple as running the New Relic StatsD integration and including New Relic StatsD as an output in your k6 load testing script. + + This quickstart includes dashboards for the following k6 charts: + - Number of virtual users + - Max, median, and average Request Durations + - Rate of requests (per second) + - Histogram bucketing requests + - Data sent and data received + - Rate of change in the number of requests + - Blocked requests + - Response timings (90th percentile) + - List of all available k6 metrics + +summary: | + Send k6 performance metrics to New Relic through the New Relic StatsD integration. + +level: Community +icon: logo.svg + +authors: + - Kinsey + +keywords: + - k6 + - grafana + - load testing + - statsD + +documentation: + - name: Set up k6 to send data to New Relic + url: https://k6.io/docs/results-output/real-time/prometheus-remote-write/ + description: Information on how to set up k6 to send data to New Relic, including all configuration options from k6. + - name: Set up your Prometheus remote write integration + url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/install-configure-remote-write/set-your-prometheus-remote-write-integration/ + description: Information on how to set up your Prometheus remote write integration with New Relic. This will require you to set up these two environment variables `K6_PROMETHEUS_RW_SERVER_URL=https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=k6` and `K6_PROMETHEUS_RW_BEARER_TOKEN=NEW_RELIC_LICENSE_KEY` + +dataSourceIds: + - k6-prometheus + +dashboards: + - k6-prometheus diff --git a/quickstarts/k6-prometheus/logo.svg b/quickstarts/k6-prometheus/logo.svg new file mode 100644 index 0000000000..399c7440bb --- /dev/null +++ b/quickstarts/k6-prometheus/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/quickstarts/mariadb/config.yml b/quickstarts/mariadb/config.yml index f5ce8902a1..e420aa76bc 100644 --- a/quickstarts/mariadb/config.yml +++ b/quickstarts/mariadb/config.yml @@ -27,3 +27,7 @@ installPlans: - mysql-integration dataSourceIds: - mysql +dashboards: + - mariadb +alertPolicies: + - mariadb diff --git a/quickstarts/redis/config.yml b/quickstarts/redis/config.yml index 1e5f78deda..c905408a21 100644 --- a/quickstarts/redis/config.yml +++ b/quickstarts/redis/config.yml @@ -47,3 +47,5 @@ keywords: - database dashboards: - redis +alertPolicies: + - redis