diff --git a/dashboards/sonarqube/sonarqube-01a.png b/dashboards/sonarqube/sonarqube-01a.png deleted file mode 100644 index 7f27cc2a35..0000000000 Binary files a/dashboards/sonarqube/sonarqube-01a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-01b.png b/dashboards/sonarqube/sonarqube-01b.png new file mode 100644 index 0000000000..654fae4a41 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-01b.png differ diff --git a/dashboards/sonarqube/sonarqube-02a.png b/dashboards/sonarqube/sonarqube-02a.png deleted file mode 100644 index aae18687eb..0000000000 Binary files a/dashboards/sonarqube/sonarqube-02a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-02b.png b/dashboards/sonarqube/sonarqube-02b.png new file mode 100644 index 0000000000..63106e6e09 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-02b.png differ diff --git a/dashboards/sonarqube/sonarqube-03a.png b/dashboards/sonarqube/sonarqube-03a.png deleted file mode 100644 index 102fed407f..0000000000 Binary files a/dashboards/sonarqube/sonarqube-03a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-03b.png b/dashboards/sonarqube/sonarqube-03b.png new file mode 100644 index 0000000000..4a53448f6e Binary files /dev/null and b/dashboards/sonarqube/sonarqube-03b.png differ diff --git a/dashboards/sonarqube/sonarqube-04a.png b/dashboards/sonarqube/sonarqube-04a.png deleted file mode 100644 index dfb4cc9fae..0000000000 Binary files a/dashboards/sonarqube/sonarqube-04a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-04b.png b/dashboards/sonarqube/sonarqube-04b.png new file mode 100644 index 0000000000..594153e845 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-04b.png differ diff --git a/dashboards/sonarqube/sonarqube-05a.png b/dashboards/sonarqube/sonarqube-05a.png deleted file mode 100644 index 432f4324be..0000000000 Binary files a/dashboards/sonarqube/sonarqube-05a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-05b.png b/dashboards/sonarqube/sonarqube-05b.png new file mode 100644 index 0000000000..bf826e0448 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-05b.png differ diff --git a/dashboards/sonarqube/sonarqube-06b.png b/dashboards/sonarqube/sonarqube-06b.png new file mode 100644 index 0000000000..316ee10268 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-06b.png differ diff --git a/dashboards/sonarqube/sonarqube-07b.png b/dashboards/sonarqube/sonarqube-07b.png new file mode 100644 index 0000000000..3b79e58970 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-07b.png differ diff --git a/dashboards/sonarqube/sonarqube.json b/dashboards/sonarqube/sonarqube.json index 6a18716be2..9b8103a82c 100644 --- a/dashboards/sonarqube/sonarqube.json +++ b/dashboards/sonarqube/sonarqube.json @@ -22,27 +22,11 @@ "text": "![SonarQube logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/sonarqube/logo.png)" } }, - { - "title": "", - "layout": { - "column": 1, - "row": 2, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "\n\n**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=337b820d-ada6-527d-77eb-90faed3fd418).\n\nUnable to find data in your dashboard? -[Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/prometheus-integrations/install-configure-openmetrics/configure-prometheus-openmetrics-integrations/#general-config)\n\nFollow New Relic [SonarQube documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/) to instrument SonarQube.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=SonarQube) here and let us know how we can improve it for you.\n" - } - }, { "title": "Percentage of Active Database Connections", "layout": { "column": 3, - "row": 2, + "row": 1, "width": 3, "height": 1 }, @@ -79,7 +63,7 @@ "title": "Compute Engine", "layout": { "column": 6, - "row": 2, + "row": 1, "width": 3, "height": 1 }, @@ -104,40 +88,25 @@ } }, { - "title": "Elasticsearch Disk Space (%)", + "title": "Elasticsearch Up", "layout": { - "column": 8, - "row": 2, - "width": 5, - "height": 3 + "column": 9, + "row": 1, + "width": 2, + "height": 1 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.stacked-bar" + "id": "viz.billboard" }, "rawConfiguration": { - "colors": { - "seriesOverrides": [ - { - "color": "#00d679", - "seriesName": "free disk space(%)" - }, - { - "color": "#3b485e", - "seriesName": "used disk space(%)" - } - ] - }, "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT 100 - (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'used disk space(%)', (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'free disk space(%)' FROM Metric TIMESERIES AUTO" + "query": "SELECT IF(latest(sonarqube_health_elasticsearch_status) = 1, 'Up', 'Down') AS 'elasticsearch' FROM Metric " } ], "platformOptions": { @@ -146,10 +115,10 @@ } }, { - "title": "Elasticsearch Up", + "title": "SonarQube Up", "layout": { - "column": 9, - "row": 2, + "column": 11, + "row": 1, "width": 2, "height": 1 }, @@ -164,7 +133,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "SELECT IF(latest(sonarqube_health_elasticsearch_status) = 1, 'Up', 'Down') AS 'elasticsearch' FROM Metric " + "query": "SELECT IF(latest(sonarqube_health_web_status) = 1, 'Up', 'Down') AS 'sonarqube' FROM Metric" } ], "platformOptions": { @@ -173,25 +142,44 @@ } }, { - "title": "SonarQube Up", + "title": "", "layout": { - "column": 11, + "column": 1, "row": 2, "width": 2, - "height": 1 + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "\n\n**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=337b820d-ada6-527d-77eb-90faed3fd418).\n\nInstrument SonarQube with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=SonarQube) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "SonarQube Health status", + "layout": { + "column": 3, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT IF(latest(sonarqube_health_web_status) = 1, 'Up', 'Down') AS 'sonarqube' FROM Metric" + "query": "SELECT latest(sonarqube_health_integration_github_status) AS 'Github status', latest(sonarqube_health_integration_gitlab_status) AS 'Gitlab status', latest(sonarqube_health_web_status) AS 'Web status', latest(sonarqube_health_integration_azuredevops_status) AS 'Azuredevops status', latest(sonarqube_health_elasticsearch_status), latest(sonarqube_health_integration_bitbucket_status) AS 'Bitbucket status', latest(sonarqube_health_compute_engine_status) AS 'Compute engine status' FROM Metric TIMESERIES " } ], "platformOptions": { @@ -200,18 +188,30 @@ } }, { - "title": "SonarQube Health status", + "title": "Elasticsearch Disk Space (%)", "layout": { - "column": 3, - "row": 3, + "column": 8, + "row": 2, "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.stacked-bar" }, "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#00d679", + "seriesName": "free disk space(%)" + }, + { + "color": "#3b485e", + "seriesName": "used disk space(%)" + } + ] + }, "facet": { "showOtherSeries": false }, @@ -221,7 +221,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "SELECT latest(sonarqube_health_integration_github_status) AS 'Github status', latest(sonarqube_health_integration_gitlab_status) AS 'Gitlab status', latest(sonarqube_health_web_status) AS 'Web status', latest(sonarqube_health_integration_azuredevops_status) AS 'Azuredevops status', latest(sonarqube_health_elasticsearch_status), latest(sonarqube_health_integration_bitbucket_status) AS 'Bitbucket status', latest(sonarqube_health_compute_engine_status) AS 'Compute engine status' FROM Metric TIMESERIES " + "query": "SELECT 100 - (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'used disk space(%)', (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'free disk space(%)' FROM Metric TIMESERIES AUTO" } ], "platformOptions": { @@ -233,7 +233,7 @@ "title": "", "layout": { "column": 1, - "row": 6, + "row": 5, "width": 3, "height": 1 }, @@ -249,7 +249,7 @@ "title": "Elasticsearch Disk Space used", "layout": { "column": 4, - "row": 6, + "row": 5, "width": 2, "height": 1 }, @@ -286,7 +286,7 @@ "title": "", "layout": { "column": 6, - "row": 6, + "row": 5, "width": 1, "height": 1 }, @@ -302,7 +302,7 @@ "title": "Elasticsearch Disk Space Free", "layout": { "column": 7, - "row": 6, + "row": 5, "width": 2, "height": 1 }, @@ -329,7 +329,7 @@ "title": "", "layout": { "column": 9, - "row": 6, + "row": 5, "width": 1, "height": 1 }, @@ -345,7 +345,7 @@ "title": "Elasticsearch Disk Space Total", "layout": { "column": 10, - "row": 6, + "row": 5, "width": 3, "height": 1 }, @@ -377,7 +377,7 @@ "title": "SonarQube License", "layout": { "column": 1, - "row": 7, + "row": 6, "width": 5, "height": 3 }, @@ -410,7 +410,7 @@ "title": "Compute Engine Pending Tasks", "layout": { "column": 6, - "row": 7, + "row": 6, "width": 4, "height": 1 }, @@ -437,7 +437,7 @@ "title": "SonarQube Web Uptime", "layout": { "column": 10, - "row": 7, + "row": 6, "width": 3, "height": 3 }, @@ -469,7 +469,7 @@ "title": "Number of Connected SonarLint Clients", "layout": { "column": 6, - "row": 8, + "row": 7, "width": 4, "height": 1 }, @@ -496,7 +496,7 @@ "title": "Remaining Days until SonarQube License Expiration", "layout": { "column": 6, - "row": 9, + "row": 8, "width": 4, "height": 1 }, @@ -855,7 +855,7 @@ ] }, { - "name": "Logs", + "name": "Sonar JMX", "description": null, "widgets": [ { @@ -871,70 +871,721 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + "text": "# SonarQube JMX Web\nSonarQube's JMX monitoring observes the Java Virtual Machine metrics related to the active, idle, initial, and queued database connections of the web server." } }, { - "title": "SonarQube Logs", + "title": "Active Pool Connections", "layout": { "column": 1, "row": 2, - "width": 12, - "height": 4 + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "logger.log-table-widget" + "id": "viz.stacked-bar" }, "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT hostname, message FROM Log WHERE logtype = {{log_type}}" + "query": "SELECT latest(PoolActiveConnections) AS 'active pool connections', latest(PoolMaxActiveConnections) AS 'maximum active pool connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " } - ] + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ] - } - ], - "variables": [ - { - "name": "displayName", - "items": null, - "defaultValues": [ + }, { - "value": { - "string": "sonarqube" + "title": "Idle Pool Connections Statistics", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolIdleConnections) AS 'idle connections',latest(PoolMinIdleConnections) AS 'min idle connections', latest(PoolMaxIdleConnections) AS 'max idle connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ], - "nrqlQuery": { - "accountIds": [], - "query": "SELECT uniques(displayName) FROM PostgresqlDatabaseSample SINCE 3 MONTHS AGO " - }, - "title": "Select the database", - "type": "NRQL", - "isMultiSelection": false, - "replacementStrategy": "DEFAULT" - }, - { - "name": "log_type", - "items": null, - "defaultValues": [ + }, { - "value": { - "string": "sonar_logs" + "title": "Max Wait Time in Connection Pool (seconds)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolMaxWaitMillis)/1000 AS 'max wait time' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ], - "nrqlQuery": { - "accountIds": [], - "query": "SELECT logtype FROM Log since 6 months ago" - }, - "title": "Select your log_type", - "type": "NRQL", - "isMultiSelection": false, + }, + { + "title": "Total Number of Database Connections in Queue", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(QueueSize) AS 'queue connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Initial Number of Database Connections", + "layout": { + "column": 4, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolInitialSize) AS 'initial connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Worker Counts", + "layout": { + "column": 7, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(WorkerCount) AS 'worker count',latest(LargestWorkerCount) AS 'largest worker count' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pool Remove Abandoned Timeout (seconds)", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolRemoveAbandonedTimeoutSeconds) AS 'seconds' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Compute Engine\nSonarQube's JMX monitoring, it tracks the Java Virtual Machine metrics associated with task errors, task success, processing time of tasks, and the time tasks remain pending in the Compute Engine." + } + }, + { + "title": "Compute Engine Tasks Statistics", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ErrorCount) AS 'errors', latest(InProgressCount) AS 'in progress', latest(PendingCount) AS 'pending', latest(SuccessCount) AS 'success' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Number of Task Errors", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ErrorCount) AS 'task errors' FROM JVMSampleSonarQubeComputeEngineMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Total Number of Tasks Success", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(SuccessCount) AS 'tasks success' FROM JVMSampleSonarQubeComputeEngineMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 1 + } + ] + } + }, + { + "title": "Compute Engine Workers", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(WorkerCount) AS 'worker count', latest(WorkerMaxCount) AS 'worker max count' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Tasks Processing Time (milliseconds)", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ProcessingTime) AS 'total tasks processing time' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Tasks Pending Time (milliseconds)", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(LongestTimePending) AS 'total tasks pending time' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.cpuPercent) AS 'CPU used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS 'Memory used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.disk.usedPercent) as 'Storage used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Free Disk (%)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.diskFreePercent) FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.net.transmitBytesPerSecond) AS 'transmit bytes per second', average(host.net.receiveBytesPerSecond) AS 'receive bytes per second' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.process.cpuPercent) as 'CPU %', latest(host.process.threadCount) as 'Threads' FROM Metric FACET processId, processDisplayName ORDER BY cpuPercent asc LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**Logs forwarding** (optional)\n\nFollow New Relic [SonarQube Logs forwarding documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/#forward-sonarqube-logs-to-new-relic) to instrument SonarQube Logs." + } + }, + { + "title": "", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + } + }, + { + "title": "SonarQube Logs", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT hostname, message FROM Log WHERE logtype = {{log_type}}" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "displayName", + "items": null, + "defaultValues": [ + { + "value": { + "string": "sonarqube" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(displayName) FROM PostgresqlDatabaseSample SINCE 3 MONTHS AGO " + }, + "title": "Select the database", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "DEFAULT" + }, + { + "name": "log_type", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 6 months ago" + }, + "title": "Select your log_type", + "type": "NRQL", + "isMultiSelection": true, "replacementStrategy": "DEFAULT" } ] diff --git a/quickstarts/sonarqube/config.yml b/quickstarts/sonarqube/config.yml index 6de6194313..051fec10f2 100644 --- a/quickstarts/sonarqube/config.yml +++ b/quickstarts/sonarqube/config.yml @@ -36,6 +36,8 @@ documentation: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/ keywords: - sonarqube + - sonar + - sonarqube jmx dashboards: - sonarqube alertPolicies: