diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 12a6d567a7..9c95fc0519 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -14,3 +14,4 @@ LICENSE @newrelic/developer-enablement # product/content ownership /dashboards/ @seemantk +/quickstarts/ @seemantk @rahulbasu-nr diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab5d83bb70..e7fa2683f6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -182,21 +182,21 @@ icon.png #### Fields -| field | required? | default | description | -| ------------- | --------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | yes | | A UUID for the quickstart, this is generated by the system and should _not_ be provided by the contributor | -| slug | no | The title in lowercase with spaces and special characters removed | Used to reference the quickstart in URLs, should not be changed after creation | -| title | yes | | Used as the display name for the quickstart | -| description | yes | | The long form description of the quickstart, has support for markdown syntax | -| summary | yes | | The short form description of the quickstart, should be under 250 characters | -| level | no | `Community` | The support level for the quickstart, possible values are `New Relic`, `Verified`, and `Community` | -| authors | yes | | A list of authors for the quickstart | +| field | required? | default | description | +| ------------- | --------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | yes | | A UUID for the quickstart, this is generated by the system and should _not_ be provided by the contributor | +| slug | no | The title in lowercase with spaces and special characters removed | Used to reference the quickstart in URLs, should not be changed after creation | +| title | yes | | Used as the display name for the quickstart | +| description | yes | | The long form description of the quickstart, has support for markdown syntax | +| summary | yes | | The short form description of the quickstart, should be under 250 characters | +| level | no | `Community` | The support level for the quickstart, possible values are `New Relic`, `Verified`, and `Community` | +| authors | yes | | A list of authors for the quickstart | | keywords | no | | A list of terms for searching within the catalogue. To have your quickstart listed in a certain category, you must include a keyword matching a category term from [this query](https://api.newrelic.com/graphiql?#query=%7B%0A%20%20actor%20%7B%0A%20%20%20%20nr1Catalog%20%7B%0A%20%20%20%20%20%20categories%20%7B%0A%20%20%20%20%20%20%20%20terms%0A%20%20%20%20%20%20%20%20displayName%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A) | -| documentation | no | | A list of related documentation for the quickstart | -| icon | no | An image generated using the initials of the quickstart title | Used to denote the quickstart within the catalogue | -| dashboards | no | | A list of dashboards to include in this quickstart | -| alertPolicies | no | | A list of alert policies to include in this quickstart | -| dataSourceIds | no | | A list of data sources ids. | +| documentation | no | | A list of related documentation for the quickstart | +| icon | no | An image generated using the initials of the quickstart title | Used to denote the quickstart within the catalogue | +| dashboards | no | | A list of dashboards to include in this quickstart | +| alertPolicies | no | | A list of alert policies to include in this quickstart | +| dataSourceIds | no | | A list of data sources ids. | #### Style tips @@ -371,6 +371,7 @@ that is not defined in this list below, it will be reviewed for use after you su > the `featured` keyword is used to feature quickstarts. It can only be set by a New Relic employee. > the `newrelic partner` keyword is used to feature quickstarts. It can only be set by a New Relic employee. +> to reflect your quickstart under a specific category in the add data section, make sure your keywords match the "terms" present in the "displayName" of this (GraphQL query)[https://api.newrelic.com/graphiql?#query=%7B%0A%20%20actor%20%7B%0A%20%20%20%20nr1Catalog%20%7B%0A%20%20%20%20%20%20categories%20%7B%0A%20%20%20%20%20%20%20%20terms%0A%20%20%20%20%20%20%20%20displayName%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A] - apm - automation @@ -645,7 +646,7 @@ icon.png | ----------------------- | ------------------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | id | yes | | User defined id for the data source, must be unique | | displayName | yes | | The human-readable name for the data source | -| description | no | | A short form description of the data source in plain text. (This field _does not_ support markdown syntax) | +| description | no | | A short form description of the data source in plain text. (This field _does not_ support markdown syntax and has a max-length of 240 characters) | | icon | yes | | The path to an icon for the data source. The icon should follow the sizing conventions of the [quickstart icon](#icons) | | keywords | no | | A list of keywords for searching and filtering the catalogue | | categoryTerms | no | | A list of terms that relate to categories within the catalogue, this controls which categories the data source shows up under. See the category term mapping [here](https://api.newrelic.com/graphiql?#query=%7B%0A%20%20actor%20%7B%0A%20%20%20%20nr1Catalog%20%7B%0A%20%20%20%20%20%20categories%20%7B%0A%20%20%20%20%20%20%20%20terms%0A%20%20%20%20%20%20%20%20displayName%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A) | @@ -683,38 +684,45 @@ icon.png ``` ## Quickstart Preview +⚠️ There is currently no way to preview Quickstarts locally. -Quickstart Previews are available for contributors to review their new or improved quickstarts directly from the Public I/O site! We provide two ways to view a preview: +
+ Deprecated preview steps + Quickstart Previews are available for contributors to review their new or improved quickstarts directly from the Public I/O site! We provide two ways to view a preview: -### Local Quickstart Preview + ### Local Quickstart Preview -- To view a local quickstart preview, you can run the command `yarn preview node-js/express` or `yarn preview catchpoint` using the _path_ to the quickstart within the `quickstarts/` directory. -- This script needs to be run under the `utils` directory. -- The script will run a local server for the Public I/O site to fetch files from the specified quickstart. -- The command line will provide a link that can be navigated to view the quickstart. - - In order for local quickstart preview to be enabled on the Public I/O site, there needs to be a `config.yml` file present in the quickstart directory. However, there does not need to have any content inside the file. - - _Only one quickstart may be served for local quickstart preview_ + - To view a local quickstart preview, you can run the command `yarn preview node-js/express` or `yarn preview catchpoint` using the _path_ to the quickstart within the `quickstarts/` directory. + - This script needs to be run under the `utils` directory. + - The script will run a local server for the Public I/O site to fetch files from the specified quickstart. + - Currently this functionality is not working on the Public I/O site, but it is entirely possible to use it locally by running the older _deprecated_ version of the site [on your machine](https://github.com/newrelic/instant-observability-website#%EF%B8%8F-local-development). + - The command line will provide a link that can be navigated to view the quickstart. + - In order for local quickstart preview to be enabled on the Public I/O site, there needs to be a `config.yml` file present in the quickstart directory. However, there does not need to have any content inside the file. + - _Only one quickstart may be served for local quickstart preview_ -> Note: While working on a quickstart, changes may not be updated in the local preview automatically. If you do not see immediate changes, refresh the page to pull in recent updates. + > Note: While working on a quickstart, changes may not be updated in the local preview automatically. If you do not see immediate changes, refresh the page to pull in recent updates. -#### Step-by-step guide to view Local Quickstart Preview + #### Step-by-step guide to view Local Quickstart Preview -Starting from the top level of the repository: `newrelic-quickstarts` + Clone down the [_deprecated_ site](https://github.com/newrelic/instant-observability-website#%EF%B8%8F-local-development) to your machine and follow the local development instructions. Once you have it up and running, continue to the steps below. -```bash -cd utils -yarn install -yarn preview aws/amazon-msk -``` + Starting from the top level of the repository: `newrelic-quickstarts` + + ```bash + cd utils + yarn install + yarn preview aws/amazon-msk + ``` -> Note: `aws/amazon-msk` is just an example. It can be replaced with the path to any quickstart. + > Note: `aws/amazon-msk` is just an example. It can be replaced with the path to any quickstart. -## Support + ## Support -### Pull Request Quickstart Preview + ### Pull Request Quickstart Preview -- Once a PR is open for a quickstart, a comment will be automatically generated with a link to the quickstart associated with the PR. -- If a PR has multiple quickstarts, a link will be generated in the PR for each quickstart. + - Once a PR is open for a quickstart, a comment will be automatically generated with a link to the quickstart associated with the PR. + - If a PR has multiple quickstarts, a link will be generated in the PR for each quickstart. +
### Feature requests diff --git a/_template/dashboards/example-dashboard/example-dashboard.json b/_template/dashboards/example-dashboard/example-dashboard.json index f8ee3c8965..a650495dcb 100644 --- a/_template/dashboards/example-dashboard/example-dashboard.json +++ b/_template/dashboards/example-dashboard/example-dashboard.json @@ -18,7 +18,7 @@ }, "title": " ", "rawConfiguration": { - "text": "![Image](https://s3.amazonaws.com/nr-cloud-adoption/CloudAdoption-Plan.png)\n" + "text": "![Image](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/bb8038eb251fb37c0e15f1f2ea930569f0eb1cb5/_template/quickstarts/example-quickstart/logo.svg)\n" } }, { diff --git a/alert-policies/active-directory/active-directory-replication-failures.yml b/alert-policies/active-directory/active-directory-replication-failures.yml new file mode 100644 index 0000000000..7a3ce2aa53 --- /dev/null +++ b/alert-policies/active-directory/active-directory-replication-failures.yml @@ -0,0 +1,31 @@ +name: Active Directory Replication Failures +description: |+ + This alert is triggered when the Attempt timestamp != the Success timestamp, indicating a failure in replication between domain contollers. + +type: STATIC +nrql: + query: "FROM activeDirectoryReplicationPartners SELECT count(*) FACET server, partner WHERE lastReplicationSuccess != lastReplicationAttempt" + +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 120 + thresholdOccurrences: ALL + +expiration: + closeViolationsOnExpiration: false + openViolationOnExpiration: false + expirationDuration: null + +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationTimer: null + aggregationWindow: 60 + fillOption: NONE + fillValue: null + slideBy: null + +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/active-directory/active-directory-windows-services.yml b/alert-policies/active-directory/active-directory-windows-services.yml new file mode 100644 index 0000000000..5280ae2d52 --- /dev/null +++ b/alert-policies/active-directory/active-directory-windows-services.yml @@ -0,0 +1,32 @@ +name: Active Directory Windows Services +description: |+ + This alert is triggered when any of the targeted Windows Services are in a state other than "running". + The scope of this alert is Windows Services using the 'label.primary_app = active_directory' decoration. + +type: STATIC +nrql: + query: "FROM Metric SELECT filter(count(*), WHERE state != 'running') FACET hostname, entity.name WHERE metricName = 'windows_service_state' AND label.primary_app = 'active_directory'" + +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL + +expiration: + closeViolationsOnExpiration: false + openViolationOnExpiration: false + expirationDuration: null + +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationTimer: null + aggregationWindow: 60 + fillOption: NONE + fillValue: null + slideBy: null + +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/activemq/HeapMemoryUsage.yml b/alert-policies/activemq/HeapMemoryUsage.yml index 86dc405c38..c29ce00546 100644 --- a/alert-policies/activemq/HeapMemoryUsage.yml +++ b/alert-policies/activemq/HeapMemoryUsage.yml @@ -1,7 +1,7 @@ name: Heap Memory Usage description: |+ - This alert is triggered when the used heap memory usage is higher than 100GB during 5 minutes. + This alert is triggered when the heap memory usage exceeds 100GB for 5 minutes. type: STATIC nrql: diff --git a/alert-policies/adobe-commerce-business-insights/5xxErrors.yml b/alert-policies/adobe-commerce-business-insights/5xxErrors.yml new file mode 100644 index 0000000000..c3405d07cf --- /dev/null +++ b/alert-policies/adobe-commerce-business-insights/5xxErrors.yml @@ -0,0 +1,35 @@ +name: 5xx Server Errors + +description: |+ + This alert is triggered if the customer faces 5xx server errors more than 5 times in 5 minutes. +type: STATIC +nrql: + query: "SELECT count(*) as '5xx Server Errors' from Transaction WHERE httpResponseCode LIKE '5%'" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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 \ No newline at end of file diff --git a/alert-policies/adobe-commerce-business-insights/cpuUsage.yml b/alert-policies/adobe-commerce-business-insights/cpuUsage.yml new file mode 100644 index 0000000000..61dbd1af7b --- /dev/null +++ b/alert-policies/adobe-commerce-business-insights/cpuUsage.yml @@ -0,0 +1,35 @@ +name: CPU Usage (%) + +description: |+ + This alert is triggered if CPU usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.cpuPercent) AS 'CPU Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/adobe-commerce-business-insights/downtime.yml b/alert-policies/adobe-commerce-business-insights/downtime.yml new file mode 100644 index 0000000000..69a02c4656 --- /dev/null +++ b/alert-policies/adobe-commerce-business-insights/downtime.yml @@ -0,0 +1,35 @@ +name: Downtime (%) + +description: |+ + This alert is triggered if Downtime is more than 1% for 2 minutes. +type: STATIC +nrql: + query: "SELECT percentage(count(result), where result = 'FAILED') as 'Downtime (%)' from SyntheticCheck" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.5 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/adobe-commerce-business-insights/memoryUsage.yml b/alert-policies/adobe-commerce-business-insights/memoryUsage.yml new file mode 100644 index 0000000000..d360505a9c --- /dev/null +++ b/alert-policies/adobe-commerce-business-insights/memoryUsage.yml @@ -0,0 +1,35 @@ +name: Memory Usage (%) + +description: |+ + This alert is triggered if Memory usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.memoryUsedPercent) as 'Memory Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/aerospike/FailedGeneration.yml b/alert-policies/aerospike/FailedGeneration.yml new file mode 100644 index 0000000000..cd7ea63c2b --- /dev/null +++ b/alert-policies/aerospike/FailedGeneration.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Fail Generation + +# Description and details +description: |+ + This alert is triggered when more than 10 read/write transactions fail on generation check in 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM Metric SELECT latest(aerospike_namespace_fail_generation) as 'Fail Generation'" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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/aerospike/HeapEfficiency.yml b/alert-policies/aerospike/HeapEfficiency.yml new file mode 100644 index 0000000000..ca452b8c91 --- /dev/null +++ b/alert-policies/aerospike/HeapEfficiency.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Heap Efficiency (%) + +# Description and details +description: |+ + This alert is triggered when heap efficiency is below 50% for 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM Metric SELECT latest(aerospike_node_stats_heap_efficiency_pct)" + +# 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: BELOW + # Value that triggers a violation + threshold: 50 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 60 + # 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/aerospike/PartitionsUnavailable.yml b/alert-policies/aerospike/PartitionsUnavailable.yml new file mode 100644 index 0000000000..78c03d22d8 --- /dev/null +++ b/alert-policies/aerospike/PartitionsUnavailable.yml @@ -0,0 +1,35 @@ +name: Partitions Unavailable + +description: |+ + This alert is triggered when partitions are unavailable for 5 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT latest(aerospike_namespace_unavailable_partitions) as 'Partitions Unavailable'" + +# 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 - 360 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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/aerospike/UpTime.yml b/alert-policies/aerospike/UpTime.yml new file mode 100644 index 0000000000..d21ecf4f57 --- /dev/null +++ b/alert-policies/aerospike/UpTime.yml @@ -0,0 +1,35 @@ +name: Uptime + +description: |+ + This alert is triggered when the uptime is below 100 seconds for 5 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT latest(aerospike_node_stats_uptime) as 'Uptime'" + +# 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: BELOW + # Value that triggers a violation + threshold: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 300 + # 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/kubernetes/HighMemoryUsage.yml b/alert-policies/amazon-appstream/HighCapacityUtilization.yml similarity index 69% rename from alert-policies/kubernetes/HighMemoryUsage.yml rename to alert-policies/amazon-appstream/HighCapacityUtilization.yml index 2f265dcd2e..78b338ff21 100644 --- a/alert-policies/kubernetes/HighMemoryUsage.yml +++ b/alert-policies/amazon-appstream/HighCapacityUtilization.yml @@ -1,11 +1,11 @@ -name: High Memory Usage +name: High Capacity Utilization description: |+ - This alert is triggered when the Memory Usage is above 85%. + This alert is triggered when the Capacity Utilization is above 90%. type: STATIC nrql: - query: "FROM Metric SELECT average(k8s.node.memoryWorkingSetBytes) / average(k8s.node.allocatableMemoryBytes) * 100 AS 'Memory Util %' FACET k8s.nodeName" + query: "SELECT average(`aws.appstream.CapacityUtilization`) as 'Query' FROM Metric" # Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) valueFunction: SINGLE_VALUE @@ -16,9 +16,9 @@ terms: # Operator used to compare against the threshold. operator: ABOVE # Value that triggers a violation - threshold: 85 + threshold: 90 # Time in seconds; 120 - 3600 - thresholdDuration: 60 + thresholdDuration: 300 # How many data points must be in violation for the duration thresholdOccurrences: ALL diff --git a/alert-policies/kubernetes/HighDiskUtilization.yml b/alert-policies/amazon-appstream/HighInsufficientCapacityErrors.yml similarity index 68% rename from alert-policies/kubernetes/HighDiskUtilization.yml rename to alert-policies/amazon-appstream/HighInsufficientCapacityErrors.yml index b3e98f1d93..e0c0fc0e1c 100644 --- a/alert-policies/kubernetes/HighDiskUtilization.yml +++ b/alert-policies/amazon-appstream/HighInsufficientCapacityErrors.yml @@ -1,11 +1,11 @@ -name: High Disk Utlilzation +name: High Insufficient Capacity Errors description: |+ - This alert is triggered when the Disk Utilization is above 95% for at least 15 minutes. + This alert is triggered when Insufficient Capacity Errors are above 10 in 10 minutes. type: STATIC nrql: - query: "SELECT average(k8s.node.fsUsedBytes) / average(k8s.node.fsCapacityBytes) * 100 AS 'Disk Util %' FROM Metric FACET k8s.nodeName" + query: "SELECT count(`aws.appstream.InsufficientCapacityError`) as 'Query' FROM Metric" # Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) valueFunction: SINGLE_VALUE @@ -16,9 +16,9 @@ terms: # Operator used to compare against the threshold. operator: ABOVE # Value that triggers a violation - threshold: 95 + threshold: 100 # Time in seconds; 120 - 3600 - thresholdDuration: 900 + thresholdDuration: 600 # How many data points must be in violation for the duration thresholdOccurrences: ALL diff --git a/alert-policies/amazon-cloudsearch/HighIndexUtilization.yml b/alert-policies/amazon-cloudsearch/HighIndexUtilization.yml new file mode 100644 index 0000000000..75e6f612c7 --- /dev/null +++ b/alert-policies/amazon-cloudsearch/HighIndexUtilization.yml @@ -0,0 +1,27 @@ +name: High Index Utilization + +description: |+ + This alert is triggered when the Index Utilization is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws.cloudsearch.IndexUtilization`) as 'Query' FROM Metric" + +# 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: 90 + # 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/amazon-cloudwatch-internet-monitor/LowerAvailabilityScore.yml b/alert-policies/amazon-cloudwatch-internet-monitor/LowerAvailabilityScore.yml new file mode 100644 index 0000000000..977bd8c9db --- /dev/null +++ b/alert-policies/amazon-cloudwatch-internet-monitor/LowerAvailabilityScore.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Lower Availability Score + +# Description and details +description: |+ + This alert occurs when availability score of traffic falls below 100 for 5 minutes + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT average(aws.internetmonitor.AvailabilityScore) from Metric" + +# 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: BELOW + # Value that triggers a violation; float value + threshold: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: BELOW + threshold: 95 + thresholdDuration: 300 + 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/amazon-cloudwatch-internet-monitor/LowerPerformanceScore.yml b/alert-policies/amazon-cloudwatch-internet-monitor/LowerPerformanceScore.yml new file mode 100644 index 0000000000..63e39ea36e --- /dev/null +++ b/alert-policies/amazon-cloudwatch-internet-monitor/LowerPerformanceScore.yml @@ -0,0 +1,39 @@ +# Name of the alert +name: Lower Performance Score + +# Description and details +description: |+ + This alert occurs when performance score of traffic falls below 100 for 5 minutes + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT average(aws.internetmonitor.PerformanceScore) from Metric" + +# 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: BELOW + # Value that triggers a violation; float value + threshold: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: BELOW + threshold: 95 + thresholdDuration: 300 + 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/amazon-codebuild/BuildsFailed.yml b/alert-policies/amazon-codebuild/BuildsFailed.yml new file mode 100644 index 0000000000..c4035b2aaf --- /dev/null +++ b/alert-policies/amazon-codebuild/BuildsFailed.yml @@ -0,0 +1,26 @@ +name: Builds Failed + +description: |+ + This alert is triggered when the Builds Failed Count is above 100 in 10 minutes. +type: STATIC +nrql: + query: "SELECT count(`aws.codebuild.FailedBuilds`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/kubernetes/HighCpuUtil.yml b/alert-policies/amazon-codebuild/CPUUtilization.yml similarity index 73% rename from alert-policies/kubernetes/HighCpuUtil.yml rename to alert-policies/amazon-codebuild/CPUUtilization.yml index 9b937f827c..5053f88234 100644 --- a/alert-policies/kubernetes/HighCpuUtil.yml +++ b/alert-policies/amazon-codebuild/CPUUtilization.yml @@ -1,11 +1,10 @@ name: High CPU Utilization description: |+ - This alert is triggered when the CPU utilization is above 90% for at least 10 minutes. - + This alert is triggered when the CPU Utilization is above 90%. type: STATIC nrql: - query: "FROM Metric SELECT average(k8s.node.cpuUsedCores) / average(k8s.node.allocatableCpuCores) * 100 AS 'CPU Util %' FACET k8s.nodeName" + query: "SELECT rate(sum(aws.codebuild.CPUUtilized), 1 second) * 100 as cpuUsage FROM Metric" # Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) valueFunction: SINGLE_VALUE @@ -18,7 +17,7 @@ terms: # Value that triggers a violation threshold: 90 # Time in seconds; 120 - 3600 - thresholdDuration: 600 + thresholdDuration: 300 # How many data points must be in violation for the duration thresholdOccurrences: ALL diff --git a/alert-policies/amazon-database-migration-service/HighCPUUtilization.yml b/alert-policies/amazon-database-migration-service/HighCPUUtilization.yml new file mode 100644 index 0000000000..b1ebb6b97e --- /dev/null +++ b/alert-policies/amazon-database-migration-service/HighCPUUtilization.yml @@ -0,0 +1,27 @@ +name: High CPU Utilization + +description: |+ + This alert is triggered when the CPU Utilization is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws.dms.CPUUtilization`) as 'Query' FROM Metric" + +# 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 in % that triggers a violation + threshold: 90 + # 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/amazon-database-migration-service/LowFreeableMemory.yml b/alert-policies/amazon-database-migration-service/LowFreeableMemory.yml new file mode 100644 index 0000000000..31b8c2eb1c --- /dev/null +++ b/alert-policies/amazon-database-migration-service/LowFreeableMemory.yml @@ -0,0 +1,37 @@ +name: Low Freeable Memory + +description: |+ + This alert occurs when Freeable Memory go below 100 Bytes for 5 minutes + +type: STATIC + +nrql: + query: "SELECT average(aws.dms.FreeableMemory) from Metric" + +# 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: BELOW + # Value in Bytes that triggers violation + threshold: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: BELOW + # Value in Bytes that triggers violation + threshold: 95 + thresholdDuration: 300 + 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/amazon-elastictranscoder/JobsErrored.yml b/alert-policies/amazon-elastictranscoder/JobsErrored.yml new file mode 100644 index 0000000000..4b56ef11fd --- /dev/null +++ b/alert-policies/amazon-elastictranscoder/JobsErrored.yml @@ -0,0 +1,27 @@ +name: Jobs Error + +description: |+ + This alert is triggered when the Job Error Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.elastictranscoder.JobsErrored`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-inspector/HighAssessmentRunFindings.yml b/alert-policies/amazon-inspector/HighAssessmentRunFindings.yml new file mode 100644 index 0000000000..3d79439018 --- /dev/null +++ b/alert-policies/amazon-inspector/HighAssessmentRunFindings.yml @@ -0,0 +1,34 @@ +name: High Assessment Run Findings + +description: |+ + This alert is triggered if the number of Assessment Run Findings exceeds 100 for 5 minutes. + +type: STATIC +nrql: + query: "SELECT sum(`aws.inspector.TotalAssessmentRunFindings`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 50 + thresholdDuration: 300 + 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/amazon-keyspaces/HighAccountProvisionedReadCapacityUtilization.yml b/alert-policies/amazon-keyspaces/HighAccountProvisionedReadCapacityUtilization.yml new file mode 100644 index 0000000000..712da5fe2e --- /dev/null +++ b/alert-policies/amazon-keyspaces/HighAccountProvisionedReadCapacityUtilization.yml @@ -0,0 +1,27 @@ +name: High Account Provisioned Read Capacity Utilization + +description: |+ + This alert is triggered when the Account Provisioned Read Capacity Utilization is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws.cassandra.AccountProvisionedReadCapacityUtilization`) FROM Metric" + +# 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: 90 + # 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/amazon-keyspaces/HighAccountProvisionedWriteCapacityUtilization.yml b/alert-policies/amazon-keyspaces/HighAccountProvisionedWriteCapacityUtilization.yml new file mode 100644 index 0000000000..034be21457 --- /dev/null +++ b/alert-policies/amazon-keyspaces/HighAccountProvisionedWriteCapacityUtilization.yml @@ -0,0 +1,27 @@ +name: High Account Provisioned Write Capacity Utilization + +description: |+ + This alert is triggered when the Account Provisioned Write Capacity Utilization is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws.cassandra.AccountProvisionedWriteCapacityUtilization`) FROM Metric" + +# 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: 90 + # 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/amazon-keyspaces/HighSystemErrors.yml b/alert-policies/amazon-keyspaces/HighSystemErrors.yml new file mode 100644 index 0000000000..b0f2eeb989 --- /dev/null +++ b/alert-policies/amazon-keyspaces/HighSystemErrors.yml @@ -0,0 +1,27 @@ +name: High System Errors + +description: |+ + This alert is triggered when System Errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.cassandra.SystemErrors`) FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-keyspaces/HighUserErrors.yml b/alert-policies/amazon-keyspaces/HighUserErrors.yml new file mode 100644 index 0000000000..761fa3996c --- /dev/null +++ b/alert-policies/amazon-keyspaces/HighUserErrors.yml @@ -0,0 +1,27 @@ +name: High User Errors + +description: |+ + This alert is triggered when User Errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.cassandra.UserErrors`) FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-sagemaker/HighEndpointsCPUUtil.yml b/alert-policies/amazon-sagemaker/HighEndpointsCPUUtil.yml new file mode 100644 index 0000000000..99b5f9a36d --- /dev/null +++ b/alert-policies/amazon-sagemaker/HighEndpointsCPUUtil.yml @@ -0,0 +1,27 @@ +name: High CPU Utilization By Endpoints + +description: |+ + This alert is triggered when the CPU Utilization by Endpoints is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws..aws.sagemaker.endpoints.CPUUtilization`) as 'Query' FROM Metric" + +# 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: 90 + # 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/amazon-sagemaker/HighEndpointsMemoryUtil.yml b/alert-policies/amazon-sagemaker/HighEndpointsMemoryUtil.yml new file mode 100644 index 0000000000..92eafd9d61 --- /dev/null +++ b/alert-policies/amazon-sagemaker/HighEndpointsMemoryUtil.yml @@ -0,0 +1,27 @@ +name: High Memory Utilization By Endpoints + +description: |+ + This alert is triggered when the memory Utilization by Endpoints is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws..aws.sagemaker.endpoints.MemoryUtilization`) as 'Query' FROM Metric" + +# 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: 90 + # 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/amazon-sagemaker/HighModelInvocationErrors.yml b/alert-policies/amazon-sagemaker/HighModelInvocationErrors.yml new file mode 100644 index 0000000000..d15d79253e --- /dev/null +++ b/alert-policies/amazon-sagemaker/HighModelInvocationErrors.yml @@ -0,0 +1,27 @@ +name: High Model Invocation Errors + +description: |+ + This alert is triggered when Model Invocation errors are above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT sum(`aws.sagemaker.InvocationModelErrors`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-sagemaker/HighTrainingJobsCPUUtil.yml b/alert-policies/amazon-sagemaker/HighTrainingJobsCPUUtil.yml new file mode 100644 index 0000000000..478b5056cc --- /dev/null +++ b/alert-policies/amazon-sagemaker/HighTrainingJobsCPUUtil.yml @@ -0,0 +1,27 @@ +name: High CPU Utilization By Training Jobs + +description: |+ + This alert is triggered when the CPU Utilization by Training Jobs is above 90%. + +type: STATIC +nrql: + query: "SELECT average(`aws..aws.sagemaker.trainingjobs.CPUUtilization`) as 'Query' FROM Metric" + +# 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: 90 + # 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/amazon-simpleworkflow/ActivityTasksFailed.yml b/alert-policies/amazon-simpleworkflow/ActivityTasksFailed.yml new file mode 100644 index 0000000000..170a3234ac --- /dev/null +++ b/alert-policies/amazon-simpleworkflow/ActivityTasksFailed.yml @@ -0,0 +1,27 @@ +name: Activity Tasks Failed + +description: |+ + This alert is triggered when the Activity Tasks Failed Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.swf.ActivityTasksFailed`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-simpleworkflow/WorkflowsFailed.yml b/alert-policies/amazon-simpleworkflow/WorkflowsFailed.yml new file mode 100644 index 0000000000..f9a865ccdb --- /dev/null +++ b/alert-policies/amazon-simpleworkflow/WorkflowsFailed.yml @@ -0,0 +1,27 @@ +name: Workflows Failed + +description: |+ + This alert is triggered when the WorkflowsFailed Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.swf.WorkflowsFailed`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-timestream/MagneticStoreRejectedUploadSystemFailures.yml b/alert-policies/amazon-timestream/MagneticStoreRejectedUploadSystemFailures.yml new file mode 100644 index 0000000000..abc72ae153 --- /dev/null +++ b/alert-policies/amazon-timestream/MagneticStoreRejectedUploadSystemFailures.yml @@ -0,0 +1,27 @@ +name: High MagneticStoreRejectedUploadSystemFailures + +description: |+ + This alert is triggered when the MagneticStoreRejectedUploadSystemFailures is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.timestream.MagneticStoreRejectedUploadSystemFailures`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-timestream/MagneticStoreRejectedUploadUserFailures.yml b/alert-policies/amazon-timestream/MagneticStoreRejectedUploadUserFailures.yml new file mode 100644 index 0000000000..3169be86aa --- /dev/null +++ b/alert-policies/amazon-timestream/MagneticStoreRejectedUploadUserFailures.yml @@ -0,0 +1,27 @@ +name: High MagneticStoreRejectedUploadUserFailures + +description: |+ + This alert is triggered when the MagneticStoreRejectedUploadUserFailures is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.timestream.MagneticStoreRejectedUploadUserFailures`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-timestream/SystemErrors.yml b/alert-policies/amazon-timestream/SystemErrors.yml new file mode 100644 index 0000000000..8a680f349c --- /dev/null +++ b/alert-policies/amazon-timestream/SystemErrors.yml @@ -0,0 +1,27 @@ +name: High SystemErrors + +description: |+ + This alert is triggered when the system errors is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.timestream.SystemErrors`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-timestream/UserErrors.yml b/alert-policies/amazon-timestream/UserErrors.yml new file mode 100644 index 0000000000..e1a21598a1 --- /dev/null +++ b/alert-policies/amazon-timestream/UserErrors.yml @@ -0,0 +1,27 @@ +name: High UserErrors + +description: |+ + This alert is triggered when the user errors is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.timestream.UserErrors`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/amazon-transfer-family/InboundFailedMessage.yml b/alert-policies/amazon-transfer-family/InboundFailedMessage.yml new file mode 100644 index 0000000000..0be5d3abb4 --- /dev/null +++ b/alert-policies/amazon-transfer-family/InboundFailedMessage.yml @@ -0,0 +1,34 @@ +name: High Inbound Failed Message + +description: |+ + This alert is triggered if the number of Inbound Failed Messages exceeds 20 for 10 minutes. + +type: STATIC +nrql: + query: "SELECT sum(`aws.transfer.InboundFailedMessage`) as 'Query' FROM Metric" + +# 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: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 10 + thresholdDuration: 600 + 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/amazon-transfer-family/OnPartialUploadExecutionsFailed.yml b/alert-policies/amazon-transfer-family/OnPartialUploadExecutionsFailed.yml new file mode 100644 index 0000000000..8ad3fc1e1e --- /dev/null +++ b/alert-policies/amazon-transfer-family/OnPartialUploadExecutionsFailed.yml @@ -0,0 +1,34 @@ +name: High Partial Upload Executions Failed + +description: |+ + This alert is triggered if the number of Partial Upload Execution Failure exceeds 20 for 10 minutes. + +type: STATIC +nrql: + query: "SELECT sum(`aws.transfer.OnPartialUploadExecutionsFailed`) as 'Query' FROM Metric" + +# 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: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 10 + thresholdDuration: 600 + 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/amazon-transfer-family/OnUploadExecutionsFailed.yml b/alert-policies/amazon-transfer-family/OnUploadExecutionsFailed.yml new file mode 100644 index 0000000000..8c2d7f6e05 --- /dev/null +++ b/alert-policies/amazon-transfer-family/OnUploadExecutionsFailed.yml @@ -0,0 +1,34 @@ +name: High Upload Executions Failed + +description: |+ + This alert is triggered if the number of Upload Execution Failure exceeds 20 for 10 minutes. + +type: STATIC +nrql: + query: "SELECT sum(`aws.transfer.OnUploadExecutionsFailed`) as 'Query' FROM Metric" + +# 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: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 10 + thresholdDuration: 600 + 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/amazon-workmail/IncomingEmailBounces.yml b/alert-policies/amazon-workmail/IncomingEmailBounces.yml new file mode 100644 index 0000000000..dcb2922614 --- /dev/null +++ b/alert-policies/amazon-workmail/IncomingEmailBounces.yml @@ -0,0 +1,27 @@ +name: High Incoming Email Bounces + +description: |+ + This alert is triggered when over 100 incoming emails bounce in a 10 minute period. + +type: STATIC +nrql: + query: "SELECT count(`aws.workmail.IncomingEmailBounced`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-workmail/OutgoingEmailBounces.yml b/alert-policies/amazon-workmail/OutgoingEmailBounces.yml new file mode 100644 index 0000000000..e81890cedc --- /dev/null +++ b/alert-policies/amazon-workmail/OutgoingEmailBounces.yml @@ -0,0 +1,27 @@ +name: High Outgoing Email Bounces + +description: |+ + This alert is triggered when over 100 outgoing emails bounce in a 10 minute period. + +type: STATIC +nrql: + query: "SELECT count(`aws.workmail.OutgoingEmailBounced`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/amazon-workspaces/ConnectionFailure.yml b/alert-policies/amazon-workspaces/ConnectionFailure.yml new file mode 100644 index 0000000000..2c647ee31d --- /dev/null +++ b/alert-policies/amazon-workspaces/ConnectionFailure.yml @@ -0,0 +1,27 @@ +name: High Connection Failure + +description: |+ + This alert is triggered if the number of failed connections exceeds 100 for 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.workspaces.ConnectionFailure`) as 'Query' FROM Metric" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/apache-hadoop/NameNodeDeadDataNodes.yml b/alert-policies/apache-hadoop/NameNodeDeadDataNodes.yml new file mode 100644 index 0000000000..4663c3eaf5 --- /dev/null +++ b/alert-policies/apache-hadoop/NameNodeDeadDataNodes.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Dead DataNodes + +# Description and details +description: |+ + This alert is triggered if the dead DataNodes exceeds 1 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(NumDeadDataNodes) AS 'Dead Data Nodes' FROM HadoopNameNodeSample" + +# 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/apache-hadoop/NameNodeMissingBlocks.yml b/alert-policies/apache-hadoop/NameNodeMissingBlocks.yml new file mode 100644 index 0000000000..4507bf4695 --- /dev/null +++ b/alert-policies/apache-hadoop/NameNodeMissingBlocks.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Missing Blocks in HDFS + +# Description and details +description: |+ + This alert is triggered if the missing blocks exceeds 3 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(NumberOfMissingBlocks) AS 'Missing Blocks' FROM HadoopNameNodeSample" + +# 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: 3 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-hadoop/NameNodeVolumeFailures.yml b/alert-policies/apache-hadoop/NameNodeVolumeFailures.yml new file mode 100644 index 0000000000..05d0248609 --- /dev/null +++ b/alert-policies/apache-hadoop/NameNodeVolumeFailures.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: NameNode Volume Failures + +# Description and details +description: |+ + This alert is triggered if the volume failures exceeds 2 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(VolumeFailuresTotal) AS 'Volume Failures' FROM HadoopNameNodeSample" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-hadoop/UsedDiskPercentage.yml b/alert-policies/apache-hadoop/UsedDiskPercentage.yml new file mode 100644 index 0000000000..0c13e5a6c1 --- /dev/null +++ b/alert-policies/apache-hadoop/UsedDiskPercentage.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Used Disk Percent + +# Description and details +description: |+ + This alert is triggered when disk usage exceeds 90% for at least 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(PercentUsed) FROM HadoopNameNodeSampleMetrics" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-traffic-server/CPUPercent.yml b/alert-policies/apache-traffic-server/CPUPercent.yml new file mode 100644 index 0000000000..d494dd394e --- /dev/null +++ b/alert-policies/apache-traffic-server/CPUPercent.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: CPU Percent + +# Description and details +description: |+ + This alert is triggered if the CPU usage exceeds 90% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT average(host.cpuPercent) AS 'CPU used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-traffic-server/FreeCacheRAM.yml b/alert-policies/apache-traffic-server/FreeCacheRAM.yml new file mode 100644 index 0000000000..05258b3b3c --- /dev/null +++ b/alert-policies/apache-traffic-server/FreeCacheRAM.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Free RAM Cache Percent + +# Description and details +description: |+ + This alert is triggered if the free space in RAM memory cache is below 10% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT (latest(global.proxy.process.cache.ram_cache.total_bytes) - latest(global.proxy.process.cache.ram_cache.bytes_used)) / latest(global.proxy.process.cache.ram_cache.total_bytes) * 100 FROM ATSCacheSampleMetrics" + +# 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: BELOW + # Value that triggers a violation + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 15 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-traffic-server/MemoryUsagePercent.yml b/alert-policies/apache-traffic-server/MemoryUsagePercent.yml new file mode 100644 index 0000000000..d36ecd0522 --- /dev/null +++ b/alert-policies/apache-traffic-server/MemoryUsagePercent.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Memory Usage Percent + +# Description and details +description: |+ + This alert is triggered if the memory usage exceeds 90% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT average(host.memoryUsedPercent) AS 'Memory used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/apache-traffic-server/SSLExpiredCertificate.yml b/alert-policies/apache-traffic-server/SSLExpiredCertificate.yml new file mode 100644 index 0000000000..45c9af48db --- /dev/null +++ b/alert-policies/apache-traffic-server/SSLExpiredCertificate.yml @@ -0,0 +1,30 @@ +# Name of the alert +name: SSL Expired Certificates + +# Description and details +description: |+ + This alert is triggered when at least 1 SSL connection to an origin server with an expired original certificate is connected. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(global.proxy.process.ssl.origin_server_expired_cert) AS 'ssl expired' FROM ATSSampleMetrics" + +# 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: ALL +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/apache-zooKeeper/FsyncTime.yml b/alert-policies/apache-zooKeeper/FsyncTime.yml new file mode 100644 index 0000000000..5b1f9490a5 --- /dev/null +++ b/alert-policies/apache-zooKeeper/FsyncTime.yml @@ -0,0 +1,35 @@ +name: Fsync Time + +description: |+ + This alert is triggered when the fsync time exceeds 90 milliseconds for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(zkCntNodeChangedWatchCount) FROM zkSample" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 90 + # 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/apache-zooKeeper/RejectedConnection.yml b/alert-policies/apache-zooKeeper/RejectedConnection.yml new file mode 100644 index 0000000000..8c34e8dea5 --- /dev/null +++ b/alert-policies/apache-zooKeeper/RejectedConnection.yml @@ -0,0 +1,35 @@ +name: Rejected Connections + +description: |+ + This alert is triggered when the rejected connections exceeds 3 for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(zkConnectionRejected) AS 'Rejected' FROM zkSample" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # 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/apache-zooKeeper/WatchNodeChanged.yml b/alert-policies/apache-zooKeeper/WatchNodeChanged.yml new file mode 100644 index 0000000000..5a45736794 --- /dev/null +++ b/alert-policies/apache-zooKeeper/WatchNodeChanged.yml @@ -0,0 +1,35 @@ +name: Watch counts on ZooKeeper nodes + +description: |+ + This alert is triggered when the watch counts on znodes exceeds 1 for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(zkCntNodeChangedWatchCount) FROM zkSample" + +# 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 + - priority: WARNING + # 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/apache/cpuUsage.yml b/alert-policies/apache/cpuUsage.yml new file mode 100644 index 0000000000..61dbd1af7b --- /dev/null +++ b/alert-policies/apache/cpuUsage.yml @@ -0,0 +1,35 @@ +name: CPU Usage (%) + +description: |+ + This alert is triggered if CPU usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.cpuPercent) AS 'CPU Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/apache/memoryUsage.yml b/alert-policies/apache/memoryUsage.yml new file mode 100644 index 0000000000..d360505a9c --- /dev/null +++ b/alert-policies/apache/memoryUsage.yml @@ -0,0 +1,35 @@ +name: Memory Usage (%) + +description: |+ + This alert is triggered if Memory usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.memoryUsedPercent) as 'Memory Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/apache/processorCount.yml b/alert-policies/apache/processorCount.yml new file mode 100644 index 0000000000..00f04fcf9a --- /dev/null +++ b/alert-policies/apache/processorCount.yml @@ -0,0 +1,35 @@ +name: Processor Count + +description: |+ + This alert is triggered if Processor count exceeds 128 for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(processorCount) from ApacheSample" + +# 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: 128 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 64 + # 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 \ No newline at end of file diff --git a/alert-policies/apache/requestPerSecond.yml b/alert-policies/apache/requestPerSecond.yml new file mode 100644 index 0000000000..4e941d9e63 --- /dev/null +++ b/alert-policies/apache/requestPerSecond.yml @@ -0,0 +1,35 @@ +name: Requests per second + +description: |+ + This alert is triggered if Requests per second exceeds 160 for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(net.requestsPerSecond) as 'Requests per second' from ApacheSample" + +# 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: 160 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 150 + # 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 \ No newline at end of file diff --git a/alert-policies/aws-chatbot/MessageDeliveryFailure.yml b/alert-policies/aws-chatbot/MessageDeliveryFailure.yml new file mode 100644 index 0000000000..9de849004b --- /dev/null +++ b/alert-policies/aws-chatbot/MessageDeliveryFailure.yml @@ -0,0 +1,27 @@ +name: High MessageDeliveryFailure + +description: |+ + This alert is triggered when the message delivery failure is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.chatbot.MessageDeliveryFailure`) as 'Query' FROM Metric WHERE aws.Namespace = 'AWS/Chatbot'" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/aws-elemental-mediatailor/High4xxErrors.yml b/alert-policies/aws-elemental-mediatailor/High4xxErrors.yml new file mode 100644 index 0000000000..1b0870adb6 --- /dev/null +++ b/alert-policies/aws-elemental-mediatailor/High4xxErrors.yml @@ -0,0 +1,27 @@ +name: High 4xx Errors + +description: |+ + This alert is triggered when 4xx errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.mediatailor.4xxErrorCount`) as 'Query' FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/aws-elemental-mediatailor/High5xxErrors.yml b/alert-policies/aws-elemental-mediatailor/High5xxErrors.yml new file mode 100644 index 0000000000..f3fc27c8be --- /dev/null +++ b/alert-policies/aws-elemental-mediatailor/High5xxErrors.yml @@ -0,0 +1,27 @@ +name: High 5xx errors + +description: |+ + This alert is triggered when 5xx errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.mediatailor.5xxErrorCount`) as 'Query' FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/aws-elemental-mediatailor/HighAdDecisionServerErrors.yml b/alert-policies/aws-elemental-mediatailor/HighAdDecisionServerErrors.yml new file mode 100644 index 0000000000..cc85ef35a8 --- /dev/null +++ b/alert-policies/aws-elemental-mediatailor/HighAdDecisionServerErrors.yml @@ -0,0 +1,27 @@ +name: High Ad Decision Server Errors + +description: |+ + This alert is triggered when Ad Decision Server Errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.mediatailor.AdDecisionServer.Errors`) as 'Query' FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/aws-elemental-mediatailor/HighOriginErrors.yml b/alert-policies/aws-elemental-mediatailor/HighOriginErrors.yml new file mode 100644 index 0000000000..b484c139fe --- /dev/null +++ b/alert-policies/aws-elemental-mediatailor/HighOriginErrors.yml @@ -0,0 +1,27 @@ +name: High Origin Errors + +description: |+ + This alert is triggered when Origin Errors are above 10 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.mediatailor.Origin.Errors`) as 'Query' FROM Metric" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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/aws-lex/HighRuntimeSystemErrors.yml b/alert-policies/aws-lex/HighRuntimeSystemErrors.yml new file mode 100644 index 0000000000..cd70b1611f --- /dev/null +++ b/alert-policies/aws-lex/HighRuntimeSystemErrors.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: High Runtime System Errors + +# Description and details +description: |+ + This alert occurs when the number of system errors are more than 10 in 300sec + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT count(aws.lex.RuntimeSystemErrors) from Metric" + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 8 + thresholdDuration: 300 + 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/aws-lex/LatencyInResponse.yml b/alert-policies/aws-lex/LatencyInResponse.yml new file mode 100644 index 0000000000..2bc61cd87c --- /dev/null +++ b/alert-policies/aws-lex/LatencyInResponse.yml @@ -0,0 +1,43 @@ +# Name of the alert +name: Latency In Response + +# Description and details +description: |+ + The latency for successful requests between the time that the request was made and the response was passed back + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT average(aws.lex.RuntimeSuccessfulRequestLatency) from Metric " + +# 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; float value + threshold: 0.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 0.8 + thresholdDuration: 300 + thresholdOccurrences: ALL + + +# 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/aws-rekognition/HighServerErrors.yml b/alert-policies/aws-rekognition/HighServerErrors.yml new file mode 100644 index 0000000000..6d8a58e497 --- /dev/null +++ b/alert-policies/aws-rekognition/HighServerErrors.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: High Server Errors + +# Description and details +description: |+ + This alert occurs when the number of system errors exceeds 10 in 300sec + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT count(aws.rekognition.ServerErrorCount) from Metric" + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 8 + thresholdDuration: 300 + 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/aws-rekognition/LatencyInResponse.yml b/alert-policies/aws-rekognition/LatencyInResponse.yml new file mode 100644 index 0000000000..b9ae5dccbe --- /dev/null +++ b/alert-policies/aws-rekognition/LatencyInResponse.yml @@ -0,0 +1,43 @@ +# Name of the alert +name: Latency In Response + +# Description and details +description: |+ + This alert occurs when there is a latency in response to successful requests + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT average(aws.rekognition.ResponseTime) from Metric " + +# 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; float value + threshold: 0.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 0.8 + thresholdDuration: 300 + thresholdOccurrences: ALL + + +# 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/aws-transcribe/AsyncServerErrorCount.yml b/alert-policies/aws-transcribe/AsyncServerErrorCount.yml new file mode 100644 index 0000000000..0a314b243a --- /dev/null +++ b/alert-policies/aws-transcribe/AsyncServerErrorCount.yml @@ -0,0 +1,27 @@ +name: High AsyncServerErrorCount + +description: |+ + This alert is triggered when the Async Server Error Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.transcribe.AsyncServerErrorCount`) as 'Query' FROM Metric WHERE aws.Namespace = 'AWS/Transcribe'" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/aws-transcribe/AsyncUserErrorCount.yml b/alert-policies/aws-transcribe/AsyncUserErrorCount.yml new file mode 100644 index 0000000000..e2976e9c55 --- /dev/null +++ b/alert-policies/aws-transcribe/AsyncUserErrorCount.yml @@ -0,0 +1,27 @@ +name: High AsyncUserErrorCount + +description: |+ + This alert is triggered when the Async User Error Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.transcribe.AsyncUserErrorCount`) as 'Query' FROM Metric WHERE aws.Namespace = 'AWS/Transcribe'" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/aws-transcribe/SyncServerErrorCount.yml b/alert-policies/aws-transcribe/SyncServerErrorCount.yml new file mode 100644 index 0000000000..c810da01b8 --- /dev/null +++ b/alert-policies/aws-transcribe/SyncServerErrorCount.yml @@ -0,0 +1,27 @@ +name: High SyncServerErrorCount + +description: |+ + This alert is triggered when the Sync Server Error Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.transcribe.SyncServerErrorCount`) as 'Query' FROM Metric WHERE aws.Namespace = 'AWS/Transcribe'" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/aws-transcribe/SyncUserErrorCount.yml b/alert-policies/aws-transcribe/SyncUserErrorCount.yml new file mode 100644 index 0000000000..a33e6782d1 --- /dev/null +++ b/alert-policies/aws-transcribe/SyncUserErrorCount.yml @@ -0,0 +1,27 @@ +name: High SyncUserErrorCount + +description: |+ + This alert is triggered when the Sync User Error Count is above 100 in 10 minutes. + +type: STATIC +nrql: + query: "SELECT count(`aws.transcribe.SyncUserErrorCount`) as 'Query' FROM Metric WHERE aws.Namespace = 'AWS/Transcribe'" + +# 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: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # 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 \ No newline at end of file diff --git a/alert-policies/azure-machine-learning/Errors.yml b/alert-policies/azure-machine-learning/Errors.yml new file mode 100644 index 0000000000..0faf15007c --- /dev/null +++ b/alert-policies/azure-machine-learning/Errors.yml @@ -0,0 +1,33 @@ +name: Errors + +description: |+ + This alert is triggered if the number of errors exceeds 20 within 10 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.Errors) AS 'Errors'" + +# 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: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 10 + thresholdDuration: 600 + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/azure-machine-learning/ModelDeployFailed.yml b/alert-policies/azure-machine-learning/ModelDeployFailed.yml new file mode 100644 index 0000000000..6e66d86f62 --- /dev/null +++ b/alert-policies/azure-machine-learning/ModelDeployFailed.yml @@ -0,0 +1,33 @@ +name: Model Deployment Failed + +description: |+ + This alert is triggered if the number of Failure exceeds 20 within 10 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelDeployFailed) AS 'ModelDeployFailed'" + +# 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: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 10 + thresholdDuration: 600 + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/blazemeter/Blazemeter90thPercentileLatency.yml b/alert-policies/blazemeter/Blazemeter90thPercentileLatency.yml new file mode 100644 index 0000000000..bfc387dfb9 --- /dev/null +++ b/alert-policies/blazemeter/Blazemeter90thPercentileLatency.yml @@ -0,0 +1,33 @@ +# Name of the alert +name: Blazemeter 90th Percentile Latency + +# Description and details +description: |+ + This alert monitors 90th percentile latency for all tests executing and is triggered when the latency exceeds 500ms indicating a problem with the service being tested. + The critical alert threshold is set to 500ms. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentile(response_time_ms, 90) AS '90th Percentile' FROM RunscopeRadarTestRequest FACET test_name" + +# 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; float value + threshold: 500 + # Time in seconds; 120 - 3600 + thresholdDuration: 60 + # 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: 259200 diff --git a/alert-policies/blazemeter/BlazemeterErrorRate.yml b/alert-policies/blazemeter/BlazemeterErrorRate.yml new file mode 100644 index 0000000000..3fef44c508 --- /dev/null +++ b/alert-policies/blazemeter/BlazemeterErrorRate.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Blazemeter Error Rate + +# Description and details +description: |+ + This alert monitors the error rate for all tests executing and is triggered when the error percent exceeds 25% indicating that Blazemeter test(s) are failing. + The alert threshold is set to 15% for warning and 25% for critical. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(count(*), WHERE result = 'failed') FROM RunscopeRadarTestRun FACET test_name" + +# 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; float value + threshold: 25 + # Time in seconds; 120 - 3600 + thresholdDuration: 60 + # 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: 15 + thresholdDuration: 60 + thresholdOccurrences: AT_LEAST_ONCE + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/bring-your-own-data/DataDrift.yml b/alert-policies/bring-your-own-data/DataDrift.yml new file mode 100644 index 0000000000..a25397b723 --- /dev/null +++ b/alert-policies/bring-your-own-data/DataDrift.yml @@ -0,0 +1,27 @@ +name: Data Drift + +description: |+ + This alert is triggered if data drift exceeds 1 for 5 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT average(data_drift) where metricName = 'data_drift'" + +# 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: ALL + + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/bring-your-own-data/ModelDrift.yml b/alert-policies/bring-your-own-data/ModelDrift.yml new file mode 100644 index 0000000000..ffbcce2505 --- /dev/null +++ b/alert-policies/bring-your-own-data/ModelDrift.yml @@ -0,0 +1,27 @@ +name: Model Drift + +description: |+ + This alert is triggered if model drift exceeds 1 for 5 minutes. +type: STATIC +nrql: + query: "FROM Metric SELECT sum(model_drift) where metricName = 'model_drift'" + +# 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: ALL + + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/bring-your-own-data/Predictions.yml b/alert-policies/bring-your-own-data/Predictions.yml new file mode 100644 index 0000000000..ea32e1bf21 --- /dev/null +++ b/alert-policies/bring-your-own-data/Predictions.yml @@ -0,0 +1,36 @@ +name: Predictions + +description: |+ + This alert is triggered if prediction exceeds 1000 for 5 minutes. +type: STATIC +nrql: + query: "SELECT count(inference_id) as 'Predictions received' FROM InferenceData" + +# 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: 1000 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 850 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/browser/AjaxResponseCodes.yml b/alert-policies/browser/AjaxResponseCodes.yml new file mode 100644 index 0000000000..2d82acb987 --- /dev/null +++ b/alert-policies/browser/AjaxResponseCodes.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Ajax Response Codes (>= 300) + +# Description and details +description: |+ + This baseline alert condition evaluates deviations in Ajax response codes over 299. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "FROM AjaxRequest SELECT count(*) WHERE httpResponseCode >= 300 AND appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/AjaxThroughput.yml b/alert-policies/browser/AjaxThroughput.yml new file mode 100644 index 0000000000..513f3cd98d --- /dev/null +++ b/alert-policies/browser/AjaxThroughput.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Ajax Throughput + +# Description and details +description: |+ + This baseline alert condition evaluates Ajax throughput deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT rate(count(*), 1 minute) FROM AjaxRequest WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/AjaxTimetoSettle.yml b/alert-policies/browser/AjaxTimetoSettle.yml new file mode 100644 index 0000000000..410acda429 --- /dev/null +++ b/alert-policies/browser/AjaxTimetoSettle.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Ajax Time to Settle Deviation + +# Description and details +description: |+ + This baseline alert condition evaluates Ajax time to settle deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT average(timeToSettle) FROM AjaxRequest WHERE appName like '%' FACET appName TIMESERIES" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/FirstInputDelay.yml b/alert-policies/browser/FirstInputDelay.yml new file mode 100644 index 0000000000..1101eb151f --- /dev/null +++ b/alert-policies/browser/FirstInputDelay.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: First Input Delay (75 percentile) (ms) + +# Description and details +description: |+ + This baseline alert condition evaluates FID deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/JSErrors.yml b/alert-policies/browser/JSErrors.yml new file mode 100644 index 0000000000..acfc24d735 --- /dev/null +++ b/alert-policies/browser/JSErrors.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Pageload times (seconds) + +# Description and details +description: |+ + This baseline alert condition evaluates JS Error rate deviations with respect to pageUrl count. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT count(errorMessage) / count(pageUrl) FROM JavaScriptError, PageView WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/LargestContentfulPaint.yml b/alert-policies/browser/LargestContentfulPaint.yml new file mode 100644 index 0000000000..2dc892618e --- /dev/null +++ b/alert-policies/browser/LargestContentfulPaint.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Largest Contentful Paint (75 percentile) (seconds) + +# Description and details +description: |+ + This baseline alert condition evaluates LCP deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/PageloadTime.yml b/alert-policies/browser/PageloadTime.yml new file mode 100644 index 0000000000..94e64ebca2 --- /dev/null +++ b/alert-policies/browser/PageloadTime.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Pageload times (seconds) + +# Description and details +description: |+ + This baseline alert condition evaluates pageload time deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT average(duration) FROM PageView WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/browser/Throughput.yml b/alert-policies/browser/Throughput.yml new file mode 100644 index 0000000000..5a72a75691 --- /dev/null +++ b/alert-policies/browser/Throughput.yml @@ -0,0 +1,62 @@ +# Name of the alert +name: Throughput + +# Description and details +description: |+ + This baseline alert condition evaluates throughput deviations. + +# Type of alert +type: BASELINE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "SELECT rate(count(*), 1 minute) as 'Throughput Ppm' FROM PageView WHERE appName like '%' FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 500 + # How many data points must be in violation for the duration + 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: null + +# Advanced Signal Settings +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + # aggregationTimer: 1200 # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: STATIC # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: 0 # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 30 # seconds + +# 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/docker-otel/CPUUtilization.yml b/alert-policies/docker-otel/CPUUtilization.yml new file mode 100644 index 0000000000..0583f85f5a --- /dev/null +++ b/alert-policies/docker-otel/CPUUtilization.yml @@ -0,0 +1,32 @@ +name: CPU Utilization is too high + +# Description and details +description: | + This alert is triggered when the CPU Utilization is above 90%. + +# Type of alert: BASELINE | STATIC +type: STATIC + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "FROM Metric SELECT max(container.cpu.utilization) FACET entity.name" + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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/docker-otel/MemoryUtilization.yml b/alert-policies/docker-otel/MemoryUtilization.yml new file mode 100644 index 0000000000..58c18471df --- /dev/null +++ b/alert-policies/docker-otel/MemoryUtilization.yml @@ -0,0 +1,32 @@ +name: Memory Utilization is too high + +# Description and details +description: | + This alert is triggered when the Memory Utilization is above 90%. + +# Type of alert: BASELINE | STATIC +type: STATIC + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# NRQL query +nrql: + # Baseline alerts can use an optional FACET + query: "FROM Metric SELECT max(container.memory.percent) FACET entity.name" + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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/dotnet-core/TransactionsError.yml b/alert-policies/dotnet-core/TransactionsError.yml index 8abf806b50..61ad208bb4 100644 --- a/alert-policies/dotnet-core/TransactionsError.yml +++ b/alert-policies/dotnet-core/TransactionsError.yml @@ -1,7 +1,7 @@ name: Transaction Errors description: |+ - This alert is triggered when the the transactions fail more than 10% of the time in 5 minutes. + This alert is triggered when the transactions fail more than 10% of the time in 5 minutes. type: STATIC nrql: query: "SELECT count(apm.service.error.count) / count(apm.service.transaction.duration) * 100 as 'Web errors' FROM Metric WHERE appName like '%' AND (transactionType = 'Web')" diff --git a/alert-policies/f5/f5-node-offline.yml b/alert-policies/f5/f5-node-offline.yml new file mode 100644 index 0000000000..0df88da67e --- /dev/null +++ b/alert-policies/f5/f5-node-offline.yml @@ -0,0 +1,19 @@ +name: F5 Node Offline +description: |+ + This alert fires when an F5 Node has an availability state = 'offline' for at least 10 minutes. +type: STATIC +nrql: + query: "FROM F5BigIpNodeSample SELECT count(*) FACET reportingEndpoint, displayName WHERE node.availabilityState = 0" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 600 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/f5/f5-pool-member-offline.yml b/alert-policies/f5/f5-pool-member-offline.yml new file mode 100644 index 0000000000..970d76e33f --- /dev/null +++ b/alert-policies/f5/f5-pool-member-offline.yml @@ -0,0 +1,19 @@ +name: F5 Pool Member Offline +description: |+ + This alert fires when an F5 Pool Member has an availability state = 'offline' for at least 10 minutes. +type: STATIC +nrql: + query: "FROM F5BigIpPoolMemberSample SELECT count(*) FACET aparse(url, '%//*'), poolName, displayName WHERE member.availabilityState = 0" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 600 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/f5/f5-pool-offline.yml b/alert-policies/f5/f5-pool-offline.yml new file mode 100644 index 0000000000..56d0ac0461 --- /dev/null +++ b/alert-policies/f5/f5-pool-offline.yml @@ -0,0 +1,19 @@ +name: F5 Pool Offline +description: |+ + This alert fires when an F5 Pool has an availability state = 'offline' for at least 10 minutes. +type: STATIC +nrql: + query: "FROM F5BigIpPoolSample SELECT count(*) FACET reportingEndpoint, displayName WHERE pool.availabilityState = 0" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 600 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/f5/f5-virtual-server-offline.yml b/alert-policies/f5/f5-virtual-server-offline.yml new file mode 100644 index 0000000000..7b1e94d77b --- /dev/null +++ b/alert-policies/f5/f5-virtual-server-offline.yml @@ -0,0 +1,19 @@ +name: F5 Virtual Server Offline +description: |+ + This alert fires when an F5 Virtual Server has an availability state = 'offline' for at least 10 minutes. +type: STATIC +nrql: + query: "FROM F5BigIpVirtualServerSample SELECT count(*) FACET reportingEndpoint, displayName WHERE virtualserver.availabilityState = 0" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 600 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/flutter-android/AppCrashPercent.yml b/alert-policies/flutter-android/AppCrashPercent.yml new file mode 100644 index 0000000000..b10b038ffd --- /dev/null +++ b/alert-policies/flutter-android/AppCrashPercent.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: App Crash Rate + +# Description and details +description: |+ + This alert is triggered when the application crash rate exceeds 20% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') FROM MobileSession, MobileCrash" + +# 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.05 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-android/ErrorsandFailurePercent.yml b/alert-policies/flutter-android/ErrorsandFailurePercent.yml new file mode 100644 index 0000000000..d326249bf7 --- /dev/null +++ b/alert-policies/flutter-android/ErrorsandFailurePercent.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Error Rate + +# Description and details +description: |+ + This alert is triggered when the error rate exceeds 4% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT percentage(count(*), where errorType is not null) FROM MobileRequestError, MobileRequest" + +# 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.04 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-android/HTTPResponseTime.yml b/alert-policies/flutter-android/HTTPResponseTime.yml new file mode 100644 index 0000000000..5d413d3db5 --- /dev/null +++ b/alert-policies/flutter-android/HTTPResponseTime.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: HTTP Response Time + +# Description and details +description: |+ + This alert is triggered when the HTTP response time exceeds 5 seconds for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(responseTime) FROM MobileRequest" + +# 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 + - priority: WARNING + # 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: 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 \ No newline at end of file diff --git a/alert-policies/flutter-android/UsersAffectedRateDuetoExceptionLocation.yml b/alert-policies/flutter-android/UsersAffectedRateDuetoExceptionLocation.yml new file mode 100644 index 0000000000..2f5f4dfe2e --- /dev/null +++ b/alert-policies/flutter-android/UsersAffectedRateDuetoExceptionLocation.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Users Affected Rate + +# Description and details +description: |+ + This alert is triggered when the users affected rate exceeds 5% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) FROM MobileSession, MobileHandledException" + +# 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.05 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-ios/AppCrashPercent.yml b/alert-policies/flutter-ios/AppCrashPercent.yml new file mode 100644 index 0000000000..3a1a573699 --- /dev/null +++ b/alert-policies/flutter-ios/AppCrashPercent.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: App Crash Rate + +# Description and details +description: |+ + This alert is triggered when the application crash rate is exceeds 20% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') FROM MobileSession, MobileCrash" + +# 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.05 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-ios/ErrorsandFailurePercent.yml b/alert-policies/flutter-ios/ErrorsandFailurePercent.yml new file mode 100644 index 0000000000..d326249bf7 --- /dev/null +++ b/alert-policies/flutter-ios/ErrorsandFailurePercent.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Error Rate + +# Description and details +description: |+ + This alert is triggered when the error rate exceeds 4% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT percentage(count(*), where errorType is not null) FROM MobileRequestError, MobileRequest" + +# 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.04 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-ios/HTTPResponseTime.yml b/alert-policies/flutter-ios/HTTPResponseTime.yml new file mode 100644 index 0000000000..5d413d3db5 --- /dev/null +++ b/alert-policies/flutter-ios/HTTPResponseTime.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: HTTP Response Time + +# Description and details +description: |+ + This alert is triggered when the HTTP response time exceeds 5 seconds for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(responseTime) FROM MobileRequest" + +# 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 + - priority: WARNING + # 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: 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 \ No newline at end of file diff --git a/alert-policies/flutter-ios/UsersAffectedRateDuetoExceptionLocation.yml b/alert-policies/flutter-ios/UsersAffectedRateDuetoExceptionLocation.yml new file mode 100644 index 0000000000..2f5f4dfe2e --- /dev/null +++ b/alert-policies/flutter-ios/UsersAffectedRateDuetoExceptionLocation.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Users Affected Rate + +# Description and details +description: |+ + This alert is triggered when the users affected rate exceeds 5% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) FROM MobileSession, MobileHandledException" + +# 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.05 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.02 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-web/ApplicationErrorRate.yml b/alert-policies/flutter-web/ApplicationErrorRate.yml new file mode 100644 index 0000000000..12d00f5af9 --- /dev/null +++ b/alert-policies/flutter-web/ApplicationErrorRate.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Application Error Rate + +# Description and details +description: |+ + This alert is triggered when the application error count is higher than 5 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "FROM Metric SELECT count(newrelic.goldenmetrics.apm.application.errorRate) AS ‘Application Error Rate’" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-web/ClientandServerErrorResponse.yml b/alert-policies/flutter-web/ClientandServerErrorResponse.yml new file mode 100644 index 0000000000..1da2cc5a98 --- /dev/null +++ b/alert-policies/flutter-web/ClientandServerErrorResponse.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Client and Server Error Response + +# Description and details +description: |+ + This alert is triggered when the client and server error response count is higher than 10 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT uniqueCount(requestUrl) FROM AjaxRequest WHERE httpResponseCode > 399" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 5 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/flutter-web/PageLoadTime.yml b/alert-policies/flutter-web/PageLoadTime.yml new file mode 100644 index 0000000000..c123ea7a52 --- /dev/null +++ b/alert-policies/flutter-web/PageLoadTime.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Page Load Time + +# Description and details +description: |+ + This alert is triggered when the page load time is higher than 5 seconds for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "FROM PageView SELECT latest(duration) as 'Page Load Duration'" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/jmeter/JMeter90thPercentileLatency.yml b/alert-policies/jmeter/JMeter90thPercentileLatency.yml new file mode 100644 index 0000000000..6423b730ec --- /dev/null +++ b/alert-policies/jmeter/JMeter90thPercentileLatency.yml @@ -0,0 +1,33 @@ +# Name of the alert +name: JMeter 90th Percentile Latency + +# Description and details +description: |+ + This alert monitors 90th percentile latency for all tests currently executing and is triggered when the latency exceeds 500ms indicating a problem with the service being tested. + The critical alert threshold is set to 500ms. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentile(jmeter, 90) AS '90th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel" + +# 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; float value + threshold: 500 + # Time in seconds; 120 - 3600 + thresholdDuration: 60 + # 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: 259200 diff --git a/alert-policies/jmeter/JmeterErrorRate.yml b/alert-policies/jmeter/JmeterErrorRate.yml new file mode 100644 index 0000000000..1c520f76ac --- /dev/null +++ b/alert-policies/jmeter/JmeterErrorRate.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: JMeter Error Rate + +# Description and details +description: |+ + This alert monitors the error rate for all tests currently executing and is triggered when the error percent exceeds 25% indicating that JMeter test(s) are failing. + The alert threshold is set to 15% for warning and 25% for critical. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(count(jmeter), WHERE ResponseCode != '200') FROM Metric FACET SampleLabel" + +# 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; float value + threshold: 25 + # Time in seconds; 120 - 3600 + thresholdDuration: 60 + # 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: 15 + thresholdDuration: 60 + thresholdOccurrences: AT_LEAST_ONCE + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/kubernetes/ContainerCPUThrottling.yaml b/alert-policies/kubernetes/ContainerCPUThrottling.yaml new file mode 100644 index 0000000000..538b5c765b --- /dev/null +++ b/alert-policies/kubernetes/ContainerCPUThrottling.yaml @@ -0,0 +1,77 @@ +name: Container cpu throttling is high +# Description and details +description: | + Alert when container is being throttled > 25% of the time for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sContainerSample select sum(containerCpuCfsThrottledPeriodsDelta) / sum(containerCpuCfsPeriodsDelta) * 100 where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet containerName, podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/ContainerHighCPUUtil.yaml b/alert-policies/kubernetes/ContainerHighCPUUtil.yaml new file mode 100644 index 0000000000..6e9121d239 --- /dev/null +++ b/alert-policies/kubernetes/ContainerHighCPUUtil.yaml @@ -0,0 +1,77 @@ +name: Container high cpu utilization +# Description and details +description: | + Alert when the average container cpu utilization (vs. Limit) is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sContainerSample select average(cpuCoresUtilization) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet containerName, podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/ContainerHighMemUtil.yaml b/alert-policies/kubernetes/ContainerHighMemUtil.yaml new file mode 100644 index 0000000000..6a5228b6f1 --- /dev/null +++ b/alert-policies/kubernetes/ContainerHighMemUtil.yaml @@ -0,0 +1,77 @@ +name: Container high memory utilization +# Description and details +description: | + Alert when the average container memory utilization (vs. Limit) is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sContainerSample select average(memoryWorkingSetUtilization) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet containerName, podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/ContainerRestarting.yaml b/alert-policies/kubernetes/ContainerRestarting.yaml new file mode 100644 index 0000000000..5b3ea26e78 --- /dev/null +++ b/alert-policies/kubernetes/ContainerRestarting.yaml @@ -0,0 +1,74 @@ +name: Container is Restarting + +# Description and details +description: | + Alert when the container restart count is greater than 0 in a sliding 5 minute window + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sContainerSample select sum(restartCountDelta) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') FACET containerName, podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/ContainerWaiting.yaml b/alert-policies/kubernetes/ContainerWaiting.yaml new file mode 100644 index 0000000000..bcdab66ad8 --- /dev/null +++ b/alert-policies/kubernetes/ContainerWaiting.yaml @@ -0,0 +1,74 @@ +name: Container is Waiting + +# Description and details +description: | + Alert when a container is Waiting for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sContainerSample select uniqueCount(podName) WHERE status = 'Waiting' and clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') FACET containerName, podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/DaemonsetPodsMissing.yaml b/alert-policies/kubernetes/DaemonsetPodsMissing.yaml new file mode 100644 index 0000000000..9e396cbaeb --- /dev/null +++ b/alert-policies/kubernetes/DaemonsetPodsMissing.yaml @@ -0,0 +1,74 @@ +name: Daemonset is missing Pods + +# Description and details +description: | + Alert when Daemonset is missing Pods for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sDaemonsetSample select latest(podsMissing) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet daemonsetName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/DeploymentPodsMissing.yaml b/alert-policies/kubernetes/DeploymentPodsMissing.yaml new file mode 100644 index 0000000000..3c22ae1d12 --- /dev/null +++ b/alert-policies/kubernetes/DeploymentPodsMissing.yaml @@ -0,0 +1,74 @@ +name: Deployment is missing Pods + +# Description and details +description: | + Alert when Deployment is missing Pods for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sDeploymentSample select latest(podsMissing) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet deploymentName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/EtcdFileDescriptors.yaml b/alert-policies/kubernetes/EtcdFileDescriptors.yaml new file mode 100644 index 0000000000..ccb6f32aab --- /dev/null +++ b/alert-policies/kubernetes/EtcdFileDescriptors.yaml @@ -0,0 +1,78 @@ +name: Etcd file descriptor utilization is high + +# Description and details +description: | + Alert when Etcd file descriptor utilization is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sEtcdSample select max(processFdsUtilization) where clusterName in ('YOUR_CLUSTER_NAME') facet displayName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 60 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: BELOW + # # Value that triggers a violation + # threshold: 1 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: null + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/EtcdHasNoLeader.yaml b/alert-policies/kubernetes/EtcdHasNoLeader.yaml new file mode 100644 index 0000000000..e2e7c8edf6 --- /dev/null +++ b/alert-policies/kubernetes/EtcdHasNoLeader.yaml @@ -0,0 +1,78 @@ +name: Etcd has no leader + +# Description and details +description: | + Alert when Etcd has no leader for more than 1 minute + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sEtcdSample select min(etcdServerHasLeader) where clusterName in ('YOUR_CLUSTER_NAME') facet displayName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 60 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: BELOW + # # Value that triggers a violation + # threshold: 1 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: null + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/HPAMaxReplicas.yaml b/alert-policies/kubernetes/HPAMaxReplicas.yaml new file mode 100644 index 0000000000..cdce58611c --- /dev/null +++ b/alert-policies/kubernetes/HPAMaxReplicas.yaml @@ -0,0 +1,78 @@ +name: HPA has reached maximum replicas + +# Description and details +description: | + Alert when a Horizontal Pod Autoscaler has reached its maximum replicas for > 5 + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "FROM K8sHpaSample select latest(maxReplicas - currentReplicas) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet displayName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 300 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/HPAMissingReplicas.yaml b/alert-policies/kubernetes/HPAMissingReplicas.yaml new file mode 100644 index 0000000000..3f75a3328d --- /dev/null +++ b/alert-policies/kubernetes/HPAMissingReplicas.yaml @@ -0,0 +1,78 @@ +name: HPA current replicas < desired replicas + +# Description and details +description: | + Alert when a Horizontal Pod Autoscaler's current replicas < desired replicas for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "FROM K8sHpaSample select latest(desiredReplicas - currentReplicas) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet displayName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 300 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/JobFailed.yaml b/alert-policies/kubernetes/JobFailed.yaml new file mode 100644 index 0000000000..3afe30b166 --- /dev/null +++ b/alert-policies/kubernetes/JobFailed.yaml @@ -0,0 +1,78 @@ +name: Job Failed + +# Description and details +description: | + Alert when a Job reports a failed status + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sJobSample select uniqueCount(jobName) where failed = 'true' and clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet jobName, namespaceName, clusterName, failedPodsReason" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 300 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 60 + # How many data points must be in violation for the duration + thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: null + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodeHighAllocatableCPUUtil.yaml b/alert-policies/kubernetes/NodeHighAllocatableCPUUtil.yaml new file mode 100644 index 0000000000..7409fff387 --- /dev/null +++ b/alert-policies/kubernetes/NodeHighAllocatableCPUUtil.yaml @@ -0,0 +1,77 @@ +name: Node allocatable cpu utilization is high +# Description and details +description: | + Alert when the average Node allocatable cpu utilization is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sNodeSample select average(allocatableCpuCoresUtilization) where clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 900 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodeHighAllocatableMemUtil.yaml b/alert-policies/kubernetes/NodeHighAllocatableMemUtil.yaml new file mode 100644 index 0000000000..8f5601704b --- /dev/null +++ b/alert-policies/kubernetes/NodeHighAllocatableMemUtil.yaml @@ -0,0 +1,77 @@ +name: Node allocatable memory utilization is high +# Description and details +description: | + Alert when the average Node allocatable memory utilization is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sNodeSample select average(allocatableMemoryUtilization) where clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 900 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodeHighFSCapacityUtil.yaml b/alert-policies/kubernetes/NodeHighFSCapacityUtil.yaml new file mode 100644 index 0000000000..53cf639706 --- /dev/null +++ b/alert-policies/kubernetes/NodeHighFSCapacityUtil.yaml @@ -0,0 +1,77 @@ +name: Node root file system capacity utilization is high +# Description and details +description: | + Alert when the average Node root file system capacity utilization is > 90% for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sNodeSample select average(fsCapacityUtilization) where clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 900 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 300 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: 60 # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodeIsNotReady.yaml b/alert-policies/kubernetes/NodeIsNotReady.yaml new file mode 100644 index 0000000000..44ef4dbb54 --- /dev/null +++ b/alert-policies/kubernetes/NodeIsNotReady.yaml @@ -0,0 +1,78 @@ +name: Node is not ready + +# Description and details +description: | + Alert when a Node is not ready for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sNodeSample select latest(condition.Ready) where clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 300 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodePodCapacity.yaml b/alert-policies/kubernetes/NodePodCapacity.yaml new file mode 100644 index 0000000000..5e25114b85 --- /dev/null +++ b/alert-policies/kubernetes/NodePodCapacity.yaml @@ -0,0 +1,78 @@ +name: Node Pod count nearing capacity + +# Description and details +description: | + Alert when the Running pod count on a Node is > 90% of the Node's Pod Capacity for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "FROM K8sPodSample, K8sNodeSample select ceil(filter(uniqueCount(podName), where status = 'Running') / latest(capacityPods) * 100) as 'Pod Capacity %' where nodeName != '' and nodeName is not null and clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: 90 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 300 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 300 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/NodeUnschedulable.yaml b/alert-policies/kubernetes/NodeUnschedulable.yaml new file mode 100644 index 0000000000..8445351372 --- /dev/null +++ b/alert-policies/kubernetes/NodeUnschedulable.yaml @@ -0,0 +1,77 @@ +name: Node is unschedulable + +# Description and details +description: | + Alert when Node has been marked as unschedulable +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sNodeSample select latest(unschedulable) where clusterName in ('YOUR_CLUSTER_NAME') facet nodeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 300 + # # How many data points must be in violation for the duration + # thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 900 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/PersistentVolumeErrors.yaml b/alert-policies/kubernetes/PersistentVolumeErrors.yaml new file mode 100644 index 0000000000..e30f36a1b3 --- /dev/null +++ b/alert-policies/kubernetes/PersistentVolumeErrors.yaml @@ -0,0 +1,74 @@ +name: Persistent Volume has errors + +# Description and details +description: | + Alert when Persistent Volume is in a Failed or Pending state for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sPersistentVolumeSample select uniqueCount(volumeName) where statusPhase in ('Failed','Pending') and clusterName in ('YOUR_CLUSTER_NAME') facet volumeName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/PodNotReady.yaml b/alert-policies/kubernetes/PodNotReady.yaml new file mode 100644 index 0000000000..36f6faa1b4 --- /dev/null +++ b/alert-policies/kubernetes/PodNotReady.yaml @@ -0,0 +1,78 @@ +name: Pod is not ready + +# Description and details +description: | + Alert when a Pod is not ready for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "FROM K8sPodSample select latest(isReady) where status not in ('Failed', 'Succeeded') where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/PodNotScheduled.yaml b/alert-policies/kubernetes/PodNotScheduled.yaml new file mode 100644 index 0000000000..5f58b0f4d2 --- /dev/null +++ b/alert-policies/kubernetes/PodNotScheduled.yaml @@ -0,0 +1,77 @@ +name: Pod cannot be scheduled + +# Description and details +description: | + Alert when a Pod cannot be scheduled for more than 5 minutes +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sPodSample select latest(isScheduled) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet podName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + # - priority: WARNING + # # Operator used to compare against the threshold. + # operator: ABOVE + # # Value that triggers a violation + # threshold: 0 + # # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + # thresholdDuration: 60 + # # How many data points must be in violation for the duration + # thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/PodsFailingNamespace.yaml b/alert-policies/kubernetes/PodsFailingNamespace.yaml new file mode 100644 index 0000000000..20a1966649 --- /dev/null +++ b/alert-policies/kubernetes/PodsFailingNamespace.yaml @@ -0,0 +1,74 @@ +name: More than 5 pods failing in namespace + +# Description and details +description: | + AAlert when more than 5 pods are failing in a namespace for more than 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sPodSample select uniqueCount(podName) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') and status = 'Failed' facet namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/kubernetes/StatefulsetPodsMissing.yaml b/alert-policies/kubernetes/StatefulsetPodsMissing.yaml new file mode 100644 index 0000000000..24c8582df8 --- /dev/null +++ b/alert-policies/kubernetes/StatefulsetPodsMissing.yaml @@ -0,0 +1,74 @@ +name: Statefulset is missing Pods + +# Description and details +description: | + Alert when Statefulset is missing Pods for > 5 minutes + +# Type of alert: BASELINE | STATIC +type: STATIC + +# NRQL query +nrql: + query: "from K8sStatefulsetSample select latest(podsMissing) where clusterName in ('YOUR_CLUSTER_NAME') and namespaceName in ('YOUR_NAMESPACE_NAME') facet daemonsetName, namespaceName, clusterName" + +# Direction in which baseline is set (Default: LOWER_ONLY) +# baselineDirection: LOWER_ONLY | UPPER_AND_LOWER | UPPER_ONLY + +# 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, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # 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 | AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # 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: 300 + +# Advanced Signal Settings +# Duration of the time window used to evaluate the NRQL Condition +signal: + # How long we wait for data that belongs in each aggregation window + aggregationDelay: 60 # seconds + # The method that determines when we consider an aggregation window to complete so that we can evaluate the signals for violations. + aggregationMethod: EVENT_FLOW + # How long we wait after each data point arrives to make sure we've processed the whole batch. + aggregationTimer: null # seconds + # Controls the duration of the time window used to evaluate the NRQL query + aggregationWindow: 60 # seconds; 30 seconds <= x < 15 minutes + # Option that determines the type of value that should be used to fill gaps (empty windows). + fillOption: NONE # defaults to STATIC + # If using the static fill option, this value is used for filling. + fillValue: null # default + # This setting gathers data in overlapping time windows to smooth the chart line, making it easier to spot trends. + slideBy: null # seconds + # Evaluation delay is how long we wait before we start evaluating a signal against the thresholds in this condition. + evaluationDelay: 60 + + +# 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: 21600 \ No newline at end of file diff --git a/alert-policies/lampy/CpuUtilization.yml b/alert-policies/lampy/CpuUtilization.yml new file mode 100644 index 0000000000..37f214f4dc --- /dev/null +++ b/alert-policies/lampy/CpuUtilization.yml @@ -0,0 +1,35 @@ +name: CPU Utilization + +description: |+ + This alert is triggered when the CPU utilization exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT average(host.cpuPercent) AS 'CPU used(%)' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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/lampy/MemoryUsed.yml b/alert-policies/lampy/MemoryUsed.yml new file mode 100644 index 0000000000..a14de1349d --- /dev/null +++ b/alert-policies/lampy/MemoryUsed.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Memory Used (%) + +# Description and details +description: |+ + This alert is triggered when the memory usage exceeds 90% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM SystemSample SELECT average(memoryUsedPercent) as 'Memory Used(%)'" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 50 + # 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 \ No newline at end of file diff --git a/alert-policies/lampy/QuestionsPerSecond.yml b/alert-policies/lampy/QuestionsPerSecond.yml new file mode 100644 index 0000000000..e3dd9707ef --- /dev/null +++ b/alert-policies/lampy/QuestionsPerSecond.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Questions Per Second + +# Description and details +description: |+ + This alert is triggered when the current rate of questions exceeds 4 for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT latest(`mysql.node.query.questionsPerSecond`) FROM Metric" + +# 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: 4 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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 \ No newline at end of file diff --git a/alert-policies/lampy/TransactionErrors.yml b/alert-policies/lampy/TransactionErrors.yml new file mode 100644 index 0000000000..adad977c77 --- /dev/null +++ b/alert-policies/lampy/TransactionErrors.yml @@ -0,0 +1,36 @@ +name: Transaction Errors + +description: |+ + This alert is triggered when the failed transaction rate exceeds 10% for 5 minutes. +type: STATIC +nrql: + query: "SELECT percentage(count(*), WHERE error is true) FROM Transaction" + +# 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: 30 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 20 + # 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/langchain-vectordb/APIResponseTime.yml b/alert-policies/langchain-vectordb/APIResponseTime.yml new file mode 100644 index 0000000000..c279327bf2 --- /dev/null +++ b/alert-policies/langchain-vectordb/APIResponseTime.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: API Response Time(seconds) + +# Description and details +description: |+ + This alert is triggered when the response time exceeds 2 seconds for 1 minute. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM LlmVectorSearch SELECT latest(response_time) WHERE applicationName IN ('LangChain observability trace') TIMESERIES" + +# 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: 120 + # 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/langchain-vectordb/ZeroDocumentsRetrieved.yml b/alert-policies/langchain-vectordb/ZeroDocumentsRetrieved.yml new file mode 100644 index 0000000000..c7088edb3e --- /dev/null +++ b/alert-policies/langchain-vectordb/ZeroDocumentsRetrieved.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Zero Documents Retrieved + +# Description and details +description: |+ + This alert is triggered when more than 20% of the searches return zero documents for 1 minute. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT filter(count(document_count), WHERE document_count=0) / count(document_count) * 100 from LlmVectorSearch WHERE applicationName IN ('LangChain observability trace')" + +# 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: 50 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 20 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/langchain/error.yml b/alert-policies/langchain/error.yml new file mode 100644 index 0000000000..1b90941cab --- /dev/null +++ b/alert-policies/langchain/error.yml @@ -0,0 +1,27 @@ +name: Errors + +description: |+ + This alert is triggered if the number of errors exceeds 2 within 5 minutes. +type: STATIC +nrql: + query: "FROM LlmChatCompletionSummary, LlmCompletion SELECT count(error_type) AS 'Error count' WHERE error_type IS NOT null" + +# 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 \ No newline at end of file diff --git a/alert-policies/langchain/requestsPerModel.yml b/alert-policies/langchain/requestsPerModel.yml new file mode 100644 index 0000000000..4c9a0e3be2 --- /dev/null +++ b/alert-policies/langchain/requestsPerModel.yml @@ -0,0 +1,35 @@ +name: Requests per model + +description: |+ + This alert is triggered if requests per model exceeds 1000 in 5 minutes. +type: STATIC +nrql: + query: "FROM LlmChatCompletionSummary, LlmCompletion, LlmEmbedding SELECT count(request.model) AS 'Requests per model'" + +# 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: 1000 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 900 + # 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 \ No newline at end of file diff --git a/alert-policies/langchain/responseTime.yml b/alert-policies/langchain/responseTime.yml new file mode 100644 index 0000000000..762b69a340 --- /dev/null +++ b/alert-policies/langchain/responseTime.yml @@ -0,0 +1,35 @@ +name: Response time + +description: |+ + This alert is triggered if response time exceeds 5 seconds in 5 minutes. +type: STATIC +nrql: + query: "FROM LlmChatCompletionSummary, LlmCompletion, LlmEmbedding SELECT latest(response_time)/1000" + +# 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: 15 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 10 + # 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 \ No newline at end of file diff --git a/alert-policies/lighttpd/BusyServers.yml b/alert-policies/lighttpd/BusyServers.yml new file mode 100644 index 0000000000..e6da521fb0 --- /dev/null +++ b/alert-policies/lighttpd/BusyServers.yml @@ -0,0 +1,36 @@ +name: Busy Servers (%) + +description: |+ + This alert is triggered when the active connection per server exceeds 80% for 5 minutes. +type: STATIC +nrql: + query: "FROM LighttpdStatusSample SELECT (latest(BusyServers) * 100)/(latest(BusyServers) + latest(IdleServers)) As 'Busy Servers (%)'" + +# 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.8 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration? + thresholdOccurrences: ALL + + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 0.6 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions. + 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/lighttpd/HighMemoryUsage.yml b/alert-policies/lighttpd/HighMemoryUsage.yml new file mode 100644 index 0000000000..6ac85517e2 --- /dev/null +++ b/alert-policies/lighttpd/HighMemoryUsage.yml @@ -0,0 +1,36 @@ +name: High Memory Usage (%) + +description: |+ + The alert is triggered when memory usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT average(host.memoryUsedPercent) AS 'High Memory Usage' FROM Metric" + +# 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.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration? + thresholdOccurrences: ALL + + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 0.8 + # 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/lighttpd/NumberOfRequests.yml b/alert-policies/lighttpd/NumberOfRequests.yml new file mode 100644 index 0000000000..e5372fb16c --- /dev/null +++ b/alert-policies/lighttpd/NumberOfRequests.yml @@ -0,0 +1,36 @@ +name: Number of Requests (%) + +description: |+ + This alert is triggered when the number of requests exceeds 80% for 2 minutes. +type: STATIC +nrql: + query: "SELECT latest(RequestAverage5s)/latest(RequestsTotal) * 100 AS 'Number of Requests (%)' FROM LighttpdStatusSample where RequestAverage5s > 0" + +# 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.8 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # How many data points must be in violation for the duration? + thresholdOccurrences: ALL + + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 0.6 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/llm-application/APIResponseTime.yml b/alert-policies/llm-application/APIResponseTime.yml new file mode 100644 index 0000000000..22d3c22a90 --- /dev/null +++ b/alert-policies/llm-application/APIResponseTime.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: API Response Time(seconds) + +# Description and details +description: |+ + This alert is triggered when the response time exceeds 15 seconds for 1 minute. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM LlmChatCompletionSummary, LlmCompletion, LlmEmbedding SELECT percentile(response_time, 95) TIMESERIES FACET entity.guid" + +# 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: 15 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/llm-application/cost.yml b/alert-policies/llm-application/cost.yml new file mode 100644 index 0000000000..5cc6feeccb --- /dev/null +++ b/alert-policies/llm-application/cost.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Cost + +# Description and details +description: |+ + This alert is triggered when the cost exceeds 10 USD for 1 minute. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM LlmChatCompletionSummary, LlmCompletion SELECT filter(sum(usage.prompt_tokens) * 0.0300 / 1000, where response.model in ('gpt-4', 'gpt-4-0314', 'gpt-4-0613')) + filter(sum(usage.completion_tokens) * 0.0600 / 1000, where response.model LIKE '%gpt-4%' AND respsonse.model NOT LIKE '%32k%') + filter(sum(usage.prompt_tokens) * 0.0600 / 1000, where response.model LIKE '%gpt-4-32k%') + filter(sum(usage.completion_tokens) * 0.1200 / 1000, where response.model LIKE '%gpt-4-32k%') + filter(sum(usage.total_tokens) * 0.0020 / 1000, where response.model LIKE '%gpt-3.5-turbo%') + filter(sum(usage.total_tokens) * 0.0200 / 1000, where response.model LIKE '%davinci%') + filter(sum(usage.total_tokens) * 0.0020 / 1000, where response.model LIKE '%curie%') + filter(sum(usage.total_tokens) * 0.0005 / 1000, where response.model LIKE '%babbage%') + filter(sum(usage.total_tokens) * 0.0004 / 1000, where response.model LIKE '%ada%') as 'Cost (USD)' FACET entity.guid" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 8 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/magento-business-insights/5xxErrors.yml b/alert-policies/magento-business-insights/5xxErrors.yml new file mode 100644 index 0000000000..c3405d07cf --- /dev/null +++ b/alert-policies/magento-business-insights/5xxErrors.yml @@ -0,0 +1,35 @@ +name: 5xx Server Errors + +description: |+ + This alert is triggered if the customer faces 5xx server errors more than 5 times in 5 minutes. +type: STATIC +nrql: + query: "SELECT count(*) as '5xx Server Errors' from Transaction WHERE httpResponseCode LIKE '5%'" + +# 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: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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 \ No newline at end of file diff --git a/alert-policies/magento-business-insights/cpuUsage.yml b/alert-policies/magento-business-insights/cpuUsage.yml new file mode 100644 index 0000000000..61dbd1af7b --- /dev/null +++ b/alert-policies/magento-business-insights/cpuUsage.yml @@ -0,0 +1,35 @@ +name: CPU Usage (%) + +description: |+ + This alert is triggered if CPU usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.cpuPercent) AS 'CPU Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/magento-business-insights/downtime.yml b/alert-policies/magento-business-insights/downtime.yml new file mode 100644 index 0000000000..69a02c4656 --- /dev/null +++ b/alert-policies/magento-business-insights/downtime.yml @@ -0,0 +1,35 @@ +name: Downtime (%) + +description: |+ + This alert is triggered if Downtime is more than 1% for 2 minutes. +type: STATIC +nrql: + query: "SELECT percentage(count(result), where result = 'FAILED') as 'Downtime (%)' from SyntheticCheck" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.5 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/magento-business-insights/memoryUsage.yml b/alert-policies/magento-business-insights/memoryUsage.yml new file mode 100644 index 0000000000..d360505a9c --- /dev/null +++ b/alert-policies/magento-business-insights/memoryUsage.yml @@ -0,0 +1,35 @@ +name: Memory Usage (%) + +description: |+ + This alert is triggered if Memory usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(host.memoryUsedPercent) as 'Memory Used %' FROM Metric" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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 \ No newline at end of file diff --git a/alert-policies/mexn/FirstContentfulPaint.yml b/alert-policies/mexn/FirstContentfulPaint.yml new file mode 100644 index 0000000000..e5cb8f8537 --- /dev/null +++ b/alert-policies/mexn/FirstContentfulPaint.yml @@ -0,0 +1,42 @@ +# Name of the alert +name: First Contentful Paint + +# Description and details +description: |+ + This alert is triggered when the first contentful paint exceeds 2 seconds for 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT percentile(firstContentfulPaint, 75) AS 'Seconds' FROM PageViewTiming" + +# 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: 3 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # 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/mexn/FreeMemoryPercent.yml b/alert-policies/mexn/FreeMemoryPercent.yml new file mode 100644 index 0000000000..7e41ebc280 --- /dev/null +++ b/alert-policies/mexn/FreeMemoryPercent.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Free Memory (%) + +# Description and details +description: |+ + This alert is triggered when the server memory is less than 20% for 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT latest(memoryFreePercent) AS 'Percent (%)' FROM SystemSample" + +# 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: BELOW + # Value that triggers a violation + threshold: 15 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 20 + # 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/mexn/MongoDBUp.yml b/alert-policies/mexn/MongoDBUp.yml new file mode 100644 index 0000000000..e9303f6781 --- /dev/null +++ b/alert-policies/mexn/MongoDBUp.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: MongoDB Up + +# Description and details +description: |+ + This alert is triggered when the MongoDB is down for 3 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "FROM Metric SELECT latest(mongodb_up)" + +# 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: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 240 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 180 + # 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/mexn/TransactionErrors.yml b/alert-policies/mexn/TransactionErrors.yml new file mode 100644 index 0000000000..3b64ac766e --- /dev/null +++ b/alert-policies/mexn/TransactionErrors.yml @@ -0,0 +1,37 @@ +name: Transaction Errors + +description: |+ + This alert is triggered when 1 or more transactions fail for 5 minutes. + +type: STATIC +nrql: + query: + "SELECT COUNT(*) FROM TransactionError WHERE appName LIKE '%'" + +# 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 + - priority: WARNING + # 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/mobile-crash-analytics/HighCrashRate.yml b/alert-policies/mobile-crash-analytics/HighCrashRate.yml new file mode 100644 index 0000000000..eb62b6fa5e --- /dev/null +++ b/alert-policies/mobile-crash-analytics/HighCrashRate.yml @@ -0,0 +1,48 @@ +# Name of the alert +name: High Crash Rate (Mobile) + +# Description and details +description: |+ + This alert fires when the crash rate of your mobile app goes above 10 percent for a period of 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(sessionId), where category = 'Crash') as 'Crash rate' FROM MobileSession, MobileCrash FACET appName " + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile-crash-analytics/HighCrashRateByVersion.yml b/alert-policies/mobile-crash-analytics/HighCrashRateByVersion.yml new file mode 100644 index 0000000000..deb50d9e7a --- /dev/null +++ b/alert-policies/mobile-crash-analytics/HighCrashRateByVersion.yml @@ -0,0 +1,49 @@ +# Name of the alert +name: High Crash Rate by Version (Mobile) + +# Description and details +description: |+ + This alert fires when the crash rate for a specific version of your mobile app goes above 10 percent for a period of 5 minutes. + + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(sessionId), where category = 'Crash') as 'Crash rate' FROM MobileSession, MobileCrash FACET appName, appVersion" + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile-crash-analytics/HighUniqueCrashRate.yml b/alert-policies/mobile-crash-analytics/HighUniqueCrashRate.yml new file mode 100644 index 0000000000..bfc7b7428d --- /dev/null +++ b/alert-policies/mobile-crash-analytics/HighUniqueCrashRate.yml @@ -0,0 +1,48 @@ +# Name of the alert +name: High Unique Crash Count (Mobile) + +# Description and details +description: |+ + This alert fires when the rate of crashes from unique locations in your mobile app goes above 10 percent for a period of 60 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT uniqueCount(crashLocation) FROM MobileCrash FACET appName" + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 3600 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 5 + thresholdDuration: 1800 + 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile/HighHttpErrorRate.yml b/alert-policies/mobile/HighHttpErrorRate.yml new file mode 100644 index 0000000000..30d4a11282 --- /dev/null +++ b/alert-policies/mobile/HighHttpErrorRate.yml @@ -0,0 +1,48 @@ +# Name of the alert +name: High HTTP Request Error Rate (Mobile) + +# Description and details +description: |+ + This alert fires when the error rate of HTTP network requests made by your mobile app goes above 5 percent for a period of 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(requestUuid), WHERE category = 'RequestError') FROM MobileRequest,MobileRequestError FACET appName" + +# 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; float value + threshold: 5 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 3 + 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile/HighPercentageUsersAffectedByExceptions.yml b/alert-policies/mobile/HighPercentageUsersAffectedByExceptions.yml new file mode 100644 index 0000000000..b55ccb5f32 --- /dev/null +++ b/alert-policies/mobile/HighPercentageUsersAffectedByExceptions.yml @@ -0,0 +1,48 @@ +# Name of the alert +name: High Percentage of Users Affected by Exception (Mobile) + +# Description and details +description: |+ + This alert fires when the rate of users affect by exceptions in your mobile app goes above 10 percent for a period of 5 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) as 'Users affected' FROM MobileSession, MobileHandledException FACET appName" + +# 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; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile/LowAppLaunchCount.yml b/alert-policies/mobile/LowAppLaunchCount.yml new file mode 100644 index 0000000000..4775941459 --- /dev/null +++ b/alert-policies/mobile/LowAppLaunchCount.yml @@ -0,0 +1,49 @@ +# Name of the alert +name: Low App Launch Count (Mobile) + +# Description and details +description: |+ + This alert fires when the number of mobile app launches goes below 10 for a period of 5 minutes. + It will also fire if number of launches drops to 0 for a period of 30 minutes. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT percentage(uniqueCount(requestUuid), WHERE category = 'RequestError') FROM MobileRequest,MobileRequestError FACET appName" + +# 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: BELOW + # Value that triggers a violation; float value + threshold: 10 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: BELOW + threshold: 20 + thresholdDuration: 300 + thresholdOccurrences: AT_LEAST_ONCE + +# Loss of Signal Settings +expiration: + # Close open violations if signal is lost (Default: false) + closeViolationsOnExpiration: true + # Open "Loss of Signal" violation if signal is lost (Default: false) + openViolationOnExpiration: true + # Time in seconds; Max value: 172800 (48hrs), null if closeViolationsOnExpiration and openViolationOnExpiration are both 'false' + expirationDuration: 1800 + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/mobile/SlowNetworkResponse.yml b/alert-policies/mobile/SlowNetworkResponse.yml new file mode 100644 index 0000000000..7e72bbefe8 --- /dev/null +++ b/alert-policies/mobile/SlowNetworkResponse.yml @@ -0,0 +1,49 @@ +# Name of the alert +name: Slow Network Response Time (Mobile) + +# Description and details +description: |+ + This alert fires when the average response time of network requests made by your mobile app goes above 3 seconds for a period of 5 minutes. + + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT average(responseTime) FROM MobileRequest FACET appName" + +# 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; float value + threshold: 3 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + + # Adding a Warning threshold is optional + - priority: WARNING + operator: ABOVE + threshold: 2 + 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: null + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/network-routers-and-switches/average-receive-violation.yml b/alert-policies/network-routers-and-switches/average-receive-violation.yml index 243c6a58d4..547ca55789 100644 --- a/alert-policies/network-routers-and-switches/average-receive-violation.yml +++ b/alert-policies/network-routers-and-switches/average-receive-violation.yml @@ -1,4 +1,4 @@ -name: Uplink Interface Down Violation +name: Average Receive % Used Violation description: |+ This alert will trigger when a router or switch interface that has *uplink* in the description has more than 90% receive utilization. You can change the filter this to only alert for specific interface names or descriptions. diff --git a/alert-policies/network-routers-and-switches/average-transmit-violation.yml b/alert-policies/network-routers-and-switches/average-transmit-violation.yml index 6ea5b7d342..21af66c604 100644 --- a/alert-policies/network-routers-and-switches/average-transmit-violation.yml +++ b/alert-policies/network-routers-and-switches/average-transmit-violation.yml @@ -5,7 +5,7 @@ description: |+ type: STATIC nrql: - query: "average(kentik.snmp.IfOutUtilization) FACET device_name, if_interface_name, if_Alias WHERE metricName = 'kentik.snmp.IfOutUtilization' AND entity.type in ('ROUTER','SWITCH') and if_Type like 'ethernetcsmacd'" + query: "FROM METRIC SELECT average(kentik.snmp.IfOutUtilization) FACET device_name, if_interface_name, if_Alias WHERE metricName = 'kentik.snmp.IfOutUtilization' AND entity.type in ('ROUTER','SWITCH') and if_Type like 'ethernetcsmacd'" valueFunction: SINGLE_VALUE diff --git a/alert-policies/node-js/HighCpuUtilization.yml b/alert-policies/node-js/HighCpuUtilization.yml index d20f105a82..2434e345e9 100644 --- a/alert-policies/node-js/HighCpuUtilization.yml +++ b/alert-policies/node-js/HighCpuUtilization.yml @@ -1,7 +1,7 @@ -name: High CPU Utilization +name: CPU Utilization description: |+ - This alert is triggered when the CPU Utilization is above 90%. + This alert is triggered when the CPU utilization exceeds 90% for 5 minutes. type: STATIC nrql: @@ -22,6 +22,15 @@ terms: thresholdDuration: 300 # How many data points must be in violation for the duration thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 85 + # 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]) diff --git a/alert-policies/node-js/HighMemoryUsage.yml b/alert-policies/node-js/HighMemoryUsage.yml index 9f1207f614..994ce78a79 100644 --- a/alert-policies/node-js/HighMemoryUsage.yml +++ b/alert-policies/node-js/HighMemoryUsage.yml @@ -1,7 +1,7 @@ name: Memory Usage description: |+ - This alert is triggered when Memory usage is above 90% + This alert is triggered when the Memory usage exceeds 90% for 5 minutes. type: STATIC nrql: query: "SELECT average(memoryUsedBytes/memoryTotalBytes) * 100 FROM SystemSample" @@ -20,6 +20,15 @@ terms: thresholdDuration: 300 # How many data points must be in violation for the duration thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 85 + # 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]) diff --git a/alert-policies/node-js/LowApdexScore.yml b/alert-policies/node-js/LowApdexScore.yml index 642f6bf43c..dcab439ef4 100644 --- a/alert-policies/node-js/LowApdexScore.yml +++ b/alert-policies/node-js/LowApdexScore.yml @@ -1,10 +1,10 @@ name: Apdex Score description: |+ - This alert is triggered when the Apdex score is below 0.5 for 5 minutes + This alert is triggered when the Apdex score is below 0.5 for 5 minutes. type: STATIC nrql: - query: "SELECT apdex(duration, t: 0.5) FROM Transaction WHERE appName like '%'" + query: "SELECT apdex(duration, t: 0.5) FROM Transaction FACET appName" # Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) valueFunction: SINGLE_VALUE diff --git a/alert-policies/node-js/TransactionErrors.yml b/alert-policies/node-js/TransactionErrors.yml index de8232200f..ecede3b9dd 100644 --- a/alert-policies/node-js/TransactionErrors.yml +++ b/alert-policies/node-js/TransactionErrors.yml @@ -1,14 +1,13 @@ -name: Transaction Errors +name: Web Transaction Errors description: |+ - This alert is triggered when the the transactions fail more than 10% of the time in 5 minutes. + This alert is triggered when the web transactions fail exceeds 10% for 5 minutes. type: STATIC nrql: query: "SELECT count(apm.service.error.count) / count(apm.service.transaction.duration) * 100 - as 'Web errors' FROM Metric WHERE appName like '%' - AND (transactionType = 'Web')" + as 'Web errors' FROM Metric WHERE appName LIKE '%' AND (transactionType = 'Web') FACET appName" # Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) valueFunction: SINGLE_VALUE @@ -24,6 +23,15 @@ terms: thresholdDuration: 300 # How many data points must be in violation for the duration thresholdOccurrences: ALL + - priority: WARNING + # 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]) diff --git a/alert-policies/nr-logs-summary/logging-nrintegration-errors.yml b/alert-policies/nr-logs-summary/logging-nrintegration-errors.yml new file mode 100644 index 0000000000..d6fa2d41f3 --- /dev/null +++ b/alert-policies/nr-logs-summary/logging-nrintegration-errors.yml @@ -0,0 +1,31 @@ +name: Logging NrIntegration Errors +description: |+ + This alert is triggered when the number of Logging NrIntegrationErrors exceeds 0. + +type: STATIC +nrql: + query: "SELECT count(*) FROM NrIntegrationError WHERE newRelicFeature = 'Logs' FACET message" + +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL + +expiration: + closeViolationsOnExpiration: false + openViolationOnExpiration: false + expirationDuration: null + +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationTimer: null + aggregationWindow: 60 + fillOption: NONE + fillValue: null + slideBy: null + +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/nvidia-dcgm/HighTemperature.yml b/alert-policies/nvidia-dcgm/HighTemperature.yml new file mode 100644 index 0000000000..60232b317c --- /dev/null +++ b/alert-policies/nvidia-dcgm/HighTemperature.yml @@ -0,0 +1,27 @@ +name: High GPU Temperature + +description: |+ + TThis alert is triggered when the NVIDIA GPU Temperature is above 90%. + +type: STATIC +nrql: + query: "SELECT latest(DCGM_FI_DEV_GPU_TEMP) AS 'gpu temperature' FROM Metric WHERE metricName LIKE 'DCGM_FI_DEV_GPU_TEMP'" + +# 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: 90 + # 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/nvidia-dcgm/XidError.yml b/alert-policies/nvidia-dcgm/XidError.yml new file mode 100644 index 0000000000..e5346761c1 --- /dev/null +++ b/alert-policies/nvidia-dcgm/XidError.yml @@ -0,0 +1,27 @@ +name: XID Error + +description: |+ + This alert is triggered when the error is higher than 3 for 5 minutes. + +type: STATIC +nrql: + query: "SELECT latest(DCGM_FI_DEV_XID_ERRORS) AS 'errors' FROM Metric WHERE metricName like 'DCGM_FI_DEV_XID_ERRORS'" + +# 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: 3 + # 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/nvidia-gpu/HighMemoryUtilization.yml b/alert-policies/nvidia-gpu/HighMemoryUtilization.yml new file mode 100644 index 0000000000..e003127f7e --- /dev/null +++ b/alert-policies/nvidia-gpu/HighMemoryUtilization.yml @@ -0,0 +1,27 @@ +name: High GPU Memory Utilization + +description: |+ + This alert is triggered when the Nvidia GPU memory utilization is above 90%. + +type: STATIC +nrql: + query: "SELECT latest(utilization.memory.percent) FROM NvidiaGpuSample" + +# 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: 90 + # 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/openstack-controller/ImageStatus.yml b/alert-policies/openstack-controller/ImageStatus.yml new file mode 100644 index 0000000000..35d10a1453 --- /dev/null +++ b/alert-policies/openstack-controller/ImageStatus.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Image Status + +# Description and details +description: |+ + This alert is triggered when the image status is inactive for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT count(*)FROM OSImageSample where openstack.glance.image.status != 'active'" + +# 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/openstack-controller/MemoryUsage.yml b/alert-policies/openstack-controller/MemoryUsage.yml new file mode 100644 index 0000000000..ef35e853f5 --- /dev/null +++ b/alert-policies/openstack-controller/MemoryUsage.yml @@ -0,0 +1,40 @@ +# Name of the alert +name: Memory Usage Percent + +# Description and details +description: |+ + This alert is triggered when the memory usage exceeds 90% for 5 minutes +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT average(`memoryUsedBytes`/`memoryTotalBytes`*100) FROM SystemSample 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/openstack-controller/ServerFreeMemoryLow.yml b/alert-policies/openstack-controller/ServerFreeMemoryLow.yml new file mode 100644 index 0000000000..45735420ca --- /dev/null +++ b/alert-policies/openstack-controller/ServerFreeMemoryLow.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Server Free Memory Low(%) + +# Description and details +description: |+ + This alert is triggered when server free memory is less than 10% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT average(`memoryFreeBytes`/`memoryTotalBytes`*100) FROM SystemSample 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: BELOW + # Value that triggers a violation + threshold: 10 + # 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 \ No newline at end of file diff --git a/alert-policies/postfix/ConnectionLost.yml b/alert-policies/postfix/ConnectionLost.yml new file mode 100644 index 0000000000..c80b665ba1 --- /dev/null +++ b/alert-policies/postfix/ConnectionLost.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: SMTPD Connection Lost (%) + +# Description and details +description: |+ + This alert is triggered when the lost connections exceed 5%. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT (latest(PostfixSMTPDconnectionLost.value) * 100) / (SELECT latest(value) FROM PostfixSMTPDconnection) AS '(%) connection lost' FROM PostfixSMTPDconnectionLost" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 2 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/postfix/ConnectionTimeout.yml b/alert-policies/postfix/ConnectionTimeout.yml new file mode 100644 index 0000000000..902c56a9ab --- /dev/null +++ b/alert-policies/postfix/ConnectionTimeout.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: SMTPD Connection Timed Out (%) + +# Description and details +description: |+ + This alert is triggered when the connection timeout exceeds 5%. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT (latest(PostfixSMTPDtimedOut.value) * 100) / (SELECT latest(value) FROM PostfixSMTPDconnection) AS '(%) connection timed out' FROM PostfixSMTPDtimedOut" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 2 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/postfix/PostfixServiceDown.yml b/alert-policies/postfix/PostfixServiceDown.yml new file mode 100644 index 0000000000..246bdbccdb --- /dev/null +++ b/alert-policies/postfix/PostfixServiceDown.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Postfix Service Down + +# Description and details +description: |+ + This alert is triggered when the Postfix service is down. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT latest(value) as 'Postfix service status' FROM PostfixDown" + +# 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.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/redis-otel/HighMemoryUsage.yml b/alert-policies/redis-otel/HighMemoryUsage.yml new file mode 100644 index 0000000000..8eb28f6fb1 --- /dev/null +++ b/alert-policies/redis-otel/HighMemoryUsage.yml @@ -0,0 +1,40 @@ +name: Memory utilization is too high + +# Description and details +description: | + This alert is triggered when the memory utilization exceeds 90%. Please ensure the `redis.maxmemory` metric from the Redis receiver is enabled for this alert to function correctly. + +# Type of alert: BASELINE | STATIC +type: STATIC + +# 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: "FROM Metric SELECT (max(redis.memory.used)/max(redis.maxmemory))*100" + +# 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: 90 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # 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/sendmail/HighMemory.yml b/alert-policies/sendmail/HighMemory.yml new file mode 100644 index 0000000000..dad295644a --- /dev/null +++ b/alert-policies/sendmail/HighMemory.yml @@ -0,0 +1,37 @@ +name: High Memory (%) + +description: |+ + This alert is triggered when memory usage exceeds 95% for 5 minutes. +type: STATIC +nrql: + query: "SELECT average(host.memoryUsedPercent) AS '(%) high memory' FROM Metric FACET host.hostname" + +# 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: 95 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration? + thresholdOccurrences: ALL + + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 90 + # 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/sendmail/MessageUndelivered.yml b/alert-policies/sendmail/MessageUndelivered.yml new file mode 100644 index 0000000000..5172d6ffaf --- /dev/null +++ b/alert-policies/sendmail/MessageUndelivered.yml @@ -0,0 +1,42 @@ +# Name of the alert +name: Message Undelivered (%) + +# Description and details +description: |+ + This alert is triggered when 5 percent or more of messages are undelivered. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT ((latest(SendmailMessageAcceptedForDelivery.value)) / latest(SendmailMessageStatus.sent)) * 100 as '(%) message undelivered' from SendmailMessageStatus, SendmailMessageAcceptedForDelivery" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/sendmail/SendmailServiceStatus.yml b/alert-policies/sendmail/SendmailServiceStatus.yml new file mode 100644 index 0000000000..01cd4eed17 --- /dev/null +++ b/alert-policies/sendmail/SendmailServiceStatus.yml @@ -0,0 +1,34 @@ +# Name of the alert +name: Sendmail Service Status + +# Description and details +description: |+ + This alert is triggered when the Sendmail service is down. + +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT latest(value) as 'Sendmail service status' FROM SendmailDown" + +# 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.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/sendmail/TotalErrorsLogged.yml b/alert-policies/sendmail/TotalErrorsLogged.yml new file mode 100644 index 0000000000..7e66b3b7cb --- /dev/null +++ b/alert-policies/sendmail/TotalErrorsLogged.yml @@ -0,0 +1,42 @@ +# Name of the alert +name: Total Errors Logged + +# Description and details +description: |+ + This alert is triggered when the number of logged errors exceeds 2. +# Type of alert +type: STATIC + +# NRQL query +nrql: + query: "SELECT latest(value) as 'total errors logged' FROM SendmailErrorCount" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.9 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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/sonarqube/ActiveDatabaseConnections.yml b/alert-policies/sonarqube/ActiveDatabaseConnections.yml new file mode 100644 index 0000000000..7eada42c85 --- /dev/null +++ b/alert-policies/sonarqube/ActiveDatabaseConnections.yml @@ -0,0 +1,41 @@ +# Name of the alert +name: Percentage of Active Database Connections + +# Description and details +description: |+ + This alert is triggered if the database connections usage exceeds 90% for 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT (latest(db.connections) / latest(db.maxconnections)) * 100 AS '(%) active database connections' FROM PostgresqlDatabaseSample" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600, must be a multiple of 60 for Baseline conditions + 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 \ No newline at end of file diff --git a/alert-policies/sonarqube/ComputeEngineUp.yml b/alert-policies/sonarqube/ComputeEngineUp.yml new file mode 100644 index 0000000000..d9dbe3f444 --- /dev/null +++ b/alert-policies/sonarqube/ComputeEngineUp.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Compute Engine Up + +# Description and details +description: |+ + This alert is triggered when the compute engine is down for at least 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(sonarqube_health_compute_engine_status) AS '' FROM Metric" + +# 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: BELOW + # 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/sonarqube/ElasticsearchUp.yml b/alert-policies/sonarqube/ElasticsearchUp.yml new file mode 100644 index 0000000000..8812c1cf9e --- /dev/null +++ b/alert-policies/sonarqube/ElasticsearchUp.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: Elasticsearch Up + +# Description and details +description: |+ + This alert is triggered when Elasticsearch is down for at least 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(sonarqube_health_elasticsearch_status) AS '' FROM Metric" + +# 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: BELOW + # 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/sonarqube/SonarQubeDowntime.yml b/alert-policies/sonarqube/SonarQubeDowntime.yml new file mode 100644 index 0000000000..1d9ee7ad80 --- /dev/null +++ b/alert-policies/sonarqube/SonarQubeDowntime.yml @@ -0,0 +1,32 @@ +# Name of the alert +name: SonarQube Downtime + +# Description and details +description: |+ + The alert is triggered when the SonarQube is down for at least 5 minutes. +# Type of alert +type: STATIC + +# NRQL query +nrql: + + query: "SELECT latest(sonarqube_health_web_status) AS '' FROM Metric" + +# 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: BELOW + # 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: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/stripe/clientErrors.yml b/alert-policies/stripe/clientErrors.yml new file mode 100644 index 0000000000..3def22a8a3 --- /dev/null +++ b/alert-policies/stripe/clientErrors.yml @@ -0,0 +1,35 @@ +name: 4xx client errors + +description: |+ + This alert is triggered if customer faces 4xx errors more than 5 times for 5 minutes. +type: STATIC +nrql: + query: "SELECT count(*) from Transaction WHERE httpResponseCode LIKE '4%'" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # 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 \ No newline at end of file diff --git a/alert-policies/stripe/downtime.yml b/alert-policies/stripe/downtime.yml new file mode 100644 index 0000000000..69a02c4656 --- /dev/null +++ b/alert-policies/stripe/downtime.yml @@ -0,0 +1,35 @@ +name: Downtime (%) + +description: |+ + This alert is triggered if Downtime is more than 1% for 2 minutes. +type: STATIC +nrql: + query: "SELECT percentage(count(result), where result = 'FAILED') as 'Downtime (%)' from SyntheticCheck" + +# 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: 120 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.5 + # Time in seconds; 120 - 3600 + thresholdDuration: 120 + # 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 \ No newline at end of file diff --git a/alert-policies/stripe/transactionSuccessRate.yml b/alert-policies/stripe/transactionSuccessRate.yml new file mode 100644 index 0000000000..252d4f6ec3 --- /dev/null +++ b/alert-policies/stripe/transactionSuccessRate.yml @@ -0,0 +1,35 @@ +name: Transaction success rate (%) + +description: |+ + This alert is triggered if the Transaction success rate is below 5% for 5 minutes. +type: STATIC +nrql: + query: "SELECT FILTER(COUNT(stripe.session_id), WHERE stripe.status = 'complete') * 100.0 / COUNT(stripe.session_id) AS 'Transaction success rate (%)' from Metric" + +# 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: BELOW + # 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: 10 + # 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 \ No newline at end of file diff --git a/alert-policies/vertica/DiskUsed.yml b/alert-policies/vertica/DiskUsed.yml new file mode 100644 index 0000000000..fc828ba1c8 --- /dev/null +++ b/alert-policies/vertica/DiskUsed.yml @@ -0,0 +1,37 @@ +name: Disk Space Used (%) + +description: |+ + This alert is triggered when disk space usage exceeds 90% for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(disk_space_free_percent) as 'Disk Space Used (%)' FROM VerticaDiskStorage" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration? + thresholdOccurrences: ALL + + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation. + threshold: 85 + # 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/vmware-vsphere/cluster-overall-status.yml b/alert-policies/vmware-vsphere/cluster-overall-status.yml new file mode 100644 index 0000000000..5f6a325931 --- /dev/null +++ b/alert-policies/vmware-vsphere/cluster-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Cluster overallStatus = 'red' +description: |+ + This alert fires when a vSphere Cluster has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereClusterSample SELECT count(*) FACET datacenterName, displayName WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/datacenter-overall-status.yml b/alert-policies/vmware-vsphere/datacenter-overall-status.yml new file mode 100644 index 0000000000..049629e9ff --- /dev/null +++ b/alert-policies/vmware-vsphere/datacenter-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Datacenter overallStatus = 'red' +description: |+ + This alert fires when a vSphere Datacenter has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereDatacenterSample SELECT count(*) FACET datacenterName WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/datastore-accessible.yml b/alert-policies/vmware-vsphere/datastore-accessible.yml new file mode 100644 index 0000000000..a23f842c0d --- /dev/null +++ b/alert-policies/vmware-vsphere/datastore-accessible.yml @@ -0,0 +1,19 @@ +name: vSphere Datastore is not accessible +description: |+ + This alert fires when a vSphere Datastore is not accessible for longer than 5 minutes, indicating a loss of connectivity. +type: STATIC +nrql: + query: "FROM VSphereDatastoreSample SELECT count(*) FACET datacenterName, name, displayName WHERE accessible = 'false'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/datastore-capacity-percent.yml b/alert-policies/vmware-vsphere/datastore-capacity-percent.yml new file mode 100644 index 0000000000..d29c61864d --- /dev/null +++ b/alert-policies/vmware-vsphere/datastore-capacity-percent.yml @@ -0,0 +1,19 @@ +name: vSphere Datastore high Capacity Utilization +description: |+ + This alert fires when a vSphere Datastore has capacity utilization % > 90 for longer than 10 minutes. +type: STATIC +nrql: + query: "FROM VSphereDatastoreSample SELECT ((max(capacity) - max(freeSpace)) / max(capacity)) * 100 FACET datacenterName, name, displayName" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 90 + thresholdDuration: 600 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/datastore-overall-status.yml b/alert-policies/vmware-vsphere/datastore-overall-status.yml new file mode 100644 index 0000000000..cb7470e0b1 --- /dev/null +++ b/alert-policies/vmware-vsphere/datastore-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Datastore overallStatus = 'red' +description: |+ + This alert fires when a vSphere Datastore has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereDatastoreSample SELECT count(*) FACET datacenterName, name, displayName WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/host-connection-state.yml b/alert-policies/vmware-vsphere/host-connection-state.yml new file mode 100644 index 0000000000..484e6fbc84 --- /dev/null +++ b/alert-policies/vmware-vsphere/host-connection-state.yml @@ -0,0 +1,19 @@ +name: vSphere Host connection lost +description: |+ + This alert fires when a vSphere Host is not responding to heartbeats for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereHostSample SELECT count(*) FACET datacenterName, clusterName, hypervisorHostname WHERE connectionState = 'notResponding'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/host-cpu-percent.yml b/alert-policies/vmware-vsphere/host-cpu-percent.yml new file mode 100644 index 0000000000..f56408fcc6 --- /dev/null +++ b/alert-policies/vmware-vsphere/host-cpu-percent.yml @@ -0,0 +1,19 @@ +name: vSphere Host high CPU Utilization +description: |+ + This alert fires when a vSphere Host has a CPU utilization % > 90 for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereHostSample SELECT max(cpu.percent) FACET datacenterName, clusterName, hypervisorHostname" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 90 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/host-memory-percent.yml b/alert-policies/vmware-vsphere/host-memory-percent.yml new file mode 100644 index 0000000000..fa46f1e4e7 --- /dev/null +++ b/alert-policies/vmware-vsphere/host-memory-percent.yml @@ -0,0 +1,19 @@ +name: vSphere Host high Memory Utilization +description: |+ + This alert fires when a vSphere Host has memory utilization % > 90 for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereHostSample SELECT (max(mem.usage) / max(mem.size)) * 100 FACET datacenterName, clusterName, hypervisorHostname" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 90 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/host-overall-status.yml b/alert-policies/vmware-vsphere/host-overall-status.yml new file mode 100644 index 0000000000..82193e1a21 --- /dev/null +++ b/alert-policies/vmware-vsphere/host-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Host overallStatus = 'red' +description: |+ + This alert fires when a vSphere Host has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereHostSample SELECT count(*) FACET datacenterName, clusterName, hypervisorHostname WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/resourcepool-cpu-percent.yml b/alert-policies/vmware-vsphere/resourcepool-cpu-percent.yml new file mode 100644 index 0000000000..106f8e517e --- /dev/null +++ b/alert-policies/vmware-vsphere/resourcepool-cpu-percent.yml @@ -0,0 +1,19 @@ +name: vSphere Resource Pool high CPU Utilization +description: |+ + This alert fires when a vSphere Resource Pool has a CPU utilization % > 90 for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereResourcePoolSample SELECT (max(cpu.overallUsage) / max(cpu.totalMHz)) * 100 FACET datacenterName, clusterName, resourcePoolName" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 90 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/resourcepool-memory-percent.yml b/alert-policies/vmware-vsphere/resourcepool-memory-percent.yml new file mode 100644 index 0000000000..668dbf8bc9 --- /dev/null +++ b/alert-policies/vmware-vsphere/resourcepool-memory-percent.yml @@ -0,0 +1,19 @@ +name: vSphere Resource Pool high Memory Utilization +description: |+ + This alert fires when a vSphere Resource Pool has memory utilization % > 90 for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereResourcePoolSample SELECT (max(mem.usage) / max(mem.size)) * 100 FACET datacenterName, clusterName, resourcePoolName" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 90 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/resourcepool-overall-status.yml b/alert-policies/vmware-vsphere/resourcepool-overall-status.yml new file mode 100644 index 0000000000..6b189ded9c --- /dev/null +++ b/alert-policies/vmware-vsphere/resourcepool-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Resource Pool overallStatus = 'red' +description: |+ + This alert fires when a vSphere Resource Pool has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereResourcePoolSample SELECT count(*) FACET datacenterName, clusterName, resourcePoolName WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/vmware-vsphere/vm-overall-status.yml b/alert-policies/vmware-vsphere/vm-overall-status.yml new file mode 100644 index 0000000000..2ead87afbf --- /dev/null +++ b/alert-policies/vmware-vsphere/vm-overall-status.yml @@ -0,0 +1,19 @@ +name: vSphere Virtual Machine overallStatus = 'red' +description: |+ + This alert fires when a vSphere Virtual Machine has an overall status = 'red' for longer than 5 minutes. +type: STATIC +nrql: + query: "FROM VSphereVmSample SELECT count(*) FACET datacenterName, clusterName, displayName WHERE overallStatus = 'red'" +valueFunction: SINGLE_VALUE +terms: + - priority: CRITICAL + operator: ABOVE + threshold: 0 + thresholdDuration: 300 + thresholdOccurrences: ALL +signal: + aggregationDelay: 120 + aggregationMethod: EVENT_FLOW + aggregationWindow: 60 + +violationTimeLimitSeconds: 259200 diff --git a/alert-policies/websphere-liberty-profile/AverageResponseTime.yml b/alert-policies/websphere-liberty-profile/AverageResponseTime.yml new file mode 100644 index 0000000000..1706298747 --- /dev/null +++ b/alert-policies/websphere-liberty-profile/AverageResponseTime.yml @@ -0,0 +1,36 @@ +name: Average Response Time + +description: |+ + This alert is triggered if Average Response Time exceeds 1 second for 5 minutes. + +type: STATIC +nrql: + query: "SELECT average(duration) as 'Average Response Time (seconds)' from Transaction" + +# 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: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 0.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/websphere-liberty-profile/HeapMemoryUsage.yml b/alert-policies/websphere-liberty-profile/HeapMemoryUsage.yml new file mode 100644 index 0000000000..fb78da97ea --- /dev/null +++ b/alert-policies/websphere-liberty-profile/HeapMemoryUsage.yml @@ -0,0 +1,36 @@ +name: Heap Memory Usage (%) + +description: |+ + This alert is triggered if Heap Memory Usage exceeds 90% for 5 minutes. + +type: STATIC +nrql: + query: "SELECT (average(apm.service.memory.heap.used)/average(apm.service.memory.heap.max))* 100 as 'Heap Memory Usage %' FROM Metric where appName like '%'" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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/websphere-liberty-profile/HighCpuUtilization.yml b/alert-policies/websphere-liberty-profile/HighCpuUtilization.yml new file mode 100644 index 0000000000..91dd960779 --- /dev/null +++ b/alert-policies/websphere-liberty-profile/HighCpuUtilization.yml @@ -0,0 +1,36 @@ +name: High CPU Utilization (%) + +description: |+ + This alert is triggered if CPU Utilization exceeds 90% for 5 minutes. + +type: STATIC +nrql: + query: "SELECT rate(sum(apm.service.cpu.usertime.utilization), 1 second) * 100 as 'CPU Utilization (%)' FROM Metric WHERE appName like '%'" + +# 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: 90 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # 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/websphere-liberty-profile/TransactionErrors.yml b/alert-policies/websphere-liberty-profile/TransactionErrors.yml new file mode 100644 index 0000000000..c24aaf101d --- /dev/null +++ b/alert-policies/websphere-liberty-profile/TransactionErrors.yml @@ -0,0 +1,36 @@ +name: Transaction Errors + +description: |+ + This alert is triggered if Transaction Errors exceeds 5 for 5 minutes. + +type: STATIC +nrql: + query: "SELECT count(*) FROM TransactionError WHERE `error.expected` IS FALSE" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 3 + # 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/wordpress-fullstack/AvgFirstContentfulPaint.yml b/alert-policies/wordpress-fullstack/AvgFirstContentfulPaint.yml new file mode 100644 index 0000000000..7f2d2a140f --- /dev/null +++ b/alert-policies/wordpress-fullstack/AvgFirstContentfulPaint.yml @@ -0,0 +1,35 @@ +name: Average First Contentful Paint + +description: |+ + This alert is triggered when the first contentful paint exceeds 1.5 seconds for 5 minutes. +type: STATIC +nrql: + query: "FROM PageView SELECT average(firstContentfulPaint) FACET appName" + +# 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 + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 1.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/wordpress-fullstack/CPUUtilization.yml b/alert-policies/wordpress-fullstack/CPUUtilization.yml new file mode 100644 index 0000000000..618a661090 --- /dev/null +++ b/alert-policies/wordpress-fullstack/CPUUtilization.yml @@ -0,0 +1,35 @@ +name: High CPU Utilization + +description: |+ + This alert is triggered when the CPU utilization exceeds 90 percent for 5 minutes. +type: STATIC +nrql: + query: "FROM SystemSample SELECT latest(cpuPercent) 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: 95 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 90 + # 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/wordpress-fullstack/DiskUtilization.yml b/alert-policies/wordpress-fullstack/DiskUtilization.yml new file mode 100644 index 0000000000..fa483dfa30 --- /dev/null +++ b/alert-policies/wordpress-fullstack/DiskUtilization.yml @@ -0,0 +1,35 @@ +name: High Disk Utilization + +description: |+ + This alert is triggered when the Disk utilization exceeds 90 percent for 5 minutes. +type: STATIC +nrql: + query: "FROM SystemSample SELECT latest(diskUsedPercent) 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: 95 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 90 + # 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/dashboards/active-directory/active-directory.json b/dashboards/active-directory/active-directory.json new file mode 100644 index 0000000000..7d48113b1c --- /dev/null +++ b/dashboards/active-directory/active-directory.json @@ -0,0 +1,710 @@ +{ + "name": "Active Directory", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Microsoft logo](https://i.imgur.com/K9gt3Q1.png)\n\n## Overview\n\n[Active Directory](https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview) stores information about objects on the network and makes this information easy for administrators and users to find and use. Active Directory uses a structured data store as the basis for a logical, hierarchical organization of directory information.\n\n---\n\n## About this Dashboard\n\n* For information on the Active Directory Quickstart and telemetry, please visit the documentation [HERE](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/active-directory-integration/)." + } + }, + { + "title": "Services Offline", + "layout": { + "column": 4, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM (FROM Metric SELECT uniqueCount(entity.name) AS 'services'\nFACET hostname\nWHERE metricName = 'windows_service_state'\nAND state != 'running'\n// Filtered to the services collected by the AD config files\nAND label.primary_app = 'active_directory'\nAND hostname IN ( {{hostname}} ))\nSELECT latest(services) OR 0 AS ' '" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Active Directory Services", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Reporting Time", + "type": "recent-relative" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT\n latest(timestamp) AS 'Reporting Time',\n latest(state) AS 'Current State',\n latest(start_mode) AS 'Start Mode'\nFACET\n hostname AS 'Host',\n display_name AS 'Display Name',\n service_name AS 'Service Name',\n run_as AS 'Service Account'\nWHERE label.primary_app = 'active_directory'\nAND hostname IN ( {{hostname}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recent Shutdowns", + "layout": { + "column": 4, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM (FROM Log SELECT uniqueCount(hostname) AS 'hosts'\nFACET hostname\nWHERE logtype = 'active_directory'\nAND EventID = 4609\nAND hostname IN ( {{hostname}} ))\nSELECT latest(hosts) OR 0 AS ' '" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Directory Replication Agent (DRA)", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryPerformanceCounters SELECT\n // Directory Replication Agent (DRA)\n latest(inboundFullSyncObjectsRemaining) AS 'Inbound Full Sync Objects Remaining',\n latest(draInbound) AS 'Inbound Values (DNs only)/sec',\n latest(draOutbound) AS 'Outbound Values (DNs only)/sec',\n latest(draPendingReplicationSync) AS 'Pending Replication Synchronizations'\nFACET hostname\nWHERE hostname IN ( {{hostname}} )\nTIMESERIES\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Replication Summary", + "layout": { + "column": 5, + "row": 5, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryReplicationPartners SELECT\n latest(lastReplicationAttempt) AS 'Last Attempt',\n latest(lastReplicationSuccess) AS 'Last Success'\nFACET\n server AS 'Source',\n partner AS 'Partner',\n if(lastReplicationSuccess != lastReplicationAttempt, 'Failed Replication', 'Successful Replication') AS 'Current Status'\nWHERE hostname IN ( {{hostname}} )\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processor Load", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryPerformanceCounters SELECT\n // System Processor\n latest(contextSwitchesPerSec) AS 'Context Switches/sec',\n latest(processorQueueLength) AS 'Processor Queue Length'\nFACET hostname\nWHERE hostname IN ( {{hostname}} )\nTIMESERIES\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Replication Failures", + "layout": { + "column": 5, + "row": 8, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryReplicationFailures SELECT\n latest(failureType) AS 'Type',\n latest(failureError) AS 'Error',\n latest(firstFailureTime) AS 'First Failure',\n latest(failureCount) AS 'Attempts Made'\nFACET server\nWHERE hostname IN ( {{hostname}} )\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Directory Services", + "layout": { + "column": 1, + "row": 11, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryPerformanceCounters SELECT\n // Directory Services (DS)\n latest(directoryReadsPerSec) AS 'Directory Reads/sec',\n latest(directoryWritesPerSec) AS 'Directory Writes/sec',\n latest(directoryNotifyQueueSize) AS 'Notify Queue Size',\n latest(directoryThreadsInUse) AS 'Threads In Use'\nWHERE hostname IN ( {{hostname}} )\nTIMESERIES\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Lightweight Directory Access Protocol", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryPerformanceCounters SELECT\n // Lightweight Directory Access Protocol (LDAP)\n latest(ldapActiveThreads) AS 'Active Threads',\n latest(ldapBindTime) AS 'Bind time (ms)',\n latest(ldapClientSessions) AS 'Client Sessions',\n latest(ldapSearchesPerSec) AS 'Searches/sec',\n latest(ldapSuccessfulBindsPerSec) AS 'Successful Binds/sec',\n latest(addressBookClientSessions) AS 'Address Book Client Sessions'\nFACET hostname\nWHERE hostname IN ( {{hostname}} )\nTIMESERIES\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Account Failed Logon Activity", + "layout": { + "column": 1, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT\n filter(count(*), WHERE EventID = 4625) AS 'Failed Logons',\n filter(count(*), WHERE EventID = 4740) AS 'Account Lockouts'\nFACET hostname\nWHERE logtype = 'active_directory'\nAND hostname IN ( {{hostname}} )\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "New Account Creation Events", + "layout": { + "column": 7, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT\n filter(count(*), WHERE EventID = 4720) AS 'New User Account Created',\n filter(count(*), WHERE EventID = 4781) AS 'New Computer Account Created'\nFACET hostname\nWHERE logtype = 'active_directory'\nAND hostname IN ( {{hostname}} )\nLIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Directory Event Logs", + "layout": { + "column": 1, + "row": 17, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT\n hostname AS 'Host',\n Channel,\n EventID,\n message AS 'Message'\nWHERE logtype = 'active_directory'\nAND hostname IN ( {{hostname}} )\nLIMIT MAX" + } + ] + } + } + ] + }, + { + "name": "Data Ingest Analysis", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## This page breaks down the various sources of Active Directory telemetry to provide transparency into your sources of data ingest. In the [Data Management Hub](https://one.newrelic.com/launcher/data-management-nerdlets.data-management-launcher) you will see the aggregate of these sums categorized into the `Infrastructure integrations` category.\n\n## *The data on this page is an **ESTIMATE**. For billing purposes, use the Data Management Hub.*" + } + }, + { + "title": "Total Active Directory Telemetry Ingest (GB)", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryHealthChecks, activeDirectoryReplicationFailures, activeDirectoryReplicationPartners, Metric, Log SELECT\n filter(bytecountestimate()/10e8, WHERE (\n ( eventType() = 'activeDirectoryHealthChecks' ) // Performance Counters\n OR ( eventType() = 'activeDirectoryReplicationFailures' OR eventType() = 'activeDirectoryReplicationPartners' ) // Replication Status\n OR ( eventType() = 'Metric' AND label.primary_app = 'active_directory' ) // Windows Services\n OR ( eventType() = 'Log' AND logtype = 'active_directory' ) // Event Logs\n )\n ) AS 'Last 24 Hours',\n filter(rate(bytecountestimate()/10e8, 1 MONTH), WHERE (\n ( eventType() = 'activeDirectoryHealthChecks' ) // Performance Counters\n OR ( eventType() = 'activeDirectoryReplicationFailures' OR eventType() = 'activeDirectoryReplicationPartners' ) // Replication Status\n OR ( eventType() = 'Metric' AND label.primary_app = 'active_directory' ) // Windows Services\n OR ( eventType() = 'Log' AND logtype = 'active_directory' ) // Event Logs\n )\n ) AS '1 Month Projection'\nSINCE 24 HOURS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Performance Counter Ingest (GB)", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryHealthChecks SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours',\n rate(bytecountestimate()/10e8, 1 MONTH) AS '1 Month Projection'\nSINCE 24 HOURS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Performance Counter Ingest", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryHealthChecks SELECT\n bytecountestimate()/10e8\nFACET hostname\nSINCE 24 HOURS AGO\nTIMESERIES\nLIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Replication Status Ingest (GB)", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "1 Month Projection", + "precision": 3, + "type": "decimal" + }, + { + "name": "Last 24 Hours", + "precision": 3, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryReplicationFailures, activeDirectoryReplicationPartners SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours',\n rate(bytecountestimate()/10e8, 1 MONTH) AS '1 Month Projection'\nSINCE 24 HOURS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": true + } + } + }, + { + "title": "Replication Status Ingest", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM activeDirectoryReplicationFailures, activeDirectoryReplicationPartners SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours'\nFACET hostname\nSINCE 24 HOURS AGO\nTIMESERIES\nLIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": true + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Windows Services Ingest (GB)", + "layout": { + "column": 1, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours',\n rate(bytecountestimate()/10e8, 1 MONTH) AS '1 Month Projection'\nWHERE label.primary_app = 'active_directory'\nSINCE 24 HOURS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Windows Services Ingest", + "layout": { + "column": 6, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours'\nWHERE label.primary_app = 'active_directory'\nFACET hostname\nSINCE 24 HOURS AGO\nTIMESERIES\nLIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": true + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Event Log Ingest (GB)", + "layout": { + "column": 1, + "row": 13, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours',\n rate(bytecountestimate()/10e8, 1 MONTH) AS '1 Month Projection'\nWHERE logtype = 'active_directory'\nSINCE 24 HOURS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Event Log Ingest", + "layout": { + "column": 6, + "row": 13, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT\n bytecountestimate()/10e8 AS 'Last 24 Hours'\nWHERE logtype = 'active_directory'\nFACET hostname\nSINCE 24 HOURS AGO\nTIMESERIES\nLIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": true + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [ + { + "name": "hostname", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM activeDirectoryPerformanceCounters, activeDirectoryReplicationPartners, activeDirectoryReplicationFailures, Metric, Log\nSELECT uniques(hostname)\nWHERE eventType() = 'activeDirectoryReplicationPartners'\nOR eventType() = 'activeDirectoryReplicationFailures'\nOR eventType() = 'activeDirectoryPerformanceCounters'\nOR (eventType() = 'Metric' AND label.primary_app = 'active_directory')\nOR (eventType() = 'Log' AND logtype = 'active_directory')\nSINCE 1 WEEK AGO\nLIMIT MAX" + }, + "title": "Domain Controller", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/active-directory/active-directory.png b/dashboards/active-directory/active-directory.png new file mode 100644 index 0000000000..b59510fa4b Binary files /dev/null and b/dashboards/active-directory/active-directory.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights.json b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights.json new file mode 100644 index 0000000000..e297e653a1 --- /dev/null +++ b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights.json @@ -0,0 +1,5402 @@ +{ + "name": "Adobe Commerce Business Insights", + "description": null, + "pages": [ + { + "name": "Executive Summary", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Adobe Commerce logo](https://cdn.softwarereviews.com/production/logos/offerings/1202/large/AdobeCommerce1.png?1657041673)\n" + } + }, + { + "title": "Registered Accounts", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Registered Accounts' from MYSQLCustomerEntityRegisteredUsers since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(`Order ID`) as 'Total Orders' FROM MYSQLSalesOrderByProduct since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Users", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Active Users`) from MYSQLCustomerEntityActiveUsers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Page Views", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select uniqueCount(session) as 'Total Page Views' since 3 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Downtime (%) per Month", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(result), where result = 'FAILED') as 'Downtime (%)' from SyntheticCheck since this month " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Abandoned Carts", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'Abandoned Carts' FROM MYSQLAbandonedCarts" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Total Revenue ($)", + "layout": { + "column": 3, + "row": 2, + "width": 7, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_billed_amount_by_status) as 'Total Revenue ($)' WHERE order_status = 'complete' TIMESERIES AUTO COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Revenue at Risk due to Website Downtime ($) - per month ", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) * (SELECT (latest(AverageRevenue) / 365) / 86400 AS 'Average Revenue per second' FROM MYSQLRevenuePerMonthAndYear WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED' facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Canceled Orders", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(order_id) AS 'Canceled Orders' FROM MYSQLSalesOrderDetails where status ='canceled' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "New vs Returning Customers", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(newCustomers), LATEST(returningCustomers) from MYSQLReturningCustomers, MYSQLNewCustomers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue at Risk due to Website Downtime ($) - per day ", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) * (SELECT (latest(AverageRevenue) / 365) / 86400 AS 'Average Revenue per second' FROM MYSQLRevenuePerMonthAndYear WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED' facet dateOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Customer Journey (Registered Users)", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT funnel(customerId as 'Customer', where name = 'WebTransaction/Action/catalog/product/view' as 'View Product', where name like 'WebTransaction/Action/checkout/cart/add' as 'Add to Cart', where name like 'WebTransaction/Action/checkout/onepage/success' as 'Success Page') " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue by Payment Method", + "layout": { + "column": 5, + "row": 6, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(CountOfOrderByMethod) FROM MySQLSalesOrderPaymentCount FACET PaymentMethodType " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue at Risk due to Slow Page Load ($) - per day", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(duration) - 2) * (SELECT (latest(AverageRevenue) / 365) AS 'Average Revenue per Second' FROM MYSQLRevenuePerMonthAndYear) AS 'Revenue at Risk due to Slow Page Load ($)' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Average Orders at Stake\nKeeping track of error, page load, order performance and lost average orders can help businesses quantify the impact of these issues." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Error Performance" + } + }, + { + "title": "HTTP Errors - per month", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(httpResponseCode) from Transaction where httpResponseCode > '299' since 1 year ago until today facet MonthOf(timestamp) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors - per month", + "layout": { + "column": 7, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(httpResponseCode) from Transaction where httpResponseCode > '299' facet MonthOf(timestamp) " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 10 + } + ] + } + }, + { + "title": "Average Orders at Risk due to HTTP Errors - per month", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) * (SELECT (LATEST(AverageNumberOfOrders)/365) FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) from Transaction where httpResponseCode > '299' facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page Load Performance" + } + }, + { + "title": "Average Page Load Time (seconds)", + "layout": { + "column": 3, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from PageView TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Page Load Time (seconds)", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 2 + } + ] + } + }, + { + "title": "Average Orders at Risk due to Slow Page Load - per day", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(duration) - 2) * (SELECT (LATEST(AverageNumberOfOrders) / 365) AS 'Average Order Count per day' FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) AS 'Average Order Count at Risk due to Slow Page Load' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Order Performance" + } + }, + { + "title": "Average Orders - per year", + "layout": { + "column": 3, + "row": 15, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(AverageNumberOfOrders) AS 'Average Orders' FROM MYSQLOrdersAverage TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Orders - per year", + "layout": { + "column": 7, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(AverageNumberOfOrders) AS 'Average Orders' FROM MYSQLOrdersAverage " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Orders at Risk due to Downtime - per month", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " SELECT average(duration) * (SELECT (LATEST(AverageNumberOfOrders)/365) FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED' facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Customers", + "description": null, + "widgets": [ + { + "title": "Total Customers", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Total Customers' from MYSQLCustomerEntityRegisteredUsers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "New Customers", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(newCustomers) from MYSQLNewCustomers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Returning Customers", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(returningCustomers) from MYSQLReturningCustomers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value (AOV) ($)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MySQLSalesOrderCumulative select latest(average_grand_total) as 'Average order value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Guest Users", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLUnregisteredCustomers SELECT uniqueCount(customer_email) AS 'Guest Users'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Orders By Guest Users", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByUnregisteredCustomers2 SELECT latest(`Total Order Ids`) AS 'Number of Orders', latest(`Grand Total Sum`) AS 'Grand Total ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Customers", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Total Customers' from MYSQLCustomerEntityRegisteredUsers TIMESERIES since this week compare with 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Purchase Conversion Rate (%)", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT productID as 'Product ID',ProductName,conversionRateInPercent AS'Conversion Rate (%)'from MYSQLConversionRate" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Cart Abandonment\nWith the help of Cart Abandonment section you can easily track your abandoned carts, order value, product and quantity." + } + }, + { + "title": "Abandoned Carts", + "layout": { + "column": 1, + "row": 7, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'Abandoned Carts' FROM MYSQLAbandonedCarts TIMESERIES auto COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Abandoned Order Value ($)", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(subtotal) as 'Abandoned Order Value ($)'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Abandoned Products", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Products) as 'Abandoned Products'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Abandoned Quantity", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Quantity) as 'Abandoned Quantity'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Products", + "description": null, + "widgets": [ + { + "title": "Most Viewed Products", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(viewCount) from MYSQLMostViewedProductsDaily facet product_id, product_name limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Selling Products", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(product_name), latest(QuantityOrdered) from MYSQLBestSellersDaily facet product_id limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with the Most Wishlist", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(`‘product_name’`) as 'Product Name',LATEST(`‘wishlist_count’`)AS 'Wishlist Count' from MYSQLWishlistProducts FACET product_id " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most Viewed Products with No Inventory", + "layout": { + "column": 1, + "row": 6, + "width": 5, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(product_name),latest(`‘page_views’`) as 'Page Views',latest(`‘inventory_quantity’`)as 'Inventory' FROM MYSQLProductPageViewWithNoInventory facet product_id" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with Highest Page Views", + "layout": { + "column": 6, + "row": 6, + "width": 7, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(viewCount) from MYSQLMostViewedProductsDaily facet product_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Slow Moving Products", + "layout": { + "column": 1, + "row": 11, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSlowMovingProducts SELECT latest(product_name), latest(quantity) FACET product_id LIMIT 10 " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with Highest Number of Restock Alerts", + "layout": { + "column": 6, + "row": 11, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLHighestRestockAlerts SELECT latest(restockAlertCount) facet product_id, productName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Product Category with the Highest Cart Abandonment", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProdCartAbandonment SELECT latest(AbandonedProductsCount) FACET ProductName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Returned Products", + "layout": { + "column": 6, + "row": 13, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProductReturned SELECT latest(ReturnedProductCount) AS ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Orders", + "description": null, + "widgets": [ + { + "title": "Total Order Value", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderCumulative SELECT latest(grand_total_sum) AS 'Total Order Value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value (AOV) ($)", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MySQLSalesOrderCumulative select latest(average_grand_total) as 'Average Order Value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Orders Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(`Order ID`) as 'Orders Count' FROM MYSQLSalesOrderByProduct since this month compare with 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ordered Items Count", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderCumulative select latest(total_order_item_count) as 'Ordered Items Count' since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Completion Rate ", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus,MYSQLSalesOrderByProduct SELECT (filter(latest(total_orders), where order_status = 'complete')/uniqueCount(`Order ID`)) * 100 as 'Order Completion Rate (%)' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Cancellation Rate", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus,MYSQLSalesOrderByProduct SELECT (filter(latest(total_orders), where order_status = 'canceled')/uniqueCount(`Order ID`)) * 100 as 'Order Cancellation Rate (%)' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Order Value ($) - By Order Status", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_billed_amount_by_status) FACET order_status " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders - By Order Status", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_orders) FACET order_status " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders Received compared with 1 month ago", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByProduct SELECT uniqueCount(`Order ID`) as 'Total Orders Received' since this month COMPARE WITH 1 month ago TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Order Value ($) by Region", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(grand_total)as'Average Order Value' FROM MYSQLSalesOrderByRegion facet `Region Name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Online Ordering Process" + } + }, + { + "title": "Signup", + "layout": { + "column": 1, + "row": 6, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Signup' from MYSQLCustomerEntityRegisteredUsers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 2, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 1\n# View Product\n\n" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 2\n# Add To Cart\n\n" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 3\n# Checkout\n\n" + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 4\n# Success Page\n\n" + } + }, + { + "title": "View Product", + "layout": { + "column": 2, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%view%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%cart/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Checkout", + "layout": { + "column": 8, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Confirmation", + "layout": { + "column": 11, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%onepage/success%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Product Page-Average Page Load Time (seconds)", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%view%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page-Average Page Load Time (seconds)", + "layout": { + "column": 4, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%add%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checkout Page-Average Page Load Time (seconds)", + "layout": { + "column": 7, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Success -Average Page Load Time (seconds)", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%success%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Product Page-HTTP Errors", + "layout": { + "column": 1, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%view%' and httpResponseCode > '299' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page-HTTP Errors", + "layout": { + "column": 4, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%add%' and httpResponseCode > '299' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checkout Page-HTTP Errors", + "layout": { + "column": 7, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' and httpResponseCode > '299' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Success-HTTP Errors", + "layout": { + "column": 10, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%success%' and httpResponseCode > '299' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value ($) by Customer Group", + "layout": { + "column": 1, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MYSQLSalesOrderByCustomerGroup select latest(grand_total_average_of_all_orders) facet if(customer_group_code = 'General','Registered Users','Guest Users')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value ($) by Category Name", + "layout": { + "column": 7, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(average_order_total) from MYSQLSalesOrderByCategory facet Category " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latest 10 Orders", + "layout": { + "column": 1, + "row": 17, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByProduct SELECT latest(`Order Created Date`), latest(`Order Quantity`) AS 'Quantity Ordered', latest(`Grand Total`) AS 'Order Value ($)' limit 10 FACET `Order ID`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Orders by Order Value", + "layout": { + "column": 7, + "row": 17, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLTopTenSalesOrdersByValue SELECT orderId as 'Order ID', grandTotal as 'Order Value ($)', orderQuantity as 'Quantity Ordered', createdDate as 'Order Created Date' ORDER BY grandTotal DESC SINCE 40 seconds ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Revenue", + "description": null, + "widgets": [ + { + "title": "Top 10 Customers driving Revenue ($)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProfitableCustomers SELECT latest(grand_total) AS 'Revenue ($)' FACET customer_email LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Revenue ($) vs Top Customers", + "layout": { + "column": 5, + "row": 1, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProfitableCustomers SELECT latest(grand_total) AS 'Customers' FACET customer_email TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue Impact Caused by Promotional Discounts ($)", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLRevenueLostDueToDiscounts SELECT latest(due_to_dicounts_revenue_loss) AS 'USD($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Discounts-Induced Sales", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLTotalSalesCountDueToDiscounts SELECT latest(due_to_dicounts_total_sales_count) AS ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Fraud", + "description": null, + "widgets": [ + { + "title": "Top 10 Customers with Recurring Purchases of the Same Product", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLCustomerPurchaseSameProd SELECT latest(purchase_count) FACET product_id,product_name, customer_email" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Accounts with Small Transactions", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(grand_total) AS 'Transactions' from MYSQLAccountWithSmallTransaction FACET customer_email order by grand_total asc limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Customers Exhibiting Cart Abandonment", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Products) as 'Abandoned Count' FROM MYSQLAbandonedCarts facet customer_email limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Customers who Frequently Switch Payment Methods", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLPaymentMethodChangedFrequently SELECT latest(transaction_count) FACET customer_email LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Customers who Change Addresses Frequently", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLCustomerAddressChanging SELECT latest(address_count) facet customer_id,email" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Site Reliability and Performance", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Monitoring\n Leverage New Relic's APM (Application Performance Monitoring) capabilities by setting up errors inbox, average application throughput and apdex score. " + } + }, + { + "title": "3xx Redirects", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Redirect') WHERE httpResponseCode LIKE '3%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "4xx Client Errors", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Client Errors') WHERE httpResponseCode LIKE '4%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "5xx Server Errors", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Server Errors') WHERE httpResponseCode LIKE '5%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Apdex Score", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT apdex(apm.service.apdex) as 'App server', apdex(apm.service.apdex.user) as 'End user' FROM Metric where appName like '%magento%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Application Throughput", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.throughput) AS 'seconds' from Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Payment Declined (PayPal)", + "layout": { + "column": 8, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as 'Payment Declines' from Transaction where name ='WebTransaction/Action/paypal/express/cancel' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Carts Created", + "layout": { + "column": 11, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as 'Carts Created' from Transaction where name like '%cart/add%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Synthetic Monitoring\nSynthetic monitoring helps you proactively catch failures of synthetic checks and requests, failed checks by location and execution time." + } + }, + { + "title": "Synthetic Request-Failures", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM SyntheticRequest WHERE result = 'FAILED'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Synthetic Check-Failures", + "layout": { + "column": 3, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM SyntheticCheck WHERE result = 'FAILED'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Execution Time (seconds)", + "layout": { + "column": 5, + "row": 9, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) from SyntheticCheck facet locationLabel timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Failures by Location", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM SyntheticCheck WHERE result = 'FAILED' facet locationLabel" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Downtime\nSynthetic monitoring allows us to track website downtime. " + } + }, + { + "title": "Downtime (seconds)-Monthly", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(duration) from SyntheticCheck where result = 'FAILED' since 12 month ago until today facet monthOf(timestamp) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 16, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Browser Monitoring\nWith the help of Browser Monitoring section you can easily track your application’s load time, browser breakdown, traffic by device type and top ISPs." + } + }, + { + "title": "Load Time by Country", + "layout": { + "column": 1, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView facet countryCode TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load Time by Device Type", + "layout": { + "column": 5, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView FACET deviceType TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load Time by Browser", + "layout": { + "column": 9, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView facet userAgentName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browser Breakdown", + "layout": { + "column": 1, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top ISPs", + "layout": { + "column": 5, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET asnOrganization LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic by Device Type", + "layout": { + "column": 9, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET deviceType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 23, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Latency\nLatency helps us to know about average response time and page load time." + } + }, + { + "title": "Page Load Time (seconds)", + "layout": { + "column": 1, + "row": 24, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(duration) as 'seconds' from PageView TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Response Time (seconds)", + "layout": { + "column": 7, + "row": 24, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(newrelic.goldenmetrics.apm.application.responseTimeMs)/1000 as 'Average Response Time (seconds)' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 26, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction\nTransaction allows you to track transaction overview, completed and abandoned carts." + } + }, + { + "title": "Transaction Overview", + "layout": { + "column": 1, + "row": 27, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(appName), latest(duration) FROM Transaction facet name as 'Transactions'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "No. of Completed Carts", + "layout": { + "column": 10, + "row": 27, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(order_id) AS 'No. of Completed Carts' FROM MYSQLSalesOrderDetails where status = 'complete'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "No. of Abandoned Carts", + "layout": { + "column": 10, + "row": 29, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'No. of Abandoned Carts' FROM MYSQLAbandonedCarts" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 31, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Domain Analysis\nWith the help of Domain Analysis, you can gain insights into metrics related to agents." + } + }, + { + "title": "Total Requests by Domain", + "layout": { + "column": 1, + "row": 32, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from SyntheticRequest facet domain TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Response Time (seconds) by Content Type", + "layout": { + "column": 6, + "row": 32, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(duration) from SyntheticRequest facet contentType TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cluster Status", + "layout": { + "column": 11, + "row": 32, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM ElasticsearchClusterSample SELECT latest(cluster.status) AS 'Cluster Status', latest(cluster.nodes) AS 'Cluster Nodes', latest(cluster.dataNodes) AS 'Data Nodes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Slowest Domains", + "layout": { + "column": 1, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select average(duration) from SyntheticRequest facet domain limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Web Transaction Time (seconds)", + "layout": { + "column": 5, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(average(apm.service.overview.web), WHERE segmentName like 'PHP') as 'PHP', filter(average(apm.service.overview.web), WHERE segmentName like 'MySQL') as 'MySQL' FROM Metric TIMESERIES where appName like '%magento%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total vs Idle vs Busy Workers", + "layout": { + "column": 9, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`apache.server.scoreboard.totalWorkers`) * uniqueCount(entity.name) as 'Total Workers', latest(`apache.server.idleWorkers`) * uniqueCount(entity.name) as 'Idle Workers', latest(`apache.server.busyWorkers`) * uniqueCount(entity.name) as 'Busy Workers' FROM Metric WHERE `metricName` IN ('apache.server.scoreboard.totalWorkers', 'apache.server.idleWorkers', 'apache.server.busyWorkers') TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 38, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Monitoring\nWith the help of Infrastructure Monitoring section you can easily track your cpu usage, disk usage, memory usage and storage usage." + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(host.cpuPercent) AS 'CPU used %' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 4, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(host.memoryUsedPercent) AS 'Memory used %' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 7, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(host.disk.usedPercent) as 'Storage used %' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Usage", + "layout": { + "column": 10, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(host.disk.usedPercent) as 'Used %' FROM Metric FACET device" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Funnel", + "description": null, + "widgets": [ + { + "title": "Number of Product Views", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%catalog/product/view' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%cart/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Show Cart", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%checkout/cart/index%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Save Delivery Address", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%saveAddressInformation%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Save Payment Information and Place Order", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Success Page", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%onepage/success%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "View Order History", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/history%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "View Order Details", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/view%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Wishlist", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%wishlist/index/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart from Wishlist", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%/wishlist/index/allcart%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Remove from Wishlist", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%wishlist/index/remove%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Remove from Cart", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%checkout/cart/delete%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cancel Order", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/cancel%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + } + ] + }, + { + "name": "BOFA-Desktop", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# BOFA - Bottom of the funnel analysis" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 1. View Product\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 2. Begin Checkout \n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 3. Order Confirmed\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + }, + { + "name": "BOFA-Mobile and other", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# BOFA - Bottom of the funnel analysis " + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 1. View Product\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType !='Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 2. Begin Checkout \n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 3. Order Confirmed\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType!='Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "Year", + "items": [ + { + "title": null, + "value": "2022" + }, + { + "title": null, + "value": "2023" + } + ], + "defaultValues": [ + { + "value": { + "string": "2023" + } + } + ], + "nrqlQuery": null, + "title": "Year", + "type": "ENUM", + "isMultiSelection": true, + "replacementStrategy": "NUMBER" + } + ] + } \ No newline at end of file diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights01.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights01.png new file mode 100644 index 0000000000..6373d7ee60 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights01.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights02.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights02.png new file mode 100644 index 0000000000..63d42ca4a9 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights02.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights03.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights03.png new file mode 100644 index 0000000000..6209f8104a Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights03.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights04.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights04.png new file mode 100644 index 0000000000..53ff548d06 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights04.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights05.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights05.png new file mode 100644 index 0000000000..f729b6e044 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights05.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights06.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights06.png new file mode 100644 index 0000000000..112c3f9aae Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights06.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights07.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights07.png new file mode 100644 index 0000000000..f45032ce28 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights07.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights08.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights08.png new file mode 100644 index 0000000000..54aa42d324 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights08.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights09.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights09.png new file mode 100644 index 0000000000..c1eb83dc40 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights09.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights10.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights10.png new file mode 100644 index 0000000000..de3874eea9 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights10.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights11.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights11.png new file mode 100644 index 0000000000..9b07596fc2 Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights11.png differ diff --git a/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights12.png b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights12.png new file mode 100644 index 0000000000..c1e8a8991d Binary files /dev/null and b/dashboards/adobe-commerce-business-insights/adobe-commerce-business-insights12.png differ diff --git a/dashboards/aerospike/aerospike.json b/dashboards/aerospike/aerospike.json new file mode 100644 index 0000000000..194cd5585c --- /dev/null +++ b/dashboards/aerospike/aerospike.json @@ -0,0 +1,1021 @@ +{ + "name": "Aerospike", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Aerospike icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/aerospike/logo.png)" + } + }, + { + "title": "Uptime (seconds)", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_uptime) as 'Uptime' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Thread Pool", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_threads_pool_total) as 'Total', latest(aerospike_node_stats_threads_pool_active) as 'Active'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Threads", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_threads_detached) as 'Detached', latest(aerospike_node_stats_threads_joinable) as 'Joinable'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=905afa6f-88c8-5b4d-0bc3-f26f3a553b07)\n\nFollow New Relic [Aerospike documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/aerospike-integration/) documentation to instrument Aerospike.\n\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Aerospike&entry.358368110=https://onenr.io/0dQeLbY0Yje) here and let us know how we can improve it for you." + } + }, + { + "title": "Cluster Size", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_cluster_size) as '' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Partitions", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_dead_partitions) as 'Dead', latest( aerospike_namespace_unavailable_partitions) as 'Unavailable'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Memory (%)", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_system_free_mem_pct) as 'Free System Memory (%)', latest(aerospike_namespace_memory_free_pct) as 'Memory Capacity Free (%)' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests", + "layout": { + "column": 4, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_info_complete) as 'Completed', latest(aerospike_node_stats_info_queue) as 'Pending'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Client Connections", + "layout": { + "column": 7, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_client_connections) as 'Active', latest(aerospike_node_stats_client_connections_opened) as 'Opened', latest(aerospike_node_stats_client_connections_closed) as 'Closed' TIMESERIES auto " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Epoch Time (seconds)", + "layout": { + "column": 11, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_current_time) as 'Seconds'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Nodes ", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Statistics\nStatistics is a container for overall database health and service metrics" + } + }, + { + "title": "Cluster Integrity", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT IF(latest(aerospike_node_stats_cluster_integrity)=1, 'True', 'False') as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + }, + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Cluster Member", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT IF(latest(aerospike_node_stats_cluster_is_member)=1, 'True', 'False') as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + }, + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Time Since the Last Reclustering Event", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_time_since_rebalance)/60 as 'Minutes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Maximum CPU Usage (%)", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_system_total_cpu_pct) as 'Total', latest(aerospike_node_stats_system_kernel_cpu_pct) as 'Kernel cpu',latest(aerospike_node_stats_system_user_cpu_pct) as 'User CPU mode' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heap Memory (GB)", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_heap_active_kbytes)/1e+6 as 'in-use pages', latest(aerospike_node_stats_heap_allocated_kbytes)/1e+6 as 'Allocated', latest(aerospike_node_stats_heap_mapped_kbytes)/1e+6 as 'mapped' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Configured Namespace Values\n\nWe will dive deeper into namespace and storage configuration It stores data according to the storage engine you select for a namespace. Storage engines are configured in the Aerospike Server configuration file (/etc/aerospike/aerospike.conf)." + } + }, + { + "title": "NameSpace (click on the nameSpace to filter)", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(*) FACET ns" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Available Bin Names", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_available_bin_names) as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rounds of Eviction to Delete (%) ", + "layout": { + "column": 5, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_evict_tenths_pct)/10 TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pending Transaction Limit", + "layout": { + "column": 8, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_transaction_pending_limit) as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Default Time To Live After Data is Written (seconds)", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_default_ttl) as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device Capacity (%)", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_device_available_pct) as 'Available (%)', latest(aerospike_namespace_device_free_pct) as 'Free (%)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 15 + }, + { + "alertSeverity": "WARNING", + "value": 20 + } + ] + } + }, + { + "title": "Write Block Size (MB)", + "layout": { + "column": 3, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_storage_engine_write_block_size)/1e+6 as 'Storage Engine Write Block Size'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "File Size (GB)", + "layout": { + "column": 5, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_storage_engine_filesize)/1e+9 as 'GB'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Stop-Writes (%)", + "layout": { + "column": 8, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_stop_writes_pct) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Eviction Disable", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_sets_disable_eviction)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Partition Tree Sprigs", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_partition_tree_sprigs)/1e+6 as 'MB'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Namespace Supervisor (NSUP) Threads", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_nsup_threads) as 'Threads per Round of Expiration'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "NSUP Period (seconds)", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_nsup_period) as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "Unavailable Partitions", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_unavailable_partitions) as '' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Uptime (seconds)", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_uptime) as '' LIMIT max " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 100 + }, + { + "alertSeverity": "WARNING", + "value": 300 + } + ] + } + }, + { + "title": "Failed Read/Write Transactions", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_namespace_fail_generation) as 'Fail Generation'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Heap Efficiency (%)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(aerospike_node_stats_heap_efficiency_pct) AS 'Percent' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 60 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/aerospike/aerospike01.png b/dashboards/aerospike/aerospike01.png new file mode 100644 index 0000000000..f8e8d0664b Binary files /dev/null and b/dashboards/aerospike/aerospike01.png differ diff --git a/dashboards/aerospike/aerospike02.png b/dashboards/aerospike/aerospike02.png new file mode 100644 index 0000000000..edfc4882e9 Binary files /dev/null and b/dashboards/aerospike/aerospike02.png differ diff --git a/dashboards/aerospike/aerospike03.png b/dashboards/aerospike/aerospike03.png new file mode 100644 index 0000000000..a99e8e5407 Binary files /dev/null and b/dashboards/aerospike/aerospike03.png differ diff --git a/dashboards/aerospike/aerospike04.png b/dashboards/aerospike/aerospike04.png new file mode 100644 index 0000000000..84efcedbec Binary files /dev/null and b/dashboards/aerospike/aerospike04.png differ diff --git a/dashboards/amazon-appstream/amazon-appstream.json b/dashboards/amazon-appstream/amazon-appstream.json new file mode 100644 index 0000000000..84f2210423 --- /dev/null +++ b/dashboards/amazon-appstream/amazon-appstream.json @@ -0,0 +1,265 @@ +{ + "name": "Amazon AppStream", + "description": null, + "pages": [ + { + "name": "Amazon AppStream", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon AppStream\nIt is a fully managed application streaming service that provides users with instant access to their desktop applications from anywhere." + } + }, + { + "title": "Capacity Utilization", + "layout": { + "column": 3, + "row": 1, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.CapacityUtilization`) as 'Capacity Utilization' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Insufficient Capacity Error", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.appstream.InsufficientCapacityError`) as 'Insufficient Capacity Error' from Metric where aws.Namespace = 'AWS/AppStream' facet `aws.appstream.Fleet` TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Desired Capacity", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.DesiredCapacity`) as 'Average',min(`aws.appstream.DesiredCapacity`) as 'Minimum', max(`aws.appstream.DesiredCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Available Capacity", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.AvailableCapacity`) as 'Average',min(`aws.appstream.AvailableCapacity`) as 'Minimum', max(`aws.appstream.AvailableCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Actual Capacity", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.ActualCapacity`) as 'Average', min(`aws.appstream.ActualCapacity`) as 'Minimum', max(`aws.appstream.ActualCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "In Use Capacity", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.InUseCapacity`) as 'Average',min(`aws.appstream.InUseCapacity`) as 'Minimum', max(`aws.appstream.InUseCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pending Capacity", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.PendingCapacity`) as 'Average', min(`aws.appstream.PendingCapacity`) as 'Minimum', max(`aws.appstream.PendingCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Running Capacity", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.appstream.RunningCapacity`) as 'Average',min(`aws.appstream.RunningCapacity`) as 'Minimum', max(`aws.appstream.RunningCapacity`) as 'Maximum' from Metric where aws.Namespace = 'AWS/AppStream' TIMESERIES auto facet `aws.appstream.Fleet`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-appstream/amazon-appstream.png b/dashboards/amazon-appstream/amazon-appstream.png new file mode 100644 index 0000000000..956d475db2 Binary files /dev/null and b/dashboards/amazon-appstream/amazon-appstream.png differ diff --git a/dashboards/amazon-cloudsearch/amazon-cloudsearch.json b/dashboards/amazon-cloudsearch/amazon-cloudsearch.json new file mode 100644 index 0000000000..b55b08c5d6 --- /dev/null +++ b/dashboards/amazon-cloudsearch/amazon-cloudsearch.json @@ -0,0 +1,213 @@ +{ + "name": "Amazon CloudSearch", + "description": null, + "pages": [ + { + "name": "Amazon CloudSearch", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon CloudSearch \nIt is a managed service in the AWS Cloud that makes it simple and cost-effective to set up, manage, and scale a search solution for your website or application." + } + }, + { + "title": "Successful Requests", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.cloudsearch.SuccessfulRequests`) as 'Successful Requests' from Metric where aws.Namespace = 'AWS/CloudSearch'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000000000 + } + ] + } + }, + { + "title": "Searchable Documents", + "layout": { + "column": 5, + "row": 1, + "width": 5, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.cloudsearch.SearchableDocuments`) as 'Searchable Documents' from Metric where aws.Namespace = 'AWS/CloudSearch' facet `aws.cloudsearch.DomainName` timeseries auto " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Partitions", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.cloudsearch.Partitions`) as 'Partitions' from Metric where aws.Namespace = 'AWS/CloudSearch' facet `aws.cloudsearch.DomainName` TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Partitions", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.cloudsearch.Partitions`) as 'Partitions' from Metric where aws.Namespace = 'AWS/CloudSearch'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000000000 + } + ] + } + }, + { + "title": "Successful Requests", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 4 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.cloudsearch.SuccessfulRequests`) as 'Successful Requests' from Metric where aws.Namespace = 'AWS/CloudSearch' timeseries auto facet `aws.cloudsearch.DomainName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Index Utilization", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.cloudsearch.IndexUtilization`) as 'Index Utilization' from Metric where aws.Namespace = 'AWS/CloudSearch' TIMESERIES auto facet `aws.cloudsearch.DomainName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-cloudsearch/amazon-cloudsearch.png b/dashboards/amazon-cloudsearch/amazon-cloudsearch.png new file mode 100644 index 0000000000..46447f5905 Binary files /dev/null and b/dashboards/amazon-cloudsearch/amazon-cloudsearch.png differ diff --git a/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor.json b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor.json new file mode 100644 index 0000000000..9a21ae1838 --- /dev/null +++ b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor.json @@ -0,0 +1,646 @@ +{ + "name": "Amazon CloudWatch Internet Monitor", + "description": null, + "pages": [ + { + "name": "Overall Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ## Amazon CloudWatch Internet Monitor\n \n Amazon CloudWatch Internet Monitor provides visibility into how internet issues impact the performance and availability between your applications hosted on AWS and your end users.\n \nThis dashboard will give visibility to performance metricsof Amazon CloudWatch Internet Monitor. Follow Granularity By Logs dashboard and select appropriate dropdowns to drill metrics at granular level." + } + }, + { + "title": "Traffic Percentage", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`aws.internetmonitor.TrafficMonitoredPercent`) as 'Traffic Monitored Percentage', average(`aws.internetmonitor.CityNetworksFor100PercentTraffic`) as 'CityNetworksFor100PercentTraffic', average(`aws.internetmonitor.CityNetworksFor25PercentTraffic`) as 'CityNetworksFor25PercentTraffic',average(`aws.internetmonitor.CityNetworksFor50PercentTraffic`) as 'CityNetworksFor50PercentTraffic',average(`aws.internetmonitor.CityNetworksFor75PercentTraffic`) as 'CityNetworksFor75PercentTraffic', average(`aws.internetmonitor.CityNetworksFor90PercentTraffic`) as 'CityNetworksFor90PercentTraffic', average(`aws.internetmonitor.CityNetworksFor95PercentTraffic`) as 'CityNetworksFor95PercentTraffic', average(`aws.internetmonitor.CityNetworksFor99PercentTraffic`) as 'CityNetworksFor99PercentTraffic' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Performance Score", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`aws.internetmonitor.PerformanceScore`) as 'Average Performance Score' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avalability Score", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`aws.internetmonitor.AvailabilityScore`) as 'Average Availability Score' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Round Trip Time", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(`aws.internetmonitor.RoundTripTime`) as 'Max RoundTripTime', min(`aws.internetmonitor.RoundTripTime`) as 'Min RoundTripTime', average(`aws.internetmonitor.RoundTripTime`) as 'Avg RoundTripTime' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes In and Out", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`aws.internetmonitor.BytesIn`) as 'BytesIn',average(`aws.internetmonitor.BytesOut`) as 'BytesOut',average(`aws.internetmonitor.BytesInMonitored`) as 'BytesInMonitored',average(`aws.internetmonitor.BytesInMonitored`) as 'BytesOutMonitored' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average TTB", + "layout": { + "column": 1, + "row": 8, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`aws.internetmonitor.AverageTimeToFirstByte`) as 'AverageTimeToFirstByte' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Count of CityNetworks Monitored", + "layout": { + "column": 7, + "row": 8, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(`aws.internetmonitor.CityNetworksMonitored`) as 'CityNetworksMonitored' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Granularity By Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon CloudWatch Internet Monitor\nAmazon CloudWatch Internet Monitor provides visibility into how internet issues impact the performance and availability between your applications hosted on AWS and your end users. \n\nUse the dropdowns in this dashboard to filter the Log Group to the level you need granularity, other selections follow the log group level you select. Please note country and service-location is required for any log group you select." + } + }, + { + "title": "Performance Metrics By Location", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 2 + }, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT {{Country}} as 'Country',{{City}} as 'City',{{Subdivision}} as 'Subdivision',{{Metro}} as 'Metro',internetHealth.performance.experienceScore as 'Experience Score', internetHealth.performance.roundTripTime.p50 as 'RTT at p50', internetHealth.performance.roundTripTime.p90 as 'RTT at p90', internetHealth.performance.roundTripTime.p95 as 'RTT at p95' from Log where aws.logGroup={{Log_Group}} and serviceLocation={{Service_Location}} and clientLocation.country={{Country}} and clientLocation.city={{City}} and clientLocation.subdivision={{Subdivision}} and clientLocation.metro={{Metro}} LIMIT MAX" + } + ] + } + }, + { + "title": "% of Total Traffic", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(percentageOfTotalTraffic) as 'PercentageOfTotalTraffic' FROM Log where aws.logGroup = {{Log_Group}} and serviceLocation = {{Service_Location}} and clientLocation.country = {{Country}} and clientLocation.subdivision = {{Subdivision}} and clientLocation.metro = {{Metro}} and clientLocation.city = {{City}} facet serviceLocation,clientLocation.country TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Performance %OfTotalTrafficImpacted", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.performance.percentageOfTotalTrafficImpacted) as 'Average %OfTotalTrafficImpacted' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country as 'country'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Performance %OfClientLocationImpacted", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.performance.percentageOfClientLocationImpacted) as 'Average %OfClientLocationImpacted' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country as 'Country'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Avg Performance ExperienceScore", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.bullet" + }, + "rawConfiguration": { + "limit": 0, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.performance.experienceScore) as 'Performance ExperienceScore' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} \n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Availability %OfTotalTrafficImpacted", + "layout": { + "column": 7, + "row": 6, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.availability.percentageOfTotalTrafficImpacted) as 'Average %TotalTrafficImpacted' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Availability %OfClientLocationImpacted", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.availability.percentageOfClientLocationImpacted) as 'Average %ClientLocationImpacted' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Availability Experience Score", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.bullet" + }, + "rawConfiguration": { + "limit": 0, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(internetHealth.availability.experienceScore) as 'Availability Experience Score' FROM Log where `aws.logGroup` = {{Log_Group}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average BytesOut", + "layout": { + "column": 7, + "row": 9, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(bytesOut) as 'Average Bytes Out' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average BytesIn", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 3 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(bytesIn) as 'Average BytesIn' FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} facet serviceLocation,clientLocation.country" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs Summary", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log where `aws.logGroup` = {{Log_Group}} and `serviceLocation` = {{Service_Location}} and `clientLocation.country` = {{Country}} and `clientLocation.subdivision` = {{Subdivision}} and `clientLocation.metro` = {{Metro}} and `clientLocation.city` = {{City}} LIMIT MAX " + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "Log_Group", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(aws.logGroup) as 'logs' from Log where aws.logGroup like '%/aws/internet-monitor%' limit MAX since 8 months ago" + }, + "title": "AWS Log Group", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "Service_Location", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(serviceLocation) from Log where aws.logGroup like '%/aws/internet-monitor%' limit MAX since 8 months ago" + }, + "title": "Service Location", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "Country", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(clientLocation.country) from Log where aws.logGroup like '%/aws/internet-monitor%' limit MAX since 8 months ago" + }, + "title": "Country", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "Subdivision", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(clientLocation.subdivision) from Log where aws.logGroup like '%/aws/internet-monitor%' since 8 months ago limit MAX" + }, + "title": "Subdivision", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "Metro", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(clientLocation.metro) from Log where aws.logGroup like '%/aws/internet-monitor%' limit MAX since 8 months ago" + }, + "title": "Metro", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "City", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(clientLocation.city) from Log where aws.logGroup like '%/aws/internet-monitor%' since 8 months ago limit MAX" + }, + "title": "City", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor01.png b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor01.png new file mode 100644 index 0000000000..f34a6162b0 Binary files /dev/null and b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor01.png differ diff --git a/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor02.png b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor02.png new file mode 100644 index 0000000000..6bf4eb67c5 Binary files /dev/null and b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor02.png differ diff --git a/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor03.png b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor03.png new file mode 100644 index 0000000000..9687b3a64a Binary files /dev/null and b/dashboards/amazon-cloudwatch-internet-monitor/amazon-cloudwatch-internet-monitor03.png differ diff --git a/dashboards/amazon-codebuild/amazon-codebuild.json b/dashboards/amazon-codebuild/amazon-codebuild.json new file mode 100644 index 0000000000..29aec5a226 --- /dev/null +++ b/dashboards/amazon-codebuild/amazon-codebuild.json @@ -0,0 +1,335 @@ +{ + "name": "Amazon CodeBuild", + "description": null, + "pages": [ + { + "name": "Amazon CodeBuild", + "description": null, + "widgets": [ + { + "title": "Builds", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.codebuild.Builds) as Builds" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Successful Builds Count", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.codebuild.SucceededBuilds) as SucceededBuilds" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Failed Builds Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.codebuild.FailedBuilds) as FailedBuilds" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon CodeBuild\nAmazon CodeBuild is a fully managed continuous integration service provided by Amazon Web Services (AWS). It is designed to compile and build source code, test it, and produce deployable artifacts automatically. CodeBuild eliminates the need for maintaining build servers and scaling infrastructure as your application grows." + } + }, + { + "title": "Average Duration of all builds over time", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.Duration) AS 'Average Duration' FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Queued, Finalizing, Provisioning and Install Phase Duration (Average)", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.QueuedDuration) as 'Average Queued Duration', Average(aws.codebuild.FinalizingDuration) as 'Average Finalizing Duration', average(aws.codebuild.ProvisioningDuration) as 'Average Provisioning Duration', average(aws.codebuild.InstallDuration) as 'Average Install Duration' FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Build, PreBuild and PostBuild Phase Duration (Average)", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.BuildDuration) AS 'Average Build Duration', average(aws.codebuild.PreBuildDuration) as 'Average PreBuild Duration', average(aws.codebuild.PostBuildDuration) as 'Average PostBuild Duration' FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Storage Read and Write Bytes (Average)", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.StorageWriteBytes) AS 'Average Storage Write Bytes', average(aws.codebuild.StorageReadBytes) AS 'Average Storage Read Bytes' FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + }, + { + "title": "CPU and Memory Utilized in % (Average)", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.CPUUtilizedPercent) as 'Average CPU Utilized', average(aws.codebuild.MemoryUtilizedPercent) as 'Average Memory Utilized' FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "CPU Utilized in CPU units (Average)", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.CPUUtilized) FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Utilized in Megabytes (Average)", + "layout": { + "column": 7, + "row": 12, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.codebuild.MemoryUtilized) FACET aws.codebuild.ProjectName timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-codebuild/amazon-codebuild.png b/dashboards/amazon-codebuild/amazon-codebuild.png new file mode 100644 index 0000000000..78df65bdbd Binary files /dev/null and b/dashboards/amazon-codebuild/amazon-codebuild.png differ diff --git a/dashboards/amazon-database-migration-service/amazon-database-migration-service.json b/dashboards/amazon-database-migration-service/amazon-database-migration-service.json new file mode 100644 index 0000000000..4a6459b8a6 --- /dev/null +++ b/dashboards/amazon-database-migration-service/amazon-database-migration-service.json @@ -0,0 +1,1016 @@ +{ + "name": "Amazon Database Migration Service(DMS)", + "description": null, + "pages": [ + { + "name": "Replication Instance Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AWS Database Migration Service\nIt is a managed migration and replication service that helps move your database and analytics workloads to AWS quickly, securely, and with minimal downtime and zero data loss." + } + }, + { + "title": "Available Memory", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.AvailableMemory) AS 'Available Memory' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "CPU Utilization", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CPUUtilization) AS 'CPU Utilization' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "CPU Allocated", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CPUAllocated) AS 'CPU Allocated' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Freeable Memory", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.FreeableMemory) AS 'Freeable Memory' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Free Storage Space", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.FreeStorageSpace) AS 'Free Storage Space' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Disk Queue Depth", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.DiskQueueDepth) as 'Disk Queue Depth'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Memory Allocated (Mib)", + "layout": { + "column": 3, + "row": 3, + "width": 3, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.MemoryAllocated) AS 'Memory Allocated' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Free Memory", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.FreeMemory) AS 'Free Memory' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Write IOPS (count per second)", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.WriteIOPS) AS 'Write IOPS' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Read IOPS (count per second)", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.ReadIOPS) AS 'Read IOPS' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Swap Usage", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.SwapUsage) AS 'Swap Usage' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Network Transmit Throughput", + "layout": { + "column": 3, + "row": 5, + "width": 4, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.NetworkTransmitThroughput) AS 'Network Transmit Throughput' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + }, + { + "title": "Read Latency", + "layout": { + "column": 7, + "row": 5, + "width": 3, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.ReadLatency) AS 'Read Latency' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Write Latency", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.WriteLatency) AS 'Write Latency' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Network Receive Throughput", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.NetworkReceiveThroughput) AS 'Network Receive Throughput' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + }, + { + "title": "Read Throughput", + "layout": { + "column": 3, + "row": 7, + "width": 5, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.ReadThroughput) AS 'Read Throughput' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + }, + { + "title": "Write Throughput", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.WriteThroughput) AS 'Write Throughput' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + } + } + } + ] + }, + { + "name": "Replication Task Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AWS Database Migration Service\nIt is a managed migration and replication service that helps move your database and analytics workloads to AWS quickly, securely, and with minimal downtime and zero data loss." + } + }, + { + "title": "CDC Changes Memory Source", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.CDCChangesMemorySource) as 'CDC Changes Memory Source'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Full Load Throughput Rows Target (Rows per second)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.FullLoadThroughputRowsTarget) AS 'Full Load Throughput Rows Target' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Full Load Throughput Bandwidth Target (KB per second)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.FullLoadThroughputBandwidthTarget) AS 'Full Load Throughput Bandwidth Target' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CDC Changes Memory Target", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.CDCChangesMemoryTarget) as 'CDC Changes Memory Target'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "CDC Incoming Changes", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.CDCIncomingChanges) as 'CDC Incoming Changes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "CDC Throughput Rows Source (Rows per second)", + "layout": { + "column": 3, + "row": 3, + "width": 3, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CDCThroughputRowsSource) AS 'CDC Throughput Rows Source' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CDC Throughput Rows Target (Rows per second)", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CDCThroughputRowsTarget) AS 'CDC Throughput Rows Target' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CDC Latency Target", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CDCLatencyTarget) AS 'CDC Latency Target' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "CDC Changes Disk Source", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.CDCChangesDiskSource) as 'CDC Changes Disk Source'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "CDC Changes Disk Target", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 1 + }, + + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.dms.CDCChangesDiskTarget) as 'CDC Changes Disk Target'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Memory Usage", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.MemoryUsage) AS 'Memory Usage' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "CDC Latency Source", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CDCLatencySource) AS 'CDC Latency Source' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "CDC Throughput Bandwidth Target (KB per second)", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.dms.CDCThroughputBandwidthTarget) AS 'CDC Throughput Bandwidth Target' timeseries auto facet `aws.dms.ReplicationInstanceIdentifier`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-database-migration-service/amazon-database-migration-service01.png b/dashboards/amazon-database-migration-service/amazon-database-migration-service01.png new file mode 100644 index 0000000000..db310030c1 Binary files /dev/null and b/dashboards/amazon-database-migration-service/amazon-database-migration-service01.png differ diff --git a/dashboards/amazon-database-migration-service/amazon-database-migration-service02.png b/dashboards/amazon-database-migration-service/amazon-database-migration-service02.png new file mode 100644 index 0000000000..6e358dbcd5 Binary files /dev/null and b/dashboards/amazon-database-migration-service/amazon-database-migration-service02.png differ diff --git a/dashboards/amazon-datasync/amazon-datasync.json b/dashboards/amazon-datasync/amazon-datasync.json new file mode 100644 index 0000000000..596a0f07f6 --- /dev/null +++ b/dashboards/amazon-datasync/amazon-datasync.json @@ -0,0 +1,365 @@ +{ + "name": "Amazon Datasync", + "description": null, + "pages": [ + { + "name": "Amazon Datasync", + "description": null, + "widgets": [ + { + "title": "Bytes Compressed", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.BytesCompressed ) as 'BytesCompressed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "Files Prepared Source", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.FilesPreparedSource ) as 'FilesPreparedSource'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "Files Transferred", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.FilesTransferred) AS 'Files Transferred'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AWS Datasync\nAWS DataSync is a secure, online service that automates and accelerates moving data between on premises and AWS Storage services. DataSync can copy data between Network File System (NFS) shares, Server Message Block (SMB) shares, Hadoop Distributed File Systems (HDFS), self-managed object storage, AWS Snowcone, Amazon Simple Storage Service (Amazon S3) buckets, Amazon Elastic File System (Amazon EFS) file systems, Amazon FSx for Windows File Server file systems, Amazon FSx for Lustre file systems, Amazon FSz for OpenZFS file systems, and Amazon FSx for NetApp ONTAP file systems." + } + }, + { + "title": "Bytes Transferred", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.BytesTransferred) AS 'BytesTransferred' FACET aws.datasync.TaskId TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "BytesTransferred & BytesWritten", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.BytesTransferred) AS 'BytesTransferred', sum(aws.datasync.BytesWritten) AS 'BytesWritten'facet aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "BytesPreparedSource & BytesPreparedDestination", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.BytesPreparedSource) AS 'BytesPreparedSource', sum(aws.datasync.BytesPreparedDestination) AS 'BytesPreparedDestination' facet aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "BytesVerifiedSource & BytesVerifiedDestination", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.BytesVerifiedSource) AS 'BytesVerifiedSource', sum(aws.datasync.BytesVerifiedDestination) AS 'BytesVerifiedDestination' Facet aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "FilesPreparedSource & FilesPreparedDestination", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.FilesPreparedSource) AS 'FilesPreparedSource', sum(aws.datasync.FilesPreparedDestination) AS 'FilesPreparedDestination' FACET aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "FilesVerifiedSource & FilesVerifiedDestination", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.FilesVerifiedSource) AS 'FilesVerifiedSource', sum(aws.datasync.FilesVerifiedDestination) AS 'FilesVerifiedDestination' FACET aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "FilesTransferred", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.datasync.FilesTransferred) AS 'FilesTransferred' FACET aws.datasync.TaskId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-datasync/amazon-datasync.png b/dashboards/amazon-datasync/amazon-datasync.png new file mode 100644 index 0000000000..6584bbe2d8 Binary files /dev/null and b/dashboards/amazon-datasync/amazon-datasync.png differ diff --git a/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.json b/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.json new file mode 100644 index 0000000000..fdf8dc3931 --- /dev/null +++ b/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.json @@ -0,0 +1,289 @@ +{ + "name": "Amazon Elastic Transcoder", + "description": null, + "pages": [ + { + "name": "AWS Elastic Transcoder", + "description": null, + "widgets": [ + { + "title": "Jobs Completed", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.JobsCompleted) AS 'Jobs Completed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100000 + } + ] + } + }, + { + "title": "Job Failure", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.Errors) AS 'Job Failure'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Amazon Elastic Transcoder\nAmazon Elastic Transcoder is media transcoding in the cloud. It is designed to be a highly scalable, easy to use and a cost effective way for developers and businesses to convert (or “transcode”) media files from their source format into versions that will playback on devices like smartphones, tablets and PCs." + } + }, + { + "title": "Jobs Completed & Failure", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.JobsCompleted) AS 'JobsCompleted', sum(aws.elastictranscoder.JobsErrored) AS 'Job Failure' FACET aws.elastictranscoder.PipelineId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors by Operation", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.Errors) AS 'Errors' FACET aws.elastictranscoder.Operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average StandbyTime per pipeline", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.elastictranscoder.StandbyTime) AS 'StandbyTime' FACET aws.elastictranscoder.PipelineId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Billed Audio Output", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.BilledAudioOutput) AS 'Billed Audio Output' FACET aws.elastictranscoder.PipelineId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Billed SD & HD Output", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.BilledHDOutput) AS 'BilledHDOutput',sum(aws.elastictranscoder.BilledSDOutput) AS 'BilledSDOutput' TIMESERIES AUTO FACET aws.elastictranscoder.PipelineId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throttles by Operation", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.elastictranscoder.Throttles) AS 'Throttles' TIMESERIES AUTO FACET aws.elastictranscoder.Operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.png b/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.png new file mode 100644 index 0000000000..747954fa0a Binary files /dev/null and b/dashboards/amazon-elastictranscoder/amazon-elastictranscoder.png differ diff --git a/dashboards/amazon-gamelift/amazon-gamelift.json b/dashboards/amazon-gamelift/amazon-gamelift.json new file mode 100644 index 0000000000..11731470b0 --- /dev/null +++ b/dashboards/amazon-gamelift/amazon-gamelift.json @@ -0,0 +1,571 @@ +{ + "name": "Amazon GameLift", + "description": null, + "pages": [ + { + "name": "Amazon GameLift", + "description": null, + "widgets": [ + { + "title": "Player Session Activations", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.gamelift.PlayerSessionActivations) AS 'Player Session Activations' FACET aws.gamelift.FleetId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Activating Game Sessions", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.ActivatingGameSessions) AS 'ActivatingGameSessions' FACET aws.gamelift.FleetId TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon GameLift\n You can use Amazon GameLift to deploy, operate, and scale dedicated, low-cost servers in the cloud for session-based multiplayer games. Built on AWS global computing infrastructure, Amazon GameLift helps deliver high-performance, high-reliability game servers while dynamically scaling your resource usage to meet worldwide player demand." + } + }, + { + "title": "Min, Max, Interruptions & Desired Instances", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.MinInstances) AS 'MinInstances', average(aws.gamelift.MaxInstances) AS 'MaxInstances', average(aws.gamelift.DesiredInstances) AS 'Desired Instances', average(aws.gamelift.InstanceInterruptions) AS 'InstanceInterruptions' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Instance Stages", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT max(aws.gamelift.ActiveInstances) AS 'ActiveInstances', max(aws.gamelift.PendingInstances) AS 'PendingInstances', max(aws.gamelift.IdleInstances) AS 'IdleInstances', max(aws.gamelift.TerminatingInstances) AS 'TerminatingInstances' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Percent Idle Instances", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.PercentIdleInstances) AS 'Percent Idle Instances' where aws.gamelift.PercentIdleInstances IS NOT NULL TIMESERIES FACET aws.gamelift.FleetId" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Available & Current PlayerSessions", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.gamelift.CurrentPlayerSessions) AS 'CurrentPlayerSessions', sum(aws.gamelift.AvailablePlayerSessions) AS 'AvailablePlayerSessions' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Game Sessions", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.ActiveGameSessions) AS 'ActiveGameSessions', average(aws.gamelift.ActivatingGameSessions) AS 'ActivatingGameSessions', average(aws.gamelift.AvailableGameSessions) AS 'AvailableGameSessions' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ConcurrentActivatableGameSession & GameSessionInterruptions", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.ConcurrentActivatableGameSession) AS 'ConcurrentActivatableGameSession', sum(aws.gamelift.GameSessionInterruptions) FACET aws.gamelift.FleetId,aws.gamelift.Location TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ServerProcess Activations, Abnormal Terminations & Terminations", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.ServerProcessAbnormalTerminations) AS 'ServerProcessAbnormalTerminations',average(aws.gamelift.ServerProcessActivations) AS 'ServerProcessActivations', average(aws.gamelift.ServerProcessTerminations) FACET aws.gamelift.FleetId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active Server Processes", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.ActiveServerProcesses) AS 'ActiveServerProcesses' FACET aws.gamelift.FleetId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Healthy Server Processes", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.HealthyServerProcesses) AS 'HealthyServerProcesses' FACET aws.gamelift.FleetId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DiskReadOps & DiskWriteOps", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.DiskReadOps) AS 'DiskReadOps', average(aws.gamelift.DiskWriteOps) AS 'DiskWriteOps' FACET aws.gamelift.FleetId TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DiskReadBytes & DiskWriteBytes", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.DiskReadBytes) AS 'DiskReadBytes', average(aws.gamelift.DiskWriteBytes) AS 'DiskWriteBytes' FACET aws.gamelift.FleetId TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "NetworkIn & NetworkOut", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.NetworkIn) AS 'NetworkIn', average(aws.gamelift.NetworkOut) AS 'NetworkOut' TIMESERIES FACET aws.gamelift.FleetId" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "AverageWaitTime", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.AverageWaitTime) AS 'AverageWaitTime' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPUUtilization", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.CPUUtilization) AS 'CPUUtilization' FACET aws.gamelift.FleetId TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queue Depth", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.gamelift.QueueDepth) AS 'QueueDepth' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-gamelift/amazon-gamelift.png b/dashboards/amazon-gamelift/amazon-gamelift.png new file mode 100644 index 0000000000..b4abe761e4 Binary files /dev/null and b/dashboards/amazon-gamelift/amazon-gamelift.png differ diff --git a/dashboards/amazon-inspector/amazon-inspector.json b/dashboards/amazon-inspector/amazon-inspector.json new file mode 100644 index 0000000000..f2f2d71e39 --- /dev/null +++ b/dashboards/amazon-inspector/amazon-inspector.json @@ -0,0 +1,277 @@ +{ + "name": "Amazon Inspector", + "description": null, + "pages": [ + { + "name": "Amazon Inspector", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon Inspector\nAmazon Inspector is a vulnerability management service that continuously scans your AWS workloads for software vulnerabilities and unintended network exposure. Amazon Inspector automatically discovers and scans running Amazon EC2 instances, container images in Amazon Elastic Container Registry (Amazon ECR), and AWS Lambda functions for known software vulnerabilities and unintended network exposure." + } + }, + { + "title": "Total assessment runs", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalAssessmentRuns) as 'TotalAssessmentRuns' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total findings", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalFindings) AS 'TotalFindings'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Total findings by AssessmentTargetName", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalFindings) AS 'Total Findings' TIMESERIES AUTO FACET aws.inspector.AssessmentTargetName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total findings by AssessmentTemplateName", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalFindings) AS 'TotalFindings' TIMESERIES AUTO FACET aws.inspector.AssessmentTemplateName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total healthy agents by AssessmentTargetName", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalHealthyAgents) AS 'Total Healthy Agents' TIMESERIES AUTO FACET aws.inspector.AssessmentTargetName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total healthy agents by AssessmentTemplateName", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalHealthyAgents) AS 'TotalHealthyAgents' TIMESERIES AUTO FACET aws.inspector.AssessmentTemplateName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total matching agents by AssessmentTargetName", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalMatchingAgents) AS 'TotalMatchingAgents' TIMESERIES AUTO FACET aws.inspector.AssessmentTargetName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total matching agents by AssessmentTemplateName", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.inspector.TotalMatchingAgents) AS 'TotalMatchingAgents' TIMESERIES AUTO FACET aws.inspector.AssessmentTemplateName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-inspector/amazon-inspector.png b/dashboards/amazon-inspector/amazon-inspector.png new file mode 100644 index 0000000000..74e9638bfa Binary files /dev/null and b/dashboards/amazon-inspector/amazon-inspector.png differ diff --git a/dashboards/amazon-keyspaces/amazon-keyspaces.json b/dashboards/amazon-keyspaces/amazon-keyspaces.json new file mode 100644 index 0000000000..a5106d8636 --- /dev/null +++ b/dashboards/amazon-keyspaces/amazon-keyspaces.json @@ -0,0 +1,765 @@ +{ + "name": "Amazon Keyspaces", + "description": null, + "pages": [ + { + "name": "Amazon Keyspaces", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Amazon Keyspaces for Apache Cassandra\nIt is a scalable, highly available, and managed Apache Cassandra–compatible database service. With Amazon Keyspaces, you can run your Cassandra workloads on AWS using the same Cassandra application code and developer tools that you use today." + } + }, + { + "title": "User Errors", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.UserErrors`) as 'User Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Successful Request Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.SuccessfulRequestCount`) as 'Successful Request Count'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "System Reconciliation Deletes", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.SystemReconciliationDeletes`) as 'System Reconciliation Deletes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Write Throttle Events", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.WriteThrottleEvents`) as 'Write Throttle Events'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Account Max Table Level Reads", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.AccountMaxTableLevelReads`) as 'Account Max Table Level Reads'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "System Errors", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.SystemErrors`) as 'System Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "TTL Deletes", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.TTLDeletes`) as 'TTL Deletes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Per Connection Request Rate Exceeded", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.PerConnectionRequestRateExceeded) as 'Per Connection Request Rate Exceeded'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Read Throttle Events", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.cassandra.ReadThrottleEvents) as 'Read Throttle Events' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Account Max Table Level Writes", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.AccountMaxTableLevelWrites`) as 'Account Max Table Level Writes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Conditional Check Failed Requests", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.cassandra.ConditionalCheckFailedRequests`) as 'Conditional Check Failed Requests'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Returned Item Count By Select", + "layout": { + "column": 3, + "row": 3, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ReturnedItemCountBySelect) as 'Returned Item Count By Select' facet `aws.cassandra.TableName` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Consumed Write Capacity Units", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ConsumedWriteCapacityUnits) as 'Consumed Write Capacity Units' facet `aws.cassandra.TableName` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Consumed Read Capacity Units", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ConsumedReadCapacityUnits) as 'Consumed Read Capacity Units' facet `aws.cassandra.TableName` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Partition Throughput Capacity Exceeded", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.cassandra.StoragePartitionThroughputCapacityExceeded) as 'Storage Partition Throughput Capacity Exceeded' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Billable Table Size In Bytes", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.BillableTableSizeInBytes) as 'Avg', min(aws.cassandra.BillableTableSizeInBytes) as 'Minimum', max(aws.cassandra.BillableTableSizeInBytes) as 'Maximum' facet `aws.cassandra.TableName` TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Provisioned Read Capacity Units", + "layout": { + "column": 7, + "row": 5, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ProvisionedReadCapacityUnits) as 'Provisioned Read Capacity Units' facet `aws.cassandra.TableName` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Provisioned Write Capacity Units", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ProvisionedWriteCapacityUnits) as 'Provisioned Write Capacity Units' facet `aws.cassandra.TableName` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Successful Request Latency", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.SuccessfulRequestLatency) as 'Successful Request Latency' facet `aws.cassandra.TableName` TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Replication Latency", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.ReplicationLatency) as 'Replication Latency' facet `aws.cassandra.TableName` TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Account Provisioned Write Capacity Utilization", + "layout": { + "column": 1, + "row": 9, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.AccountProvisionedWriteCapacityUtilization) as 'Account Provisioned Write Capacity Utilization' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Account Provisioned Read Capacity Utilization", + "layout": { + "column": 4, + "row": 9, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.AccountProvisionedReadCapacityUtilization) as 'Account Provisioned Read Capacity Utilization' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Max Provisioned Table Write Capacity Utilization", + "layout": { + "column": 7, + "row": 9, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.MaxProvisionedTableWriteCapacityUtilization) as 'Max Provisioned Table Write Capacity Utilization' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Max Provisioned Table Read Capacity Utilization", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.cassandra.MaxProvisionedTableReadCapacityUtilization) as 'Max Provisioned Table Read Capacity Utilization' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-keyspaces/amazon-keyspaces.png b/dashboards/amazon-keyspaces/amazon-keyspaces.png new file mode 100644 index 0000000000..aff06f3187 Binary files /dev/null and b/dashboards/amazon-keyspaces/amazon-keyspaces.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker.json b/dashboards/amazon-sagemaker/amazon-sagemaker.json new file mode 100644 index 0000000000..5b9f7a7432 --- /dev/null +++ b/dashboards/amazon-sagemaker/amazon-sagemaker.json @@ -0,0 +1,1458 @@ +{ + "name": "Amazon SageMaker", + "description": null, + "pages": [ + { + "name": "Endpoint Invocation Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon SageMaker\nA fully managed machine learning service which enables data scientists and developers to quickly build and train machine learning models and deploy them into a production-ready hosted environment." + } + }, + { + "title": "Total invocations", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.sagemaker.Invocations`) from Metric where aws.Namespace = 'AWS/SageMaker' and aws.sagemaker.FeatureGroupName is null" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Invocation errors", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#00ff08", + "seriesName": "4XX Errors" + }, + { + "color": "#66b2f4", + "seriesName": "5XX Errors" + }, + { + "color": "#ff7961", + "seriesName": "Model Errors" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.sagemaker.Invocation4XXErrors`) as '4XX Errors', sum(`aws.sagemaker.Invocation5XXErrors`) as '5XX Errors', sum(`aws.sagemaker.InvocationModelErrors`) as 'Model Errors' FROM Metric TIMESERIES auto facet `aws.sagemaker.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average latency", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 5 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.sagemaker.ModelLatency`) / 1000 as 'Model Latency', average(`aws.sagemaker.OverheadLatency`)/1000 as 'Overhead Latency' FROM Metric TIMESERIES auto facet `aws.sagemaker.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Sagemaker per instance invocations", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 5 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.sagemaker.InvocationsPerInstance`) as 'Invocations per Instance' FROM Metric TIMESERIES auto facet `aws.sagemaker.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Endpoint Instance Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon SageMaker Inference Endpoints\nEndpoints enables you to deploy machine learning models in the cloud and make predictions on new data at scale." + } + }, + { + "title": "Cpu utilization by endpoints (%)", + "layout": { + "column": 3, + "row": 1, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.endpoints.CPUUtilization`) as 'CPU Utilized by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Memory utilization by endpoints (%)", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.endpoints.MemoryUtilization`) as 'Memory Utilization by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk utilization by endpoints (%)", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 4 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.endpoints.DiskUtilization`) as 'Disk Utilization by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Gpu utilization by endpoints (%)", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 4 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.endpoints.GPUUtilization`) as 'GPU Utilization by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Gpu memory utilization by endpoints (%)", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 4 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.endpoints.GPUMemoryUtilization`) as 'GPU Memory Utilization by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Resource Utilization by Jobs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 1 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Training Job\nIt is used to train a machine learning model on a dataset using specified algorithms and hyperparameters." + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 1 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transform Job\nIt is used to apply a trained machine learning model to large datasets to obtain predictions or inferences, typically in a batch mode, without the need for real-time endpoint deployment." + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 1 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Processing Job\nIt lets users perform data pre-processing, post-processing, feature engineering, data validation, model evaluation and interpretation on Amazon SageMaker." + } + }, + { + "title": "Training jobs errors", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(`aws..aws.sagemaker.trainingjobs.train:error`) as 'Training Jobs Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Memory utilization by transform jobs (%)", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.MemoryUtilization`) as 'Memory Utilization by Transform Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory utilization by processing jobs (%)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.MemoryUtilization`) as 'Memory Utilization by Processing Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory utilization by training jobs (%)", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.MemoryUtilization`) as 'Memory Utilization by Training Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU utilization by training jobs (%)", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.CPUUtilization`) as 'CPU Utilized by Training Jobs' from Metric TIMESERIES auto facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most CPU utilization (%)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.CPUUtilization`) as 'CPU Utilized by Training Jobs' from Metric facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU utilization by transform jobs (%)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.CPUUtilization`) as 'CPU Utilized by Transform Jobs' from Metric TIMESERIES auto facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most CPU utilization (%)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.CPUUtilization`) as 'CPU Utilized by Transform Jobs' from Metric facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU utilization by processing jobs (%)", + "layout": { + "column": 9, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.CPUUtilization`) as 'CPU Utilized by Processing Jobs' from Metric TIMESERIES auto facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most CPU utilization (%)", + "layout": { + "column": 11, + "row": 5, + "width": 2, + "height": 3 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.CPUUtilization`) as 'CPU Utilized by Processing Jobs' from Metric facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk utilization by training jobs (%)", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.DiskUtilization`) as 'Disk Utilization by Training Jobs' FROM Metric facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most disk utilization (%)", + "layout": { + "column": 3, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.DiskUtilization`) as 'Disk Utilization by Training Jobs' FROM Metric facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk utilization by transform jobs (%)", + "layout": { + "column": 5, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.DiskUtilization`) as 'Disk Utilization by Transform Jobs' FROM Metric facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most disk utilization (%)", + "layout": { + "column": 7, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.DiskUtilization`) as 'Disk Utilization by Transform Jobs' FROM Metric facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk utilization by processing jobs (%)", + "layout": { + "column": 9, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.DiskUtilization`) as 'Disk Utilization by Processing Jobs' FROM Metric facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most disk utilization (%)", + "layout": { + "column": 11, + "row": 8, + "width": 2, + "height": 4 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.DiskUtilization`) as 'Disk Utilization by Processing Jobs' FROM Metric facet `aws..aws.sagemaker.processingjobs.Host` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Gpu utilization by training jobs (%)", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.GPUUtilization`) as 'GPU Utilized by Training Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Gpu utilization by transform jobs (%)", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.GPUUtilization`) as 'GPU Utilized by Transform Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Gpu utilization by processing jobs (%)", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.GPUUtilization`) as 'GPU Utilized by Processing Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Gpu memory utilization by training jobs (%)", + "layout": { + "column": 1, + "row": 14, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.trainingjobs.GPUMemoryUtilization`) as 'GPU Memory Utilized by Training Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.trainingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Gpu memory utilization by transform jobs (%)", + "layout": { + "column": 5, + "row": 14, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.transformjobs.GPUMemoryUtilization`) as 'GPU Memory Utilized by Transform Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.transformjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Gpu memory utilization by processing jobs (%)", + "layout": { + "column": 9, + "row": 14, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws..aws.sagemaker.processingjobs.GPUMemoryUtilization`) as 'GPU Memory Utilized by Processing Jobs' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.processingjobs.Host`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + } + ] + }, + { + "name": "Feature Store", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon SageMaker Feature Store \nThis is a fully managed, purpose-built repository to store, share and manage features for machine learning (ML) models." + } + }, + { + "title": "Invocations", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": " \nSELECT sum(`aws.sagemaker.Invocations`) from Metric where aws.Namespace = 'AWS/SageMaker' and aws.sagemaker.FeatureGroupName is not null " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000000000 + } + ] + } + }, + { + "title": "Consumed Read Requests Units", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(`aws.sagemaker.ConsumedReadRequestsUnits`) as 'Consumed Read Requests Units'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operation errors", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#00ff08", + "seriesName": "4XX Errors" + }, + { + "color": "#66b2f4", + "seriesName": "5XX Errors" + }, + { + "color": "#ff7961", + "seriesName": "Model Errors" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(`aws.sagemaker.Operation4XXErrors`) as 'Operation 4XX Errors', count(`aws.sagemaker.Operation5XXErrors`) as 'Operation 5XX Errors' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency (microseconds)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select average(`aws.sagemaker.Latency`) as 'Latency' timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Throttled requests", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(`aws.sagemaker.ThrottledRequests`) as 'Throttled Requests'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(`aws.sagemaker.ConsumedWriteRequestsUnits`) as 'Consumed Write Requests Units' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Model Performance Metrics", + "description": null, + "widgets": [ + { + "title": "Timeseries", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 7 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.sagemaker.endpoints.modelmetrics.%) FACET capture(metricName, r'aws\\.sagemaker\\.endpoints\\.modelmetrics\\.(?P.*)') AS 'metric' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latest Values", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 7 + }, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(getField(aws.sagemaker.endpoints.modelmetrics.%, total)) FACET capture(metricName, r'aws\\.sagemaker\\.endpoints\\.modelmetrics\\.(?P.*)') AS 'metric'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Bias Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon SageMaker Data Bias Metrics\nSageMaker Clarify provides data bias metrics that you can compute on raw datasets before training. All of the pretraining metrics are model-agnostic because they do not depend on model outputs and so are valid for any model. " + } + }, + { + "title": "Total violations", + "layout": { + "column": 3, + "row": 1, + "width": 10, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(`aws.sagemaker.endpoints.biasmetrics.total_number_of_violations`) AS 'Total Violations' TIMESERIES AUTO facet `aws.sagemaker.endpoints.biasmetrics.Endpoint`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 1 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Average Pre-training Bias" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 1 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Average Post-training Bias" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_KS`) AS 'Kolmogorov-Smirnov (KS)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_JS`) as 'Jensen-Shannon Divergence (JS)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_LP`) as 'Lp-norm (LP)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DPL`) as 'Difference in Proportions of Labels (DPL)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_KL`) AS 'Kullback-Leibler Divergence (KL)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_CI`) as 'Class Imbalance (CI)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_TVD`) as 'Total Variation Distance (TVD)' facet `aws.sagemaker.endpoints.biasmetrics.Endpoint`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_RD`) AS 'Recall Difference (RD)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DRR`) as 'Difference in Rejection Rates (DRR)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_GE`) AS 'Generalized entropy (GE)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_SD`) AS 'Specificity difference (SD)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_TE`) AS 'Treatment Equality (TE)',average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_FT`) AS 'Counterfactual Fliptest (FT)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_AD`) AS 'Accuracy Difference (AD)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DPPL`) AS 'Difference in Positive Proportions in Predicted Labels (DPPL)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DCR`) as 'Difference in Conditional Rejection (DCR)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DI`) AS 'Disparate Impact (DI)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DAR`) AS 'Difference in Acceptance Rates (DAR)', average(`aws.sagemaker.endpoints.biasmetrics.bias_metric_DCA`) as 'Difference in Conditional Acceptance (DCAcc)' facet `aws.sagemaker.endpoints.biasmetrics.Endpoint`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Explainability Metrics", + "description": null, + "widgets": [ + { + "title": "Feature Importance", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 7 + }, + + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.sagemaker.endpoints.explainabilitymetrics.feature_%) FACET capture(metricName, r'aws.sagemaker.endpoints.explainabilitymetrics.feature_(?P.*)') as Feature limit MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker001.png b/dashboards/amazon-sagemaker/amazon-sagemaker001.png new file mode 100644 index 0000000000..96b762a844 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker001.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker002.png b/dashboards/amazon-sagemaker/amazon-sagemaker002.png new file mode 100644 index 0000000000..eba67f3146 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker002.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker003.png b/dashboards/amazon-sagemaker/amazon-sagemaker003.png new file mode 100644 index 0000000000..e1b8e0d440 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker003.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker004.png b/dashboards/amazon-sagemaker/amazon-sagemaker004.png new file mode 100644 index 0000000000..1303f2d79e Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker004.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker005.png b/dashboards/amazon-sagemaker/amazon-sagemaker005.png new file mode 100644 index 0000000000..f80ab053f4 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker005.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker006.png b/dashboards/amazon-sagemaker/amazon-sagemaker006.png new file mode 100644 index 0000000000..2e42763ed8 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker006.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker007.png b/dashboards/amazon-sagemaker/amazon-sagemaker007.png new file mode 100644 index 0000000000..ff385c7bee Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker007.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker008.png b/dashboards/amazon-sagemaker/amazon-sagemaker008.png new file mode 100644 index 0000000000..b4dbb41768 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker008.png differ diff --git a/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs.json b/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs.json new file mode 100644 index 0000000000..6e56a26dac --- /dev/null +++ b/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs.json @@ -0,0 +1,354 @@ +{ + "name": "Amazon Security Lake - Cloudtrail", + "description": null, + "pages": [ + { + "name": "AWS Security Lake - Cloudtrail", + "description": null, + "widgets": [ + { + "title": "Top activity by region", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET cloud.region" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top API errors", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND api.response.error != 'null' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET api.response.error" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operation Activity", + "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": "SELECT count(*) as 'Activity' FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND src_endpoint.ip != 'null' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET api.operation LIMIT 25 TIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top EC2 activity by region and event", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' WHERE api.service.name = 'ec2.amazonaws.com' AND cloud.region IN ({{aws_region}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET concat(cloud.region, ' : ', api.operation) LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top activity by service, operation, and region", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET concat(cloud.region,' : ',api.service.name,' - ',api.operation) LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top activity by IP", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Activity' FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND src_endpoint.ip != 'null' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET src_endpoint.ip LIMIT 25 TIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Login activity", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'logins' FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND activity_name = 'Login' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) TIMESERIES 30 minutes SINCE 12 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors on the UpdateTrail API", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND api.operation = 'UpdateTrail' AND api.response.error != 'null' AND api.response.error IS NOT NULL AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET api.response.error SINCE 2 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Regions with recently stopped/started EC2 instances", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' WHERE api.operation = 'StartInstances' OR api.operation = 'StopInstances' AND cloud.region IN ({{aws_region}}) AND api.service.name IN ({{aws_service}}) AND src_endpoint.ip IN ({{aws_ip}}) AND identity.user.account_uid IN ({{aws_account}}) FACET cloud.region SINCE 2 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Real time API error logs", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT api.response.error as 'Error', api.response.message as 'Error Message' FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' AND api.response.error != 'null' AND cloud.region IN ({{aws_region}}) AND identity.user.account_uid IN ({{aws_account}})" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "aws_region", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cloud.region) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' SINCE 7 days ago" + }, + "title": "Region", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_service", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(api.service.name) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' SINCE 7 days ago" + }, + "title": "Service", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_ip", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(src_endpoint.ip) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' SINCE 7 days ago" + }, + "title": "IP Address", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_account", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(identity.user.account_uid) FROM Log WHERE metadata.product.feature.name = 'Management, Data, and Insights' SINCE 7 days ago" + }, + "title": "User Account", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs01.png b/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs01.png new file mode 100644 index 0000000000..c8497deadd Binary files /dev/null and b/dashboards/amazon-security-lake-cloudtrail-logs/amazon-security-lake-cloudtrail-logs01.png differ diff --git a/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs.json b/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs.json new file mode 100644 index 0000000000..6c3f0df704 --- /dev/null +++ b/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs.json @@ -0,0 +1,354 @@ +{ + "name": "Amazon Security Lake - Route 53 Resolver query logs", + "description": null, + "pages": [ + { + "name": "Amazon Security Lake - Security Hub", + "description": null, + "widgets": [ + { + "title": "Resolver activity", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET type_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests by edge location", + "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": "SELECt count(*) FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET query.type TIMESERIES 10 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Unsuccessful requests by domain", + "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": "SELECt count(*) as 'Fails' FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND rcode = 'SERVFAIL' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET query.hostname LIMIT 25 TIMESERIES 10 minutes " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 DNS resolver IPs with most requests", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.feature.name ='Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET src_endpoint.ip LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Indbound/Outbound requests", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET query.class TIMESERIES 10 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total requests by domain", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) as 'Queries' FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET query.hostname LIMIT 25 TIMESERIES 10 minutes " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top IP endpoints", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) as 'Queries' FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET src_endpoint.ip LIMIT 25 TIMESERIES 10 minutes " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries by Account, Region", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) as 'Queries' FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET cloud.account_uid,cloud.region LIMIT 25 TIMESERIES 10 minutes " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries by Instance", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECt count(*) as 'Queries' FROM Log WHERE metadata.product.feature.name LIKE 'Resolver Query Logs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND query.type IN ({{aws_location}}) AND query.hostname IN ({{aws_domain}}) FACET src_endpoint.instance_uid LIMIT 25 TIMESERIES 10 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "aws_region", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cloud.region) FROM Log WHERE metadata.product.feature.name = 'Resolver Query Logs' SINCE 1 week ago" + }, + "title": "Region", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_account", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cloud.account_uid) FROM Log WHERE metadata.product.feature.name = 'Resolver Query Logs' SINCE 1 week ago" + }, + "title": "Account", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_location", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(query.type) FROM Log WHERE metadata.product.feature.name = 'Resolver Query Logs' SINCE 1 week ago" + }, + "title": "Edge location", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_domain", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(query.hostname) FROM Log WHERE metadata.product.feature.name = 'Resolver Query Logs' SINCE 1 week ago" + }, + "title": "Domain", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs01.png b/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs01.png new file mode 100644 index 0000000000..d573fa7346 Binary files /dev/null and b/dashboards/amazon-security-lake-route53-resolver-query-logs/amazon-security-lake-route53-resolver-query-logs01.png differ diff --git a/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub.json b/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub.json new file mode 100644 index 0000000000..dcd4381e66 --- /dev/null +++ b/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub.json @@ -0,0 +1,288 @@ +{ + "name": "Amazon Security Lake - Security Hub", + "description": null, + "pages": [ + { + "name": "Amazon Security Lake - Security Hub", + "description": null, + "widgets": [ + { + "title": "Overall compliance status by account, region (count pass vs. fail logs)", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(finding.uid), WHERE compliance.status = 'PASSED') FROM Log WHERE metadata.product.feature.name = 'Security Hub' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET concat(cloud.account_uid,' : ',cloud.region) LIMIT 6 SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.85 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.6 + } + ] + } + }, + { + "title": "Critical Vulnerabilities", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) as 'Vulnerabilites' WHERE metadata.product.feature.name = 'Security Hub' AND severity = 'CRITICAL' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "High Vulnerabilities", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) as 'Vulnerabilites' WHERE metadata.product.feature.name = 'Security Hub' AND severity = 'HIGH' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Other Vulnerabilities", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) as 'Vulnerabilites' WHERE metadata.product.feature.name = 'Security Hub' AND severity IN ('LOW','MEDIUM') AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Compliance logs by severity", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) as 'Vulnerabilites' WHERE metadata.product.feature.name = 'Security Hub' AND severity != 'INFORMATIONAL' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) FACET concat(compliance.status,' - ',severity) SINCE 3 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "High & Critical compliance findings", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) WHERE metadata.product.feature.name = 'Security Hub' AND severity IN ('HIGH','CRITICAL') AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) FACET finding.title as 'Title', concat(' ',cloud.account_uid ,' : ',cloud.region) as 'Account & Region' SINCE 3 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Vulnerabilities", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(finding.uid) as 'Vulnerabilities' WHERE metadata.product.feature.name = 'Security Hub' AND compliance.status = 'FAILED' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) FACET severity LIMIT 25 TIMESERIES 24 hours SINCE 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "High and Critical vulnerabilities", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT concat(cloud.account_uid,' : ',cloud.region) as 'Account & Region',finding.title as 'Title',`finding.desc` as 'Description', aparse(finding.remediation.kb_articles,'[\"*\"]') as 'Articles' WHERE metadata.product.feature.name = 'Security Hub' AND compliance.status = 'FAILED' AND severity IN ('CRITICAL','HIGH') AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) AND severity IN ({{aws_severity}}) SINCE 24 hours ago" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "aws_region", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cloud.region) FROM Log WHERE metadata.product.feature.name = 'Security Hub' SINCE 1 week ago" + }, + "title": "Region", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_account", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cloud.account_uid) FROM Log WHERE metadata.product.feature.name = 'Security Hub' SINCE 1 week ago" + }, + "title": "Account", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_severity", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(severity) FROM Log WHERE metadata.product.feature.name = 'Security Hub' SINCE 1 week ago" + }, + "title": "Severity", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub01.png b/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub01.png new file mode 100644 index 0000000000..84e415a116 Binary files /dev/null and b/dashboards/amazon-security-lake-security-hub/amazon-security-lake-security-hub01.png differ diff --git a/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs.json b/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs.json new file mode 100644 index 0000000000..5bb3d26e76 --- /dev/null +++ b/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs.json @@ -0,0 +1,638 @@ +{ + "name": "Amazon Security Lake - VPC flow logs", + "description": null, + "pages": [ + { + "name": "AWS Security Lake VPC flow logs", + "description": null, + "widgets": [ + { + "title": "VPC Network Summary", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT latest(plugin.type) as 'Flow Type', rate(count(*),1 second) as 'Flows per Second', latest(timestamp) as 'Last Update', uniqueCount(src_endpoint.ip,dst_endpoint.ip) as 'Observed IP Addresses' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) SINCE 7 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Flow Bytes", + "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 Log SELECT sum(traffic.bytes)Facet CASES ( WHERE connection_info.direction = 'egress' as 'Egress Bytes', WHERE connection_info.direction = 'ingress' as 'Ingress Bytes') WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Flow Packets", + "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 Log SELECT sum(traffic.packets) Facet CASES ( WHERE connection_info.direction = 'egress' as 'Egress Packets', WHERE connection_info.direction = 'ingress' as 'Ingress Packets') WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Observed Applications", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(src_endpoint.svc_name) AS 'Applications' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 5 - Inbound Applications", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'ingress' FACET src_endpoint.svc_name WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 5 - Outbound Applications", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'egress' FACET src_endpoint.svc_name WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sources", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(src_endpoint.ip) AS 'Sources' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 25 - Sources", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'ingress' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET src_endpoint.ip LIMIT 25 WHERE metadata.product.feature.name = 'Flowlogs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 25 - Sources", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'ingress' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) FACET src_endpoint.ip WHERE metadata.product.feature.name = 'Flowlogs' AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) LIMIT 25 TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Destinations", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(dst_endpoint.ip) AS 'Destinations' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 25 - Destinations", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE metadata.product.feature.name ='Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET dst_endpoint.ip LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 25 - Destinations", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE metadata.product.feature.name ='Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET dst_endpoint.ip LIMIT 25 TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Protocols", + "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 Log SELECT uniqueCount(connection_info.protocol_num) AS 'Protocols' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 5 - Inbound Protocols", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'ingress' AND metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET connection_info.protocol_num LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 5 - Outbound Protocols", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT sum(traffic.bytes) AS 'Bytes' WHERE connection_info.direction = 'egress' OR metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET connection_info.protocol_num LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Devices with most outbound partners", + "layout": { + "column": 1, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(dst_endpoint.ip) AS 'Destination IPS', uniqueCount(dst_endpoint.port) AS 'Outbound Ports' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET src_endpoint.ip AS 'Source' LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Devices with most inbound partners", + "layout": { + "column": 7, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(dst_endpoint.port) AS 'Destination Ports', uniqueCount(src_endpoint.ip) AS 'Source IPS' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET dst_endpoint.ip AS 'Destination' LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Devices with most outbound partners", + "layout": { + "column": 1, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(dst_endpoint.ip) AS 'Destination IPS' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET src_endpoint.ip AS 'Source' LIMIT 25 TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Devices with most inbound partners", + "layout": { + "column": 7, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniqueCount(src_endpoint.ip) AS 'Source IPS' WHERE metadata.product.feature.name = 'Flowlogs' AND src_endpoint.vpc_uid IN ({{aws_vpc}}) OR dst_endpoint.vpc_uid IN ({{aws_vpc}}) AND cloud.account_uid IN ({{aws_account}}) AND cloud.region IN ({{aws_region}}) FACET dst_endpoint.ip AS 'Destination' LIMIT 25 TIMESERIES 5 MINUTES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "aws_account", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(cloud.account_uid) WHERE metadata.product.feature.name = 'Flowlogs'" + }, + "title": "AccountID", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_vpc", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(src_endpoint.vpc_uid), uniques(dst_endpoint.vpc_uid) WHERE metadata.product.feature.name = 'Flowlogs'" + }, + "title": "VPC", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_region", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(cloud.region) WHERE metadata.product.feature.name = 'Flowlogs'" + }, + "title": "Region", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs01.png b/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs01.png new file mode 100644 index 0000000000..17bcfc5819 Binary files /dev/null and b/dashboards/amazon-security-lake-vpc-flowlogs/amazon-security-lake-vpc-flowlogs01.png differ diff --git a/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.json b/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.json new file mode 100644 index 0000000000..c9154d1edd --- /dev/null +++ b/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.json @@ -0,0 +1,586 @@ +{ + "name": "AWS SimpleWorkFlow", + "description": null, + "pages": [ + { + "name": "AWS SimpleWorkFlow", + "description": null, + "widgets": [ + { + "title": "WorkflowsCompleted", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.WorkflowsCompleted) AS 'WorkflowsCompleted'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Workflows Failed", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.WorkflowsFailed) AS 'Workflows Failed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Workflows TimedOut", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.WorkflowsTimedOut) AS 'Workflows TimedOut'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## AWS Simple Work Flow\nAmazon SWF helps developers build, run, and scale background jobs that have parallel or sequential steps. You can think of Amazon SWF as a fully-managed state tracker and task coordinator in the Cloud." + } + }, + { + "title": "Workflows Results", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.WorkflowsCanceled) AS 'WorkflowsCanceled',sum(aws.swf.WorkflowsCompleted) AS 'WorkflowsCompleted', sum(aws.swf.WorkflowsContinuedAsNew) as 'WorkflowsContinuedAsNew', sum(aws.swf.WorkflowsFailed) AS 'WorkflowsFailed', sum(aws.swf.WorkflowsTerminated) AS 'WorkflowsTerminated', sum(aws.swf.WorkflowsTimedOut) AS 'WorkflowsTimedOut' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pending Tasks", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.PendingTasks) AS 'PendingTasks' FACET aws.swf.TaskListName, aws.swf.Domain TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Decision Tasks Completed", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.DecisionTasksCompleted) AS 'DecisionTasksCompleted' FACET aws.swf.Domain,aws.swf.WorkflowTypeName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Consumed Capacity", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.ConsumedCapacity) as 'Consumed Capacity' FACET aws.swf.APIName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Activity Tasks", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.ScheduledActivityTasksTimedOutOnClose) AS 'ScheduledActivityTasksTimedOutOnClose', sum(aws.swf.ScheduledActivityTasksTimedOutOnStart) AS 'ScheduledActivityTasksTimedOutOnStart', sum(aws.swf.StartedActivityTasksTimedOutOnClose) AS 'StartedActivityTasksTimedOutOnClose', sum(aws.swf.StartedActivityTasksTimedOutOnHeartbeat) AS 'StartedActivityTasksTimedOutOnHeartbeat' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Activity Stages", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.ActivityTasksCanceled) AS 'ActivityTasksCanceled', sum(aws.swf.ActivityTasksCompleted) AS 'ActivityTasksCompleted', sum(aws.swf.ActivityTasksFailed) AS 'ActivityTasksFailed' FACET aws.swf.Domain TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Provisioned Bucket Size", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT min(aws.swf.ProvisionedBucketSize) AS 'ProvisionedBucketSize' facet aws.swf.APIName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throttled Events", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.ThrottledEvents) AS 'Throttled Events' FACET aws.swf.APIName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Provisioned Refill Rate", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT min(aws.swf.ProvisionedRefillRate) as 'Provisioned Refill Rate' FACET aws.swf.APIName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ActivityTaskScheduleToStartTime & ActivityTaskStartToCloseTime", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.swf.ActivityTaskScheduleToStartTime) AS 'ActivityTaskScheduleToStartTime', average(aws.swf.ActivityTaskStartToCloseTime) AS 'ActivityTaskStartToCloseTime' FACET aws.swf.ActivityTypeName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Decision Task Schedule To StartTime & CloseTime", + "layout": { + "column": 1, + "row": 15, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.swf.DecisionTaskScheduleToStartTime) AS 'DecisionTaskScheduleToStartTime', average(aws.swf.DecisionTaskStartToCloseTime) AS 'DecisionTaskStartToCloseTime' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Consumed Capacity", + "layout": { + "column": 5, + "row": 15, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.swf.ConsumedCapacity) AS 'ConsumedCapacity' FACET aws.swf.APIName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Provisioned Limit", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.swf.ProvisionedLimit) AS 'ProvisionedLimit' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ActivityTaskScheduleToCloseTime", + "layout": { + "column": 1, + "row": 18, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.swf.ActivityTaskScheduleToCloseTime) AS 'ActivityTaskScheduleToCloseTime' FACET aws.swf.ActivityTypeName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.png b/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.png new file mode 100644 index 0000000000..2b996959f7 Binary files /dev/null and b/dashboards/amazon-simpleworkflow/amazon-simpleworkflow.png differ diff --git a/dashboards/amazon-timestream/amazon-timestream.json b/dashboards/amazon-timestream/amazon-timestream.json new file mode 100644 index 0000000000..92062e8572 --- /dev/null +++ b/dashboards/amazon-timestream/amazon-timestream.json @@ -0,0 +1,458 @@ +{ + "name": "Amazon Timestream", + "description": null, + "pages": [ + { + "name": "Amazon Timestream", + "description": null, + "widgets": [ + { + "title": "Successful Request Latency (ms)", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select average(aws.timestream.SuccessfulRequestLatency ) as 'Successful Request Latency (ms)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 90 + } + ] + } + }, + { + "title": "User Errors", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.timestream.UserErrors) as 'UserErrors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -5000 + } + ] + } + }, + { + "title": "System Errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.timestream.SystemErrors) as 'SystemErrors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -5000 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Amazon Timestream\nAmazon Timestream is a fast, scalable, and serverless time-series database service that makes it easier to store and analyze trillions of events per day up to 1,000 times faster. Amazon Timestream automatically scales up or down to adjust capacity and performance, so that you don’t have to manage the underlying infrastructure.\n\nWith this dashboard you can explore SuccessfulRequestLatency, UserError, SystemError and many other metrics." + } + }, + { + "title": "Successful Request Latency by database and table", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT Average(aws.timestream.SuccessfulRequestLatency) AS 'Successful Request Latency' WHERE aws.Namespace = 'AWS/Timestream' TIMESERIES facet aws.timestream.DatabaseName,aws.timestream.TableName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": false + } + } + }, + { + "title": "Cumulative Bytes Metered by database", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.timestream.CumulativeBytesMetered) as 'CumulativeBytesMetered' FACET aws.timestream.DatabaseName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Magnetic Cumulative Bytes Metered by database", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.timestream.MagneticCumulativeBytesMetered) as 'MagneticCumulativeBytesMetered' facet aws.timestream.Operation, aws.timestream.DatabaseName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory Cumulative Bytes Metered", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.timestream.MemoryCumulativeBytesMetered) as 'MemoryCumulativeBytesMetered' FACET aws.timestream.Operation,aws.timestream.DatabaseName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Operations", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select count(aws.timestream.Operation) as 'Operations' from Metric facet aws.timestream.Operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "MagneticStore Rejected Record Count by database and table", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.timestream.MagneticStoreRejectedRecordCount) as 'MagneticStoreRejectedRecordCount' FACET aws.timestream.DatabaseName, aws.timestream.TableName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "MagneticStoreRejected Upload User/System Failures by database and table", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT \nsum(aws.timestream.MagneticStoreRejectedUploadUserFailures) as 'MagneticStoreRejectedUploadUserFailures',\nsum(aws.timestream.MagneticStoreRejectedUploadSystemFailures) as 'MagneticStoreRejectedUploadSystemFailures' facet aws.timestream.DatabaseName, aws.timestream.TableName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "System Errors", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.timestream.SystemErrors) as 'System Errors' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "User Errors", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.timestream.UserErrors) as 'UserErrors' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Magnetic Store Pending Records Latency by database", + "layout": { + "column": 1, + "row": 15, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.timestream.MagneticStorePendingRecordsLatency) as 'MagneticStorePendingRecordsLatency' facet aws.timestream.Operation, aws.timestream.DatabaseName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-timestream/amazon-timestream.png b/dashboards/amazon-timestream/amazon-timestream.png new file mode 100644 index 0000000000..75812edf40 Binary files /dev/null and b/dashboards/amazon-timestream/amazon-timestream.png differ diff --git a/dashboards/amazon-transfer-family/amazon-transfer-family.json b/dashboards/amazon-transfer-family/amazon-transfer-family.json new file mode 100644 index 0000000000..b6113f3a8d --- /dev/null +++ b/dashboards/amazon-transfer-family/amazon-transfer-family.json @@ -0,0 +1,315 @@ +{ + "name": "AWS Transfer Family", + "description": null, + "pages": [ + { + "name": "AWS Transfer Family", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AWS Transfer Family\nAWS Transfer Family securely scales your recurring business-to-business file transfers to AWS Storage services using SFTP, FTPS, FTP, and AS2 protocols." + } + }, + { + "title": "Total FilesIn", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.FilesIn) AS 'Total FilesIn'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] + } + }, + { + "title": "Total FilesOut", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.FilesOut) AS 'Total FilesOut'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] + } + }, + { + "title": "Total BytesIn", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.BytesIn) AS 'Total BytesIn'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] + } + }, + { + "title": "Total BytesOut", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.BytesOut) AS 'Total BytesOut'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + } + ] + } + }, + { + "title": "Files In & Out", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.FilesIn) AS 'FilesIn', sum(aws.transfer.FilesOut) AS 'FilesOut' TIMESERIES AUTO FACET aws.transfer.ServerId" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes In & Out", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.BytesIn) AS 'BytesIn', sum(aws.transfer.BytesOut) AS 'BytesOut' TIMESERIES AUTO FACET aws.transfer.ServerId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Upload Execution Start,Failed & Success", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.OnUploadExecutionsStarted) AS 'OnUploadExecutionsStarted', sum(aws.transfer.OnUploadExecutionsFailed) AS 'OnUploadExecutionsFailed' , sum(aws.transfer.OnUploadExecutionsSuccess) AS 'OnUploadExecutionsSuccess' TIMESERIES AUTO FACET aws.transfer.ServerId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Inbound message & Inbound failed message", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.InboundMessage) AS 'InboundMessage', sum(aws.transfer.InboundFailedMessage) AS 'InboundFailedMessage' TIMESERIES AUTO FACET aws.transfer.ServerId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Partial Upload Execution Start,Failed & Success", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transfer.OnPartialUploadExecutionsStarted) AS 'OnPartialUploadExecutionsStarted', sum(aws.transfer.OnPartialUploadExecutionsSuccess) AS 'OnPartialUploadExecutionsSuccess' , sum(aws.transfer.OnPartialUploadExecutionsFailed) AS 'OnPartialUploadExecutionsFailed' TIMESERIES AUTO FACET aws.transfer.ServerId " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-transfer-family/amazon-transfer-family.png b/dashboards/amazon-transfer-family/amazon-transfer-family.png new file mode 100644 index 0000000000..0b05747781 Binary files /dev/null and b/dashboards/amazon-transfer-family/amazon-transfer-family.png differ diff --git a/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs.json b/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs.json new file mode 100644 index 0000000000..8ebf86d7a0 --- /dev/null +++ b/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs.json @@ -0,0 +1,499 @@ +{ + "name": "Amazon VPC Lattice - Access Logs", + "description": null, + "pages": [ + { + "name": "Amazon VPC Lattice - Access Logs", + "description": null, + "widgets": [ + { + "title": "Total Access Log Count", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Access Logs' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average bytes recieved", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(bytesReceived) as 'bytes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average bytes sent", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(bytesSent) as 'bytes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average duration", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'ms' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response codes", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET responseCode" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total 2xx responses", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as '2xx response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND responseCode >= 200 AND responseCode < 300 AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total 3xx responses", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as '3xx response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND responseCode >= 300 AND responseCode < 400 AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total 4xx responses", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as '4xx response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND responseCode >= 400 AND responseCode < 500 AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total 5xx responses", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as '5xx response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND responseCode >= 500 AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response codes", + "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": "SELECT count(*) as 'response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET responseCode TIMESERIES 3 minutes " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "VPC Routes", + "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": "SELECT count(*) as 'response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET concat(`sourceVpcId`, ' ::: ',`destinationVpcId`) TIMESERIES 3 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Access Logs by protocol", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Access Logs' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET protocol" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "IP sources", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET sourceIpPort LIMIT 25 TIMESERIES 3 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "IP targets", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'response codes' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET targetIpPort LIMIT 25 TIMESERIES 3 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Access Logs by TLS Version", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Access Logs' FROM Log WHERE serviceNetworkArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) FACET tlsVersion" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Real Time Logs", + "layout": { + "column": 1, + "row": 11, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log WHERE targetGroupArn LIKE '%vpc-lattice%' AND sourceVpcId IN ({{lattice_src_vpc}}) AND destinationVpcId IN ({{lattice_dst_vpc}}) limit 50" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "lattice_src_vpc", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(sourceVpcId) WHERE serviceNetworkArn LIKE '%vpc-lattice%'" + }, + "title": "Source VPC", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "lattice_dst_vpc", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(destinationVpcId) WHERE serviceNetworkArn LIKE '%vpc-lattice%'" + }, + "title": "Destination VPC", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs01.png b/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs01.png new file mode 100644 index 0000000000..034fc541c1 Binary files /dev/null and b/dashboards/amazon-vpc-lattice-access-logs/amazon-vpc-lattice-access-logs01.png differ diff --git a/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.json b/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.json new file mode 100644 index 0000000000..35beb1a99b --- /dev/null +++ b/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.json @@ -0,0 +1,251 @@ +{ + "name": "Amazon VPC Lattice Metrics", + "description": null, + "pages": [ + { + "name": "Amazon VPC Lattice Metrics", + "description": null, + "widgets": [ + { + "title": "Total Requests", + "layout": { + "column": 1, + "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 sum(aws.vpclattice.TotalRequestCount) as 'Requests' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 5 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Bytes sent/received", + "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 sum(aws.vpclattice.TotalReceivedConnectionBytes) as 'Bytes received', sum(aws.vpclattice.TotalSentConnectionBytes) as 'Bytes sent' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 5 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "% Success rate", + "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 sum(aws.vpclattice.HTTPCode_2XX_Count)*100/sum(aws.vpclattice.TotalRequestCount) as '% Success rate' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 5 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average request time", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(aws.vpclattice.RequestTime) as 'Request time (ms)' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 2 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total TLS Connection handshake count", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(aws.vpclattice.TotalTLSConnectionHandshakeCount) as 'TLS Connection handshakes' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 5 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active connection count", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(aws.vpclattice.ActiveConnectionCount) as 'Connection count' WHERE aws.accountId IN ({{aws_account}}) AND aws.region IN ({{aws_region}}) AND aws.vpclattice.TargetGroup IN ({{aws_tg}}) TIMESERIES 5 minutes SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "aws_account", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(aws.accountId) WHERE metricName LIKE 'aws.vpclattice%'" + }, + "title": "AccountID", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_region", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(aws.region) WHERE metricName LIKE 'aws.vpclattice%'" + }, + "title": "Region", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "aws_tg", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(aws.vpclattice.TargetGroup) WHERE metricName LIKE 'aws.vpclattice%'" + }, + "title": "Target Group", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.png b/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.png new file mode 100644 index 0000000000..b2c0206f9f Binary files /dev/null and b/dashboards/amazon-vpc-lattice-metrics/amazon-vpc-lattice-metrics.png differ diff --git a/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway.json b/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway.json new file mode 100644 index 0000000000..b0af245ffd --- /dev/null +++ b/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway.json @@ -0,0 +1,257 @@ +{ + "name": "Amazon VPC NAT Gateway", + "description": null, + "pages": [ + { + "name": "Amazon VPC NAT Gateway", + "description": null, + "widgets": [ + { + "title": "Connection established rate", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(aws.natgateway.ConnectionEstablishedCount)*100 / sum(aws.natgateway.ConnectionAttemptCount) as '% Rate'WHERE aws.natgateway.NatGatewayId IN ({{id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Idle connections over time", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#d0884e", + "seriesName": "timeouts" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(aws.natgateway.IdleTimeoutCount) as 'timeouts' TIMESERIES WHERE aws.natgateway.NatGatewayId IN ({{id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Packets dropped", + "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 sum(aws.natgateway.PacketsDropCount) as 'packets' WHERE aws.natgateway.NatGatewayId IN ({{id}}) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes out by destination/source", + "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 sum(aws.natgateway.BytesOutToDestination) as 'destination', sum(aws.natgateway.BytesOutToSource) as 'source' WHERE aws.natgateway.NatGatewayId IN ({{id}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes in from destination/source", + "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 sum(aws.natgateway.BytesInFromDestination) as 'destination' , sum(aws.natgateway.BytesInFromSource) as 'source' WHERE aws.natgateway.NatGatewayId IN ({{id}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active connections", + "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 max(aws.natgateway.ActiveConnectionCount) FACET aws.natgateway.NatGatewayId WHERE aws.natgateway.NatGatewayId IN ({{id}}) timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Port Allocation Errors", + "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 sum(aws.natgateway.ErrorPortAllocation) as 'errors' WHERE aws.natgateway.NatGatewayId IN ({{id}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "id", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(aws.natgateway.NatGatewayId) FROM Metric" + }, + "title": "NATGateway ID", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway01.png b/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway01.png new file mode 100644 index 0000000000..7765020b96 Binary files /dev/null and b/dashboards/amazon-vpc-natgateway/amazon-vpc-natgateway01.png differ diff --git a/dashboards/amazon-workmail/amazon-workmail.json b/dashboards/amazon-workmail/amazon-workmail.json new file mode 100644 index 0000000000..1673e16ddd --- /dev/null +++ b/dashboards/amazon-workmail/amazon-workmail.json @@ -0,0 +1,251 @@ +{ + "name": "Amazon WorkMail", + "description": null, + "pages": [ + { + "name": "Amazon WorkMail", + "description": null, + "widgets": [ + { + "title": "Outgoing Email Sent", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.OutgoingEmailSent) as 'Outgoing Email Sent'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "Mailbox Email Delivered", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.MailboxEmailDelivered) as 'Mailbox Email Delivered'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "Outgoing Email Sent", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.IncomingEmailBounced) as 'Incoming Email Bounced'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -90 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## AWS WorkMail\nAmazon WorkMail is a secure, managed business email and calendar service with support for existing desktop and mobile email client applications. Amazon WorkMail gives users the ability to seamlessly access their email, contacts, and calendars using the client application of their choice, including Microsoft Outlook, native iOS and Android email applications, any client application supporting the IMAP protocol, or directly through a web browser." + } + }, + { + "title": "Organization Email Received", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.OrganizationEmailReceived ) AS 'OrganizationEmailReceived' FACET aws.workmail.OrganizationId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Outgoing Email Sent", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.OutgoingEmailSent) AS 'Outgoing Email Sent' FACET aws.workmail.OrganizationId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Mailbox Email Delivered", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.MailboxEmailDelivered ) as 'Mailbox Email Delivered' FACET aws.workmail.OrganizationId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Incoming Email Bounced & Outgoing Email Bounced", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT count(aws.workmail.IncomingEmailBounced) as 'Incoming Email Bounced', count(aws.workmail.OutgoingEmailBounced) as 'Outgoing Email Bounced' FACET aws.workmail.OrganizationId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/amazon-workmail/amazon-workmail.png b/dashboards/amazon-workmail/amazon-workmail.png new file mode 100644 index 0000000000..b5702d53a7 Binary files /dev/null and b/dashboards/amazon-workmail/amazon-workmail.png differ diff --git a/dashboards/amazon-workspaces/amazon-workspaces.json b/dashboards/amazon-workspaces/amazon-workspaces.json new file mode 100644 index 0000000000..d6153d9fab --- /dev/null +++ b/dashboards/amazon-workspaces/amazon-workspaces.json @@ -0,0 +1,449 @@ +{ + "name": "Amazon WorkSpaces", + "description": null, + "pages": [ + { + "name": "Amazon WorkSpaces", + "description": null, + "widgets": [ + { + "title": "Available WorkSpaces", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.Available) AS 'Available WorkSpaces'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Unhealthy WorkSpaces", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.Unhealthy) AS 'Unhealthy WorkSpaces'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Amazon WorkSpaces\nAmazon WorkSpaces is a fully managed desktop virtualization service for Windows and Linux that enables you to access resources from any supported device." + } + }, + { + "title": "Connection Attempt", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.ConnectionAttempt) AS 'Connection Attempt' facet aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Connection Failure", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.ConnectionFailure) AS 'ConnectionFailure' facet aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Connection Success", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.ConnectionSuccess) AS 'ConnectionSuccess' facet aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Session Launch Time", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.SessionLaunchTime) as 'Session Launch Time' FACET aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "InSession Latency", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.workspaces.InSessionLatency) AS 'InSessionLatency' FACET aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Session Disconnect", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.SessionDisconnect) as 'SessionDisconnect' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "User Connected", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT max(aws.workspaces.UserConnected) AS 'User Connected' facet aws.workspaces.WorkspaceId TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Stopped Workspaces", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.Stopped) AS 'Stopped Workspaces' FACET aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Maintenance", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.Maintenance) AS 'Maintenance' facet aws.workspaces.DirectoryId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trusted Device Validation Status", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.workspaces.TrustedDeviceValidationAttempt) as 'TrustedDeviceValidationAttempt',average(aws.workspaces.TrustedDeviceValidationSuccess) as 'TrustedDeviceValidationSuccess',average(aws.workspaces.TrustedDeviceValidationFailure) as 'TrustedDeviceValidationFailure' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trusted Device Certificate Days Before Expiration", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.workspaces.TrustedDeviceCertificateDaysBeforeExpiration) as 'Trusted Device Certificate Days Before Expiration' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } diff --git a/dashboards/amazon-workspaces/amazon-workspaces.png b/dashboards/amazon-workspaces/amazon-workspaces.png new file mode 100644 index 0000000000..edb8de1464 Binary files /dev/null and b/dashboards/amazon-workspaces/amazon-workspaces.png differ diff --git a/dashboards/ansible-automation-controller/ansible-automation-controller01.png b/dashboards/ansible-automation-controller/ansible-automation-controller01.png index d18a4dbd5e..a2b7519a66 100644 Binary files a/dashboards/ansible-automation-controller/ansible-automation-controller01.png and b/dashboards/ansible-automation-controller/ansible-automation-controller01.png differ diff --git a/dashboards/ansible-automation-controller/ansible-automation-controller02.png b/dashboards/ansible-automation-controller/ansible-automation-controller02.png index 06cd20b152..18116cc896 100644 Binary files a/dashboards/ansible-automation-controller/ansible-automation-controller02.png and b/dashboards/ansible-automation-controller/ansible-automation-controller02.png differ diff --git a/dashboards/ansible-automation-controller/dashboard.json b/dashboards/ansible-automation-controller/dashboard.json index 039dc64936..3ce2db3962 100644 --- a/dashboards/ansible-automation-controller/dashboard.json +++ b/dashboards/ansible-automation-controller/dashboard.json @@ -11,23 +11,23 @@ "layout": { "column": 1, "row": 1, - "width": 3, - "height": 3 + "width": 2, + "height": 2 }, "linkedEntityGuids": null, "visualization": { "id": "viz.markdown" }, "rawConfiguration": { - "text": "\n![logo](https://github.com/newrelic/newrelic-quickstarts/blob/main/quickstarts/ansible-automation-controller/logo.png)\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=AnsibleAutomationPlatform) here and let us know how we can improve it for you.\n\nFollow New Relic [Ansible Automation Platform documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/ansible-controller-integration/) to instrument RedHat Ansible Automation Platform.\n" + "text": "\n![logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/ansible-automation-controller/logo.png)\n\n" } }, { "title": "Hosts", "layout": { - "column": 4, + "column": 3, "row": 1, - "width": 3, + "width": 4, "height": 2 }, "linkedEntityGuids": null, @@ -130,10 +130,26 @@ } } }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your Red Hat Ansible Automation Controller with New Relic - [Add data](https://one.newrelic.com/catalog-pack-details?state=4dc166c8-8662-e494-0156-c10773c90ea6)\n\nUnable to find data in your dashboard? - [Troubleshoot here](https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/get-started/send-prometheus-metric-data-new-relic/)\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=AnsibleAutomationController) here and let us know how we can improve it for you.\n\nFollow New Relic [Ansible Automation Controller documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/ansible-controller-integration/) to instrument Red Hat Ansible Automation Platform." + } + }, { "title": "Successful Jobs", "layout": { - "column": 4, + "column": 3, "row": 3, "width": 2, "height": 3 @@ -165,7 +181,7 @@ { "title": "Failed Jobs", "layout": { - "column": 6, + "column": 5, "row": 3, "width": 2, "height": 3 @@ -198,7 +214,7 @@ { "title": "Error Jobs", "layout": { - "column": 8, + "column": 7, "row": 3, "width": 2, "height": 3 @@ -231,9 +247,9 @@ { "title": "Organizations, Teams and Users", "layout": { - "column": 10, + "column": 9, "row": 3, - "width": 3, + "width": 4, "height": 3 }, "linkedEntityGuids": null, @@ -246,8 +262,8 @@ }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Metric SELECT latest(awx_organizations_total) AS 'Organisations', latest(awx_teams_total) AS 'Teams', latest(awx_users_total) AS 'Users' " + "accountIds": [], + "query": "FROM Metric SELECT latest(awx_organizations_total) AS 'Organizations', latest(awx_teams_total) AS 'Teams', latest(awx_users_total) AS 'Users' " } ], "platformOptions": { @@ -256,10 +272,10 @@ } }, { - "title": "Time Spent Sending Metrics To Other Nodes (seconds)", + "title": "Time Spent Sending Metrics to Other Nodes (seconds)", "layout": { "column": 1, - "row": 4, + "row": 6, "width": 3, "height": 2 }, @@ -273,7 +289,7 @@ }, "nrqlQueries": [ { - "accountId": 0, + "accountIds": [], "query": "FROM Metric SELECT latest(subsystem_metrics_send_metrics_seconds) AS ''" } ], @@ -283,12 +299,12 @@ } }, { - "title": "Job Templates", + "title": "Pipe Execution", "layout": { - "column": 1, + "column": 4, "row": 6, - "width": 3, - "height": 3 + "width": 4, + "height": 2 }, "linkedEntityGuids": null, "visualization": { @@ -300,8 +316,8 @@ }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Metric SELECT latest(awx_job_templates_total) AS 'Job Templates', latest(awx_workflow_job_templates_total) AS 'Workflow Job Templates'" + "accountIds": [], + "query": "FROM Metric SELECT latest(subsystem_metrics_pipe_execute_seconds) AS 'Time Spent Saving Metrics to Redis (seconds)', latest(subsystem_metrics_pipe_execute_calls) AS 'Number of Calls to Pipe Execute'" } ], "platformOptions": { @@ -310,35 +326,29 @@ } }, { - "title": "Pending and Running Jobs", + "title": "Job Templates", "layout": { - "column": 4, + "column": 8, "row": 6, - "width": 9, - "height": 3 + "width": 5, + "height": 2 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.billboard" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(awx_pending_jobs_total) AS 'Pending Jobs', latest(awx_running_jobs_total) AS 'Running Jobs' TIMESERIES AUTO" + "query": "FROM Metric SELECT latest(awx_job_templates_total) AS 'Job Templates', latest(awx_workflow_job_templates_total) AS 'Workflow Job Templates'" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, @@ -346,9 +356,9 @@ "title": "Launch Type", "layout": { "column": 1, - "row": 9, + "row": 8, "width": 6, - "height": 2 + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -373,29 +383,35 @@ } }, { - "title": "Pipe Execution", + "title": "Pending and Running Jobs", "layout": { "column": 7, - "row": 9, + "row": 8, "width": 6, - "height": 2 + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(subsystem_metrics_pipe_execute_seconds) AS 'Time Spent Saving Metrics To Redis (seconds)', latest(subsystem_metrics_pipe_execute_calls) AS 'Number of Calls to pipe_execute'" + "query": "FROM Metric SELECT latest(awx_pending_jobs_total) AS 'Pending Jobs', latest(awx_running_jobs_total) AS 'Running Jobs' TIMESERIES AUTO" } ], "platformOptions": { "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } } } diff --git a/dashboards/apache-hadoop/apache-hadoop-01.png b/dashboards/apache-hadoop/apache-hadoop-01.png new file mode 100644 index 0000000000..022ad8a5fd Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-01.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-02.png b/dashboards/apache-hadoop/apache-hadoop-02.png new file mode 100644 index 0000000000..754a5789e4 Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-02.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-03.png b/dashboards/apache-hadoop/apache-hadoop-03.png new file mode 100644 index 0000000000..fce2167c86 Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-03.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-04.png b/dashboards/apache-hadoop/apache-hadoop-04.png new file mode 100644 index 0000000000..c312568ba4 Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-04.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-05.png b/dashboards/apache-hadoop/apache-hadoop-05.png new file mode 100644 index 0000000000..16c74ea159 Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-05.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-06.png b/dashboards/apache-hadoop/apache-hadoop-06.png new file mode 100644 index 0000000000..00c5e2d54e Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-06.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop-07.png b/dashboards/apache-hadoop/apache-hadoop-07.png new file mode 100644 index 0000000000..53b82b289b Binary files /dev/null and b/dashboards/apache-hadoop/apache-hadoop-07.png differ diff --git a/dashboards/apache-hadoop/apache-hadoop.json b/dashboards/apache-hadoop/apache-hadoop.json new file mode 100644 index 0000000000..b244742d86 --- /dev/null +++ b/dashboards/apache-hadoop/apache-hadoop.json @@ -0,0 +1,1484 @@ +{ + "name": "Apache Hadoop", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/apache-hadoop/logo.png)" + } + }, + { + "title": "NameNode Dead DataNodes", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumDeadDataNodes) AS 'dead nodes' FROM HadoopNameNodeSampleMetrics " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "NameNode Volume Failures", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(VolumeFailuresTotal) AS 'volume failures' FROM HadoopNameNodeSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 2 + }, + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "NameNode Missing Blocks", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumberOfMissingBlocks) AS 'missing blocks' FROM HadoopNameNodeSampleMetrics " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 3 + }, + { + "alertSeverity": "WARNING", + "value": 0.9 + } + ] + } + }, + { + "title": "Used Disk Percent (%)", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PercentUsed) AS '(%) disk usage' FROM HadoopNameNodeSampleMetrics " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + }, + { + "alertSeverity": "CRITICAL", + "value": 95 + } + ] + } + }, + { + "title": "Stale Data Nodes", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumStaleDataNodes) AS 'stale data nodes' FROM HadoopNameNodeSampleMetrics WHERE NumStaleDataNodes != 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache Hadoop Version - Please select the entity name", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(SoftwareVersion) AS '' FROM HadoopNameNodeSampleMetrics WHERE entityName = {{entity_name}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hadoop Node Manager Status", + "layout": { + "column": 3, + "row": 2, + "width": 5, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#31ce1c", + "seriesName": "Active nodes" + }, + { + "color": "#dd1313", + "seriesName": "Lost nodes" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumActiveNMs) AS 'Active nodes', latest(NumLostNMs) AS 'Lost nodes' FROM HadoopResourceManagerMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cache Used ", + "layout": { + "column": 8, + "row": 2, + "width": 5, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(CacheUsed) AS 'Cache used' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "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=610f1231-872c-6df3-a9bd-5662f4d4cfce).\n\nUnable to find data in your dashboard? -[Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Apache Hadoop documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-hadoop-monitoring-integration/) to instrument Apache Hadoop.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=ApacheHadoop) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Hadoop health\nFind valuable insights into heap memory, non-heap memory, blocks, files, and threads with New Relic Hadoop." + } + }, + { + "title": "Heap Memory Statistics", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(MemHeapUsedM) AS 'Memory heap used MB', latest(MemHeapMaxM) AS 'Memory heap max MB', latest(MemHeapCommittedM) AS 'Memory heap committed MB' FROM HadoopNameNodeSampleMetrics TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Non Heap Memory Statistics", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(MemNonHeapUsedM) AS 'Memory non heap used MB', latest(MemNonHeapMaxM) AS 'Memory non heap max MB', latest(MemNonHeapCommittedM) AS 'Memory non heap committed MB' FROM HadoopNameNodeSampleMetrics TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Files Statistics", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(FilesTotal), latest(FilesCreated), latest(FilesDeleted), latest(FilesRenamed) FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Blocks Statistics", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(BlocksTotal) AS 'Total blocks', latest(BlockCapacity) AS 'Block capacity', latest(CorruptBlocks) AS 'Corrupt blocks', latest(ExcessBlocks) AS 'Excess blocks', latest(MissingBlocks) AS 'Missing blocks', latest(UnderReplicatedBlocks) AS 'Replicated blocks' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Thread Statistics", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Threads), latest(ThreadsBlocked) AS 'Threads blocked', latest(ThreadsRunnable) AS 'Threads runnable', latest(ThreadsNew) AS 'Threads new', latest(ThreadsTerminated) AS 'Threads terminated', latest(ThreadsWaiting) AS 'Threads waiting' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Log Statistics", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(LogError) AS 'Log error', latest(LogFatal) AS 'Log fatal', latest(LogInfo) AS 'Log info', latest(LogWarn) AS 'Log warn' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "HDFS", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# HDFS - (Hadoop Distributed File System)\nIt is crucial to monitor essential HDFS metrics as it enables you to keep track of DFS capacity, available space, block status, and optimize data storage.\n" + } + }, + { + "title": "Hadoop Nodes Status", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumLiveDataNodes) AS 'Live nodes', latest(NumDeadDataNodes) AS 'Dead nodes' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HDFS Disk Spaces", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(CapacityTotalGB) as 'Capacity total GB' , latest(CapacityUsedGB) as 'Capacity used GB', latest(CapacityRemainingGB) as 'Capacity remaining GB', latest(NonDfsUsedSpace)/1e+9\n as 'Non Dfs used space GB' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Yarn Cluster", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Yarn Cluster\nMonitoring the YARN cluster allows you to closely track the allocation and consumption of resources, ensuring that workloads are distributed effectively and efficiently across the cluster.\n" + } + }, + { + "title": "Active Users", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ActiveUsers) AS 'active users' FROM HadoopResourceManagerMetrics WHERE ActiveUsers !=0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Allocated Containers", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AllocatedContainers) AS 'allocated containers' FROM HadoopResourceManagerMetrics WHERE AllocatedContainers !=0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Pending Containers", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PendingContainers) AS 'pending containers' FROM HadoopResourceManagerMetrics WHERE PendingContainers !=0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -0.9 + } + ] + } + }, + { + "title": "Reserved Containers", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ReservedContainers) AS 'reserved containers' FROM HadoopResourceManagerMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebooted", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(NumRebootedNMs) AS 'rebooted nodes' FROM HadoopResourceManagerMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Available V Cores", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AvailableVCores) AS 'available VCores' FROM HadoopResourceManagerMetrics WHERE AvailableVCores != 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Allocated Memory", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AllocatedMB) AS 'MB' FROM HadoopResourceManagerMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Virtual Cores", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PendingVCores), latest(ReservedVCores), latest(AllocatedVCores), latest(AvailableVCores) FROM HadoopResourceManagerMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(MemoryUsed) AS 'MB' FROM HadoopNameNodeSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Garbage Collection Time", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(GcTimeMillis) AS 'Milliseconds'FROM HadoopResourceManagerMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "AM", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Master\nUse the Application Master (AM) monitor to track the status of your applications. This monitor provides metrics for killed, failed, pending, and running data, which can help you effectively manage and optimize your application performance.\n" + } + }, + { + "title": "Apps Running", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsRunning) AS 'apps running' FROM HadoopResourceManagerMetrics WHERE AppsRunning !=0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Apps Completed", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsCompleted) AS 'apps completed' FROM HadoopResourceManagerMetrics WHERE AppsCompleted != 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Apps Submitted", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsSubmitted) AS 'apps submitted' FROM HadoopResourceManagerMetrics WHERE AppsSubmitted != 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Apps Pending", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsPending) AS 'apps pending' FROM HadoopResourceManagerMetrics WHERE AppsPending !=0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -0.9 + } + ] + } + }, + { + "title": "Apps Killed", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsKilled) AS 'apps killed' FROM HadoopResourceManagerMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + }, + { + "value": 0 + } + ] + } + }, + { + "title": "Apps Failed", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AppsFailed) AS 'apps failed' FROM HadoopResourceManagerMetrics WHERE AppsFailed != 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -0.9 + } + ] + } + }, + { + "title": "AM Resource Statistics", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AMResourceLimitMB) AS 'AM Resource limit MB', latest(AMResourceLimitVCores) AS 'AM Resource limit V cores', latest(UsedAMResourceMB) AS 'Used AM resource MB', latest(UsedAMResourceVCores) AS 'Used AM resource V cores' FROM HadoopResourceManagerMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Delay Time", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AMLaunchDelayAvgTime) AS 'Milliseconds' FROM HadoopResourceManagerMetrics TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "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.cpuPercent) AS 'CPU Used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 5, + "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.memoryUsedPercent) AS 'Memory used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 9, + "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.disk.usedPercent) as 'Storage used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 1, + "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": "Load Average", + "layout": { + "column": 5, + "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.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' 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": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + } + }, + { + "title": "Apache Hadoop Logs", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log WHERE logtype = {{log_type}}" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "log_type", + "items": null, + "defaultValues": [ + { + "value": { + "string": "hadoop_namenode_logs" + } + }, + { + "value": { + "string": "hadoop_resourcemanager_logs" + } + }, + { + "value": { + "string": "hadoop_secondarynamenode_logs" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 1 month ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "entity_name", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entityName) FROM HadoopNameNodeSampleMetrics SINCE 3 MONTHS AGO " + }, + "title": "Entity Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/apache-traffic-server/apache-traffic-server.json b/dashboards/apache-traffic-server/apache-traffic-server.json new file mode 100644 index 0000000000..206d3aeb9b --- /dev/null +++ b/dashboards/apache-traffic-server/apache-traffic-server.json @@ -0,0 +1,1583 @@ +{ + "name": "Apache Traffic Server", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/apache-traffic-server/logo.png)" + } + }, + { + "title": "expired SSL certificates", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.ssl.origin_server_expired_cert) AS 'expired SSL certificates' FROM ATSSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "ATS High Error Rate in Closed Connections", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http2.session_die_high_error_rate) AS 'closed connections error rate' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "ATS Free Cache RAM (%)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(global.proxy.process.cache.ram_cache.total_bytes) - latest(global.proxy.process.cache.ram_cache.bytes_used)) / latest(global.proxy.process.cache.ram_cache.total_bytes)*100 AS '(%) free cache RAM' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 10 + }, + { + "alertSeverity": "WARNING", + "value": 15 + } + ] + } + }, + { + "title": "Total HTTP Incoming Requests", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.incoming_requests) AS 'incoming requests' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of HTTP Incoming Responses", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.incoming_responses) AS 'incoming responses' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "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=723dd767-0470-60b8-5237-5a78f69b3a48).\n\nInstrument Apache Traffic Server with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-traffic-server-monitoring-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=ApacheTrafficServer) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Cache Hit Ratio", + "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 (latest(global.proxy.process.cache_total_hits) / (latest(global.proxy.process.cache_total_hits) + latest(global.proxy.process.cache_total_misses))) * 100 AS 'cache hit ratio' FROM ATSCacheSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration of HTTP Transaction Errors (milliseconds)", + "layout": { + "column": 8, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.transaction_totaltime.errors.other) AS 'errors time' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Client Connections", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.total_client_connections) AS 'total client connections' FROM ATSHttpSampleMetrics " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total HTTP Invalid Client Requests", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.invalid_client_requests) AS 'invalid client requests' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Cache Hits", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache_total_hits) AS 'total cache hits' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Misses Cache", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache_total_misses) AS 'total cache misses' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Start Time of Node Restarts Manager", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.node.restarts.manager.start_time) AS 'restarts manager time' FROM ATSSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network I/O", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#0c923f", + "seriesName": "incomeing requests" + }, + { + "color": "#ed0c0c", + "seriesName": "outgoing requests" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.net.receiveBytesPerSecond) AS 'receive bytes per second', average(host.net.transmitBytesPerSecond) AS 'transmit bytes per second' FROM Metric TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "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": "SELECT average(host.net.receivePacketsPerSecond) AS 'receive packets per second', average(host.net.transmitPacketsPerSecond) AS 'transmit packets per second' FROM Metric TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ATS Transaction Errors", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#d90d0d", + "seriesName": "others" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.transaction_counts.errors.other) AS 'others', latest(global.proxy.process.http.transaction_counts.errors.aborts) AS 'aborts', latest(global.proxy.process.http.transaction_counts.errors.connect_failed) AS 'connect failed' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "ATS Cache", + "description": null, + "widgets": [ + { + "title": "Total Cache Deletes", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.cache_deletes) AS 'cache deletes' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Cache Lookups", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.cache_lookups) AS 'cache lookups' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Cache Requests", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache_total_requests) AS 'total cache requests' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total RAM Cache", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache.ram_cache.total_bytes) / 1e+6 AS 'total RAM cache (MB)' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Free RAM Cache", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(global.proxy.process.cache.ram_cache.total_bytes) - latest(global.proxy.process.cache.ram_cache.bytes_used)) / 1e+6 AS 'free RAM cache (MB)' FROM ATSCacheSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "ATS Proxy Cache Write Statistics", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#1cd719", + "seriesName": "success" + }, + { + "color": "#df0c0c", + "seriesName": "failure" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache.write.success) AS 'success', latest(global.proxy.process.cache.write.failure) AS 'failure' FROM ATSCacheSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cache Volume Ram Cache Hits & Misses", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache.volume_0.ram_cache.hits) AS 'volume_0 ram cache hits',latest(global.proxy.process.cache.volume_0.ram_cache.misses) AS 'volume_0 ram cache misses' FROM ATSCacheSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Volume Ram Cache Total & Used Bytes ", + "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(global.proxy.process.cache.volume_0.ram_cache.total_bytes) AS 'total volume_0 ram cache', latest(global.proxy.process.cache.volume_0.ram_cache.bytes_used) AS 'used volume_0 ram cache' FROM ATSCacheSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HostDB Cache Statistics", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.hostdb.cache.current_items) AS 'hostdb cache items', latest(global.proxy.process.hostdb.cache.current_size) AS 'hostdb cache size', latest(global.proxy.process.hostdb.cache.total_lookups) AS 'hostdb cache lookups' FROM ATSCacheSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Cache Size Statistics", + "layout": { + "column": 6, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache_total_bytes) AS 'total bytes', latest(global.proxy.process.cache_total_hits_bytes) AS 'hits bytes' , latest(global.proxy.process.cache_total_misses_bytes) AS 'misses bytes' FROM ATSCacheSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "ATS Proxy Cache Success Statistics", + "layout": { + "column": 1, + "row": 8, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.cache.read.success) AS 'read success',latest(global.proxy.process.cache.read.failure) AS ' failure success', latest(global.proxy.process.cache.update.success) AS 'update success', latest(global.proxy.process.cache.remove.success) AS 'remove success' FROM ATSCacheSampleMetrics TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DNS Statistics", + "layout": { + "column": 7, + "row": 8, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.dns.total_dns_lookups) AS 'total dns lookups',latest(global.proxy.process.dns.lookup_successes) AS 'dns lookup successes', latest(global.proxy.process.dns.lookup_failures) AS 'dns lookup failures', latest(global.proxy.process.dns.max_retries_exceeded) AS 'dns max retries exceeded' FROM ATSSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "ATS HTTP ", + "description": null, + "widgets": [ + { + "title": "HTTP Request statistics", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.incoming_requests) AS 'incoming',latest(global.proxy.process.http.outgoing_requests) AS 'ougoing', latest(global.proxy.process.http.completed_requests) AS 'completed', latest(global.proxy.process.http.delete_requests) AS 'delete' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "ATS Total Request and Response Size", + "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 latest(global.proxy.process.http.origin_server_total_request_bytes) AS 'request size', latest(global.proxy.process.http.origin_server_total_response_bytes) AS 'response size' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Client Connections Statistics", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.total_client_connections) AS 'total client connections', latest(global.proxy.process.http.total_client_connections_ipv4) AS ' client connections ipv4', latest(global.proxy.process.http.total_client_connections_ipv6) AS ' client connections ipv6' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Current Active Client & Server Connections", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.current_active_client_connections) AS 'active connections', latest(global.proxy.process.http.total_server_connections) AS 'total server connections', latest(global.proxy.process.http.broken_server_connections) AS 'broken server connections' FROM ATSHttpSampleMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Response Document Size (bytes)", + "layout": { + "column": 4, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.response_document_size_100) AS 'size 100', latest(global.proxy.process.http.response_document_size_1K) AS 'size 1K',latest(global.proxy.process.http.response_document_size_5K) AS 'size 5K', latest(global.proxy.process.http.response_document_size_10K)AS 'size 10K',latest(global.proxy.process.http.response_document_size_1M)AS 'size 1M', latest(global.proxy.process.http.response_document_size_inf)AS 'size inf' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Request Document Size (bytes)", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.request_document_size_100) AS 'size 100', latest(global.proxy.process.http.request_document_size_1K)AS 'size 1K', latest(global.proxy.process.http.request_document_size_3K) AS 'size 3K', latest(global.proxy.process.http.request_document_size_5K) AS 'size 5K', latest(global.proxy.process.http.request_document_size_10K)AS 'size 10K', latest(global.proxy.process.http.request_document_size_1M) AS 'size 1M', latest(global.proxy.process.http.request_document_size_inf)AS 'size inf' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Total Incoming Statistics", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.total_incoming_connections) AS 'incoming connections', latest(global.proxy.process.http.incoming_responses) AS 'incoming responses' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Average Transactions per Client & Server", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.http.avg_transactions_per_client_connection) AS 'client connection' , latest(global.proxy.process.http.avg_transactions_per_server_connection) AS 'server connection' FROM ATSHttpSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SSL Errors", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(global.proxy.process.ssl.origin_server_other_errors) AS 'origin server errors',latest(global.proxy.process.ssl.ssl_error_ssl) AS 'ssl error', latest(global.proxy.process.ssl.ssl_error_want_read) AS 'read errors', latest(global.proxy.process.ssl.ssl_error_want_write)AS 'write errors' FROM ATSSampleMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Apache", + "description": null, + "widgets": [ + { + "title": "Apache Network Traffic", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.bytesPerSecond) AS 'bytes' , latest(net.requestsPerSecond) AS 'requests' FROM ApacheSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Apache Workers", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.busyWorkers) AS 'busy workers', latest(server.idleWorkers) AS 'idle workers' FROM ApacheSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache Scoreboard Total Workers", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.totalWorkers) AS 'total workers' FROM ApacheSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache Scoreboard Workers", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.loggingWorkers) AS 'logging workers', latest(server.scoreboard.keepAliveWorkers) AS 'keep alive workers', latest(server.scoreboard.startingWorkers) AS 'starting workers', latest(server.scoreboard.writingWorkers) AS 'writing workers', latest(server.scoreboard.readingWorkers) AS 'reading workers', latest(server.scoreboard.idleCleanupWorkers) AS 'idle cleanup workers', latest(server.scoreboard.finishingWorkers) AS 'finishing workers' FROM ApacheSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache Memory (GB)", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(systemMemoryBytes) AS 'memory' FROM ApacheSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 2, + "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": 2, + "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": 2, + "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": 5, + "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": "Load Average", + "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": "SELECT average(host.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 9, + "row": 5, + "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": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**Logs forwarding** (optional)\n\nFollow New Relic [Apache Traffic Server Logs forwarding documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-traffic-server-monitoring-integration/#forward-apache-traffic-server-logs-to-new-relic) to instrument Apache Traffic Server Logs." + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + } + }, + { + "title": "Apache Traffic Server 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": "log_type", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 1 month ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/apache-traffic-server/ats-01.png b/dashboards/apache-traffic-server/ats-01.png new file mode 100644 index 0000000000..7f5f01e4d0 Binary files /dev/null and b/dashboards/apache-traffic-server/ats-01.png differ diff --git a/dashboards/apache-traffic-server/ats-02.png b/dashboards/apache-traffic-server/ats-02.png new file mode 100644 index 0000000000..3604bffca2 Binary files /dev/null and b/dashboards/apache-traffic-server/ats-02.png differ diff --git a/dashboards/apache-traffic-server/ats-03.png b/dashboards/apache-traffic-server/ats-03.png new file mode 100644 index 0000000000..fbdb832946 Binary files /dev/null and b/dashboards/apache-traffic-server/ats-03.png differ diff --git a/dashboards/apache-traffic-server/ats-04.png b/dashboards/apache-traffic-server/ats-04.png new file mode 100644 index 0000000000..fff5fa3a21 Binary files /dev/null and b/dashboards/apache-traffic-server/ats-04.png differ diff --git a/dashboards/apache-traffic-server/ats-05.png b/dashboards/apache-traffic-server/ats-05.png new file mode 100644 index 0000000000..7f7ac7b012 Binary files /dev/null and b/dashboards/apache-traffic-server/ats-05.png differ diff --git a/dashboards/apache-traffic-server/ats-06.png b/dashboards/apache-traffic-server/ats-06.png new file mode 100644 index 0000000000..43ef4713ff Binary files /dev/null and b/dashboards/apache-traffic-server/ats-06.png differ diff --git a/dashboards/apache-traffic-server/ats-07.png b/dashboards/apache-traffic-server/ats-07.png new file mode 100644 index 0000000000..10b1a9379b Binary files /dev/null and b/dashboards/apache-traffic-server/ats-07.png differ diff --git a/dashboards/apache-traffic-server/ats-08.png b/dashboards/apache-traffic-server/ats-08.png new file mode 100644 index 0000000000..f6df88d54f Binary files /dev/null and b/dashboards/apache-traffic-server/ats-08.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper01b.png b/dashboards/apache-zooKeeper/apache-zooKeeper01b.png new file mode 100644 index 0000000000..804c78bac8 Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper01b.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper02b.png b/dashboards/apache-zooKeeper/apache-zooKeeper02b.png new file mode 100644 index 0000000000..463e553c8c Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper02b.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper03b.png b/dashboards/apache-zooKeeper/apache-zooKeeper03b.png new file mode 100644 index 0000000000..23c5c865d7 Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper03b.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper04b.png b/dashboards/apache-zooKeeper/apache-zooKeeper04b.png new file mode 100644 index 0000000000..c375f459c8 Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper04b.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper05.png b/dashboards/apache-zooKeeper/apache-zooKeeper05.png new file mode 100644 index 0000000000..121011b2b4 Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper05.png differ diff --git a/dashboards/apache-zooKeeper/apache-zooKeeper06b.png b/dashboards/apache-zooKeeper/apache-zooKeeper06b.png new file mode 100644 index 0000000000..43737114ae Binary files /dev/null and b/dashboards/apache-zooKeeper/apache-zooKeeper06b.png differ diff --git a/dashboards/apache-zooKeeper/dashboard.json b/dashboards/apache-zooKeeper/dashboard.json new file mode 100644 index 0000000000..9ab99044a7 --- /dev/null +++ b/dashboards/apache-zooKeeper/dashboard.json @@ -0,0 +1,1179 @@ +{ + "name": "Apache ZooKeeper", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Zookeeper icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/d89f5c8c3f9f16014d0e2b61e0b704cf093a5f85/quickstarts/apache-zooKeeper/logo.png)" + } + }, + { + "title": "Server State", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM zkSample FACET zkServerState" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ephemeral Znode", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkEphemeralsCount) as 'Ephemeral znode' FROM zkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Reload Time (ms)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkAvgDbinittime) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Prep Process Time (ms)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkSumPrepProcessTime) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Global Sessions", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkGlobalSessions) as 'Global Sessions' FROM zkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Open Files", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkOpenFileDescriptorCount) as 'Open Files' FROM zkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=572ff87b-6e31-c7d4-d457-d53b8ffd0924)\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Apache ZooKeeper documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/zookeeper-monitoring-integration/) to instrument Apache ZooKeeper.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=ApacheZooKeeper&entry.358368110=https://onenr.io/0MR280PZJQY) here and let us know how we can improve it for you." + } + }, + { + "title": "Latency (ms)", + "layout": { + "column": 3, + "row": 3, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkMaxLatency) as 'Max' FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Znode Count", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM zkSample SELECT latest(zkZnodeCount) as ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1000000 + } + ] + } + }, + { + "title": "Fsync Time (ms)", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkMinFsynctime) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Sent/Received Packets", + "layout": { + "column": 6, + "row": 5, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM zkSample SELECT max(zkPacketsSent) as 'Sent', max(zkPacketsReceived) as 'Received' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Session Watch", + "description": null, + "widgets": [ + { + "title": "Watch Count", + "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 latest(zkWatchCount) as 'Watch Count' FROM zkSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Max Nodes Created", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(zkMaxNodeCreatedWatchCount) AS '' FROM zkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Node Changed", + "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": "SELECT latest(zkCntNodeChangedWatchCount) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Node Children", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(zkMaxNodeChildrenWatchCount) FROM zkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Node Deleted", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(zkMaxNodeDeletedWatchCount) FROM zkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revalidate", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkRevalidateCount) FROM zkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Client Connection", + "description": null, + "widgets": [ + { + "title": "Outstanding", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkOutstandingRequests) as 'Request', latest(zkOutstandingChangesQueued) as 'Changes', latest(zkOutstandingChangesRemoved) as 'Removed' FROM zkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connections", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkConnectionRequestCount) as 'Request', latest(zkConnectionDropCount) AS 'Drop', latest(zkConnectionRejected) AS 'Rejected' FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Client Response Size (bytes)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(zkMinClientResponseSize) FROM zkSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received Bytes", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkBytesReceivedCount) FROM zkSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Latency", + "description": null, + "widgets": [ + { + "title": "Latency (ms)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkP99Readlatency), latest(zkP99Updatelatency), latest(zkP99ProposalLatency) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sync Process Time (ms)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(zkMaxSyncProcessTime) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sync Processor Flush (ms)", + "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": "SELECT latest(zkAvgSyncProcessorQueueFlushTimeMs) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Sync Processor Queue Size", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(zkAvgSyncProcessorQueueSize) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Request Queued", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkSyncProcessorRequestQueued) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Batch Size", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(zkMaxSyncProcessorBatchSize) FROM zkSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Latency (ms)", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(zkAvgLatency) FROM zkSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "JVM", + "description": null, + "widgets": [ + { + "title": "Applications Name (click on the application name to filter)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) FACET appName LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Garbage Collection", + "layout": { + "column": 4, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric WHERE metricTimesliceName LIKE 'GC%' FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Class Count", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric where metricTimesliceName like 'JmxBuiltIn/Classes%' FACET metricTimesliceName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heap Memory Usage (MB)", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.memory.heap.max) as 'Max', average(apm.service.memory.heap.committed) as 'Committed', average(apm.service.memory.heap.used) as 'Used' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Thread State", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(newrelic.timeslice.value) FROM Metric WITH METRIC_FORMAT 'Threads/SummaryState/{threadstate}/Count' WHERE metricTimesliceName LIKE 'Threads/SummaryState/%/Count' AND threadstate NOT LIKE '%New Relic%' FACET `threadstate` LIMIT 5 TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "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 WHERE entityName IN ({{entity_name}}) 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 WHERE entityName IN ({{entity_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Disk Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) as 'Used %' FROM Metric FACET device WHERE entityName IN ({{entity_name}}) LIMIT MAX TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "entity_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "zookeepertmp2" + } + }, + { + "value": { + "string": "pg-instance:localhost:5432" + } + }, + { + "value": { + "string": "ip-172-31-31-20.ec2.internal" + } + }, + { + "value": { + "string": "India-C02GF26VML85" + } + }, + { + "value": { + "string": "hadoop-master" + } + }, + { + "value": { + "string": "India-C02G90SMMD6R" + } + }, + { + "value": { + "string": "India-C02GD36PML85" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entityName) FROM Metric" + }, + "title": "Select your entity name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/apache/apache.json b/dashboards/apache/apache.json index b92d52cb6b..95eebde7ee 100644 --- a/dashboards/apache/apache.json +++ b/dashboards/apache/apache.json @@ -1,175 +1,1052 @@ { - "name" : "Apache", - "description" : "", - "pages" : [ { - "name" : "Apache", - "description" : "", - "widgets" : [ { - "visualization" : { - "id" : "viz.billboard" + "name": "Apache HTTPD", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Apache HTTPD logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/apache/logo.svg)" + } + }, + { + "title": "Servers", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Servers' from ApacheSample facet entityName WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Servers", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(entityName) as 'Servers' from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per second", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.requestsPerSecond) as 'Requests per second' from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 160 + } + ] + } + }, + { + "title": "Bytes per second", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.bytesPerSecond) as 'Bytes per second' from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 160 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=8b4969af-1367-31c6-9d85-8d4e1192d7a8).\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/#troubleshooting)\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=ApacheHTTPD) here and let us know how we can improve it for you.\n\n" + } + }, + { + "title": "Processors", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(processorCount) from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 128 + }, + { + "alertSeverity": "WARNING", + "value": 64 + } + ] + } + }, + { + "title": "Busy Workers", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.busyWorkers) as 'Busy Workers'from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Idle Workers", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.idleWorkers) as 'Idle Workers'from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Workers", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.totalWorkers) as 'Total Workers' from ApacheSample WHERE entityName IN ({{entity_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Worker Status", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.idleWorkers) as 'idle',latest(sserver.busyWorkers) as 'busy',latest(server.scoreboard.readingWorkers) as 'reading',latest(server.scoreboard.writingWorkers) as 'writing',latest(server.scoreboard.loggingWorkers) as 'logging',latest(server.scoreboard.finishingWorkers) as 'finishing',latest(server.scoreboard.closingWorkers) as 'closing',latest(server.scoreboard.dnsLookupWorkers) as 'dns lookup',latest(server.scoreboard.keepAliveWorkers) as 'keep alive',latest(server.scoreboard.idleCleanupWorkers) as 'ideal cleanup',latest(server.scoreboard.startingWorkers) as 'starting' from ApacheSample WHERE entityName IN ({{entity_name}}) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total vs Idle vs Busy Workers", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.totalWorkers) as 'Total Workers',latest(server.idleWorkers) as 'Idle Workers',latest(server.busyWorkers) as 'Busy Workers' from ApacheSample WHERE entityName IN ({{entity_name}}) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Uptime (seconds)", + "layout": { + "column": 1, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#23d12f", + "seriesName": "Uptime" + }, + { + "color": "#d01616", + "seriesName": "Downtime" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(uptime) from SystemSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes Sent per second, by Server", + "layout": { + "column": 4, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.bytesPerSecond) from ApacheSample facet entityName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Request per second, by Server", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.requestsPerSecond) from ApacheSample facet entityName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Async Connections", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.writingWorkers) as 'writing',latest(server.scoreboard.keepAliveWorkers) as 'keep alive',latest(server.scoreboard.closingWorkers)as 'closing' from ApacheSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Scoreboard Servering", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.dnsLookupWorkers) as 'dns lookup',latest(server.scoreboard.readingWorkers) as 'reading', latest(server.scoreboard.loggingWorkers) as 'logging' from ApacheSample WHERE entityName IN ({{entity_name}}) timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Scoreboard Connection Operations", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(server.scoreboard.startingWorkers) as 'starting',latest(server.scoreboard.closingWorkers) as 'closing', latest(server.scoreboard.finishingWorkers) as 'finishing',latest(server.scoreboard.dnsLookupWorkers) as 'dns lookup' from ApacheSample WHERE entityName IN ({{entity_name}}) timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "Host (click on the host to filter)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Metric facet entityName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.cpuPercent) AS 'CPU Usage (%)' FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) as 'Disk Usage (%)' FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.memoryUsedPercent) AS 'Memory Usage (%)' FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Usage (%)", + "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 latest(host.disk.usedPercent) as 'Storage Usage (%)' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Average", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(loadAverageOneMinute) as '1 minute', average(loadAverageFiveMinute) AS '5 minutes', average(loadAverageFifteenMinute) AS '15 minutes' FROM SystemSample TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Network\n Network section tracks network traffic, network errors, dropped packets, and packets per second\n\n" + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(transmitBytesPerSecond) AS'Transmit', latest(receiveBytesPerSecond)as'Receive' from NetworkSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Errors", + "layout": { + "column": 4, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(transmitErrorsPerSecond) as 'Transmit', latest(receiveErrorsPerSecond)as'Receive' from NetworkSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dropped Packets per second", + "layout": { + "column": 7, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(transmitDroppedPerSecond)as'Transmit', latest(receiveDroppedPerSecond)as'Receive' from NetworkSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Packets per second ", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(transmitPacketsPerSecond)as'Transmit', latest(receivePacketsPerSecond)as'Receive' from NetworkSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Alerts & Logs", + "description": null, + "widgets": [ + { + "title": "Requests per second", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(net.requestsPerSecond)as'Requests per second' from ApacheSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 160 + } + ] + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.cpuPercent) AS 'CPU Usage (%)' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.memoryUsedPercent) AS 'Memory Usage (%)' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processors", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(processorCount) from ApacheSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 128 + }, + { + "alertSeverity": "WARNING", + "value": 64 + } + ] + } + }, + { + "title": "Logs", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * from Log where `hostname` = 'apachehttpd-VirtualBox' " + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "entity_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "server:python3:80" + } + }, + { + "value": { + "string": "server:lighttpd-VM:9880" + } + }, + { + "value": { + "string": "server:10.0.2.15:8080" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entityName) FROM ApacheSample SINCE 1 WEEK AGO" }, - "layout" : { - "column" : 1, - "row" : 1, - "height" : 3, - "width" : 4 - }, - "title" : "Servers Reporting", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT uniqueCount(entity.name) as 'Servers' FROM Metric WHERE metricName ='apache.server.net.requestsPerSecond'" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 5, - "row" : 1, - "height" : 3, - "width" : 4 - }, - "title" : "Total Requests per second", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.net.requestsPerSecond`) * uniqueCount(entity.name) as 'Requests' FROM Metric WHERE `metricName` = 'apache.server.net.requestsPerSecond' TIMESERIES until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.markdown" - }, - "layout" : { - "column" : 9, - "row" : 1, - "height" : 6, - "width" : 4 - }, - "rawConfiguration" : { - "text" : "# Apache\n\nApache is a freely available Web server that is distributed under an open source license. According to a Netcraft (www.netcraft.com) Web server survey 60% of all Web sites on the Internet are using Apache (62% including Apache derivatives), making Apache more widely used than all other Web servers combined.\n\n" - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 1, - "row" : 4, - "height" : 3, - "width" : 4 - }, - "title" : "Requests per second, by server", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.net.requestsPerSecond`) as 'Requests' FROM Metric facet entity.name TIMESERIES until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 5, - "row" : 4, - "height" : 3, - "width" : 4 - }, - "title" : "Bytes Sent per request", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT (average(`apache.server.net.bytesPerSecond`)/average(`apache.server.net.requestsPerSecond`)) as 'Bytes Sent Per Req' FROM Metric TIMESERIES until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.billboard" - }, - "layout" : { - "column" : 1, - "row" : 7, - "height" : 3, - "width" : 12 - }, - "title" : "Worker Status", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.idleWorkers`) * uniqueCount(entity.name) as 'Idle Workers', average(`apache.server.busyWorkers`) * uniqueCount(entity.name) as 'Busy Workers', average(`apache.server.scoreboard.totalWorkers`) * uniqueCount(entity.name) as 'Total Workers', average(`apache.server.scoreboard.readingWorkers`) * uniqueCount(entity.name) as 'Reading Request', average(`apache.server.scoreboard.writingWorkers`) * uniqueCount(entity.name) as 'Writing', average(`apache.server.scoreboard.loggingWorkers`) * uniqueCount(entity.name) as 'Logging', average(`apache.server.scoreboard.finishingWorkers`) * uniqueCount(entity.name) as 'Finishing', average(`apache.server.scoreboard.closingWorkers`) * uniqueCount(entity.name) as 'Closing Connection', average(`apache.server.scoreboard.keepAliveWorkers`) * uniqueCount(entity.name) as 'Keep Alive', average(`apache.server.scoreboard.dnsLookupWorkers`) * uniqueCount(entity.name) as 'DNS Lookup', average(`apache.server.scoreboard.idleCleanupWorkers`) * uniqueCount(entity.name) as 'Idle Cleanup', average(`apache.server.scoreboard.startingWorkers`) * uniqueCount(entity.name) as 'Starting' FROM Metric WHERE `metricName` IN ('apache.server.idleWorkers', 'apache.server.busyWorkers', 'apache.server.scoreboard.totalWorkers', 'apache.server.scoreboard.readingWorkers', 'apache.server.scoreboard.writingWorkers', 'apache.server.scoreboard.loggingWorkers', 'apache.server.scoreboard.finishingWorkers', 'apache.server.scoreboard.closingWorkers', 'apache.server.scoreboard.keepAliveWorkers', 'apache.server.scoreboard.dnsLookupWorkers', 'apache.server.scoreboard.idleCleanupWorkers', 'apache.server.scoreboard.startingWorkers') since 5 minutes ago until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 1, - "row" : 10, - "height" : 3, - "width" : 4 - }, - "title" : "Total vs Idle vs Busy Workers", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.idleWorkers`) * uniqueCount(entity.name) as 'Idle Workers', average(`apache.server.busyWorkers`) * uniqueCount(entity.name) as 'Busy Workers', average(`apache.server.scoreboard.totalWorkers`) * uniqueCount(entity.name) as 'Total Workers' FROM Metric WHERE `metricName` IN ('apache.server.idleWorkers', 'apache.server.busyWorkers', 'apache.server.scoreboard.totalWorkers') TIMESERIES until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 5, - "row" : 10, - "height" : 3, - "width" : 4 - }, - "title" : "Busy Worker Status", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.scoreboard.readingWorkers`) * uniqueCount(entity.name) as 'Reading Request', average(`apache.server.scoreboard.writingWorkers`) * uniqueCount(entity.name) as 'Writing', average(`apache.server.scoreboard.loggingWorkers`) * uniqueCount(entity.name) as 'Logging', average(`apache.server.scoreboard.finishingWorkers`) * uniqueCount(entity.name) as 'Finishing', average(`apache.server.scoreboard.closingWorkers`) * uniqueCount(entity.name) as 'Closing Connection', average(`apache.server.scoreboard.keepAliveWorkers`) * uniqueCount(entity.name) as 'Keep Alive', average(`apache.server.scoreboard.dnsLookupWorkers`) * uniqueCount(entity.name) as 'DNS Lookup', average(`apache.server.scoreboard.idleCleanupWorkers`) * uniqueCount(entity.name) as 'Idle Cleanup', average(`apache.server.scoreboard.startingWorkers`) * uniqueCount(entity.name) as 'Starting' FROM Metric WHERE `metricName` IN ('apache.server.scoreboard.readingWorkers', 'apache.server.scoreboard.writingWorkers', 'apache.server.scoreboard.loggingWorkers', 'apache.server.scoreboard.finishingWorkers', 'apache.server.scoreboard.closingWorkers', 'apache.server.scoreboard.keepAliveWorkers', 'apache.server.scoreboard.dnsLookupWorkers', 'apache.server.scoreboard.idleCleanupWorkers', 'apache.server.scoreboard.startingWorkers') TIMESERIES until 1 minute ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 1, - "row" : 13, - "height" : 3, - "width" : 4 - }, - "title" : "Total Bytes Sent per second", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.net.bytesPerSecond`) * uniqueCount(entity.name) as 'Bytes Sent' FROM Metric WHERE `metricName` = 'apache.server.net.bytesPerSecond' TIMESERIES until 1 minutes ago" - } ] - } - }, { - "visualization" : { - "id" : "viz.line" - }, - "layout" : { - "column" : 5, - "row" : 13, - "height" : 3, - "width" : 4 - }, - "title" : "Bytes Sent per second, by server", - "rawConfiguration" : { - "nrqlQueries" : [ { - "accountId" : 0, - "query" : "SELECT average(`apache.server.net.bytesPerSecond`) as 'Bytes Sent' FROM Metric facet entity.name TIMESERIES until 1 minutes ago" - } ] - } - } ] - } ] + "title": "Apache Server ", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] } \ No newline at end of file diff --git a/dashboards/apache/apache01.png b/dashboards/apache/apache01.png index b753931f49..013781eb69 100644 Binary files a/dashboards/apache/apache01.png and b/dashboards/apache/apache01.png differ diff --git a/dashboards/apache/apache02.png b/dashboards/apache/apache02.png index fe70a0532e..e11a630242 100644 Binary files a/dashboards/apache/apache02.png and b/dashboards/apache/apache02.png differ diff --git a/dashboards/apache/apache03.png b/dashboards/apache/apache03.png index 59af724af1..bce08aa3fb 100644 Binary files a/dashboards/apache/apache03.png and b/dashboards/apache/apache03.png differ diff --git a/dashboards/apache/apache04.png b/dashboards/apache/apache04.png new file mode 100644 index 0000000000..434a4f01d6 Binary files /dev/null and b/dashboards/apache/apache04.png differ diff --git a/dashboards/apache/apache05.png b/dashboards/apache/apache05.png new file mode 100644 index 0000000000..920bf1da27 Binary files /dev/null and b/dashboards/apache/apache05.png differ diff --git a/dashboards/apdex-optimizer/apdex-optimizer.json b/dashboards/apdex-optimizer/apdex-optimizer.json new file mode 100644 index 0000000000..025ba27127 --- /dev/null +++ b/dashboards/apdex-optimizer/apdex-optimizer.json @@ -0,0 +1,322 @@ +{ + "name": "Apdex Optimizer", + "description": null, + "pages": [ + { + "name": "Apdex Optimizer", + "description": null, + "widgets": [ + { + "title": "Transaction Apdex Breakdown", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(count(*), WHERE apdexPerfZone = 'S') as 'Satisfied', filter(count(*), WHERE apdexPerfZone = 'T') as 'Tolerating', filter(count(*), WHERE apdexPerfZone = 'F') as 'Frustrated' FROM Transaction SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apdex Score", + "layout": { + "column": 3, + "row": 1, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT apdex(duration) from Transaction TIMESERIES facet appName since 1 day ago LIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Transaction Apdex Breakdown", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(count(*),WHERE transactionType IS NOT NULL ) as 'All Transactions',filter(count(*), WHERE apdexPerfZone = 'S') as 'Satisfied', filter(count(*), WHERE apdexPerfZone = 'T') as 'Tolerating', filter(count(*), WHERE apdexPerfZone = 'F') as 'Frustrated' FROM Transaction facet appName since 1 day ago limit 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Suggested APM ApdexT", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(duration, 90) as 'Suggested Apdex' FROM Transaction SINCE 1 DAY ago limit 1" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "\n## Addtional Resources\n\n* **Nerdpack** [nr1-apdex-optimizer](https://github.com/newrelic/nr1-apdex-optimizer)\n* **Automated Apdex Thresholds** [automated-apdex-thresholds](https://github.com/newrelic-experimental/automated-apdex-thresholds)\n\n" + } + }, + { + "title": "Choose APM Application? Filterable", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg duration", + "precision": 4, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " \n\nSELECT count(*), apdex(duration) as 'Apdex Score', average(duration) FROM Transaction FACET appName since 1 day ago limit 200" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Choose Transaction?", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg duration", + "precision": 5, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*), apdex(duration) as 'Apdex Score', average(duration) FROM Transaction FACET name since 1 day ago limit 200" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Choose Status Code?", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction FACET http.statusCode LIMIT 50 SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Recommendations \n________" + } + }, + { + "title": "Application Apdex T Value Recommendation", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg duration", + "precision": 3, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*),percentile(duration, 70, 80, 90, 95),apdex(duration) as 'Apdex Score', average(duration) FROM Transaction FACET appName since 1 day ago limit 200" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Apdex Values Das", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg duration", + "precision": 4, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*),percentile(duration, 70, 80, 92, 96),apdex(duration) as 'Apdex Score', average(duration) FROM Transaction FACET name since 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/apdex-optimizer/apdex-optimizer.png b/dashboards/apdex-optimizer/apdex-optimizer.png new file mode 100644 index 0000000000..6b0a3a6f5e Binary files /dev/null and b/dashboards/apdex-optimizer/apdex-optimizer.png differ diff --git a/dashboards/apm-transaction-analysis/apm-transaction-analysis.json b/dashboards/apm-transaction-analysis/apm-transaction-analysis.json new file mode 100644 index 0000000000..3b4d4573b3 --- /dev/null +++ b/dashboards/apm-transaction-analysis/apm-transaction-analysis.json @@ -0,0 +1,230 @@ +{ + "name": "APM Transaction Analysis", + "description": null, + "pages": [ + { + "name": "APM Transaction Analysis", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 9 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction select percentile(duration, {{percentile}}) facet appName, name where appName in ({{app_name}}) and transactionType in ({{transaction_type}}) and transactionSubType in ({{transaction_sub_type}}) limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "More examples", + "description": null, + "widgets": [ + { + "title": "Traffic Volume", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) where appName in ({{app_name}}) FACET name since 1 day ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average duration", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT average(duration) where appName in ({{app_name}}) FACET name since 1 day ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Percentile", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT percentile(duration, {{percentile}}) where appName in ({{app_name}}) FACET name since 1 day ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "app_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(appName) from Transaction" + }, + "title": "appName", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "percentile", + "items": [ + { + "title": null, + "value": "25" + }, + { + "title": null, + "value": "50" + }, + { + "title": null, + "value": "75" + }, + { + "title": null, + "value": "80" + }, + { + "title": null, + "value": "90" + }, + { + "title": null, + "value": "95" + }, + { + "title": null, + "value": "99" + } + ], + "defaultValues": [ + { + "value": { + "string": "50" + } + } + ], + "nrqlQuery": null, + "title": "percentile", + "type": "ENUM", + "isMultiSelection": false, + "replacementStrategy": "NUMBER" + }, + { + "name": "transaction_type", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(transactionType) from Transaction" + }, + "title": "transactionType", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "transaction_sub_type", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "select uniques(transactionSubType) from Transaction" + }, + "title": "transactionSubType", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/apm-transaction-analysis/apm-transaction-analysis.png b/dashboards/apm-transaction-analysis/apm-transaction-analysis.png new file mode 100644 index 0000000000..e7c1979a3c Binary files /dev/null and b/dashboards/apm-transaction-analysis/apm-transaction-analysis.png differ diff --git a/dashboards/apollo-server/apollo-server.json b/dashboards/apollo-server/apollo-server.json new file mode 100644 index 0000000000..b3ec1b9b42 --- /dev/null +++ b/dashboards/apollo-server/apollo-server.json @@ -0,0 +1,191 @@ +{ + "name": "Apollo-Server Dashboard", + "description": null, + "pages": [ + { + "name": "Apollo-Server Dashboard", + "description": null, + "widgets": [ + { + "title": "Top 10 Slowest Operations", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(newrelic.timeslice.value) * 1000 as 'Avg Seconds'\nWHERE appName = {{app_name}} WITH METRIC_FORMAT 'GraphQL/operation/ApolloServer/{operation}' \nFACET operation LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operation Details", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(newrelic.timeslice.value) * 1000 as 'AVG Duration (s)' WHERE appName = {{app_name}} WITH METRIC_FORMAT 'GraphQL/operation/ApolloServer/{type}/{name}/{deepest-path}' FACET type, name, `deepest-path` LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Operation Time", + "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 average(newrelic.timeslice.value) WHERE appName = {{app_name}}\n WITH METRIC_FORMAT 'GraphQL/operation/ApolloServer/{operation}' TIMESERIES FACET operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 Slowest Resolvers", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric\nSELECT average(newrelic.timeslice.value) * 1000 as 'Average Duration (s)' WHERE appName = {{app_name}} WITH METRIC_FORMAT 'GraphQL/resolve/ApolloServer/{field}' FACET field LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Resolver Time", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric\nSELECT average(newrelic.timeslice.value) * 1000 as 'Average Duration (s)' TIMESERIES WHERE appName = {{app_name}} WITH METRIC_FORMAT 'GraphQL/resolve/ApolloServer/{field}' FACET field" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "app_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "Apollo-Server" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "from Transaction select uniques(appName)" + }, + "title": "APM App Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "DEFAULT" + } + ] + } \ No newline at end of file diff --git a/dashboards/apollo-server/apollo-server.png b/dashboards/apollo-server/apollo-server.png new file mode 100644 index 0000000000..30ac1ab220 Binary files /dev/null and b/dashboards/apollo-server/apollo-server.png differ diff --git a/dashboards/aws-chatbot/aws-chatbot.json b/dashboards/aws-chatbot/aws-chatbot.json new file mode 100644 index 0000000000..a051992dab --- /dev/null +++ b/dashboards/aws-chatbot/aws-chatbot.json @@ -0,0 +1,184 @@ +{ + "name": "AWS Chatbot", + "description": null, + "pages": [ + { + "name": "AWS Chatbot", + "description": null, + "widgets": [ + { + "title": "Total Requests", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(aws.chatbot.EventsProcessed) as `Total Requests` TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## AWS Chatbot\nAWS Chatbot is an interactive agent that makes it easier to monitor and interact with your AWS resources in your Microsoft Teams and Slack channels. By using AWS Chatbot, you can receive alerts and run commands to return diagnostic information, invoke AWS Lambda functions, and create AWS Support cases so that your team can collaborate and respond to events faster." + } + }, + { + "title": "Channels Used For Conversations ", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(aws.chatbot.ConfigurationName) as `Channels Used For Conversation` facet aws.chatbot.ConfigurationName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message Delivery Success/ Failure", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(aws.chatbot.MessageDeliverySuccess) as 'Message Delivery Success' WHERE aws.Namespace='AWS/Chatbot' facet aws.chatbot.ConfigurationName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Unsupported Events", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(aws.chatbot.UnsupportedEvents) as 'Unsupported Events' WHERE aws.Namespace='AWS/Chatbot' facet aws.chatbot.ConfigurationName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Events Throttled", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select count(aws.chatbot.EventsThrottled) as 'Events Throttled' WHERE aws.Namespace = 'AWS/Chatbot' facet aws.chatbot.ConfigurationName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/aws-chatbot/aws-chatbot.png b/dashboards/aws-chatbot/aws-chatbot.png new file mode 100644 index 0000000000..7824484b94 Binary files /dev/null and b/dashboards/aws-chatbot/aws-chatbot.png differ diff --git a/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor.json b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor.json new file mode 100644 index 0000000000..a36a8c7b5f --- /dev/null +++ b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor.json @@ -0,0 +1,708 @@ +{ + "name": "Amazon MediaTailor", + "description": null, + "pages": [ + { + "name": "Metrics For Channel Assembly, Manifest, Ad Decision Server Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### AWS Elemental MediaTailor\nAWS Elemental MediaTailor is a channel assembly and personalized ad-insertion service for video providers to create linear over-the-top (OTT) channels using existing video content. The service then lets you monetize those channels—or other live streams—with personalized advertising." + } + }, + { + "title": "Channel output errors", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.4xxErrorCount`) as '4xx Errors', sum(`aws.mediatailor.5xxErrorCount`) as '5xx Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Channel requests", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "\nFROM Metric SELECT sum(`aws.mediatailor.RequestCount`) as 'Channel requests'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Get manifest errors", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.GetManifest.Errors`) as 'Get manifest errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Ad decision server (ADS) errors and time outs", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.AdDecisionServer.Errors`) as 'errors', sum(`aws.mediatailor.AdDecisionServer.Timeouts`) as 'timed-out requests'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Ad Decision Server (ADS) Ads Count", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.AdDecisionServer.Ads`) as 'Total AdDecisionServer Ads'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100000 + } + ] + } + }, + { + "title": "Ad Not Ready Count", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.AdsBilled`) as 'Total Ads billed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Total processing time", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.TotalTime) as 'Total Processing Time' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": " Average latency", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.AdDecisionServer.Latency) as 'Ad Decision Server (ADS) Latency', average(aws.mediatailor.GetManifest.Latency) as 'Get Manifest Latency' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ad decision server (ADS) Ads duration", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.AdDecisionServer.Duration) as 'Ad decision server (ADS) Ads duration' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests", + "layout": { + "column": 4, + "row": 5, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.Requests`) as 'Requests' timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ad decision server (ADS) fillRate", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.AdDecisionServer.FillRate) as 'Ad Decision Server (ADS) FillRate' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Metrics For Channel Avail, Origin, Skipped Reason", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### AWS Elemental MediaTailor\nAWS Elemental MediaTailor is a channel assembly and personalized ad-insertion service for video providers to create linear over-the-top (OTT) channels using existing video content. The service then lets you monetize those channels—or other live streams—with personalized advertising. " + } + }, + { + "title": "Origin error count", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.Origin.Errors`) as 'Origin errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Avail impression", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.mediatailor.Avail.Impression) as 'Avail impression'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Origin manifest file size and time outs", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.Origin.ManifestFileSizeTooLarge`) as 'ManifestFileSizeTooLarge', sum(`aws.mediatailor.Origin.Timeouts`) as 'Timeouts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Avail fill rate", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.Avail.FillRate) as 'Avail Fill Rate' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ads not ready", + "layout": { + "column": 3, + "row": 2, + "width": 4, + "height": 1 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.AdNotReady`) as 'Ads not ready'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Avail observed fill rate", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.Avail.ObservedFillRate) as 'Avail Observed Fill Rate' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ads skipped reason", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(`aws.mediatailor.SkippedReason.DurationExceeded`) as 'Duration Exceeded', sum(`aws.mediatailor.SkippedReason.EarlyCueIn`) as 'Early Cue In', sum(`aws.mediatailor.SkippedReason.InternalError`) as 'Internal Error', sum(`aws.mediatailor.SkippedReason.NewCreative`) as 'New Creative', sum(`aws.mediatailor.SkippedReason.NoVariantMatch`) as 'No Variant Match', sum(`aws.mediatailor.SkippedReason.PersonalizationThresholdExceeded`) as 'Personalization Threshold Exceeded', sum(`aws.mediatailor.SkippedReason.ProfileNotFound`) as 'Profile Not Found', sum(`aws.mediatailor.SkippedReason.TranscodeError`) as 'Transcode Error', sum(`aws.mediatailor.SkippedReason.TranscodeInProgress`) as 'Transcode In Progress' timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average avail durations", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(`aws.mediatailor.Avail.Duration`) as 'Total Ad Avail Duration', average(`ws.mediatailor.Avail.ObservedDuration`) as 'Avail Observed Duration', average(`aws.mediatailor.Avail.ObservedFilledDuration`) as 'Avail Observed Filled Duration', average(`aws.mediatailor.Avail.ObservedSlateDuration`) as 'Avail Observed Slate Duration', average(`aws.mediatailor.Avail.FilledDuration`) as 'Avail Filled Duration' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Origin manifest file size", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.mediatailor.Origin.ManifestFileSizeBytes) as 'Origin Manifest File Size' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Origin latency", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(`aws.mediatailor.Origin.Latency`) as 'Origin Latency' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor01.png b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor01.png new file mode 100644 index 0000000000..165689eb65 Binary files /dev/null and b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor01.png differ diff --git a/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor02.png b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor02.png new file mode 100644 index 0000000000..cf765cdf20 Binary files /dev/null and b/dashboards/aws-elemental-mediatailor/aws-elemental-mediatailor02.png differ diff --git a/dashboards/aws-lex/aws-lex.json b/dashboards/aws-lex/aws-lex.json new file mode 100644 index 0000000000..a858edf102 --- /dev/null +++ b/dashboards/aws-lex/aws-lex.json @@ -0,0 +1,297 @@ +{ + "name": "Amazon Lex", + "description": null, + "pages": [ + { + "name": "Amazon Lex", + "description": null, + "widgets": [ + { + "title": "Number Of Times Channel Used", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#6cff00", + "seriesName": "FACEBOOK" + } + ] + }, + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select count(aws.lex.Source) as `Channels Used For Conversation` facet aws.lex.Source" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number Of Request On Channel", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#03ff17", + "seriesName": "FACEBOOK" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(aws.lex.BotChannelRequestCount) as BotChannelRequestCount facet aws.lex.Source, aws.lex.BotAlias TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Amazon Lex\nAmazon Lex V2 is an AWS service for building conversational interfaces for applications using voice and text. Amazon Lex V2 provides the deep functionality and flexibility of natural language understanding (NLU) and automatic speech recognition (ASR) so you can build highly engaging user experiences with lifelike, conversational interactions, and create new categories of products." + } + }, + { + "title": "Number Of Requests", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#ff00c8", + "seriesName": "Requests" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select count(aws.lex.RuntimeRequestCount) as `Requests` TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select average(aws.lex.RuntimeSucessfulRequestLatency) as RuntimeSuccessfulRequestLatency facet aws.lex.BotAliasId TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Runtime Errors", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#e70814", + "seriesName": "RuntimeUserErrors" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select count(aws.lex.RuntimeUserErrors) as RuntimeUserErrors, count(aws.lex.RuntimeSystemErrors) as RuntimeSystemErrors timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bot Channel Errors", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(aws.lex.BotChannelResponseCardErrors) as BotChannelResponseCardErrors, count(aws.lex.BotChannelSystemErrors) as BotChannelSystemErrors, count(aws.lex.BotChannelAuthErrors) as BotChannelAuthErrors, count(aws.lex.BotChannelConfigurationErrors) as BotChannelConfigurationErrors TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Audio/Video Logs Delivery Success/Failure", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#ca1816", + "seriesName": "Audio Logs Failed To Deliver to S3" + }, + { + "color": "#f718ff", + "seriesName": "Text Logs Failed To Deliver to Cloudwatch" + }, + { + "color": "#02afff", + "seriesName": "Text Logs Successfully Delivered to Cloudwatch" + }, + { + "color": "#4beeff", + "seriesName": "Audio Logs Successful To Deliver to S3" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(`aws.lex.ConversationLogsTextDeliveryFailure`) as `Text Logs Failed To Deliver to Cloudwatch`, count(`aws.lex.ConversationLogsTextDeliverySuccess`)as `Text Logs Successfully Delivered to Cloudwatch`, count(`aws.lex.ConversationLogsAudioDeliveryFailure`)as `Audio Logs Failed To Deliver to S3`, count(`aws.lex.ConversationLogsAudioDeliverySuccess`)as `Audio Logs Successful To Deliver to S3` FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/aws-lex/aws-lex.png b/dashboards/aws-lex/aws-lex.png new file mode 100644 index 0000000000..a993936dbf Binary files /dev/null and b/dashboards/aws-lex/aws-lex.png differ diff --git a/dashboards/aws-polly/aws-polly.json b/dashboards/aws-polly/aws-polly.json new file mode 100644 index 0000000000..6c7566790a --- /dev/null +++ b/dashboards/aws-polly/aws-polly.json @@ -0,0 +1,140 @@ +{ + "name": "AWS Polly", + "description": null, + "pages": [ + { + "name": "AWS Polly", + "description": null, + "widgets": [ + { + "title": "Response Latency", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.polly.ResponseLatency`), max(`aws.polly.ResponseLatency`), min(`aws.polly.ResponseLatency`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Request Characters", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.polly.RequestCharacters`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful Requests", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.polly.2XXCount`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.polly.4XXCount`) as 'User Errors', sum(`aws.polly.5XXCount`) as 'Server Errors' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} diff --git a/dashboards/aws-polly/aws-polly.png b/dashboards/aws-polly/aws-polly.png new file mode 100644 index 0000000000..fe7a44d84b Binary files /dev/null and b/dashboards/aws-polly/aws-polly.png differ diff --git a/dashboards/aws-rekognition/aws-rekognition.json b/dashboards/aws-rekognition/aws-rekognition.json new file mode 100644 index 0000000000..f9643168ed --- /dev/null +++ b/dashboards/aws-rekognition/aws-rekognition.json @@ -0,0 +1,431 @@ +{ + "name": "AWS Rekognition", + "description": null, + "pages": [ + { + "name": "AWS Rekognition", + "description": null, + "widgets": [ + { + "title": "Call Count", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select sum(aws.rekognition.CallCount) as `CallCount`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 9e+27 + } + ] + } + }, + { + "title": "Successful Request Count", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select sum(aws.rekognition.SuccessfulRequestCount) as `SuccessfulRequestCount`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 9e+27 + } + ] + } + }, + { + "title": "Throttled Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select sum(aws.rekognition.ThrottledCount) as `ThrottledCount` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -5000 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## AWS Rekognition\nAmazon Rekognition makes it easy to add image and video analysis to your applications. You just provide an image or video to the Amazon Rekognition API, and the service can identify objects, people, text, scenes, and activities. It can detect any inappropriate content as well. Amazon Rekognition also provides highly accurate facial analysis, face comparison, and face search capabilities. You can detect, analyze, and compare faces for a wide variety of use cases, including user verification, cataloging, people counting, and public safety." + } + }, + { + "title": "Avg Response time (in ms) ", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(aws.rekognition.ResponseTime) as `Avg Response Time(in ms)` from Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Error Count", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.ServerErrorCount) as `Server Error Count` from Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -5000 + } + ] + } + }, + { + "title": "User Error Count", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.UserErrorCount) as `User Error Count` from Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -5000 + } + ] + } + }, + { + "title": "Counts by Operation", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select sum(aws.rekognition.CallCount) as `CallCount`, sum(aws.rekognition.SuccessfulRequestCount) as `SuccessfulRequestCount` facet aws.rekognition.Operation " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avg Response Time By Operation", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(aws.rekognition.ResponseTime) as `Avg Response Time(in ms)` from Metric facet aws.rekognition.Operation as `Operations` timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Throttled Requests By Operation", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.ThrottledCount) as `ThrottledCount by Operation` from Metric facet aws.rekognition.Operation as `Operations` timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DetectedFaceCount By Operation", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.DetectedFaceCount) as `DetectedFaceCount By Operation` from Metric where aws.Namespace='AWS/Rekognition' facet aws.rekognition.Operation since 7 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DetectedLabels By Operation", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.DetectedLabelCount) as `DetectedLabels By Operation` from Metric where aws.Namespace = 'AWS/Rekognition' facet aws.rekognition.Operation since 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors By Operation", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(aws.rekognition.UserErrorCount) as `UserErrorCount`, sum(aws.rekognition.ServerErrorCount) as `ServerErrorCount` from Metric facet aws.rekognition.Operation timeseries since 31 days ago" + } + ], + "nullValues": { + "nullValue": "default" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Custom Labels", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(aws.rekognition.InServiceInferenceUnits) as `InServiceInferenceUnits`, average(aws.rekognition.DesiredInferenceUnits) as `DesiredInferenceUnits`, average(aws.rekognition.MaxInferenceUnits) as `MaxInferenceUnits`, average(aws.rekognition.MinInferenceUnits) as `MinInferenceUnits` from Metric facet aws.rekognition.ProjectName as `Project Name` since 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/aws-rekognition/aws-rekognition.png b/dashboards/aws-rekognition/aws-rekognition.png new file mode 100644 index 0000000000..5767871223 Binary files /dev/null and b/dashboards/aws-rekognition/aws-rekognition.png differ diff --git a/dashboards/aws-textract/aws-textract.json b/dashboards/aws-textract/aws-textract.json new file mode 100644 index 0000000000..b9faa164c6 --- /dev/null +++ b/dashboards/aws-textract/aws-textract.json @@ -0,0 +1,108 @@ +{ + "name": "AWS Textract", + "description": null, + "pages": [ + { + "name": "AWS Textract", + "description": null, + "widgets": [ + { + "title": "Response Time", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.textract.ResponseTime`), max(`aws.textract.ResponseTime`), min(`aws.textract.ResponseTime`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful Requests", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.textract.SuccessfulRequestCount`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.textract.UsererrorCount`) as 'User Errors', sum(`aws.textract.ServerErrorCount`) as 'Server Errors' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} diff --git a/dashboards/aws-textract/aws-textract.png b/dashboards/aws-textract/aws-textract.png new file mode 100644 index 0000000000..04f1f533f7 Binary files /dev/null and b/dashboards/aws-textract/aws-textract.png differ diff --git a/dashboards/aws-transcribe/aws-transcribe.json b/dashboards/aws-transcribe/aws-transcribe.json new file mode 100644 index 0000000000..03509bb66c --- /dev/null +++ b/dashboards/aws-transcribe/aws-transcribe.json @@ -0,0 +1,306 @@ +{ + "name": "AWS Transcribe", + "description": null, + "pages": [ + { + "name": "AWS Transcribe", + "description": null, + "widgets": [ + { + "title": "Successful Requests", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.transcribe.SuccessfulRequestCount) as 'Successful Request'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 9e+27 + } + ] + } + }, + { + "title": "Limit Exceeded Count", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.transcribe.LimitExceededCount) as 'Limit Exceeded Count'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -5000 + } + ] + } + }, + { + "title": "Throttled Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transcribe.ThrottledCount) as 'Throttled Count'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -5000 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## AWS Transcribe\nAmazon Transcribe is an automatic speech recognition service that uses machine learning models to convert audio to text. You can use Amazon Transcribe as a standalone transcription service or to add speech-to-text capabilities to any application. With Amazon Transcribe, you can improve accuracy for your specific use case with language customization, filter content to ensure customer privacy or audience-appropriate language, analyze content in multi-channel audio, partition the speech of individual speakers, and more." + } + }, + { + "title": "Total Requests", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.transcribe.TotalRequestCount) as `Total Requests` facet aws.transcribe.Operation TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Limit Exceeded Count", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transcribe.LimitExceededCount) as 'Limit Exceeded Count' facet aws.transcribe.Operation TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throttled Count", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.transcribe.ThrottledCount) as 'Throttled Count' facet aws.transcribe.Operation TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Sync & Async User Error Count", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric select sum(aws.transcribe.AsyncUserErrorCount) as 'Async User Error', sum(aws.transcribe.SyncUserErrorCount) as 'Sync User Error' facet aws.transcribe.Operation TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sync & Async Server Error Count", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(aws.transcribe.SyncServerErrorCount) as 'Sync Server Error', sum(aws.transcribe.AsyncServerErrorCount) as 'Async Server Error' facet aws.transcribe.Operation TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Audio Duration Time (in seconds)", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(aws.transcribe.AudioDurationTime) as 'Audio Duration Time' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/aws-transcribe/aws-transcribe.png b/dashboards/aws-transcribe/aws-transcribe.png new file mode 100644 index 0000000000..55420984cb Binary files /dev/null and b/dashboards/aws-transcribe/aws-transcribe.png differ diff --git a/dashboards/aws-translate/aws-translate.json b/dashboards/aws-translate/aws-translate.json new file mode 100644 index 0000000000..1802d63924 --- /dev/null +++ b/dashboards/aws-translate/aws-translate.json @@ -0,0 +1,140 @@ +{ + "name": "AWS Translate", + "description": null, + "pages": [ + { + "name": "AWS Translate", + "description": null, + "widgets": [ + { + "title": "Response Time", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(`aws.translate.ResponseTime`), max(`aws.translate.ResponseTime`), min(`aws.translate.ResponseTime`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Characters", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.translate.CharacterCount`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful Requests", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.translate.SuccessfulRequestCount`) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(`aws.translate.UsererrorCount`) as 'User Errors', sum(`aws.translate.ServerErrorCount`) as 'Server Errors' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} diff --git a/dashboards/aws-translate/aws-translate.png b/dashboards/aws-translate/aws-translate.png new file mode 100644 index 0000000000..88400ef0dd Binary files /dev/null and b/dashboards/aws-translate/aws-translate.png differ diff --git a/dashboards/aws-verified-access/aws-verified-access.json b/dashboards/aws-verified-access/aws-verified-access.json new file mode 100644 index 0000000000..5859698fcb --- /dev/null +++ b/dashboards/aws-verified-access/aws-verified-access.json @@ -0,0 +1,254 @@ +{ + "name": "AWS Verified Access", + "description": null, + "pages": [ + { + "name": "Amazon Verified Access", + "description": null, + "widgets": [ + { + "title": "Total recent VA Logs", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE metadata.product.name = 'Verified Access' SINCE 3 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device attempts over time", + "layout": { + "column": 4, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log FACET activity WHERE device.ip IN ({{ip_address}}) AND activity IN ({{activity}}) AND http_request.url.hostname IN ({{hostname}}) AND identity.user.email_addr IN ({{user}}) AND metadata.product.name = 'Verified Access' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top accessed hostnames", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log FACET http_request.url.hostname, activity WHERE device.ip IN ({{ip_address}}) AND activity IN ({{activity}}) AND identity.user.email_addr IN ({{user}}) AND http_request.url.hostname IN ({{hostname}}) AND metadata.product.name = 'Verified Access' SINCE 3 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Access Denied IP's", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log WHERE device.ip IN ({{ip_address}}) AND http_request.url.hostname IN ({{hostname}}) AND identity.user.email_addr IN ({{user}}) AND metadata.product.name = 'Verified Access' AND activity = 'Access Denied' FACET device.ip, identity.user.email_addr SINCE 3 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Verified Access activity from devices", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log FACET activity WHERE device.ip IN ({{ip_address}}) AND activity IN ({{activity}}) AND http_request.url.hostname IN ({{hostname}}) AND identity.user.email_addr IN ({{user}}) AND metadata.product.name = 'Verified Access' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Accounts with login attempts from multiple devices", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT uniques(tuple(identity.user.email_addr, device.ip)) as 'email , ip address', latest(activity) as 'latest activity' WHERE identity.user.email_addr IN ({{user}}) AND identity.user.email_addr IN (FROM (FROM Log SELECT uniqueCount(device.ip) AS count FACET identity.user.email_addr ) SELECT identity.user.email_addr WHERE count > 1) SINCE 3 weeks ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Real time logs", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT * WHERE device.ip IN ({{ip_address}}) AND activity IN ({{activity}}) AND http_request.url.hostname IN ({{hostname}}) AND identity.user.email_addr IN ({{user}}) AND metadata.product.name = 'Verified Access' SINCE 30 minutes ago LIMIT 50" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "hostname", + "items": null, + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(http_request.url.hostname) FROM Log WHERE http_request.url.hostname IS NOT NULL AND metadata.product.name = 'Verified Access' SINCE 1 weeks ago" + }, + "title": "Hostname", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "ip_address", + "items": null, + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(device.ip) FROM Log WHERE metadata.product.name = 'Verified Access' SINCE 1 month ago" + }, + "title": "Device IP Address", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "activity", + "items": null, + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(activity) FROM Log WHERE metadata.product.name = 'Verified Access' SINCE 1 month ago" + }, + "title": "Activity", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "user", + "items": null, + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(identity.user.email_addr) FROM Log WHERE metadata.product.name = 'Verified Access' SINCE 1 month ago" + }, + "title": "User", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/aws-verified-access/aws-verified-access.png b/dashboards/aws-verified-access/aws-verified-access.png new file mode 100644 index 0000000000..7baafdb9e5 Binary files /dev/null and b/dashboards/aws-verified-access/aws-verified-access.png differ diff --git a/dashboards/azure-anomaly-detector/azure-anomaly-detector.json b/dashboards/azure-anomaly-detector/azure-anomaly-detector.json new file mode 100644 index 0000000000..001685090a --- /dev/null +++ b/dashboards/azure-anomaly-detector/azure-anomaly-detector.json @@ -0,0 +1,293 @@ +{ + "name": "Azure Anomaly Detector", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Anomaly Detector", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Anomaly Detector\nAnomaly Detector is an AI service with a set of APIs, which enables you to monitor and detect anomalies in your time series data with little machine learning (ML) knowledge, either batch validation or real-time inference." + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.DataIn) AS 'Total Data In', SUM(azure.cognitiveservices.accounts.DataOut) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 5, + "row": 3, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.TotalCalls) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful calls", + "layout": { + "column": 1, + "row": 6, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Success rate", + "layout": { + "column": 8, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cognitiveservices.accounts.SuccessRate)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency by region", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ClientErrors) AS 'Total Client Errors', SUM(azure.cognitiveservices.accounts.ServerErrors) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Anomaly Detector%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-anomaly-detector/azure-anomaly-detector.png b/dashboards/azure-anomaly-detector/azure-anomaly-detector.png new file mode 100644 index 0000000000..0e3737fb6d Binary files /dev/null and b/dashboards/azure-anomaly-detector/azure-anomaly-detector.png differ diff --git a/dashboards/azure-app-configuration/azure-app-configuration.json b/dashboards/azure-app-configuration/azure-app-configuration.json new file mode 100644 index 0000000000..e2bb064ae5 --- /dev/null +++ b/dashboards/azure-app-configuration/azure-app-configuration.json @@ -0,0 +1,156 @@ +{ + "name": "Azure App Configuration", + "description": null, + + "pages": [ + { + "name": "Azure App Configuration", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.appconfiguration.configurationstores.HttpIncomingRequestCount) AS 'Total HTTP Incoming Requests', average(azure.appconfiguration.configurationstores.HttpIncomingRequestDuration) AS 'Avg HTTP Incoming Request Duration', sum(azure.appconfiguration.configurationstores.ThrottledHttpRequestCount) AS 'Total Throttled HTTP Request Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appconfiguration/configurationstores' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure App Configuration\nAzure App Configuration provides a service to centrally manage application settings and feature flags. Modern programs, especially programs running in a cloud, generally have many components that are distributed in nature. Spreading configuration settings across these components can lead to hard-to-troubleshoot errors during an application deployment. Use App Configuration to store all the settings for your application and secure their accesses in one place." + } + }, + { + "title": "HTTP incoming request count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.appconfiguration.configurationstores.HttpIncomingRequestCount) AS 'Total HTTP Incoming Request Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appconfiguration/configurationstores' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP incoming request duration", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.appconfiguration.configurationstores.HttpIncomingRequestDuration) AS 'Avg HTTP Incoming Request Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appconfiguration/configurationstores' TIMESERIES Auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throttled HTTP request count", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.appconfiguration.configurationstores.ThrottledHttpRequestCount) AS 'Total Throttled HTTP Request Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appconfiguration/configurationstores' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-app-configuration/azure-app-configuration.png b/dashboards/azure-app-configuration/azure-app-configuration.png new file mode 100644 index 0000000000..686fc9e320 Binary files /dev/null and b/dashboards/azure-app-configuration/azure-app-configuration.png differ diff --git a/dashboards/azure-app-service-environment/azure-app-service-environment.json b/dashboards/azure-app-service-environment/azure-app-service-environment.json new file mode 100644 index 0000000000..9c0577db4b --- /dev/null +++ b/dashboards/azure-app-service-environment/azure-app-service-environment.json @@ -0,0 +1,189 @@ +{ + "name": "Azure App Service Environment", + "description": null, + + "pages": [ + { + "name": "Azure App Service Environment", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.hostingenvironments.HttpResponseTime) AS 'Average HTTP Response Time', AVERAGE(azure.web.hostingenvironments.HttpQueueLength) AS 'Average HTTP Queue Length', SUM(azure.web.hostingenvironments.Requests) as 'Total Requests', AVERAGE(azure.web.hostingenvironments.DiskQueueLength) AS 'Average Disk Queue Length' where collector.name='azure-monitor' and azure.resourceType='microsoft.web.hostingenvironments'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure App Service Environments\nApp Service Environment (ASE) is a deployment of Azure App Service into a subnet in a customer's Azure Virtual Network instance." + } + }, + { + "title": "Requests", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.hostingenvironments.Requests) as 'Total Requests' where collector.name='azure-monitor' and azure.resourceType='microsoft.web.hostingenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU usage", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.hostingenvironments.CpuPercentage) AS 'Average CPU Usage' where collector.name='azure-monitor' and azure.resourceType='microsoft.web.hostingenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP response time", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.hostingenvironments.HttpResponseTime) AS 'Average HTTP Response Time' where collector.name='azure-monitor' and azure.resourceType='microsoft.web.hostingenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory usage", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.hostingenvironments.MemoryPercentage) AS 'Average Memory Usage' where collector.name='azure-monitor' and azure.resourceType='microsoft.web.hostingenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-app-service-plan/azure-app-service-plan.json b/dashboards/azure-app-service-plan/azure-app-service-plan.json new file mode 100644 index 0000000000..0fef3b1002 --- /dev/null +++ b/dashboards/azure-app-service-plan/azure-app-service-plan.json @@ -0,0 +1,453 @@ +{ + "name": "Azure App Service Plan", + "description": null, + + "pages": [ + { + "name": "Azure App Service Plan", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Average CPU Usage", + "type": null + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.CpuPercentage`) AS 'Average CPU Percentage', AVERAGE(`azure.web.serverfarms.MemoryPercentage`) AS 'Average Memory Percentage'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Queue details", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Average Disk Queue Length", + "precision": 2, + "type": "decimal" + }, + { + "name": "Average HTTP Queue Length", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.HttpQueueLength`) AS 'Average HTTP Queue Length', AVERAGE(`azure.web.serverfarms.DiskQueueLength`) AS 'Average Disk Queue Length'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure App Service Plan\n\nApp Service Plan represents the collection of physical resources for the App Service. An App Service Plan can have multiple web apps. In other words, we can have multiple web apps in an app service plan." + } + }, + { + "title": "Bytes sent", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.web.serverfarms.BytesSent`) AS 'Total Bytes Sent' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Bytes received", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.web.serverfarms.BytesReceived`) AS 'Total Bytes Received' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Disk queue length", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.DiskQueueLength`) AS 'Average Disk Queue Length' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP queue length", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.HttpQueueLength`) AS 'Average HTTP Queue Length' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Number of sockets in TIME_WAIT state", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.SocketOutboundTimeWait`) AS 'Average Number of Sockets in TIME_WAIT State' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU usage", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.CpuPercentage`)/100 AS 'Average CPU Usage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Memory usage", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.web.serverfarms.MemoryPercentage`)/100 AS 'Average Memory Usage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Socket details", + "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 AVERAGE(`azure.web.serverfarms.SocketInboundAll`) AS 'Average Socket Count for Inbound Requests', AVERAGE(`azure.web.serverfarms.SocketLoopback`) AS 'Average Socket Count for Loopback Connections', AVERAGE(`azure.web.serverfarms.SocketOutboundAll`) AS 'Average Socket Count of Outbound Requests', AVERAGE(`azure.web.serverfarms.SocketOutboundEstablished`) AS 'Average Established Socket Count for Outbound Requests' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TCP wait state details", + "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 AVERAGE(`azure.web.serverfarms.TcpCloseWait`) AS 'Average TCP Close Wait', AVERAGE(`azure.web.serverfarms.TcpFinWait1`) AS 'Average TCP Fin Wait 1', AVERAGE(`azure.web.serverfarms.TcpFinWait2`) AS 'Average TCP Fin Wait 2', AVERAGE(`azure.web.serverfarms.TcpTimeWait`) AS 'Average TCP Time Wait' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TCP state details", + "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 AVERAGE(`azure.web.serverfarms.TcpEstablished`) AS 'Average TCP Established', AVERAGE(`azure.web.serverfarms.TcpClosing`) AS 'Average TCP Closing', AVERAGE(`azure.web.serverfarms.TcpLastAck`) AS 'Average TCP Last Ack', AVERAGE(`azure.web.serverfarms.TcpSynReceived`) AS 'Average TCP Syn Received', AVERAGE(`azure.web.serverfarms.TcpSynSent`) AS 'Average TCP Syn Sent' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-app-service-plan/azure-app-service-plan.png b/dashboards/azure-app-service-plan/azure-app-service-plan.png new file mode 100644 index 0000000000..73bcf2d570 Binary files /dev/null and b/dashboards/azure-app-service-plan/azure-app-service-plan.png differ diff --git a/dashboards/azure-application-insights/azure-application-insights.json b/dashboards/azure-application-insights/azure-application-insights.json new file mode 100644 index 0000000000..59df25b4cf --- /dev/null +++ b/dashboards/azure-application-insights/azure-application-insights.json @@ -0,0 +1,318 @@ +{ + "name": "Azure Application Insights", + "description": null, + + "pages": [ + { + "name": "Azure Application Insights", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.insights.components.availabilityResults.availabilityPercentage`) AS 'Average Availability Percentage', AVERAGE(`azure.insights.components.performanceCounters.processCpuPercentage`) AS 'Average Process CPU', AVERAGE(`azure.insights.components.requests.rate`) AS 'Average Server Request Rate', AVERAGE(`azure.insights.components.requests.duration`) AS 'Average Server Response Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Application Insights\nApplication Insights is an extension of Azure Monitor and provides application performance monitoring (APM) features. APM tools are useful to monitor applications from development, through test and into production." + } + }, + { + "title": "Server requests", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.insights.components.requests.count`) AS 'Total Server Requests', SUM(`azure.insights.components.requests.failed`) AS 'Total Failed Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Server response time", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.insights.components.requests.duration) AS 'Average Server Response Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' FACET `azure.insights.components.request/performancebucket`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response time details", + "layout": { + "column": 1, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.insights.components.requests.duration) AS 'Average Server Response Time', AVERAGE(azure.insights.components.pageViews.duration) AS 'Average Page View Load Time', AVERAGE(azure.insights.components.dependencies.duration) AS 'Average Dependency Duration' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests in queue", + "layout": { + "column": 6, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.insights.components.performanceCounters.requestsInQueue`) AS 'Average HTTP Requests in Application Queue' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Dependency calls", + "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 SUM(`azure.insights.components.dependencies.count`) AS 'Total Dependency Calls', SUM(`azure.insights.components.dependencies.failed`) AS 'Total Dependency Call Failures' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trace count", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.insights.components.traces.count`) AS 'Total Traces' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' FACET `azure.insights.components.trace/severityLevel` TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Browser timings", + "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 AVERAGE(`azure.insights.components.browserTimings.totalDuration`) AS 'Average Browser Page Load Time', AVERAGE(`azure.insights.components.browserTimings.receiveDuration`) AS 'Average Receiving Response Time', AVERAGE(`azure.insights.components.browserTimings.sendDuration`) AS 'Average Send Request Time' , AVERAGE(`azure.insights.components.browserTimings.processingDuration`) AS 'Average Client Processing Time', AVERAGE(`azure.insights.components.browserTimings.networkDuration`) AS 'Average Page Load Network Connect Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Exceptions", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.insights.components.exceptions.browser`) AS 'Total Browser Exceptions', SUM(`azure.insights.components.exceptions.server`) AS 'Total Server Exceptions' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.insights/components' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-application-insights/azure-application-insights.png b/dashboards/azure-application-insights/azure-application-insights.png new file mode 100644 index 0000000000..1f96e8d171 Binary files /dev/null and b/dashboards/azure-application-insights/azure-application-insights.png differ diff --git a/dashboards/azure-automation-account/azure-automation-account.json b/dashboards/azure-automation-account/azure-automation-account.json new file mode 100644 index 0000000000..d7f25d7a04 --- /dev/null +++ b/dashboards/azure-automation-account/azure-automation-account.json @@ -0,0 +1,189 @@ +{ + "name": "Azure Automation Account", + "description": null, + + "pages": [ + { + "name": "Azure Automation Account", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.automation.automationaccounts.TotalJob`) AS 'Total Jobs', SUM(`azure.automation.automationaccounts.HybridWorkerPing`) AS 'Total Hybrid Worker Pings', SUM(`azure.automation.automationaccounts.TotalUpdateDeploymentMachineRuns`) AS 'Total Update Deployment Machine Runs', SUM(`azure.automation.automationaccounts.TotalUpdateDeploymentRuns`) AS 'Total Update Deployment Runs' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.automation/automationaccounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Automation Account\nAzure Automation delivers a cloud-based automation, operating system updates, and configuration service that supports consistent management across your Azure and non-Azure environments." + } + }, + { + "title": "Total Jobs", + "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 SUM(`azure.automation.automationaccounts.TotalJob`) AS 'Total Jobs' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.automation/automationaccounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Update Deployment Runs", + "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 SUM(`azure.automation.automationaccounts.TotalUpdateDeploymentRuns`) AS 'Total Update Deployment Runs' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.automation/automationaccounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Update Deployment Machine Runs", + "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 SUM(`azure.automation.automationaccounts.TotalUpdateDeploymentMachineRuns`) AS 'Total Update Deployment Machine Runs' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.automation/automationaccounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Hybrid Worker Ping", + "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 SUM(`azure.automation.automationaccounts.HybridWorkerPing`) AS 'Total Hybrid Worker Pings' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.automation/automationaccounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-automation-account/azure-automation-account.png b/dashboards/azure-automation-account/azure-automation-account.png new file mode 100644 index 0000000000..a3845c6f8c Binary files /dev/null and b/dashboards/azure-automation-account/azure-automation-account.png differ diff --git a/dashboards/azure-batch/azure-batch.json b/dashboards/azure-batch/azure-batch.json new file mode 100644 index 0000000000..b41580806f --- /dev/null +++ b/dashboards/azure-batch/azure-batch.json @@ -0,0 +1,174 @@ +{ + "name": "Azure Batch", + "description": null, + + "pages": [ + { + "name": "Azure Batch", + "description": null, + "widgets": [ + { + "title": "vCPU minutes", + "layout": { + "column": 1, + "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 sum(azure.batch.batchaccounts.CoreCount) AS 'Total Core Count', sum(azure.batch.batchaccounts.LowPriorityCoreCount) AS 'Total Low Priority Core Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.batch/batchaccounts' TIMESERIES AUTO " + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Node states", + "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 sum(azure.batch.batchaccounts.StartingNodeCount) AS 'Total Starting Node Count', sum(azure.batch.batchaccounts.RunningNodeCount) AS 'Total Running Node Count', sum(azure.batch.batchaccounts.IdleNodeCount) AS 'Total Idle Node Count', sum(azure.batch.batchaccounts.RebootingNodeCount) AS 'Total Rebooting Node Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.batch/batchaccounts' TIMESERIES AUTO " + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Task states", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.batch.batchaccounts.TaskStartEvent) AS 'Total Task Start Event', sum(azure.batch.batchaccounts.TaskCompleteEvent) AS 'Total Task Complete Event', sum(azure.batch.batchaccounts.StartTaskFailedNodeCount) AS 'Total Start Task Failed Node Count' , sum(azure.batch.batchaccounts.WaitingForStartTaskNodeCount) AS 'Total Waiting For Start Task Node Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.batch/batchaccounts' TIMESERIES AUTO " + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Job states", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.batch.batchaccounts.JobStartEvent) AS 'Total Job Start Event', sum(azure.batch.batchaccounts.JobDeleteStartEvent) AS 'Total Job Delete Start Event', sum(azure.batch.batchaccounts.JobDeleteCompleteEvent) AS 'Total Job Delete Complete Event', sum(azure.batch.batchaccounts.JobTerminateStartEvent) AS 'Total Job Terminate Start Event', sum(azure.batch.batchaccounts.JobTerminateCompleteEvent) AS 'Total Job Terminate Complete Event' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.batch/batchaccounts' TIMESERIES AUTO " + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Batch\nAzure Batch runs large-scale applications efficiently in the cloud. Schedule compute-intensive tasks and dynamically adjust resources for your solution without managing infrastructure." + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/azure-batch/azure-batch.png b/dashboards/azure-batch/azure-batch.png new file mode 100644 index 0000000000..c11ebfea4f Binary files /dev/null and b/dashboards/azure-batch/azure-batch.png differ diff --git a/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.json b/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.json new file mode 100644 index 0000000000..6d3a91ae3f --- /dev/null +++ b/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.json @@ -0,0 +1,277 @@ +{ + "name": "Azure Bing Autosuggest", + "description": null, + + "pages": [ + { + "name": "Azure Bing Autosuggest", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average Latency(ms)' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Bing Autosuggest\nThe Bing Autosuggest enables developers to incorporate intelligent search suggestions into their applications. It leverages the power of Bing's search engine to provide real-time query suggestions as users type in a search box or interact with an application." + } + }, + { + "title": "Call details", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.bing.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(azure.bing.accounts.TotalErrors) AS 'Total Error Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Successful calls", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.bing.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Total data", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.DataOut) AS 'Total Data Out', SUM(azure.bing.accounts.DataIn) AS 'Total Data In' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.bing.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Autosuggest%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.png b/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.png new file mode 100644 index 0000000000..e30f3e8bd7 Binary files /dev/null and b/dashboards/azure-bing-autosuggest/azure-bing-autosuggest.png differ diff --git a/dashboards/azure-bing-custom-search/azure-bing-custom-search.json b/dashboards/azure-bing-custom-search/azure-bing-custom-search.json new file mode 100644 index 0000000000..059561fcbf --- /dev/null +++ b/dashboards/azure-bing-custom-search/azure-bing-custom-search.json @@ -0,0 +1,276 @@ +{ + "name": "Azure Bing Custom Search", + "description": null, + + "pages": [ + { + "name": "Azure Bing Custom Search", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average Latency(ms)' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Bing Custom Search\nBing Custom Search lets you create a tailored, ad-free search experiences for topics that your users care about. You specify the domains and webpages that Bing searches. You can also pin, boost, and demote specific content to create a custom view of the web that helps your users quickly find relevant content." + } + }, + { + "title": "Successful calls", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.bing.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(azure.bing.accounts.TotalErrors) AS 'Total Error Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.bing.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.bing.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Total data", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.DataOut) AS 'Total Data Out', SUM(azure.bing.accounts.DataIn) AS 'Total Data In' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Custom%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-bing-custom-search/azure-bing-custom-search.png b/dashboards/azure-bing-custom-search/azure-bing-custom-search.png new file mode 100644 index 0000000000..74dfad5841 Binary files /dev/null and b/dashboards/azure-bing-custom-search/azure-bing-custom-search.png differ diff --git a/dashboards/azure-bing-search/azure-bing-search.json b/dashboards/azure-bing-search/azure-bing-search.json new file mode 100644 index 0000000000..f599de3725 --- /dev/null +++ b/dashboards/azure-bing-search/azure-bing-search.json @@ -0,0 +1,339 @@ +{ + "name": "Azure Bing Search", + "description": null, + + "pages": [ + { + "name": "Azure Bing Search", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Bing Search\nAzure Bing Search let you build web-connected apps and services that find webpages, images, news, locations and more without advertisements. Azure Bing services provide developers with an easy-to-use platform for integrating search and AI capabilities into their applications." + } + }, + { + "title": "Total call details", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.bing.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Successful calls by api name", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.SuccessfulCalls`) AS 'Total Successful Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' FACET azure.bing.accounts.ApiName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total calls by api name", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' FACET azure.bing.accounts.ApiName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data in", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.DataIn`) AS 'Total Data In' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' FACET azure.bing.accounts.ApiName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data out", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' FACET azure.bing.accounts.ApiName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 1, + "row": 12, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average latency(ms)' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' FACET azure.bing.accounts.ApiName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Errors ", + "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": "FROM Metric SELECT SUM(`azure.bing.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.bing.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-bing-search/azure-bing-search.png b/dashboards/azure-bing-search/azure-bing-search.png new file mode 100644 index 0000000000..d1542a116d Binary files /dev/null and b/dashboards/azure-bing-search/azure-bing-search.png differ diff --git a/dashboards/azure-bing-spell-check/azure-bing-spell-check.json b/dashboards/azure-bing-spell-check/azure-bing-spell-check.json new file mode 100644 index 0000000000..49dab4604f --- /dev/null +++ b/dashboards/azure-bing-spell-check/azure-bing-spell-check.json @@ -0,0 +1,273 @@ +{ + "name": "Azure Bing Spell Check", + "description": null, + + "pages": [ + { + "name": "Azure Bing Spell Check", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average Latency(ms)' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Bing Spell Check\nThe Bing Spell Check API enables you to perform contextual grammar and spell checking on text. While most spell-checkers rely on dictionary-based rule sets, the Bing spell-checker leverages machine learning and statistical machine translation to provide accurate and contextual corrections." + } + }, + { + "title": "Call details", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.bing.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(azure.bing.accounts.TotalErrors) AS 'Total Error Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Successful calls", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.DataOut) AS 'Total Data Out', SUM(azure.bing.accounts.DataIn) AS 'Total Data In' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.bing.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.bing.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Spell%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-bing-spell-check/azure-bing-spell-check.png b/dashboards/azure-bing-spell-check/azure-bing-spell-check.png new file mode 100644 index 0000000000..9736241dba Binary files /dev/null and b/dashboards/azure-bing-spell-check/azure-bing-spell-check.png differ diff --git a/dashboards/azure-bing-web-search/azure-bing-web-search.json b/dashboards/azure-bing-web-search/azure-bing-web-search.json new file mode 100644 index 0000000000..03cff07c88 --- /dev/null +++ b/dashboards/azure-bing-web-search/azure-bing-web-search.json @@ -0,0 +1,276 @@ +{ + "name": "Azure Bing Web Search", + "description": null, + + "pages": [ + { + "name": "Azure Bing Web Search", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.bing.accounts.Latency`) AS 'Average Latency(ms)' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Bing Web Search\nBing Web Search API enables safe, ad-free, location-aware search results, surfacing relevant information from billions of web documents. Help your users find what they're looking for from the world-wide-web by harnessing Bing's ability to comb billions of webpages, images, videos, and news with a single API call." + } + }, + { + "title": "Successful calls", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.bing.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(azure.bing.accounts.TotalErrors) AS 'Total Error Calls' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.bing.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.bing.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.bing.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE'%Web Search%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Total data", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.bing.accounts.DataOut) AS 'Total Data Out', SUM(azure.bing.accounts.DataIn) AS 'Total Data In' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.bing/accounts' AND azure.bing.accounts.ApiName LIKE '%Web Search%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-bing-web-search/azure-bing-web-search.png b/dashboards/azure-bing-web-search/azure-bing-web-search.png new file mode 100644 index 0000000000..8153e59f8e Binary files /dev/null and b/dashboards/azure-bing-web-search/azure-bing-web-search.png differ diff --git a/dashboards/azure-cdn-profile/azure-cdn-profile.json b/dashboards/azure-cdn-profile/azure-cdn-profile.json new file mode 100644 index 0000000000..53accb823b --- /dev/null +++ b/dashboards/azure-cdn-profile/azure-cdn-profile.json @@ -0,0 +1,195 @@ +{ + "name": "Azure CDN profile", + "description": null, + + "pages": [ + { + "name": "Azure CDN profile", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cdn.profiles.TotalLatency) AS 'Average Total Latency', SUM(azure.cdn.profiles.RequestCount) AS 'Total Request Count', AVERAGE(azure.cdn.profiles.ResponseSize) AS 'Average Response Size' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cdn/profiles'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure CDN profile\nAzure Content Delivery Network is a globally distributed network of servers that can efficiently deliver web content to consumers." + } + }, + { + "title": "Latency by endpoint", + "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 AVERAGE(azure.cdn.profiles.TotalLatency) AS 'Average Total Latency(ms)' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cdn/profiles' FACET azure.cdn.profiles.Endpoint TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency by HTTP status group", + "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 AVERAGE(azure.cdn.profiles.TotalLatency) AS 'Average Total Latency(ms)' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cdn/profiles' FACET azure.cdn.profiles.HttpStatusGroup TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Request count", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cdn.profiles.RequestCount) AS 'Total Request Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cdn/profiles' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Response size", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cdn.profiles.ResponseSize) AS 'Total Response Size' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cdn/profiles' FACET azure.cdn.profiles.Endpoint TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-cdn-profile/azure-cdn-profile.png b/dashboards/azure-cdn-profile/azure-cdn-profile.png new file mode 100644 index 0000000000..731c6f8cec Binary files /dev/null and b/dashboards/azure-cdn-profile/azure-cdn-profile.png differ diff --git a/dashboards/azure-cloud-services/azure-cloud-services.json b/dashboards/azure-cloud-services/azure-cloud-services.json new file mode 100644 index 0000000000..13efe53dc7 --- /dev/null +++ b/dashboards/azure-cloud-services/azure-cloud-services.json @@ -0,0 +1,225 @@ +{ + "name": "Azure Cloud Services", + "description": null, + + "pages": [ + { + "name": "Azure Cloud Services", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.compute.cloudservices.AvailableMemoryBytes) AS 'Average Available Memory Bytes', Average(azure.compute.cloudservices.DiskReadOperations.Sec) AS 'Average Disk Read Operations', AVERAGE(azure.compute.cloudservices.DiskReadOperations.Sec) AS 'Average Disk Write Operations', AVERAGE(azure.compute.cloudservices.PercentageCPU) AS 'Average CPU Percentage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Cloud Services\nAzure Cloud Services is an example of a platform as a service (PaaS). Like Azure App Service, this technology is designed to support applications that are scalable, reliable, and inexpensive to operate." + } + }, + { + "title": "Percentage CPU", + "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 AVERAGE(azure.compute.cloudservices.PercentageCPU)/100 AS 'Average Percentage CPU' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network in total", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.compute.cloudservices.NetworkInTotal) AS 'Total Network In Bytes', SUM(azure.compute.cloudservices.NetworkOutTotal) AS 'Total Network Out Bytes' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Available memory bytes", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.compute.cloudservices.AvailableMemoryBytes) AS 'Average Available Memory Bytes' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk read and write bytes", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.compute.cloudservices.DiskReadBytes`) AS 'Total Disk Read Bytes', SUM(`azure.compute.cloudservices.DiskWriteBytes`) AS 'Total Disk Write Bytes' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk operations per sec", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.compute.cloudservices.DiskReadOperations.Sec) AS 'Average Disk Read Operations', AVERAGE(azure.compute.cloudservices.DiskWriteOperations.Sec) AS 'Average Disk Write Operations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/cloudservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-cloud-services/azure-cloud-services.png b/dashboards/azure-cloud-services/azure-cloud-services.png new file mode 100644 index 0000000000..59056ff067 Binary files /dev/null and b/dashboards/azure-cloud-services/azure-cloud-services.png differ diff --git a/dashboards/azure-cognitive-search/azure-cognitive-search.json b/dashboards/azure-cognitive-search/azure-cognitive-search.json new file mode 100644 index 0000000000..4d96f57bf7 --- /dev/null +++ b/dashboards/azure-cognitive-search/azure-cognitive-search.json @@ -0,0 +1,235 @@ +{ + "name": "Azure Cognitive Search", + "description": null, + + "pages": [ + { + "name": "Azure Cognitive Search", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.search.searchservices.SearchLatency) AS 'Average Search Latency', AVERAGE(azure.search.searchservices.SearchQueriesPerSecond) AS 'Average Search Queries Per Second', SUM(azure.search.searchservices.DocumentsProcessedCount) AS 'Total Number of Documents Processed', SUM(azure.search.searchservices.SkillExecutionCount) AS 'Total Number of Skill Executions' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Cognitive Search\nAzure Cognitive Search (formerly known as \"Azure Search\") is a cloud search service that gives developers infrastructure, APIs and tools for building a rich search experience over private, heterogeneous content in web, mobile and enterprise applications." + } + }, + { + "title": "Search latency", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.search.searchservices.SearchLatency) AS 'Average Search Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Search queries per second", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.search.searchservices.SearchQueriesPerSecond) AS 'Average Search Queries Per Second' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throttled search queries percentage", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.search.searchservices.ThrottledSearchQueriesPercentage) AS 'Average Throttled Search Queries Percentage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Number of documents processed", + "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 SUM(azure.search.searchservices.DocumentsProcessedCount) AS 'Total Number of Documents Processed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices' FACET azure.search.searchservices.DataSourceName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Number of skill executions", + "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 SUM(azure.search.searchservices.SkillExecutionCount) AS 'Total Number of Skill Executions' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.search/searchservices' FACET azure.search.searchservices.SkillType TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-cognitive-search/azure-cognitive-search.png b/dashboards/azure-cognitive-search/azure-cognitive-search.png new file mode 100644 index 0000000000..fcea5aa672 Binary files /dev/null and b/dashboards/azure-cognitive-search/azure-cognitive-search.png differ diff --git a/dashboards/azure-cognitive-service/azure-cognitive-service.json b/dashboards/azure-cognitive-service/azure-cognitive-service.json new file mode 100644 index 0000000000..489a2525bb --- /dev/null +++ b/dashboards/azure-cognitive-service/azure-cognitive-service.json @@ -0,0 +1,378 @@ +{ + "name": "Azure Cognitive Services", + "description": null, + + "pages": [ + { + "name": "Azure Cognitive Services", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 9e+27 + } + ] + } + }, + { + "title": "Latency", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -5000 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Cognitive Services\nAzure Cognitive Services are cloud-based artificial intelligence (AI) services that help developers build cognitive intelligence into applications without having direct AI or data science skills or knowledge. They are available through REST APIs and client library SDKs in popular development languages." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total calls details", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ClientErrors) AS 'Total client errors', SUM(azure.cognitiveservices.accounts.ServerErrors) AS 'Total server errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total calls by api name", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.apiname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency", + "layout": { + "column": 1, + "row": 9, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Rate limit", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.Ratelimit) AS 'Total Rate limit' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.ratelimitkey" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data in", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.DataIn) AS 'Total data in' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data out", + "layout": { + "column": 7, + "row": 12, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.DataOut) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-cognitive-service/azure-cognitive-service.png b/dashboards/azure-cognitive-service/azure-cognitive-service.png new file mode 100644 index 0000000000..753802418b Binary files /dev/null and b/dashboards/azure-cognitive-service/azure-cognitive-service.png differ diff --git a/dashboards/azure-computer-vision/azure-computer-vision.json b/dashboards/azure-computer-vision/azure-computer-vision.json new file mode 100644 index 0000000000..ba4cf4fa4b --- /dev/null +++ b/dashboards/azure-computer-vision/azure-computer-vision.json @@ -0,0 +1,419 @@ +{ + "name": "Azure Computer Vision", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Computer Vision", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Computer Vision\nAn AI service that analyzes content in images and video. Boost content discoverability, automate text extraction, analyze video in real time, and create products that more people can use by embedding cloud vision capabilities in your apps with Computer Vision, part of Azure Cognitive Services. Use visual data processing to label content with objects and concepts, extract text, generate image descriptions, moderate content, and understand people's movement in physical spaces." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Success rate", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Computer vision transactions", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ComputerVisionTransactions`) AS 'Total Computer Vision Transactions' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%ComputerVision%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Blocked calls", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful calls", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Processed pages", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedPages`) AS 'Total Processed Pages' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%ComputerVision%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processed images", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedImages`) AS 'Total Processed Images' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%ComputerVision%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.Latency`) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Computer Vision%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-computer-vision/azure-computer-vision.png b/dashboards/azure-computer-vision/azure-computer-vision.png new file mode 100644 index 0000000000..7a70cb300c Binary files /dev/null and b/dashboards/azure-computer-vision/azure-computer-vision.png differ diff --git a/dashboards/azure-container-registry/azure-container-registry.json b/dashboards/azure-container-registry/azure-container-registry.json new file mode 100644 index 0000000000..f20fddcfe7 --- /dev/null +++ b/dashboards/azure-container-registry/azure-container-registry.json @@ -0,0 +1,186 @@ +{ + "name": "Azure Container Registry", + "description": null, + + "pages": [ + { + "name": "Azure Container Registry", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.containerregistry.registries.SuccessfulPullCount) AS 'Total Successful Pull Count', SUM(azure.containerregistry.registries.SuccessfulPushCount) AS 'Total Successful Push Count', SUM(azure.containerregistry.registries.TotalPullCount) AS 'Total Pull Count', SUM(azure.containerregistry.registries.TotalPushCount) AS 'Total Push Count', AVERAGE(azure.containerregistry.registries.StorageUsed) AS 'Average Storage Used'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Container Registry\nAzure Container Registry allows you to build, store and manage container images and artifacts in a private registry for all types of container deployments." + } + }, + { + "title": "Pull count", + "layout": { + "column": 1, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.containerregistry.registries.SuccessfulPullCount) AS 'Total Successful Pull Count', SUM(azure.containerregistry.registries.TotalPullCount) AS 'Total Pull Count' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Storage used", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.containerregistry.registries.StorageUsed) AS 'Average Storage Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Push count", + "layout": { + "column": 1, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.containerregistry.registries.SuccessfulPushCount) AS 'Total Successful Push Count', SUM(azure.containerregistry.registries.TotalPushCount) AS 'Total Push Count' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Run duration", + "layout": { + "column": 9, + "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(azure.containerregistry.registries.RunDuration) AS 'Total Run Duration' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-container-registry/azure-container-registry.png b/dashboards/azure-container-registry/azure-container-registry.png new file mode 100644 index 0000000000..383ab365a6 Binary files /dev/null and b/dashboards/azure-container-registry/azure-container-registry.png differ diff --git a/dashboards/azure-content-moderator/azure-content-moderator.json b/dashboards/azure-content-moderator/azure-content-moderator.json new file mode 100644 index 0000000000..a43d757d0c --- /dev/null +++ b/dashboards/azure-content-moderator/azure-content-moderator.json @@ -0,0 +1,290 @@ +{ + "name": "Azure Content Moderator", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Content Moderator", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Content Moderator\nThe Azure Content Moderator API is a cognitive service that checks text, image, and video content for material that is potentially offensive, risky, or otherwise undesirable. When such material is found, the service applies appropriate labels (flags) to the content. Your app can then handle flagged content in order to comply with regulations or maintain the intended environment for users." + } + }, + { + "title": "Call details", + "layout": { + "column": 1, + "row": 3, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(azure.cognitiveservices.accounts.TotalErrors) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Success rate", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.cognitiveservices.accounts.SuccessRate)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total calls by operation", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.TotalCalls) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.DataIn) AS 'Total Data In', SUM(azure.cognitiveservices.accounts.DataOut) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ClientErrors) AS 'Total Client Errors', SUM(azure.cognitiveservices.accounts.ServerErrors) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Blocked calls by operation", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-content-moderator/azure-content-moderator.png b/dashboards/azure-content-moderator/azure-content-moderator.png new file mode 100644 index 0000000000..6298f3655e Binary files /dev/null and b/dashboards/azure-content-moderator/azure-content-moderator.png differ diff --git a/dashboards/azure-content-safety/azure-content-safety.json b/dashboards/azure-content-safety/azure-content-safety.json new file mode 100644 index 0000000000..6431ac83fa --- /dev/null +++ b/dashboards/azure-content-safety/azure-content-safety.json @@ -0,0 +1,350 @@ +{ + "name": "Azure Content Safety", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Content Safety", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Content Safety\nThe cloud-based Content Safety API provides developers with access to advanced algorithms for processing images and text and flagging content that is potentially offensive, risky, or otherwise undesirable." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.TotalCalls) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ClientErrors) AS 'Total Client Errors', SUM(azure.cognitiveservices.accounts.ServerErrors) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call count for text moderation", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ContentSafetyTextAnalyzeRequestCount) AS 'Total Call Count for Text Moderation' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.apiversion TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call count for image moderation", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ContentSafetyImageAnalyzeRequestCount) AS 'Total Call Count for Image Moderation' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.apiversion TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.DataIn) AS 'Total Data In', SUM(azure.cognitiveservices.accounts.DataOut) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency by region", + "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 AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(azure.cognitiveservices.accounts.SuccessRate)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Content Safety%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-content-safety/azure-content-safety.png b/dashboards/azure-content-safety/azure-content-safety.png new file mode 100644 index 0000000000..d01bcde0ae Binary files /dev/null and b/dashboards/azure-content-safety/azure-content-safety.png differ diff --git a/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.json b/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.json new file mode 100644 index 0000000000..919eb236a9 --- /dev/null +++ b/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.json @@ -0,0 +1,323 @@ +{ + "name": "Azure Custom Vision Prediction", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Custom Vision Prediction", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Custom Vision Prediction\nAzure Custom Vision is an image recognition service that lets you build, deploy, and improve your own image identifier models. An image identifier applies labels to images, according to their visual characteristics." + } + }, + { + "title": "Total calls by operarion name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Custom vision transactions", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.CustomVisionTransactions`) AS 'Total Custom Vision Transactions' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency by region", + "layout": { + "column": 8, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.Latency`) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' and (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Prediction%') FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.png b/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.png new file mode 100644 index 0000000000..4cf4d6fa40 Binary files /dev/null and b/dashboards/azure-custom-vision-prediction/azure-custom-vision-prediction.png differ diff --git a/dashboards/azure-custom-vision-training/azure-custom-vision-training.json b/dashboards/azure-custom-vision-training/azure-custom-vision-training.json new file mode 100644 index 0000000000..24fdc11328 --- /dev/null +++ b/dashboards/azure-custom-vision-training/azure-custom-vision-training.json @@ -0,0 +1,350 @@ +{ + "name": "Azure Custom Vision Training", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Custom Vision Training", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Custom Vision Training\nAzure Custom Vision is an image recognition service that lets you build, deploy, and improve your own image identifier models. An image identifier applies labels to images, according to their visual characteristics." + } + }, + { + "title": "Total calls by operarion name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Custom vision transactions", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.CustomVisionTransactions`) AS 'Total Custom Vision Transactions' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Custom vision training time", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.CustomVisionTrainingTime`) AS 'Total Custom Vision Training Time' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Images stored", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ImagesStored`) AS 'Total Images Stored' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency by region", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.Latency`)/100 AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' and (azure.cognitiveservices.accounts.apiname LIKE '%CustomVision%' OR azure.cognitiveservices.accounts.apiname LIKE '%Custom_Vision_Training%') FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-custom-vision-training/azure-custom-vision-training.png b/dashboards/azure-custom-vision-training/azure-custom-vision-training.png new file mode 100644 index 0000000000..93a1a9e3e1 Binary files /dev/null and b/dashboards/azure-custom-vision-training/azure-custom-vision-training.png differ diff --git a/dashboards/azure-data-box-edge/azure-data-box-edge.json b/dashboards/azure-data-box-edge/azure-data-box-edge.json new file mode 100644 index 0000000000..6a301d8024 --- /dev/null +++ b/dashboards/azure-data-box-edge/azure-data-box-edge.json @@ -0,0 +1,255 @@ +{ + "name": "Azure Data Box Edge", + "description": null, + + "pages": [ + { + "name": "Azure Data Box Edge", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.BytesUploadedToCloud) AS 'Average Bytes Uploaded To Cloud', AVERAGE(azure.databoxedge.databoxedgedevices.CloudReadThroughput) AS 'Average Cloud Read Throughput', AVERAGE(azure.databoxedge.databoxedgedevices.CloudUploadThroughput) AS 'Average Cloud Upload Throughput', AVERAGE(azure.databoxedge.databoxedgedevices.HyperVMemoryUtilization) AS 'Average HyperV Memory Utilization', AVERAGE(azure.databoxedge.databoxedgedevices.NICReadThroughput) AS 'Average NIC Read Throughput' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Box Edge\nAzure Data Box Edge is a physical network appliance, shipped by Microsoft, that sends data in and out of Azure. Data Box Edge is additionally equipped with AI-enabled edge computing capabilities that help you analyze, process and transform the on-premises data before uploading it to the cloud." + } + }, + { + "title": "Capacity", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.dataedgedevices.AvailableCapacity) AS 'Average Available Capacity', AVERAGE(azure.databoxedge.databoxedgedevices.TotalCapacity) AS 'Average Total Capacity' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes uploaded to cloud", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.BytesUploadedToCloud) AS 'Average Bytes Uploaded To Cloud', AVERAGE(azure.databoxedge.databoxedgedevices.BytesUploadedToCloudPerShare) AS 'Average Bytes Uploaded To Cloud Per Share' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HyperV utilization", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.HyperVMemoryUtilization) AS 'Average HyperV Memory Utilization', AVERAGE(azure.databoxedge.databoxedgedevices.HyperVVirtualProcessorUtilization) AS 'Average HyperV Virtual Processor Utilization' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cloud read throughput", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.CloudReadThroughput) AS 'Average Cloud Read Throughput', AVERAGE(azure.databoxedge.databoxedgedevices.CloudReadThroughputPerShare) AS 'Average Cloud Read Throughput Per Share' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cloud upload throughput", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.CloudUploadThroughput) AS 'Average Cloud Upload Throughput', AVERAGE(azure.databoxedge.databoxedgedevices.CloudUploadThroughputPerShare) AS 'Average Cloud Upload Throughput Per Share' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "NIC throughput", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.databoxedge.databoxedgedevices.NICReadThroughput) AS 'Average NIC Read Throughput', AVERAGE(azure.databoxedge.databoxedgedevices.NICWriteThroughput) AS 'Average NIC Write Throughput' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.databoxedge/databoxedgedevices' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-data-explorer/azure-data-explorer.json b/dashboards/azure-data-explorer/azure-data-explorer.json new file mode 100644 index 0000000000..30962762e8 --- /dev/null +++ b/dashboards/azure-data-explorer/azure-data-explorer.json @@ -0,0 +1,246 @@ +{ + "name": "Azure Data Explorer", + "description": null, + + "pages": [ + { + "name": "Azure Data Explorer", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.kusto.clusters.CPU) AS 'Average CPU Usage', AVERAGE(azure.kusto.clusters.IngestionLatencyInSeconds) AS 'Average Ingestion Latency', SUM(azure.kusto.clusters.IngestionResult) AS 'Total Ingestion result', AVERAGE(azure.kusto.clusters.QueryDuration) AS 'Average Query Duration' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Explorer\nAzure Data Explorer is a fully managed, high-performance, big data analytics platform that makes it easy to analyze high volumes of data in near real time. The Azure Data Explorer toolbox gives you an end-to-end solution for data ingestion, query, visualization and management." + } + }, + { + "title": "Cluster utilization", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.kusto.clusters.CPU)/100 AS 'Average CPU utilization level', AVERAGE(azure.kusto.clusters.ExportUtilization)/100 AS 'Average Export Utilization', AVERAGE(azure.kusto.clusters.IngestionUtilization)/100 AS 'Average Ingestion Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Batch size", + "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": "FROM Metric SELECT AVERAGE(azure.kusto.clusters.BatchSize) AS 'Average Batch Size' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ingestion result", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.kusto.clusters.IngestionResult) AS 'Total Ingestion result' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency", + "layout": { + "column": 1, + "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 AVERAGE(azure.kusto.clusters.IngestionLatencyInSeconds) AS 'Average Ingestion Latency', AVERAGE(azure.kusto.clusters.StageLatency) AS 'Average Stage Latency', AVERAGE(azure.kusto.clusters.DiscoveryLatency) AS 'Average Discovery Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total number of extents", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.kusto.clusters.TotalNumberOfExtents) AS 'Total Number Of Extents' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Query duration", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.kusto.clusters.QueryDuration) AS 'Average Query Duration' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.kusto/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-data-explorer/azure-data-explorer.png b/dashboards/azure-data-explorer/azure-data-explorer.png new file mode 100644 index 0000000000..2222747655 Binary files /dev/null and b/dashboards/azure-data-explorer/azure-data-explorer.png differ diff --git a/dashboards/azure-data-lake-analytics/azure-data-lake-analytics.json b/dashboards/azure-data-lake-analytics/azure-data-lake-analytics.json new file mode 100644 index 0000000000..70b75eba7b --- /dev/null +++ b/dashboards/azure-data-lake-analytics/azure-data-lake-analytics.json @@ -0,0 +1,222 @@ +{ + "name": "Azure Data Lake Analytics", + "description": null, + + "pages": [ + { + "name": "Azure Data Lake Analytics", + "description": null, + "widgets": [ + { + "title": "SUMmary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobStage`) AS 'Total Number of Jobs', SUM(`azure.datalakeanalytics.accounts.JobAUEndedSuccess`) AS 'Total AU time for successful jobs', SUM(`azure.datalakeanalytics.accounts.JobAUEndedCancelled`) AS 'Total AU Time for Cancelled Jobs', SUM(`azure.datalakeanalytics.accounts.JobEndedSuccess`) AS 'Total Successful Jobs', SUM(`azure.datalakeanalytics.accounts.JobEndedCancelled`) AS 'Total Cancelled Jobs' WHERE collector.name ='azure-monitor' AND azure.resourceType = 'microsoft.datalakeanalytics/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Lake Analytics\nAzure Data Lake Analytics is an on-demand analytics job service that simplifies big data. Instead of deploying, configuring, and tuning hardware, you write queries to transform your data and extract valuable insights." + } + }, + { + "title": "Number of Jobs", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobStage`) AS 'Total Number of Jobs' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.datalakeanalytics/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "AU time for successful jobs", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobAUEndedSuccess`) AS 'Total AU Time for Successful Jobs' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.datalakeanalytics/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "AU time for cancelled jobs", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobAUEndedCancelled`) AS 'Total AU Time for Cancelled Jobs' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.datalakeanalytics/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Successful jobs", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobEndedSuccess`) AS 'Total Successful Jobs' WHERE collector.name ='azure-monitor' and azure.resourceType='microsoft.datalakeanalytics/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cancelled jobs", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datalakeanalytics.accounts.JobEndedCancelled`) AS 'Total Cancelled Jobs' WHERE collector.name ='azure-monitor' and azure.resourceType='microsoft.datalakeanalytics/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} diff --git a/dashboards/azure-data-lake-storage/azure-data-lake-storage.json b/dashboards/azure-data-lake-storage/azure-data-lake-storage.json new file mode 100644 index 0000000000..47df594fa1 --- /dev/null +++ b/dashboards/azure-data-lake-storage/azure-data-lake-storage.json @@ -0,0 +1,189 @@ +{ + "name": "Azure Data Lake Storage", + "description": null, + + "pages": [ + { + "name": "Azure Data Lake Storage", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datalakestore.accounts.DataRead) AS 'Total Data Read' ,SUM(azure.datalakestore.accounts.ReadRequests) AS 'Total Read Requests', SUM(azure.datalakestore.accounts.WriteRequests) AS 'Total Write Requests', SUM(azure.datalakestore.accounts.TotalStorage) AS 'Total Storage ' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.datalakestore/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Lake Storage\nAzure Data Lake Storage is a cloud-based, enterprise data lake solution. It's engineered to store massive amounts of data in any format, and to facilitate big data analytical workloads. You use it to capture data of any type and ingestion speed in a single location for easy access and analysis using various frameworks." + } + }, + { + "title": "Data read", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datalakestore.accounts.DataRead) AS 'Total Data Read' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.datalakestore/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Read requests", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datalakestore.accounts.ReadRequests) AS 'Total Read Requests' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.datalakestore/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Write requests", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datalakestore.accounts.WriteRequests) AS 'Total Write Requests' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.datalakestore/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total storage", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datalakestore.accounts.TotalStorage) AS 'Total Storage' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.datalakestore/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-data-share/azure-data-share.json b/dashboards/azure-data-share/azure-data-share.json new file mode 100644 index 0000000000..75c5743d08 --- /dev/null +++ b/dashboards/azure-data-share/azure-data-share.json @@ -0,0 +1,213 @@ +{ + "name": "Azure Data Share", + "description": null, + + "pages": [ + { + "name": "Azure Data Share", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.datashare.accounts.ShareCount`) AS 'Total Sent Shares', SUM(`azure.datashare.accounts.FailedShareSubscriptionSynchronizations`) AS 'Total Received Share Failed Snapshots', SUM(`azure.datashare.accounts.SucceededShareSynchronizations`) AS 'Total Sent Share Succeeded Snapshots', SUM(`azure.datashare.accounts.SucceededShareSubscriptionSynchronizations`) AS 'Total Received Share Succeeded Snapshots' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Share\nAzure Data Share enables organizations to securely share data with multiple customers and partners. Data providers are always in control of the data that they've shared and Azure Data Share makes it simple to manage and monitor what data was shared, when and by whom.Share data from the list of supported data stores with customers and partners outside of your organization." + } + }, + { + "title": "Received shares", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datashare.accounts.ShareSubscriptionCount) AS 'Total Received Shares' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts' FACET azure.datashare.accounts.ShareSubscriptionName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sent shares", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datashare.accounts.ShareCount) AS 'Total Sent Shares' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts' FACET azure.datashare.accounts.ShareName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sent share succeeded snapshots", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datashare.accounts.SucceededShareSynchronizations) AS 'Total Sent Share Succeeded Snapshots' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received share succeeded snapshots", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datashare.accounts.SucceededShareSubscriptionSynchronizations) AS 'Total Received Share Succeeded Snapshots' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Received share failed snapshots", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.datashare.accounts.FailedShareSubscriptionSynchronizations) AS 'Total Received Share Failed Snapshots' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.datashare/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-data-share/azure-data-share.png b/dashboards/azure-data-share/azure-data-share.png new file mode 100644 index 0000000000..41a6369c48 Binary files /dev/null and b/dashboards/azure-data-share/azure-data-share.png differ diff --git a/dashboards/azure-datafactories/azure-datafactories-golden-metrics-page.png b/dashboards/azure-datafactories/azure-datafactories-golden-metrics-page.png new file mode 100644 index 0000000000..1ba7d433da Binary files /dev/null and b/dashboards/azure-datafactories/azure-datafactories-golden-metrics-page.png differ diff --git a/dashboards/azure-datafactories/azure-datafactories-overview-page.png b/dashboards/azure-datafactories/azure-datafactories-overview-page.png new file mode 100644 index 0000000000..37f076d848 Binary files /dev/null and b/dashboards/azure-datafactories/azure-datafactories-overview-page.png differ diff --git a/dashboards/azure-datafactories/azure-datafactories.json b/dashboards/azure-datafactories/azure-datafactories.json new file mode 100644 index 0000000000..5f0aad41c2 --- /dev/null +++ b/dashboards/azure-datafactories/azure-datafactories.json @@ -0,0 +1,803 @@ +{ + "name": "Azure-Data-Factories", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Factories Dashboard ![New Relic logo](https://newrelic.com/static-assets/images/icons/avatar-newrelic.png)\n\nMonitor your [Azure Data Factories](https://portal.azure.com/#view/HubsExtension/BrowseResource/resourceType/Microsoft.DataFactory%2FdataFactories) using [New Relic Azure Integration](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-factory-integration/)" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Pipelines" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Data Factories" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "--from AzureDataFactoryFactorySample SELECT uniqueCount(pipelineName) as 'Pipeline Count' facet displayName\nfrom AzureDataFactoryFactorySample SELECT uniques(pipelineName) as 'Pipelines' where displayName IN ({{data_factory_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "--from AzureDataFactoryFactorySample SELECT uniqueCount(pipelineName) as 'Pipeline Count' facet displayName\nfrom AzureDataFactoryFactorySample SELECT uniques(displayName), uniqueCount(pipelineName) as 'Pipeline Count',latest(regionName), latest(providerAccountName) where displayName in ({{data_factory_name}})\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Pipeline Runs" + } + }, + { + "title": "Failed Pipeline Runs", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Failed Pipeline Runs", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "--from AzureDataFactoryFactorySample SELECT uniqueCount(pipelineName) as 'Pipeline Count' facet displayName\nfrom AzureDataFactoryFactorySample SELECT count(pipelineFailedRuns.Total) as 'Failed Pipeline Runs' WHERE displayName IN ({{data_factory_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Failed Pipeline Runs", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Failed Pipeline Runs", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "--from AzureDataFactoryFactorySample SELECT uniqueCount(pipelineName) as 'Pipeline Count' facet displayName\nfrom AzureDataFactoryFactorySample SELECT count(pipelineSucceededRuns.Total) as 'Sucessful Pipeline Runs' WHERE displayName IN ({{data_factory_name}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 1 + } + ] + } + } + ] + }, + { + "name": "Golden Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Data Factories Dashboard ![New Relic logo](https://newrelic.com/static-assets/images/icons/avatar-newrelic.png)\n\n### The Four Golden Signals: Errors, Saturation, Traffic, Latency\n\n![four golden signals](https://drive.google.com/uc?id=14vVtYoS5lhv9XwsSrQ-mp93JXd-ouaaE)\n\n> Monitor your [Azure Data Factories](https://portal.azure.com/#view/HubsExtension/BrowseResource/resourceType/Microsoft.DataFactory%2FdataFactories) using [New Relic Azure Integration](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-factory-integration/)" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Traffic" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Errors" + } + }, + { + "title": "Resource count", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.ResourceCount`), sum(`azure.datafactory.factories.ResourceCount`), max(`azure.datafactory.factories.ResourceCount`), min(`azure.datafactory.factories.ResourceCount`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pipeline succeeded runs", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.PipelineSucceededRuns`), sum(`azure.datafactory.factories.PipelineSucceededRuns`), max(`azure.datafactory.factories.PipelineSucceededRuns`), min(`azure.datafactory.factories.PipelineSucceededRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pipeline cancelled runs", + "layout": { + "column": 7, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.PipelineCancelledRuns`), sum(`azure.datafactory.factories.PipelineCancelledRuns`), max(`azure.datafactory.factories.PipelineCancelledRuns`), min(`azure.datafactory.factories.PipelineCancelledRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Activity failed runs", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.ActivityFailedRuns`), sum(`azure.datafactory.factories.ActivityFailedRuns`), max(`azure.datafactory.factories.ActivityFailedRuns`), min(`azure.datafactory.factories.ActivityFailedRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Activity succeeded runs", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.ActivitySucceededRuns`), sum(`azure.datafactory.factories.ActivitySucceededRuns`), max(`azure.datafactory.factories.ActivitySucceededRuns`), min(`azure.datafactory.factories.ActivitySucceededRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trigger succeeded runs", + "layout": { + "column": 4, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.TriggerSucceededRuns`), sum(`azure.datafactory.factories.TriggerSucceededRuns`), max(`azure.datafactory.factories.TriggerSucceededRuns`), min(`azure.datafactory.factories.TriggerSucceededRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trigger failed runs", + "layout": { + "column": 7, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.TriggerFailedRuns`), sum(`azure.datafactory.factories.TriggerFailedRuns`), max(`azure.datafactory.factories.TriggerFailedRuns`), min(`azure.datafactory.factories.TriggerFailedRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pipeline failed runs", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.PipelineFailedRuns`), sum(`azure.datafactory.factories.PipelineFailedRuns`), max(`azure.datafactory.factories.PipelineFailedRuns`), min(`azure.datafactory.factories.PipelineFailedRuns`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Latency" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Saturation" + } + }, + { + "title": "Integration runtime average task pickup delay seconds", + "layout": { + "column": 1, + "row": 11, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.IntegrationRuntimeAverageTaskPickupDelay`), sum(`azure.datafactory.factories.IntegrationRuntimeAverageTaskPickupDelay`), max(`azure.datafactory.factories.IntegrationRuntimeAverageTaskPickupDelay`), min(`azure.datafactory.factories.IntegrationRuntimeAverageTaskPickupDelay`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Max allowed resource count", + "layout": { + "column": 7, + "row": 11, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.MaxAllowedResourceCount`), sum(`azure.datafactory.factories.MaxAllowedResourceCount`), max(`azure.datafactory.factories.MaxAllowedResourceCount`), min(`azure.datafactory.factories.MaxAllowedResourceCount`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Integration runtime available memory bytes", + "layout": { + "column": 10, + "row": 11, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.IntegrationRuntimeAvailableMemory`), sum(`azure.datafactory.factories.IntegrationRuntimeAvailableMemory`), max(`azure.datafactory.factories.IntegrationRuntimeAvailableMemory`), min(`azure.datafactory.factories.IntegrationRuntimeAvailableMemory`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Integration runtime queue length", + "layout": { + "column": 7, + "row": 13, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.IntegrationRuntimeQueueLength`), sum(`azure.datafactory.factories.IntegrationRuntimeQueueLength`), max(`azure.datafactory.factories.IntegrationRuntimeQueueLength`), min(`azure.datafactory.factories.IntegrationRuntimeQueueLength`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Integration runtime available node number", + "layout": { + "column": 10, + "row": 13, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.IntegrationRuntimeAvailableNodeNumber`), sum(`azure.datafactory.factories.IntegrationRuntimeAvailableNodeNumber`), max(`azure.datafactory.factories.IntegrationRuntimeAvailableNodeNumber`), min(`azure.datafactory.factories.IntegrationRuntimeAvailableNodeNumber`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Integration runtime cpu percentage percent", + "layout": { + "column": 7, + "row": 15, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.IntegrationRuntimeCpuPercentage`), sum(`azure.datafactory.factories.IntegrationRuntimeCpuPercentage`), max(`azure.datafactory.factories.IntegrationRuntimeCpuPercentage`), min(`azure.datafactory.factories.IntegrationRuntimeCpuPercentage`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Max allowed factory size in gb units", + "layout": { + "column": 10, + "row": 15, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`azure.datafactory.factories.MaxAllowedFactorySizeInGbUnits`), sum(`azure.datafactory.factories.MaxAllowedFactorySizeInGbUnits`), max(`azure.datafactory.factories.MaxAllowedFactorySizeInGbUnits`), min(`azure.datafactory.factories.MaxAllowedFactorySizeInGbUnits`) FROM Metric WHERE `entity.name` IN ({{data_factory_name}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "data_factory_name", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "from AzureDataFactoryFactorySample SELECT uniques(displayName)\n" + }, + "title": "Data Factory Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.json b/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.json new file mode 100644 index 0000000000..4bab54fb86 --- /dev/null +++ b/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.json @@ -0,0 +1,246 @@ +{ + "name": "Azure Device Provisioning Service", + "description": null, + + "pages": [ + { + "name": "Azure Device Provisioning Service", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.provisioningservices.AttestationAttempts`) AS 'Total Attestation Attempts', SUM(`azure.devices.provisioningservices.DeviceAssignments`) AS 'Total Device Assignments', SUM(`azure.devices.provisioningservices.RegistrationAttempts`) AS 'Total Registration Attempts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Device Provisioning Service\nThe IoT Hub Device Provisioning Service (DPS) is a helper service for IoT Hub that enables zero-touch, just-in-time provisioning to the right IoT hub without requiring human intervention, allowing customers to provision millions of devices in a secure AND scalable manner." + } + }, + { + "title": "Registration attempts", + "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 SUM(azure.devices.provisioningservices.RegistrationAttempts) AS 'Total Registration Attempts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.provisioningservicename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Registration attempts by status", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.devices.provisioningservices.RegistrationAttempts) AS 'Total Registration Attempts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.status TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Attestation attempts", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.devices.provisioningservices.AttestationAttempts) AS 'Total Attestation Attempts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.provisioningservicename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Attestation attempts by status", + "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 SUM(azure.devices.provisioningservices.AttestationAttempts) AS 'Total Attestation Attempts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.status TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Device assignments by IoT Hub name", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.devices.provisioningservices.DeviceAssignments) AS 'Total Device Assignments' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.iothubname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Device assignments", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.devices.provisioningservices.DeviceAssignments) AS 'Total Device Assignments' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/provisioningservices' FACET azure.devices.provisioningservices.provisioningservicename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.png b/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.png new file mode 100644 index 0000000000..dff3ff6db1 Binary files /dev/null and b/dashboards/azure-device-provisioning-service/azure-device-provisioning-service.png differ diff --git a/dashboards/azure-disk-storage/azure-disk-storage.json b/dashboards/azure-disk-storage/azure-disk-storage.json new file mode 100644 index 0000000000..caf01ee619 --- /dev/null +++ b/dashboards/azure-disk-storage/azure-disk-storage.json @@ -0,0 +1,222 @@ +{ + "name": "Azure Disk Storage", + "description": null, + + "pages": [ + { + "name": "Azure Disk Storage", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT AVERAGE(azure.compute.disks.CompositeDiskReadBytes.sec) AS 'Average Composite Disk Read Bytes', AVERAGE(azure.compute.disks.CompositeDiskReadOperations.sec) AS 'Average Composite Disk Read Operations', AVERAGE(azure.compute.disks.CompositeDiskWriteBytes.sec) AS 'Average Composite Disk Write Bytes', AVERAGE(azure.compute.disks.CompositeDiskWriteOperations.sec) AS 'Average Composite Disk Write Operations', AVERAGE(azure.compute.disks.DiskPaidBurstIOPS) AS 'Average Disk Paid Burst IOPS' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Disk Storage\nAzure managed disks are block-level storage volumes that are managed by Azure and used with Azure Virtual Machines." + } + }, + { + "title": "Disk read bytes", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.compute.disks.CompositeDiskReadBytes.sec) AS 'Average Disk Read Bytes/sec' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk write bytes", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.compute.disks.CompositeDiskWriteBytes.sec) AS 'Average Disk Write Bytes/sec' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk read operations", + "layout": { + "column": 1, + "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 AVERAGE(azure.compute.disks.CompositeDiskReadOperations.sec) AS 'Average Disk Read Operations/sec' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk write operations", + "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 AVERAGE(azure.compute.disks.CompositeDiskWriteOperations.sec) AS 'Average Disk Write Operations/sec' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk on-demand burst operations", + "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 AVERAGE(azure.compute.disks.DiskPaidBurstIOPS) AS 'Average Disk On-demand Burst Operations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.compute/disks' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-disk-storage/azure-disk-storage.png b/dashboards/azure-disk-storage/azure-disk-storage.png new file mode 100644 index 0000000000..b07432b6c1 Binary files /dev/null and b/dashboards/azure-disk-storage/azure-disk-storage.png differ diff --git a/dashboards/azure-dns-zones/azure-dns-zones.json b/dashboards/azure-dns-zones/azure-dns-zones.json new file mode 100644 index 0000000000..6dd447f90e --- /dev/null +++ b/dashboards/azure-dns-zones/azure-dns-zones.json @@ -0,0 +1,159 @@ +{ + "name": "Azure DNS Zones", + "description": null, + + "pages": [ + { + "name": "Azure DNS Zones", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.dnszones.QueryVolume) AS 'Total Query Volume', MAX(azure.network.dnszones.RecordSetCount) AS 'Maximum Record Set Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/dnszones'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure DNS Zones\nAzure DNS is a hosting service for DNS domains that provides name resolution by using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records by using the same credentials, APIs, tools and billing as your other Azure services." + } + }, + { + "title": "Query volume", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.dnszones.QueryVolume) AS 'Total Query Volume' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/dnszones' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Record set capacity utilization", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.dnszones.RecordSetCapacityUtilization) AS 'Maximum Record Set Capacity Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/dnszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Record set count", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.dnszones.RecordSetCount) AS 'Maximum Record Set Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/dnszones' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-dns-zones/azure-dns-zones.png b/dashboards/azure-dns-zones/azure-dns-zones.png new file mode 100644 index 0000000000..b5668b0c0d Binary files /dev/null and b/dashboards/azure-dns-zones/azure-dns-zones.png differ diff --git a/dashboards/azure-event-grid-domains/azure-eventgrid-domains.json b/dashboards/azure-event-grid-domains/azure-eventgrid-domains.json new file mode 100644 index 0000000000..8f9fba2102 --- /dev/null +++ b/dashboards/azure-event-grid-domains/azure-eventgrid-domains.json @@ -0,0 +1,355 @@ +{ + "name": "Azure Event Grid Domains", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid Domains", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.domains.PublishSuccessCount) AS 'Total Publish Success Count', sum(azure.eventgrid.domains.DeliverySuccessCount) AS 'Total Delivery Success Count', sum(azure.eventgrid.domains.PublishFailCount) AS 'Total Publish Fail Count', average(azure.eventgrid.domains.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency'WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Event Grid Domains\nAn event domain is a management tool for large number of Event Grid topics related to the same application. You can think of it as a meta-topic that can have thousands of individual topics. It allows an event publisher to publish events to thousands of topics at the same time. Domains also give you authentication and authorization control over each topic so you can partition your tenants. " + } + }, + { + "title": "Publish success count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.domains.PublishSuccessCount) AS 'Total Publish Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' FACET azure.eventgrid.domains.Topic" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Publish success latency", + "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": "FROM Metric SELECT average(azure.eventgrid.domains.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Publish fail count by error", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.domains.PublishFailCount) AS 'Total Publish Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' TIMESERIES AUTO FACET azure.eventgrid.domains.Error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Event delivery details", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.domains.MatchedEventCount) AS 'Total Matched Events', sum(azure.eventgrid.domains.DeliverySuccessCount) AS 'Total Delivery Success Events', sum(azure.eventgrid.domains.DeliveryAttemptFailCount) AS 'Total Delivery Failed Events', sum(azure.eventgrid.domains.DroppedEventCount) AS 'Total Dropped Events', sum(azure.eventgrid.domains.DeadLetteredCount) AS 'Total Dead Lettered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery success count by topic", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#ff0080" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.domains.DeliverySuccessCount) AS 'Total Delivery Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' FACET azure.eventgrid.domains.Topic" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Delivery fail count by error", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.domains.DeliveryAttemptFailCount) AS 'Total Delivery Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' TIMESERIES AUTO FACET azure.eventgrid.domains.Error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Dead lettered events by reason", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.domains.DeadLetteredCount) AS 'Total Dead Lettered Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' FACET azure.eventgrid.domains.DeadLetterReason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dropped events by reason", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.domains.DroppedEventCount) AS 'Total Dropped Event Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' FACET azure.eventgrid.domains.DropReason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Destination processing duration by topic", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.eventgrid.domains.DestinationProcessingDurationInMs) AS 'Average Destination Processing Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/domains' TIMESERIES AUTO FACET azure.eventgrid.domains.Topic" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-domains/azure-eventgrid-domains.png b/dashboards/azure-event-grid-domains/azure-eventgrid-domains.png new file mode 100644 index 0000000000..8ffe7709fc Binary files /dev/null and b/dashboards/azure-event-grid-domains/azure-eventgrid-domains.png differ diff --git a/dashboards/azure-event-grid-partner-namespaces/azure-event-grid-partner-namespaces.json b/dashboards/azure-event-grid-partner-namespaces/azure-event-grid-partner-namespaces.json new file mode 100644 index 0000000000..bb5f8a82e7 --- /dev/null +++ b/dashboards/azure-event-grid-partner-namespaces/azure-event-grid-partner-namespaces.json @@ -0,0 +1,225 @@ +{ + "name": "Azure Event Grid Partner Namespaces", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid Partner Namespaces", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.eventgrid.partnernamespaces.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency', sum(azure.eventgrid.partnernamespaces.UnmatchedEventCount) AS 'Total Unmatched Events', sum(azure.eventgrid.partnernamespaces.PublishSuccessCount) AS 'Total Published Events', sum(azure.eventgrid.partnernamespaces.PublishFailCount) AS 'Total Publish Failed Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Event Grid Partner Namespaces\nA partner namespace is a regional resource that has an endpoint to publish events to Azure Event Grid. Partner namespaces contain either channels or event channels (legacy resource)" + } + }, + { + "title": "Published events", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnernamespaces.PublishSuccessCount) AS 'Total Published Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish success latency", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.eventgrid.partnernamespaces.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Unmatched events", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnernamespaces.UnmatchedEventCount) AS 'Total Unmatched Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish failed events by error type", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnernamespaces.PublishFailCount) AS 'Total Publish Failed Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' TIMESERIES AUTO FACET azure.azure.eventgrid.partnernamespaces.errortype" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish failed events by error", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnernamespaces.PublishFailCount) AS 'Total Publish Failed Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnernamespaces' TIMESERIES AUTO FACET azure.azure.eventgrid.partnernamespaces.error" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-partner-topics/azure-event-grid-partner-topics.json b/dashboards/azure-event-grid-partner-topics/azure-event-grid-partner-topics.json new file mode 100644 index 0000000000..1148c4ca0a --- /dev/null +++ b/dashboards/azure-event-grid-partner-topics/azure-event-grid-partner-topics.json @@ -0,0 +1,295 @@ +{ + "name": "Azure Event Grid Partner Topics", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid Partner Topics", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnertopics.PublishSuccessCount) AS 'Total Publish Success Count', sum(azure.eventgrid.partnertopics.DeliverySuccessCount) AS 'Total Delivery Success Count', sum(azure.eventgrid.partnertopics.DeliveryAttemptFailCount) AS 'Total Delivery Attempt Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Event Grid Partner Topics\nAzure Event Grid Partner Topics refer to custom event types that are created and published by third-party services or applications. These partner topics enable Azure Event Grid to integrate with other services or systems, such as Salesforce, GitHub, or Twilio, and receive notifications when specific events occur within those systems." + } + }, + { + "title": "Publish success count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnertopics.PublishSuccessCount) AS 'Total Publish Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnertopics' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery success count by subscription", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.partnertopics.DeliverySuccessCount) AS 'Total Delivery Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.partnertopics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery fail count by error", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.partnertopics.DeliveryAttemptFailCount) AS 'Total Delivery Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.partnertopics.error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Event delivery details", + "layout": { + "column": 1, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.partnertopics.MatchedEventCount) AS 'Total Matched Events', sum(azure.eventgrid.partnertopics.DeliverySuccessCount) AS 'Total Delivery Success Events', sum(azure.eventgrid.partnertopics.DeliveryAttemptFailCount) AS 'Total Delivery Failed Events', sum(azure.eventgrid.partnertopics.DroppedEventCount) AS 'Total Dropped Events', sum(azure.eventgrid.partnertopics.DeadLetteredCount) AS 'Total Dead Lettered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnertopics' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Destination processing duration by topic", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.eventgrid.partnertopics.DestinationProcessingDurationInMs) AS 'Average Destination Processing Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnertopics' TIMESERIES AUTO FACET azure.eventgrid.partnertopics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dead lettered events by reason", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.partnertopics.DeadLetteredCount ) AS 'Total Dead Lettered Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnertopics' FACET azure.eventgrid.partnertopics.deadletterreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dropped events by reason", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.partnertopics.DroppedEventCount) AS 'Total Dropped Event Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/partnertopics' TIMESERIES AUTO FACET azure.eventgrid.partnertopics.dropreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-subscriptions/azure-event-grid-subscriptions.json b/dashboards/azure-event-grid-subscriptions/azure-event-grid-subscriptions.json new file mode 100644 index 0000000000..ea34f353de --- /dev/null +++ b/dashboards/azure-event-grid-subscriptions/azure-event-grid-subscriptions.json @@ -0,0 +1,255 @@ +{ + "name": "Azure Event Grid Subscriptions", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid Subscriptions", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.eventgrid.eventsubscriptions.DeliveryAttemptFailCount`) AS 'Total Delivery Failed Events', sum(`azure.eventgrid.eventsubscriptions.DeliverySuccessCount`) AS 'Total Delivered Events', Average(`azure.eventgrid.eventsubscriptions.DestinationProcessingDurationInMs`) AS 'Average Destination Processing Duration', sum(`azure.eventgrid.eventsubscriptions.MatchedEventCount`) AS 'Total Matched Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Event Grid Subscriptions\nAzure Event Grid subscription tells Event Grid which events on a topic you're interested in receiving. The endpoint or built-in mechanism to route events, sometimes to more than one handler Subscriptions are also used by handlers to intelligently filter incoming events." + } + }, + { + "title": "Dead lettered count by reason", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.eventgrid.eventsubscriptions.DeadLetteredCount`) AS 'Total Dead Lettered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO FACET azure.eventgrid.eventsubscriptions.deadletterreason " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery attempt fail count", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select sum(`azure.eventgrid.eventsubscriptions.DeliveryAttemptFailCount`) AS 'Total Delivery Failed Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery success count", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.eventgrid.eventsubscriptions.DeliverySuccessCount`) AS 'Total Delivered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Destination processing duration", + "layout": { + "column": 1, + "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 Average(`azure.eventgrid.eventsubscriptions.DestinationProcessingDurationInMs`) AS 'Average Destination Processing Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO " + } + ], + "nullValues": { + "nullValue": "default" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Dropped event count", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.eventgrid.eventsubscriptions.DroppedEventCount`) AS 'Total Dropped Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Matched event count", + "layout": { + "column": 9, + "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(`azure.eventgrid.eventsubscriptions.MatchedEventCount`) AS 'Total Matched Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/eventsubscriptions' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.json b/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.json new file mode 100644 index 0000000000..9bb2c1d010 --- /dev/null +++ b/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.json @@ -0,0 +1,361 @@ +{ + "name": "Azure Event Grid System Topics", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid System Topics", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.systemtopics.PublishSuccessCount) AS 'Total Publish Success Count', sum(azure.eventgrid.systemtopics.DeliverySuccessCount) AS 'Total Delivery Success Count', sum(azure.eventgrid.systemtopics.PublishFailCount) AS 'Total Publish Fail Count', average(azure.eventgrid.systemtopics.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency'WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Event Grid System Topics\nA system topic in Event Grid represents one or more events published by Azure services such as Azure Storage and Azure Event Hubs. For example, a system topic may represent all blob events or only blob created and blob deleted events published for a specific storage account." + } + }, + { + "title": "Publish success count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.systemtopics.PublishSuccessCount) AS 'Total Publish Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish success latency", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.eventgrid.systemtopics.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish fail count by error", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.systemtopics.PublishFailCount) AS 'Total Publish Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.systemtopics.error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Event delivery details", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.systemtopics.MatchedEventCount) AS 'Total Matched Events', sum(azure.eventgrid.systemtopics.DeliverySuccessCount) AS 'Total Delivery Success Events', sum(azure.eventgrid.systemtopics.DeliveryAttemptFailCount) AS 'Total Delivery Failed Events', sum(azure.eventgrid.systemtopics.DroppedEventCount) AS 'Total Dropped Events', sum(azure.eventgrid.systemtopics.DeadLetteredCount) AS 'Total Dead Lettered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery success count by subscription", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.systemtopics.DeliverySuccessCount) AS 'Total Delivery Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.systemtopics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery fail count by error", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.systemtopics.DeliveryAttemptFailCount) AS 'Total Delivery Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.systemtopics.error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Dead lettered events by reason", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.systemtopics.DeadLetteredCount ) AS 'Total Dead Lettered Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' FACET azure.eventgrid.systemtopics.deadletterreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dropped events by reason", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.systemtopics.DroppedEventCount) AS 'Total Dropped Event Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.systemtopics.dropreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Destination processing duration by topic", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.eventgrid.systemtopics.DestinationProcessingDurationInMs) AS 'Average Destination Processing Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/systemtopics' TIMESERIES AUTO FACET azure.eventgrid.systemtopics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.png b/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.png new file mode 100644 index 0000000000..73aab0afd5 Binary files /dev/null and b/dashboards/azure-event-grid-system-topics/azure-event-grid-system-topics.png differ diff --git a/dashboards/azure-event-grid-topics/azure-event-grid-topics.json b/dashboards/azure-event-grid-topics/azure-event-grid-topics.json new file mode 100644 index 0000000000..ae6d0b32f9 --- /dev/null +++ b/dashboards/azure-event-grid-topics/azure-event-grid-topics.json @@ -0,0 +1,358 @@ +{ + "name": "Azure Event Grid Topics", + "description": null, + + "pages": [ + { + "name": "Azure Event Grid Topics", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.topics.PublishSuccessCount) AS 'Total Publish Success Count', sum(azure.eventgrid.topics.DeliverySuccessCount) AS 'Total Delivery Success Count', sum(azure.eventgrid.topics.PublishFailCount) AS 'Total Publish Fail Count', average(azure.eventgrid.topics.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Event Grid Topics\nAzure Event Grid is a highly scalable, serverless event broker that you can use to integrate applications using events. Events are delivered by Event Grid to subscriber destinations such as applications, Azure services, or any endpoint to which Event Grid has network access. A topic is used for a collection of related events. To respond to certain types of events, subscribers decide which topics to subscribe to." + } + }, + { + "title": "Publish success count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.topics.PublishSuccessCount) AS 'Total Publish Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Publish success latency", + "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": "FROM Metric SELECT average(azure.eventgrid.topics.PublishSuccessLatencyInMs) AS 'Average Publish Success Latency' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Publish fail count by error", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.topics.PublishFailCount) AS 'Total Publish Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO FACET azure.eventgrid.topics.error" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Event delivery details", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.topics.MatchedEventCount) AS 'Total Matched Events', sum(azure.eventgrid.topics.DeliverySuccessCount) AS 'Total Delivery Success Events', sum(azure.eventgrid.topics.DeliveryAttemptFailCount) AS 'Total Delivery Failed Events', sum(azure.eventgrid.topics.DroppedEventCount) AS 'Total Dropped Events', sum(azure.eventgrid.topics.DeadLetteredCount) AS 'Total Dead Lettered Events' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery success count by subscription", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.topics.DeliverySuccessCount) AS 'Total Delivery Success Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO FACET azure.eventgrid.topics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Delivery fail count by error", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.eventgrid.topics.DeliveryAttemptFailCount) AS 'Total Delivery Fail Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO FACET azure.eventgrid.topics.error" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Dead lettered events by reason", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.topics.DeadLetteredCount ) AS 'Total Dead Lettered Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' FACET azure.eventgrid.topics.deadletterreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dropped events by reason", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT sum(azure.eventgrid.topics.DroppedEventCount) AS 'Total Dropped Event Count' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO FACET azure.eventgrid.topics.dropreason" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Destination processing duration by subscription", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.eventgrid.topics.DestinationProcessingDurationInMs) AS 'Average Destination Processing Duration' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.eventgrid/topics' TIMESERIES AUTO FACET azure.eventgrid.topics.eventsubscriptionname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-event-grid-topics/azure-event-grid-topics.png b/dashboards/azure-event-grid-topics/azure-event-grid-topics.png new file mode 100644 index 0000000000..b24df46a9a Binary files /dev/null and b/dashboards/azure-event-grid-topics/azure-event-grid-topics.png differ diff --git a/dashboards/azure-face-api/azure-face-api.json b/dashboards/azure-face-api/azure-face-api.json new file mode 100644 index 0000000000..1b74b33be3 --- /dev/null +++ b/dashboards/azure-face-api/azure-face-api.json @@ -0,0 +1,389 @@ +{ + "name": "Azure Face API", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Face API", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Face API\nThe Azure Face service provides AI algorithms that detect, recognize, and analyze human faces in images. Facial recognition software is important in many different scenarios, such as identity verification, touchless access control, and face blurring for privacy." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Success rate", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency", + "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 AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Face images trained", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.FaceImagesTrained`) AS 'Total Face Images Trained' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Face transactions", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.FaceTransactions`) AS 'Total Face Transactions' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Faces stored", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.FacesStored`) AS 'Total Faces Stored' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Face%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-face-api/azure-face-api.png b/dashboards/azure-face-api/azure-face-api.png new file mode 100644 index 0000000000..3208a69b7e Binary files /dev/null and b/dashboards/azure-face-api/azure-face-api.png differ diff --git a/dashboards/azure-form-recognizer/azure-form-recognizer.json b/dashboards/azure-form-recognizer/azure-form-recognizer.json new file mode 100644 index 0000000000..2a911d716b --- /dev/null +++ b/dashboards/azure-form-recognizer/azure-form-recognizer.json @@ -0,0 +1,285 @@ +{ + "name": "Azure Form Recognizer", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Form Recognizer", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Form Recognizer\nAzure Form Recognizer is a cloud-based Azure Applied AI Service that uses machine-learning models to extract key-value pairs, text, and tables from your documents. Form Recognizer analyzes your forms and documents, extracts text and data, maps field relationships as key-value pairs, and returns a structured JSON output." + } + }, + { + "title": "Proccessed pages", + "layout": { + "column": 1, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedPages`) AS 'Total Proccessed Pages' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors', SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' FACET azure.cognitiveservices.accounts.operationname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.Latency`) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Form%%Recognizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-form-recognizer/azure-form-recognizer.png b/dashboards/azure-form-recognizer/azure-form-recognizer.png new file mode 100644 index 0000000000..b3e3046ded Binary files /dev/null and b/dashboards/azure-form-recognizer/azure-form-recognizer.png differ diff --git a/dashboards/azure-functions-workflow/azure-functions-workflow.json b/dashboards/azure-functions-workflow/azure-functions-workflow.json new file mode 100644 index 0000000000..9966d54822 --- /dev/null +++ b/dashboards/azure-functions-workflow/azure-functions-workflow.json @@ -0,0 +1,327 @@ +{ + "name": "Azure Functions Workflow", + "description": null, + + "pages": [ + { + "name": "Azure Functions Workflow", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.HttpResponseTime) AS 'Average HTTP Response Time', SUM(azure.web.sites.Requests) AS 'Total Requests', AVERAGE(azure.web.sites.AppConnections) AS 'Average Number of Connections' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Functions Workflow\nAzure Functions Workflow refers to Azure Logic Apps under standard plan type.\n\nAzure Logic Apps is a cloud platform where you can create and run automated workflows with little to no code. By using the visual designer and selecting from prebuilt operations, you can quickly build a workflow that integrates and manages your apps, data, services and systems." + } + }, + { + "title": "Requests", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.Requests) AS 'Total Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests by HTTP status code", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.Http101) AS 'Total Requests Resulting HTTP 101', SUM(azure.web.sites.Http2xx) AS 'Total Requests Resulting HTTP 2xx', SUM(azure.web.sites.Http3xx) AS 'Total Requests Resulting HTTP 3xx', SUM(azure.web.sites.Http4xx) AS 'Total Requests Resulting HTTP 4xx', SUM(azure.web.sites.Http5xx) AS 'Total Requests Resulting HTTP 5xx' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Workflow runs started", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.WorkflowRunsStarted) AS 'Total Workflow Runs Started' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' FACET azure.web.sites.workflowname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Workflow job execution duration", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.WorkflowJobExecutionDuration) AS 'Average Workflow Job Execution Duration' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' FACET azure.web.sites.workflowname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Workflow triggers completed", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.WorkflowTriggersCompleted) AS 'Total Workflow Triggers Completed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Number of connections", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.AppConnections) AS 'Average Number of Connections' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP response time", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.HttpResponseTime) AS 'Average HTTP Response Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.BytesReceived) AS 'Total Data In', SUM(azure.web.sites.BytesSent) AS 'Total Data Out' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' AND azure.resourceKind LIKE '%workflowapp%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-functions-workflow/azure-functions-workflow.png b/dashboards/azure-functions-workflow/azure-functions-workflow.png new file mode 100644 index 0000000000..90a1bc78fb Binary files /dev/null and b/dashboards/azure-functions-workflow/azure-functions-workflow.png differ diff --git a/dashboards/azure-hdinsight/azure-hdinsight.json b/dashboards/azure-hdinsight/azure-hdinsight.json new file mode 100644 index 0000000000..fdd0ce44a4 --- /dev/null +++ b/dashboards/azure-hdinsight/azure-hdinsight.json @@ -0,0 +1,219 @@ +{ + "name": "Azure HDInsight", + "description": null, + + "pages": [ + { + "name": "Azure HDInsight", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.hdinsight.clusters.GatewayRequests`) AS 'Total Gateway Requests', MAX(`azure.hdinsight.clusters.NumActiveWorkers`) AS 'Maximum Number of Active Workers', MAX(`azure.hdinsight.clusters.PendingCPU`) AS 'Maximum Pending CPU', MAX(`azure.hdinsight.clusters.PendingMemory`) AS 'Maximum Pending Memory' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure HD Insight\nAzure HDInsight is a cloud-based big data analytics service provided by Microsoft Azure. It allows you to process large amounts of data using popular open-source frameworks such as Hadoop, Spark, Hive and others. With Azure HDInsight, you can easily create, manage and scale Hadoop clusters in the cloud, without the need for on-premises hardware or infrastructure." + } + }, + { + "title": "Gateway requests", + "layout": { + "column": 1, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.hdinsight.clusters.GatewayRequests`) AS 'Total Gateway Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active workers", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.hdinsight.clusters.NumActiveWorkers`) AS 'Maximum Number of Active Workers' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pending CPU", + "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 SUM(`azure.hdinsight.clusters.PendingCPU`) AS 'Total Pending CPU' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pending memory", + "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 SUM(`azure.hdinsight.clusters.PendingMemory`) AS 'Total Pending Memory' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gateway requests by HTTP status", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.hdinsight.clusters.GatewayRequests`) AS 'Total Gateway Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.hdinsight/clusters' FACET azure.hdinsight.clusters.HttpStatus TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-hdinsight/azure-hdinsight.png b/dashboards/azure-hdinsight/azure-hdinsight.png new file mode 100644 index 0000000000..777bb0ea65 Binary files /dev/null and b/dashboards/azure-hdinsight/azure-hdinsight.png differ diff --git a/dashboards/azure-immersive-reader/azure-immersive-reader.json b/dashboards/azure-immersive-reader/azure-immersive-reader.json new file mode 100644 index 0000000000..2ca5e0fc03 --- /dev/null +++ b/dashboards/azure-immersive-reader/azure-immersive-reader.json @@ -0,0 +1,283 @@ +{ + "name": "Azure Immersive Reader", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Immersive Reader", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Processed characters", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedCharacters`) AS 'Total Processed Characters' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Immersive Reader\nImmersive Reader is a tool that implements proven techniques to improve reading comprehension for emerging readers, language learners and people with learning differences." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Processed characters", + "layout": { + "column": 1, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedCharacters`) AS 'Total Processed Characters' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Immersive%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-immersive-reader/azure-immersive-reader.png b/dashboards/azure-immersive-reader/azure-immersive-reader.png new file mode 100644 index 0000000000..a45c1ac5d8 Binary files /dev/null and b/dashboards/azure-immersive-reader/azure-immersive-reader.png differ diff --git a/dashboards/azure-integration-service-environment/azure-integration-service-environment.json b/dashboards/azure-integration-service-environment/azure-integration-service-environment.json new file mode 100644 index 0000000000..fdebbf56ab --- /dev/null +++ b/dashboards/azure-integration-service-environment/azure-integration-service-environment.json @@ -0,0 +1,192 @@ +{ + "name": "Azure Integration Service Environment", + "description": null, + + "pages": [ + { + "name": "Azure Integration Service Environment", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.logic.integrationserviceenvironments.ActionLatency) AS 'Average Action Latency', SUM(azure.logic.integrationserviceenvironments.ActionsCompleted) AS 'Total Actions Completed', AVERAGE(azure.logic.integrationserviceenvironments.IntegrationServiceEnvironmentConnectorMemoryUsage) AS 'Average ISE Connector Memory Usage', SUM(azure.logic.integrationserviceenvironments.RunsCompleted) AS 'Total Runs Completed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.logic/integrationserviceenvironments'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Integration Service Environment\nAn integration service environment is a fully isolated and dedicated environment for all enterprise-scale integration needs. When you create a new integration service environment, it's injected into your Azure Virtual Network allowing you to deploy Logic Apps as a service in your VNET." + } + }, + { + "title": "Runs completed", + "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 SUM(azure.logic.integrationserviceenvironments.RunsCompleted) AS 'Total Runs Completed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.logic/integrationserviceenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Actions completed", + "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 SUM(azure.logic.integrationserviceenvironments.ActionsCompleted) AS 'Total Actions Completed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.logic/integrationserviceenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Action latency", + "layout": { + "column": 1, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.logic.integrationserviceenvironments.ActionLatency) AS 'Average Action Latency(seconds)' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.logic/integrationserviceenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "ISE connector memory usage", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.logic.integrationserviceenvironments.IntegrationServiceEnvironmentConnectorMemoryUsage) AS 'Average ISE Connector Memory Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.logic/integrationserviceenvironments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-iot-central-applications/azure-iot-central-applications.json b/dashboards/azure-iot-central-applications/azure-iot-central-applications.json new file mode 100644 index 0000000000..e340c53f05 --- /dev/null +++ b/dashboards/azure-iot-central-applications/azure-iot-central-applications.json @@ -0,0 +1,309 @@ +{ + "name": "Azure IoT Central Applications", + "description": null, + + "pages": [ + { + "name": "Azure IoT Central Applications", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.iotcentral.iotapps.provisionedDeviceCount`) AS 'Total Provisioned Devices', SUM(`azure.iotcentral.iotapps.connectedDeviceCount`) AS 'Total Connected Devices', SUM(`azure.iotcentral.iotapps.c2d.commands.success`) AS 'Total Successful Command Invocations', SUM(`azure.iotcentral.iotapps.deviceDataUsage`) AS 'Total Device Data Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure IoT Central Applications\nIoT Central is an IoT application platform as a service (aPaaS) that reduces the burden and cost of developing, managing, and maintaining IoT solutions. Use IoT Central to quickly evaluate your IoT scenario and assess the opportunities it can create for your business.You can quickly deploy a new IoT Central application and then customize it to your specific requirements. Application templates in Azure IoT Central are a tool to help you kickstart your IoT solution development." + } + }, + { + "title": "Command invocations", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.iotcentral.iotapps.c2d.commands.success) AS 'Total Successful Command Invocations', SUM(azure.iotcentral.iotapps.c2d.commands.failure) AS 'Total Failed Command Invocations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Response size of command invocations", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.iotcentral.iotapps.c2d.commands.responseSize) AS 'Total Response Size of Command Invocations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": " Device data usage", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.iotcentral.iotapps.deviceDataUsage`) AS 'Total Device Data Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Successful C2D and D2C", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.iotcentral.iotapps.c2d.property.read.success) AS 'Total Successful Device Property Reads', SUM(azure.iotcentral.iotapps.c2d.property.update.success) AS 'Total Successful Device Property Updates', SUM(azure.iotcentral.iotapps.d2c.property.read.success) AS 'Total Successful Device Property Reads from Devices', SUM(azure.iotcentral.iotapps.d2c.property.update.success) AS 'Total Successful Device Property Updates from Devices' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failed C2D and D2C", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.iotcentral.iotapps.c2d.property.read.failure) AS 'Total Failed Device Property Reads', SUM(azure.iotcentral.iotapps.c2d.property.update.failure) AS 'Total Failed Device Property Updates', SUM(azure.iotcentral.iotapps.d2c.property.read.failure) AS 'Total Failed Device Property Reads from Devices', SUM(azure.iotcentral.iotapps.d2c.property.update.failure) AS 'Total Failed Device Property Updates from Devices' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total telemetry message details", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.iotcentral.iotapps.d2c.telemetry.ingress.allProtocol`) AS 'Total Telemetry Message Send Attempts', SUM(`azure.iotcentral.iotapps.d2c.telemetry.ingress.success`) AS 'Total Telemetry Messages Sent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data export errors", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM metric SELECT SUM(`azure.iotcentral.iotapps.dataExport.error`) AS 'Total Data Export Errors' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total connected devices", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.iotcentral.iotapps.connectedDeviceCount`) AS 'Total Connected Devices' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.iotcentral/iotapps' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-iot-central-applications/azure-iot-central-applications.png b/dashboards/azure-iot-central-applications/azure-iot-central-applications.png new file mode 100644 index 0000000000..a8e9385d39 Binary files /dev/null and b/dashboards/azure-iot-central-applications/azure-iot-central-applications.png differ diff --git a/dashboards/azure-iot-hub/azure-iot-hub.json b/dashboards/azure-iot-hub/azure-iot-hub.json new file mode 100644 index 0000000000..3fb497448f --- /dev/null +++ b/dashboards/azure-iot-hub/azure-iot-hub.json @@ -0,0 +1,450 @@ +{ + "name": "Azure IoT Hub", + "description": null, + + "pages": [ + { + "name": "Azure IoT Hub", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.devices.iothubs.dailyMessageQuotaUsed`) AS 'Total number of Messages Used', MAX(`azure.devices.iothubs.connectedDeviceCount`) AS 'Total number of Connected Devices', MAX(`azure.devices.iothubs.totalDeviceCount`) AS 'Total number of IoT Devices', SUM(`azure.devices.iothubs.d2c.telemetry.ingress.success`) AS 'Total Telemetry Messages Sent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure IoT Hub\nAzure IoT Hub is a managed service hosted in the cloud that acts as a central message hub for communication between an IoT application and its attached devices." + } + }, + { + "title": "C2D messages", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.c2d.commands.egress.complete.success`) AS 'Total C2D message Deliveries Completed', SUM(`azure.devices.iothubs.c2d.commands.egress.abandon.success`) AS 'Total C2D messages abandoned', SUM(`azure.devices.iothubs.c2d.commands.egress.reject.success`) AS 'Total C2D messages Rejected' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "C2D messages expired", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.C2DMessagesExpired`) AS 'Total C2D Messages Expired' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device details", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.devices.iothubs.connectedDeviceCount`) AS 'Maximum Connected Devices', MAX(`azure.devices.iothubs.totalDeviceCount`) AS 'Maximum Devices' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Direct method invocation status", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.c2d.methods.success`) AS 'Total Successful Direct Method Invocations', SUM(`azure.devices.iothubs.c2d.methods.failure`) AS 'Total Failed Direct Method Invocations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Direct method invocation size", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.devices.iothubs.c2d.methods.requestSize`) AS 'Average Request Size of Direct Method Invocations', AVERAGE(`azure.devices.iothubs.c2d.methods.responseSize`) AS 'Average Response Size of Direct Method Invocations' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device data usage", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.deviceDataUsage`) AS 'Total Device Data Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Routing deliveries by status", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.RoutingDeliveries`) AS 'Total Routing Deliveries' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' FACET azure.devices.iothubs.result TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Routing delivery latency", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.devices.iothubs.RoutingDeliveryLatency`) AS 'Average Routing Delivery Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' FACET azure.devices.iothubs.endpointtype TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "default" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Routing delivery message size in bytes", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.RoutingDataSizeInBytesDelivered`) AS 'Total Routing Delivery Message Size in Bytes' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' FACET azure.devices.iothubs.endpointtype TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Twin queries by status", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.twinQueries.success`) AS 'Total Successful Twin Queries', SUM(`azure.devices.iothubs.twinQueries.failure`) AS 'Total Failed Twin Queries' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "D2C telemetry ingress details", + "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 SUM(`azure.devices.iothubs.d2c.telemetry.ingress.allProtocol`) AS 'Total Telemetry Message Send Attempts', SUM(`azure.devices.iothubs.d2c.telemetry.ingress.success`) AS 'Total Telemetry Messages Sent', SUM(`azure.devices.iothubs.d2c.telemetry.ingress.sendThrottle`) AS 'Total Number of Throttling Errors' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "D2C telemetry egress details", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.devices.iothubs.d2c.telemetry.egress.success`) AS 'Total Telemetry Messages Delivered', SUM(`azure.devices.iothubs.d2c.telemetry.egress.dropped`) AS 'Total Telemetry Messages Dropped' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.devices/iothubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-iot-hub/azure-iot-hub.png b/dashboards/azure-iot-hub/azure-iot-hub.png new file mode 100644 index 0000000000..27934dcf5e Binary files /dev/null and b/dashboards/azure-iot-hub/azure-iot-hub.png differ diff --git a/dashboards/azure-language-service/azure-language-service.json b/dashboards/azure-language-service/azure-language-service.json new file mode 100644 index 0000000000..8f95161e0f --- /dev/null +++ b/dashboards/azure-language-service/azure-language-service.json @@ -0,0 +1,317 @@ +{ + "name": "Azure Language Service", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Language", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Language\nAzure Cognitive Service for Language is a cloud-based service that provides Natural Language Processing (NLP) features for understanding and analyzing text. Use this service to help build intelligent applications using the web-based Language Studio, REST APIs, and client libraries." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls By Operation Name' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Total data", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Processed health text records", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedHealthTextRecords`) AS 'Total Processed Health Text Records' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processed text records", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ProcessedTextRecords`) AS 'Total Processed Text Records' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Language Service%' OR azure.cognitiveservices.accounts.apiname LIKE '%Text%%Analytics%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-language-service/azure-language-service.png b/dashboards/azure-language-service/azure-language-service.png new file mode 100644 index 0000000000..19d5baf87c Binary files /dev/null and b/dashboards/azure-language-service/azure-language-service.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning.png b/dashboards/azure-machine-learning/Azure-Machine-Learning.png new file mode 100644 index 0000000000..2f8fbe27de Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning01.png b/dashboards/azure-machine-learning/Azure-Machine-Learning01.png new file mode 100644 index 0000000000..6cec96b9c7 Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning01.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning02.png b/dashboards/azure-machine-learning/Azure-Machine-Learning02.png new file mode 100644 index 0000000000..d7ef549f0b Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning02.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning03.png b/dashboards/azure-machine-learning/Azure-Machine-Learning03.png new file mode 100644 index 0000000000..7e87761719 Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning03.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning04.png b/dashboards/azure-machine-learning/Azure-Machine-Learning04.png new file mode 100644 index 0000000000..b22016e9cd Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning04.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning05.png b/dashboards/azure-machine-learning/Azure-Machine-Learning05.png new file mode 100644 index 0000000000..f2b1b3cc88 Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning05.png differ diff --git a/dashboards/azure-machine-learning/Azure-Machine-Learning06.png b/dashboards/azure-machine-learning/Azure-Machine-Learning06.png new file mode 100644 index 0000000000..b9f4cf4ec6 Binary files /dev/null and b/dashboards/azure-machine-learning/Azure-Machine-Learning06.png differ diff --git a/dashboards/azure-machine-learning/azure-machine-learning.json b/dashboards/azure-machine-learning/azure-machine-learning.json new file mode 100644 index 0000000000..466d59e9d7 --- /dev/null +++ b/dashboards/azure-machine-learning/azure-machine-learning.json @@ -0,0 +1,1718 @@ +{ + "name": "Azure Machine Learning using Azure Monitor", + "description": null, + "pages": [ + { + "name": "Job Executions", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Machine Learning\nIt enables data scientists and developers to rapidly construct, deploy, and oversee high-quality models, instilling them with a sense of assurance. This expedites the journey to achieving value by incorporating cutting-edge machine learning operations (MLOps), seamless compatibility with open-source tools, and a suite of integrated resources." + } + }, + { + "title": "Cancel requested runs", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.CancelRequestedRuns) AS 'CancelRequestedRuns'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Failed runs", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.FailedRuns) AS 'FailedRuns'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Cancelled runs", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.CancelledRuns) AS 'CancelledRuns'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Completed runs", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.CompletedRuns) AS 'CompletedRuns'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1000000 + } + ] + } + }, + { + "title": "Queued runs", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.QueuedRuns) AS 'QueuedRuns'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Not responding and Not started runs", + "layout": { + "column": 1, + "row": 3, + "width": 8, + "height": 2 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.NotRespondingRuns) AS 'NotRespondingRuns', sum(azure.machinelearningservices.workspaces.NotStartedRuns) AS 'NotStartedRuns' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.Errors) AS 'Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Warnings", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.Warnings) AS 'Warnings'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Provisioning and Preparing runs", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ProvisioningRuns) AS 'ProvisioningRuns', average(azure.machinelearningservices.workspaces.PreparingRuns) AS 'PreparingRuns' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Started and Starting runs", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.StartedRuns) AS 'StartedRuns', sum(azure.machinelearningservices.workspaces.StartingRuns) AS 'StartingRuns' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Finalizing runs", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.FinalizingRuns) AS 'FinalizingRuns' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Model Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Machine Learning Model\nThe Azure Machine Learning Model can be generated through either an Azure Machine Learning training run or through an external model training process that occurs outside of the Azure ecosystem." + } + }, + { + "title": "Model deploy failed", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelDeployFailed) AS 'ModelDeployFailed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Model register failed", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelRegisterFailed) AS 'ModelRegisterFailed'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Model deploy succeeded", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelDeploySucceeded) AS 'ModelDeploySucceeded'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100000 + } + ] + } + }, + { + "title": "Model register succeeded", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelRegisterSucceeded) AS 'ModelRegisterSucceeded'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100000 + } + ] + } + }, + { + "title": "Model deploy started", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 4 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.ModelDeployStarted) AS 'ModelDeployStarted' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Quota Metrics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Quotas for Machine Learning\nAzure uses limits and quotas to prevent budget overruns due to fraud, and to honor Azure capacity constraints." + } + }, + { + "title": "Quota utilization percentage", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": " FROM Metric SELECT average(azure.machinelearningservices.workspaces.QuotaUtilizationPercentage) AS 'QuotaUtilizationPercentage' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cores Information", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.TotalCores) AS 'TotalCores',average(azure.machinelearningservices.workspaces.IdleCores) AS 'IdleCores',average(azure.machinelearningservices.workspaces.ActiveCores) AS 'ActiveCores',average(azure.machinelearningservices.workspaces.LeavingCores) AS 'LeavingCores',average(azure.machinelearningservices.workspaces.UnusableCores) AS 'UnusableCores',average(azure.machinelearningservices.workspaces.PreemptedCores) AS 'PreemptedCores' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Nodes Information", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.TotalNodes) AS 'TotalNodes',average(azure.machinelearningservices.workspaces.IdleNodes) AS 'IdleNodes',average(azure.machinelearningservices.workspaces.ActiveNodes) AS 'ActiveNodes',average(azure.machinelearningservices.workspaces.LeavingNodes) AS 'LeavingNodes',average(azure.machinelearningservices.workspaces.UnusableNodes) AS 'UnusableNodes',average(azure.machinelearningservices.workspaces.PreemptedNodes) AS 'PreemptedNodes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Workspace CPU Usage", + "description": null, + "widgets": [ + { + "title": "Cpu memory capacity (MB)", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.CpuMemoryCapacityMegabytes)/1e+6 AS 'CpuMemoryCapacityMegabytes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Cpu capacity millicores", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.CpuCapacityMillicores) AS 'CpuCapacityMillicores'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Cpu utilization", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.CpuUtilization) AS 'CpuUtilization' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DiskAvailMegabytes & DiskUsedMegabytes", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.DiskAvailMegabytes) AS 'DiskAvailMegabytes', average(azure.machinelearningservices.workspaces.DiskUsedMegabytes) AS 'DiskUsedMegabytes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk read & write megabytes", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.DiskReadMegabytes) AS 'DiskReadMegabytes',average(azure.machinelearningservices.workspaces.DiskWriteMegabytes) AS 'DiskWriteMegabytes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cpu memory utilization megabytes", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.CpuMemoryUtilizationMegabytes) AS 'CpuMemoryUtilizationMegabytes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Workspace GPU Usage", + "description": null, + "widgets": [ + { + "title": "IBTransmitMegabytes", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.IBTransmitMegabytes) AS 'IBTransmitMegabytes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "IBReceiveMegabytes", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.IBReceiveMegabytes) AS 'IBReceiveMegabytes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Gpu Memory Capacity & Gpu Memory Utilization Megabytes", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.GpuMemoryCapacityMegabytes) AS 'GpuMemoryCapacityMegabytes', average(azure.machinelearningservices.workspaces.GpuMemoryUtilizationMegabytes) AS 'GpuMemoryUtilizationMegabytes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu capacity ( Milli GPUs )", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.GpuCapacityMilliGPUs) AS 'GpuCapacityMilliGPUs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu energy joules", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.GpuEnergyJoules) AS 'GpuEnergyJoules' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu memory & Gpu utilization (%)", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.GpuMemoryUtilizationPercentage) AS 'GpuMemoryUtilizationPercentage', average(azure.machinelearningservices.workspaces.GpuUtilizationPercentage) AS 'GpuUtilizationPercentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu utilization & Gpu utilization (MilliGPUs)", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.GpuUtilization) AS 'GpuUtilization',average(azure.machinelearningservices.workspaces.GpuUtilizationMilliGPUs) AS 'GpuUtilizationMilliGPUs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Storage API failure & success count", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(azure.machinelearningservices.workspaces.StorageAPIFailureCount) AS 'StorageAPIFailureCount',sum(azure.machinelearningservices.workspaces.StorageAPISuccessCount) AS 'StorageAPISuccessCount' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network input & output megabytes", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.NetworkInputMegabytes) AS 'NetworkInputMegabytes',average(azure.machinelearningservices.workspaces.NetworkOutputMegabytes) AS 'NetworkOutputMegabytes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Online Endpoints", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Machine Learning Online Endpoints\nThis endpoints are used for online (real-time) inferencing. They deploy models under a web server that can return predictions under the HTTP protocol." + } + }, + { + "title": "Connections active", + "layout": { + "column": 4, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.ConnectionsActive) as 'ConnectionsActive'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "New connections per second", + "layout": { + "column": 6, + "row": 1, + "width": 2, + "height": 2 + }, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.NewConnectionsPerSecond) AS 'NewConnectionsPerSecond'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": -1 + } + ] + } + }, + { + "title": "Network bytes", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.NetworkBytes) AS 'NetworkBytes' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Request latency", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.RequestLatency) AS 'RequestLatency', \naverage(azure.machinelearningservices.workspaces.onlineendpoints.RequestLatency_P50) AS 'RequestLatency_P50',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.RequestLatency_P90) AS 'RequestLatency_P90',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.RequestLatency_P95) AS 'RequestLatency_P95',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.RequestLatency_P99) AS 'RequestLatency_P99' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests per minute", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.RequestsPerMinute) AS 'RequestsPerMinute' FACET azure.machinelearningservices.workspaces.onlineendpoints.deployment TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_MINUTE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "New connections per second", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.NewConnectionsPerSecond) AS 'NewConnectionsPerSecond' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data collection Events & Errors per minute", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.DataCollectionErrorsPerMinute) AS 'DataCollectionErrorsPerMinute',average(azure.machinelearningservices.workspaces.onlineendpoints.DataCollectionEventsPerMinute) AS 'DataCollectionEventsPerMinute' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_MINUTE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Online Endpoint Deployments", + "description": null, + "widgets": [ + { + "title": "Request latency", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.RequestLatency_P50) AS 'RequestLatency_P50',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.deployments.RequestLatency_P90) AS 'RequestLatency_P90',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.deployments.RequestLatency_P95) AS 'RequestLatency_P95',\naverage(azure.machinelearningservices.workspaces.onlineendpoints.deployments.RequestLatency_P99) AS 'RequestLatency_P99' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Cpu utilization percentage", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.CpuUtilizationPercentage) AS 'CpuUtilizationPercentage' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests per minute", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.RequestsPerMinute) AS 'RequestsPerMinute' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_MINUTE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk utilization", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT max(azure.machinelearningservices.workspaces.onlineendpoints.deployments.DiskUtilization)/60 AS 'DiskUtilization' FACET azure.resourceId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Deployment capacity", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.DeploymentCapacity) AS 'DeploymentCapacity' FACET azure.resourceId TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu utilization percentage", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.GpuUtilizationPercentage) AS 'GpuUtilizationPercentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Gpu energy joules", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.GpuEnergyJoules) AS 'GpuEnergyJoules' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data collection Events & Errors per minute", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.DataCollectionErrorsPerMinute) AS 'DataCollectionErrorsPerMinute',average(azure.machinelearningservices.workspaces.onlineendpoints.deployments.DataCollectionEventsPerMinute) AS 'DataCollectionEventsPerMinute' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_MINUTE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/dashboards/azure-maps/azure-maps.json b/dashboards/azure-maps/azure-maps.json new file mode 100644 index 0000000000..54ef199d83 --- /dev/null +++ b/dashboards/azure-maps/azure-maps.json @@ -0,0 +1,192 @@ +{ + "name": "Azure Maps", + "description": null, + + "pages": [ + { + "name": "Azure Maps", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.maps.accounts.Availability) As 'Average Availability', AVERAGE(azure.maps.accounts.CreatorUsage) As 'Average Creator Usage', SUM(azure.maps.accounts.Usage) As 'Total Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.maps/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Maps\nAzure Maps is a suite of geospatial mapping services that enable developers and enterprise organizations to build intelligent location-enabled and map-based experiences. Build compelling functionality including asset tracking, vehicle routing, map creation, geolocation, and more into your mobile- and web-based apps." + } + }, + { + "title": "Availability", + "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 AVERAGE(azure.maps.accounts.Availability)/100 As 'Average Availability' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.maps/accounts' FACET azure.maps.accounts.ApiCategory TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Creator usage", + "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 AVERAGE(azure.maps.accounts.CreatorUsage) As 'Average Creator Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.maps/accounts' FACET azure.maps.accounts.ServiceName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Usage by api category", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.maps.accounts.Usage) As 'Total Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.maps/accounts' FACET azure.maps.accounts.ApiCategory TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Usage by api", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.maps.accounts.Usage) As 'Total Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.maps/accounts' FACET azure.maps.accounts.ApiName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-maps/azure-maps.png b/dashboards/azure-maps/azure-maps.png new file mode 100644 index 0000000000..600f37fe5d Binary files /dev/null and b/dashboards/azure-maps/azure-maps.png differ diff --git a/dashboards/azure-media-services-live-events/azure-media-services-live-events.json b/dashboards/azure-media-services-live-events/azure-media-services-live-events.json new file mode 100644 index 0000000000..cfa86c955e --- /dev/null +++ b/dashboards/azure-media-services-live-events/azure-media-services-live-events.json @@ -0,0 +1,201 @@ +{ + "name": "Azure Media Services Live Events", + "description": null, + + "pages": [ + { + "name": "Azure Media Services Live Events", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.liveevents.IngestBitrate) AS 'Average Live Event Ingest Bitrate', MAX(azure.media.mediaservices.liveevents.IngestDriftValue) AS 'Maximum Live Event Ingest Drift Value', MAX(azure.media.mediaservices.liveevents.IngestLastTimestamp) AS 'Maximum Live Event Ingest Last Timestamp(ms)', MAX(azure.media.mediaservices.liveevents.LiveOutputLastTimestamp) AS 'Maximum Last Output Timestamp(ms)' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/liveevents'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Media Services Live Events\nAzure Media Services Live Events is a service provided by Microsoft Azure that enables live video and audio streaming for various events such as conferences, webinars, concerts, and sports events. It allows users to capture, encode, package, and deliver live video content to audiences worldwide via the internet." + } + }, + { + "title": "Ingest bitrate by track name", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.liveevents.IngestBitrate) AS 'Average Live Event Ingest Bitrate' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/liveevents' FACET azure.media.mediaservices.liveevents.trackname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ingest drift value by track name", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.media.mediaservices.liveevents.IngestDriftValue) AS 'Maximum Live Event Ingest Drift Value' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/liveevents' FACET azure.media.mediaservices.liveevents.TrackName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Live output last timestamp by track name", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.media.mediaservices.liveevents.LiveOutputLastTimestamp) AS 'Maximum Last output Timestamp' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/liveevents' FACET azure.media.mediaservices.liveevents.TrackName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ingest last timestamp by track name", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.media.mediaservices.liveevents.IngestLastTimestamp) AS 'Maximum Live Event Ingest Last Timestamp' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/liveevents' FACET azure.media.mediaservices.liveevents.TrackName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-media-services-live-events/azure-media-services-live-events.png b/dashboards/azure-media-services-live-events/azure-media-services-live-events.png new file mode 100644 index 0000000000..efb7b333c9 Binary files /dev/null and b/dashboards/azure-media-services-live-events/azure-media-services-live-events.png differ diff --git a/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.json b/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.json new file mode 100644 index 0000000000..b9e33f1bda --- /dev/null +++ b/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.json @@ -0,0 +1,267 @@ +{ + "name": "Azure Media Services Streaming Endpoints", + "description": null, + + "pages": [ + { + "name": "Azure Mediaservices Streaming Endpoints", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.streamingendpoints.SuccessE2ELatency) AS 'Average Success End To End Latency', AVERAGE(azure.media.mediaservices.streamingendpoints.EgressBandwidth) AS 'Average Egress Bandwidth', SUM(azure.media.mediaservices.streamingendpoints.Requests) AS 'Total Requests', SUM(azure.media.mediaservices.streamingendpoints.Egress) AS 'Total Egress' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Media Services Streaming Endpoints\nA Streaming Endpoint represents a dynamic (just-in-time) packaging and origin service that can deliver your live and on-demand content directly to a client player app, using one of the common streaming media protocols (HLS or DASH)." + } + }, + { + "title": "Egress by output format", + "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 SUM(azure.media.mediaservices.streamingendpoints.Egress) AS 'Total Egress' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' FACET azure.media.mediaservices.streamingendpoints.OutputFormat TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Egress bandwidth", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.streamingendpoints.EgressBandwidth) AS 'Average Egress Bandwidth' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + } + } + }, + { + "title": "Requests by output format", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.media.mediaservices.streamingendpoints.Requests) AS 'Total Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' FACET azure.media.mediaservices.streamingendpoints.OutputFormat TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Requests by HTTP status code", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.media.mediaservices.streamingendpoints.Requests) AS 'Total Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' FACET azure.media.mediaservices.streamingendpoints.HttpStatusCode TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests by error code", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.media.mediaservices.streamingendpoints.Requests) AS 'Total Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' FACET azure.media.mediaservices.streamingendpoints.ErrorCode TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Success end to end latency by output format", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.streamingendpoints.SuccessE2ELatency) AS 'Average Success End to End Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices/streamingendpoints' FACET azure.media.mediaservices.streamingendpoints.outputformat TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.png b/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.png new file mode 100644 index 0000000000..c0e42cddf4 Binary files /dev/null and b/dashboards/azure-media-services-streaming-endpoints/azure-media-services-streaming-endpoints.png differ diff --git a/dashboards/azure-media-services-video-analyzer/azure-media-services-video-analyzer.json b/dashboards/azure-media-services-video-analyzer/azure-media-services-video-analyzer.json new file mode 100644 index 0000000000..ca2543adbc --- /dev/null +++ b/dashboards/azure-media-services-video-analyzer/azure-media-services-video-analyzer.json @@ -0,0 +1,123 @@ +{ + "name": "Azure Media Services Video Analyzer", + "description": null, + + "pages": [ + { + "name": "Azure Media Services Video Analyzer", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(azure.media.mediaservices.videoanalyzer.IngressBytes) AS 'Total Ingress Bytes', sum(azure.media.mediaservices.videoanalyzer.Pipelines) AS 'Total Pipelines' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.media/videoanalyzers'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Media Services Video Analyzer\nAzure Video Analyzer for Media Azure Video Analyzer for Media, previously known as Azure Video Indexer, is available under AMS and also as a separate Azure service." + } + }, + { + "title": "Pipelines", + "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 sum(azure.media.mediaservices.videoanalyzer.Pipelines) AS 'Total Pipelines' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.media/videoanalyzers' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ingress bytes", + "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 sum(azure.media.mediaservices.videoanalyzer.IngressBytes) AS 'Total Ingress Bytes' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.media/videoanalyzers' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-media-services/azure-media-services.json b/dashboards/azure-media-services/azure-media-services.json new file mode 100644 index 0000000000..4be08156ec --- /dev/null +++ b/dashboards/azure-media-services/azure-media-services.json @@ -0,0 +1,258 @@ +{ + "name": "Azure Media Services", + "description": null, + + "pages": [ + { + "name": "Azure Media Services", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.media.mediaservices.AssetCount) AS 'Maximum Asset Count', AVERAGE(azure.media.mediaservices.ChannelsAndLiveEventsCount) AS 'Average Live Event Count', AVERAGE(azure.media.mediaservices.RunningChannelsAndLiveEventsCount) AS 'Average Running Live Event Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Media Services\nAzure Media Services is a cloud-based platform that enables you to build solutions that achieve broadcast-quality video streaming, enhance accessibility and distribution, analyze content and much more." + } + }, + { + "title": "Asset count", + "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": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.AssetCount) AS 'Average Asset Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Live event details", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.media.mediaservices.ChannelsAndLiveEventsCount`) AS 'Average Live Event Count', AVERAGE(`azure.media.mediaservices.RunningChannelsAndLiveEventsCount`) AS 'Average Running Live Event Count', MAX(`azure.media.mediaservices.MaxRunningChannelsAndLiveEventsCount`) AS 'Maximum Running Live Event Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Jobs scheduled", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.media.mediaservices.JobsScheduled) AS 'Average Jobs Scheduled' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Policy count", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.media.mediaservices.ContentKeyPolicyCount`) AS 'Average Content Key Policy Count', AVERAGE(`azure.media.mediaservices.StreamingPolicyCount`) AS 'Average Streaming Policy Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Streaming and transform quota", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.media.mediaservices.TransformQuota`) AS 'Average Transform Quota', AVERAGE(`azure.media.mediaservices.StreamingPolicyQuota`) AS 'Average Streaming Policy Quota' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Quota details", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.media.mediaservices.AssetQuota`) AS 'Average Asset Quota', AVERAGE(`azure.media.mediaservices.JobQuota`) AS 'Average Job Quota', AVERAGE(`azure.media.mediaservices.ContentKeyPolicyQuota`) AS 'Average Content Key Policy Quota' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.media/mediaservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-media-services/azure-media-services.png b/dashboards/azure-media-services/azure-media-services.png new file mode 100644 index 0000000000..5434c72d64 Binary files /dev/null and b/dashboards/azure-media-services/azure-media-services.png differ diff --git a/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.json b/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.json new file mode 100644 index 0000000000..26616b5070 --- /dev/null +++ b/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.json @@ -0,0 +1,246 @@ +{ + "name": "Azure NetApp Capacity Pools", + "description": null, + + "pages": [ + { + "name": "Azure NetApp Capacity Pools", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolAllocatedSize) AS 'Average Pool Allocated Size', AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolAllocatedUsed) AS 'Average Pool Allocated To Volume Size', AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolTotalLogicalSize) AS 'Average Pool Consumed Size', AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolProvisionedThroughput) AS 'Average Provisioned Throughput' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure NetApp Capacity Pools\nA capacity pool is measured by its provisioned capacity. The capacity is provisioned by the fixed SKUs that you purchased (for example, a 4-TiB capacity). Each capacity pool can belong to only one NetApp account. However, you can have multiple capacity pools within a NetApp account." + } + }, + { + "title": "Pool allocated size", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolAllocatedSize) AS 'Average Pool Allocated Size' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total snapshot size for the pool", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolTotalSnapshotSize) AS 'Total Snapshot Size For The Pool' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pool allocated to volume size", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolAllocatedUsed) AS 'Average Pool Allocated To Volume Size' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool consumed size", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolTotalLogicalSize) AS 'Average Pool Consumed Size' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Provisioned throughput for the pool", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolProvisionedThroughput) AS 'Average Provisioned Throughput For The Pool' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool allocated to volume throughput", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.VolumePoolAllocatedToVolumeThroughput) AS 'Average Pool Allocated Throughput' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] + } diff --git a/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.png b/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.png new file mode 100644 index 0000000000..1f5ec3a5f7 Binary files /dev/null and b/dashboards/azure-netapp-capacity-pools/azure-netapp-capacity-pools.png differ diff --git a/dashboards/azure-netapp-files/azure-netapp-files.json b/dashboards/azure-netapp-files/azure-netapp-files.json new file mode 100644 index 0000000000..6778e0a2dd --- /dev/null +++ b/dashboards/azure-netapp-files/azure-netapp-files.json @@ -0,0 +1,270 @@ +{ + "name": "Azure NetApp Files", + "description": null, + + "pages": [ + { + "name": "Azure NetApp Files", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.AverageWriteLatency`) AS 'Average Write latency', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.TotalThroughput`) AS 'Average Throughput', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.XregionReplicationLagTime`) AS 'Average Volume Replication Lag Time', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.WriteIops`) AS 'Average Write Iops' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure NetApp Files\nAzure NetApp Files is an Azure native, first-party, enterprise-class, high-performance file storage service.\n It allows you to create and manage high-performance, highly available and scalable file shares, using the same protocols and tools. Azure NetApp Files supports SMB and NFS protocols and can be used for various use cases such as file sharing, home directories, databases, high-performance computing and more." + } + }, + { + "title": "Latency", + "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 AVERAGE(azure.netapp.netappaccounts.capacitypools.volumes.AverageReadLatency) AS 'Average Read Latency', AVERAGE(azure.netapp.netappaccounts.capacitypools.volumes.AverageWriteLatency) AS 'Average Write Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throughput", + "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 AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.ReadThroughput`) AS 'Average Read Throughput', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.WriteThroughput`) AS 'Average Write Throughput', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.OtherThroughput`) AS 'Average Other Throughput' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Volume consumed size percentage", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.VolumeConsumedSizePercentage`) AS 'Average Volume Consumed Size Percentage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Iops", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.WriteIops`) AS 'Average Write Iops', AVERAGE(`azure.netapp.netappaccounts.capacitypools.volumes.ReadIops`) AS 'Average Read Iops' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Volume replication progress", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.volumes.XregionReplicationRelationshipProgress) AS 'Average Volume Replication Progress' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Volume replication lag time", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.netapp.netappaccounts.capacitypools.volumes.XregionReplicationLagTime) AS 'Average Volume Replication Lag Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.netapp/netappaccounts/capacitypools/volumes' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-netapp-files/azure-netapp-files.png b/dashboards/azure-netapp-files/azure-netapp-files.png new file mode 100644 index 0000000000..b29cc0ff6d Binary files /dev/null and b/dashboards/azure-netapp-files/azure-netapp-files.png differ diff --git a/dashboards/azure-network-interface/azure-network-interface.json b/dashboards/azure-network-interface/azure-network-interface.json new file mode 100644 index 0000000000..a05a1210ac --- /dev/null +++ b/dashboards/azure-network-interface/azure-network-interface.json @@ -0,0 +1,202 @@ +{ + "name": "Azure Network Interface", + "description": null, + + "pages": [ + { + "name": "Azure Network Interface", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.networkinterfaces.BytesReceivedRate) AS 'Total Bytes Received', SUM(azure.network.networkinterfaces.BytesSentRate) AS 'Total Bytes Sent', SUM(azure.network.networkinterfaces.PacketsReceivedRate) AS 'Total Packets Received', SUM(azure.network.networkinterfaces.PacketsSentRate) AS 'Total Packets Sent'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Network Interface\nA network interface enables an Azure VM to communicate with internet, Azure and on-premises resources. A VM has one or more network interfaces." + } + }, + { + "title": "Packets received", + "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 SUM(azure.network.networkinterfaces.PacketsReceivedRate) AS 'Total Packets Received' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Packets sent", + "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 SUM(azure.network.networkinterfaces.PacketsSentRate) As 'Total Packets Sent' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes sent", + "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 SUM(azure.network.networkinterfaces.BytesSentRate) As 'Total Bytes Sent' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes received", + "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 SUM(azure.network.networkinterfaces.BytesReceivedRate) As 'Total Bytes Received' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-network-interface/azure-network-interface.png b/dashboards/azure-network-interface/azure-network-interface.png new file mode 100644 index 0000000000..dd7f21d07a Binary files /dev/null and b/dashboards/azure-network-interface/azure-network-interface.png differ diff --git a/dashboards/azure-network-watcher/azure-network-watcher.json b/dashboards/azure-network-watcher/azure-network-watcher.json new file mode 100644 index 0000000000..a71aee60c4 --- /dev/null +++ b/dashboards/azure-network-watcher/azure-network-watcher.json @@ -0,0 +1,276 @@ +{ + "name": "Azure Network Watcher", + "description": null, + + "pages": [ + { + "name": "Azure Network Watcher", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.ChecksFailedPercent) AS 'Average Checks Failed Percent', AVERAGE(azure.network.networkwatchers.connectionmonitors.RoundTripTimeMs) AS 'Average Round-Trip Time', SUM(azure.network.networkwatchers.connectionmonitors.TestResult) AS 'Total Test Result' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Network Watcher\nAzure Network Watcher provides tools to monitor, diagnose, view metrics, and enable or disable logs for resources in an Azure virtual network. Network Watcher is designed to monitor and repair the network health of IaaS (Infrastructure-as-a-Service) products including virtual machines (VMs), virtual networks (VNets), application gateways, load balancers, etc." + } + }, + { + "title": "Test result", + "layout": { + "column": 1, + "row": 3, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.networkwatchers.connectionmonitors.TestResult) AS 'Total Test Result' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.testgroupname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checks failed percent", + "layout": { + "column": 6, + "row": 3, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.ChecksFailedPercent)/100 AS 'Average Checks Failed Percent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Round-trip time by testgroup name", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.RoundTripTimeMs) AS 'Average Round-Trip Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.testgroupname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Round-trip time by protocol", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.RoundTripTimeMs) AS 'Average Round-Trip Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.protocol TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Checks failed percent by source name", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.ChecksFailedPercent) AS 'Average Checks Failed Percent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.sourcename AS 'Source'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checks failed percent by destination name", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.ChecksFailedPercent) AS 'Average Checks Failed Percent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.destinationname AS 'Destination'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checks failed percent by protocol", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.networkwatchers.connectionmonitors.ChecksFailedPercent) AS 'Average Checks Failed Percent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/networkwatchers/connectionmonitors' FACET azure.network.networkwatchers.connectionmonitors.protocol AS 'Protocol'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-network-watcher/azure-network-watcher.png b/dashboards/azure-network-watcher/azure-network-watcher.png new file mode 100644 index 0000000000..83a6b2fea2 Binary files /dev/null and b/dashboards/azure-network-watcher/azure-network-watcher.png differ diff --git a/dashboards/azure-notification-hubs/azure-notification-hubs.json b/dashboards/azure-notification-hubs/azure-notification-hubs.json new file mode 100644 index 0000000000..16f467f623 --- /dev/null +++ b/dashboards/azure-notification-hubs/azure-notification-hubs.json @@ -0,0 +1,243 @@ +{ + "name": "Azure Notification Hubs", + "description": null, + + "pages": [ + { + "name": "Azure Notification Hubs", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.notificationhubs.namespaces.notificationhubs.incoming) AS 'Total Incoming Messages', SUM(azure.notificationhubs.namespaces.notificationhubs.incoming.all.failedrequests) AS 'Total Incoming Failed Requests', SUM(azure.notificationhubs.namespaces.notificationhubs.incoming.all.requests) AS 'Total Incoming Requests', SUM(azure.notificationhubs.namespaces.notificationhubs.notificationhub.pushes) AS 'Total Outgoing Notifications' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Notification Hubs\nAzure Notification Hubs provide an easy-to-use and scaled-out push engine that enables you to send notifications to any platform (iOS, Android, Windows, etc.) from any back-end (cloud or on-premises). Notification Hubs works great for both enterprise and consumer scenarios." + } + }, + { + "title": "All incoming requests", + "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 SUM(azure.notificationhubs.namespaces.notificationhubs.incoming.all.requests) AS 'Total Incoming Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Incoming messages", + "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 SUM(azure.notificationhubs.namespaces.notificationhubs.incoming) AS 'Total Incoming Messages' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "All incoming failed requests", + "layout": { + "column": 1, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.notificationhubs.namespaces.notificationhubs.incoming.all.failedrequests) AS 'Total Incoming Failed Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bad or expired channel errors", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.notificationhubs.namespaces.notificationhubs.outgoing.allpns.badorexpiredchannel`) AS 'Total Bad or Expired Channel Errors' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pending scheduled notifications", + "layout": { + "column": 1, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.notificationhubs.namespaces.notificationhubs.scheduled.pending`) AS 'Total Pending Scheduled Notifications' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "All outgoing notifications", + "layout": { + "column": 6, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.notificationhubs.namespaces.notificationhubs.notificationhub.pushes) AS 'Total Outgoing Notifications' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.notificationhubs/namespaces/notificationhubs' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-notification-hubs/azure-notification-hubs.png b/dashboards/azure-notification-hubs/azure-notification-hubs.png new file mode 100644 index 0000000000..14200a7df1 Binary files /dev/null and b/dashboards/azure-notification-hubs/azure-notification-hubs.png differ diff --git a/dashboards/azure-peering-service/azure-peering-service.json b/dashboards/azure-peering-service/azure-peering-service.json new file mode 100644 index 0000000000..e8fb456ca6 --- /dev/null +++ b/dashboards/azure-peering-service/azure-peering-service.json @@ -0,0 +1,63 @@ +{ + "name": "Azure Peering Service", + "description": null, + + "pages": [ + { + "name": "Azure Peering Service", + "description": null, + "widgets": [ + { + "title": "Round trip time", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.peering.peeringservices.RoundTripTime) AS 'Average Round Trip Time' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.peering/peeringservices' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Peering Service\nAzure Peering Service is a networking service that enhances the connectivity to Microsoft cloud services such as Microsoft 365, Dynamics 365, software as a service (SaaS) services, Azure, or any Microsoft services accessible via the public internet." + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-peering/azure-peering.json b/dashboards/azure-peering/azure-peering.json new file mode 100644 index 0000000000..5468e0dd37 --- /dev/null +++ b/dashboards/azure-peering/azure-peering.json @@ -0,0 +1,237 @@ +{ + "name": "Azure Peering", + "description": null, + + "pages": [ + { + "name": "Azure Peering", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.peering.peerings.EgressTrafficRate`) AS 'Average Egress Traffic Rate', AVERAGE(`azure.peering.peerings.IngressTrafficRate`) AS 'Average Ingress Traffic Rate', AVERAGE(`azure.peering.peerings.SessionAvailability`) AS 'Average Session Availability' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AZURE PEERINGS\nPeering is the interconnection between Microsoft's global network (ASN AS8075) and your network for the purpose of exchanging internet traffic from/to Microsoft online services and Microsoft Azure Services. Carriers or Service Providers can request to connect with Microsoft at any of our Edge locations." + } + }, + { + "title": "Ingress traffic rate", + "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 AVERAGE(`azure.peering.peerings.IngressTrafficRate`) AS 'Average Ingress Traffic Rate' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Egress traffic rate", + "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 AVERAGE(`azure.peering.peerings.EgressTrafficRate`) AS 'Average Egress Traffic Rate' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Session availability", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.peering.peerings.SessionAvailability`) AS 'Average Session Availability' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Flap counts", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.peering.peerings.FlapCounts`) AS 'Total Flap Counts' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Packets drop rate", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.peering.peerings.PacketDropRate`) AS 'Average Packets Drop Rate' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.peering/peerings' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-personalizer/azure-personalizer.json b/dashboards/azure-personalizer/azure-personalizer.json new file mode 100644 index 0000000000..277894e154 --- /dev/null +++ b/dashboards/azure-personalizer/azure-personalizer.json @@ -0,0 +1,674 @@ +{ + "name": "Azure Personalizer", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Personalizer", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Personalizer\nAzure Personalizer is an AI service that your applications make smarter decisions at scale using reinforcement learning. Personalizer processes information about the state of your application, scenario, and/or users (contexts), and a set of possible decisions and related attributes (actions) to determine the best decision to make. Feedback from your application (rewards) is sent to Personalizer to learn how to improve its decision-making ability in near-real time." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' TIMESERIES AUTO WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data ", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Latency by region", + "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 AVERAGE(`azure.cognitiveservices.accounts.Latency`) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Personalizer%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Features per event", + "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 AVERAGE(`azure.cognitiveservices.accounts.ActionFeaturesPerEvent`) AS 'Average Action Features Per Event', AVERAGE(`azure.cognitiveservices.accounts.ContextFeaturesPerEvent`) AS 'Average Context Features Per Event', AVERAGE(`azure.cognitiveservices.accounts.SlotFeaturesPerEvent`) AS 'Average Slot Features Per Event' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Feature occurances", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ActionFeatureIdOccurrences`) AS 'Total Action Feature Occurrences', SUM(`azure.cognitiveservices.accounts.ContextFeatureIdOccurrences`) AS 'Total Context Feature Occurrences', SUM(`azure.cognitiveservices.accounts.SlotFeatureIdOccurrences`) AS 'Total Slot Feature Occurrences' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Feature cardinality", + "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 AVERAGE(`azure.cognitiveservices.accounts.FeatureCardinality_Action`) AS 'Average Feature Cardinality by Action', AVERAGE(`azure.cognitiveservices.accounts.FeatureCardinality_Context`) AS 'Average Feature Cardinality by Context', AVERAGE(`azure.cognitiveservices.accounts.FeatureCardinality_Slot`) AS 'Average Feature Cardinality by Slot' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rewards", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.Reward`) AS 'Average Reward Per Event', AVERAGE(`azure.cognitiveservices.accounts.SlotReward`) AS 'Average Reward Per Slot' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Usage", + "layout": { + "column": 7, + "row": 12, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.LearnedEvents`) AS 'Total Learned Events', SUM(`azure.cognitiveservices.accounts.MatchedRewards`) AS 'Total Matched Rewards', SUM(`azure.cognitiveservices.accounts.NonActivatedEvents`) AS 'Total Non Activated Events', SUM(`azure.cognitiveservices.accounts.ObservedRewards`) AS 'Total Observed Rewards', SUM(`azure.cognitiveservices.accounts.TotalEvents`) AS 'Total Events' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Actions per event", + "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 AVERAGE(`azure.cognitiveservices.accounts.ActionsPerEvent`) AS 'Average Actions Per Event' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Action occurrences", + "layout": { + "column": 5, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ActionIdOccurrences`) AS 'Total Action Occurrences' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' FACET azure.cognitiveservices.accounts.actionid TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Namespaces per event", + "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 AVERAGE(`azure.cognitiveservices.accounts.ActionNamespacesPerEvent`) AS 'Average Action Namespaces Per Event', AVERAGE(`azure.cognitiveservices.accounts.ContextNamespacesPerEvent`) AS 'Average Context Namespaces Per Event', AVERAGE(`azure.cognitiveservices.accounts.SlotNamespacesPerEvent`) AS 'Average Slot Namespaces Per Event' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Event details", + "layout": { + "column": 1, + "row": 18, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.BaselineRandomEventCount`) AS 'Total Baseline Random Event Count', SUM(`azure.cognitiveservices.accounts.OnlineEventCount`) AS 'Total Online Event Count', SUM(`azure.cognitiveservices.accounts.UserBaselineEventCount`) AS 'Total User Baseline Event Count' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Reward details", + "layout": { + "column": 7, + "row": 18, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.BaselineRandomReward`) AS 'Total Baseline Random Reward', SUM(`azure.cognitiveservices.accounts.OnlineReward`) AS 'Total Online Reward', SUM(`azure.cognitiveservices.accounts.UserBaselineReward`) AS 'Total User Baseline Reward' WHERE collector.name ='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Overall reward estimator", + "layout": { + "column": 1, + "row": 21, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.BaselineEstimatorOverallReward`) AS 'Average Baseline Estimator Overall Reward', AVERAGE(`azure.cognitiveservices.accounts.BaselineRandomEstimatorOverallReward`) AS 'Average Baseline Random Estimator Overall Reward', AVERAGE(`azure.cognitiveservices.accounts.OnlineEstimatorOverallReward`) AS 'Average Online Estimator Overall Reward' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Slot reward estimator", + "layout": { + "column": 7, + "row": 21, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.BaselineEstimatorSlotReward`) AS 'Average Baseline Estimator Slot Reward', AVERAGE(`azure.cognitiveservices.accounts.BaselineRandomEstimatorSlotReward`) AS 'Average Baseline Random Estimator Slot Reward', AVERAGE(`azure.cognitiveservices.accounts.OnlineEstimatorSlotReward`) AS 'Average Online Estimator Slot Reward' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-personalizer/azure-personalizer.png b/dashboards/azure-personalizer/azure-personalizer.png new file mode 100644 index 0000000000..2f76f1e578 Binary files /dev/null and b/dashboards/azure-personalizer/azure-personalizer.png differ diff --git a/dashboards/azure-private-dns-zones/azure-private-dns-zones.json b/dashboards/azure-private-dns-zones/azure-private-dns-zones.json new file mode 100644 index 0000000000..290dfe419d --- /dev/null +++ b/dashboards/azure-private-dns-zones/azure-private-dns-zones.json @@ -0,0 +1,264 @@ +{ + "name": "Azure Private DNS Zones", + "description": null, + + "pages": [ + { + "name": "Azure Private DNS Zones", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.privatednszones.RecordSetCount) AS 'Total Record Set Count', SUM(azure.network.privatednszones.VirtualNetworkLinkCount) AS 'Total Virtual Network Link Count', SUM(azure.network.privatednszones.VirtualNetworkWithRegistrationLinkCount) AS 'Total Virtual Network With Registration Link Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Private DNS Zones\nAzure Private DNS Zones provide a reliable and secure DNS service for your virtual network. It manages and resolves domain names in the virtual network without the need to configure a custom DNS solution." + } + }, + { + "title": "Record set count", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.privatednszones.RecordSetCount) AS 'Total Record Set Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Virtual network registration link count", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.privatednszones.VirtualNetworkWithRegistrationLinkCount) AS 'Total Virtual Network Registration Link Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Virtual network link count", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.privatednszones.VirtualNetworkLinkCount) AS 'Total Virtual Network Link Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Record set capacity utilization", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.privatednszones.RecordSetCapacityUtilization)/100 AS 'Average Capacity Utilization of Record Set' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Virtual network registration capacity utilization", + "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 AVERAGE(azure.network.privatednszones.VirtualNetworkWithRegistrationCapacityUtilization)/100 AS 'Average Virtual Network Registration Capacity Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Virtual network link capacity utilization", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.network.privatednszones.VirtualNetworkLinkCapacityUtilization)/100 AS 'Average Virtual Network Link Capacity Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/privatednszones' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-private-dns-zones/azure-private-dns-zones.png b/dashboards/azure-private-dns-zones/azure-private-dns-zones.png new file mode 100644 index 0000000000..0b3ee7d1de Binary files /dev/null and b/dashboards/azure-private-dns-zones/azure-private-dns-zones.png differ diff --git a/dashboards/azure-public-ip-address/azure-public-ip-address.json b/dashboards/azure-public-ip-address/azure-public-ip-address.json new file mode 100644 index 0000000000..e1a7cd0ced --- /dev/null +++ b/dashboards/azure-public-ip-address/azure-public-ip-address.json @@ -0,0 +1,249 @@ +{ + "name": "Azure Public IP Address", + "description": null, + + "pages": [ + { + "name": "public ip", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.publicipaddresses.ByteCount) AS 'Total Byte Count', SUM(azure.network.publicipaddresses.PacketCount) AS 'Total Packet Count', SUM(azure.network.publicipaddresses.SynCount) AS 'Total SYN Count', MAX(azure.network.publicipaddresses.DDoSTriggerSYNPackets) AS 'Maximum Inbound SYN packets to trigger DDoS mitigation', MAX(azure.network.publicipaddresses.DDoSTriggerTCPPackets) AS 'Maximum Inbound TCP packets to trigger DDoS mitigation', MAX(azure.network.publicipaddresses.DDoSTriggerUDPPackets) AS 'Maximum Inbound UDP packets to trigger DDoS mitigation'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Public IP Address\nPublic IP addresses allow Internet resources to communicate inbound to Azure resources. Public IP addresses enable Azure resources to communicate to Internet and public-facing Azure services" + } + }, + { + "title": "Byte count", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.publicipaddresses.ByteCount) AS 'Total Byte Count' FACET azure.network.publicipaddresses.ipAddress" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SYN count", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.publicipaddresses.SynCount) AS 'Total SYN Count' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Packet count", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.publicipaddresses.PacketCount) AS 'Total Packet Count' FACET azure.network.publicipaddresses.ipAddress" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Inbound SYN packets to trigger DDoS mitigation", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.publicipaddresses.DDoSTriggerSYNPackets) AS 'Maximum DDoS Trigger SYN Packets' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Inbound TCP packets to trigger DDoS mitigation", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.publicipaddresses.DDoSTriggerTCPPackets) AS 'Maximum DDoS Trigger TCP Packets' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Inbound UDP packets to trigger DDoS mitigation", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.publicipaddresses.DDoSTriggerUDPPackets) AS 'Maximum DDoS Trigger UDP Packets' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-public-ip-address/azure-public-ip-address.png b/dashboards/azure-public-ip-address/azure-public-ip-address.png new file mode 100644 index 0000000000..62f62a7ca5 Binary files /dev/null and b/dashboards/azure-public-ip-address/azure-public-ip-address.png differ diff --git a/dashboards/azure-purview/azure-purview.json b/dashboards/azure-purview/azure-purview.json new file mode 100644 index 0000000000..7765d6d4d4 --- /dev/null +++ b/dashboards/azure-purview/azure-purview.json @@ -0,0 +1,189 @@ +{ + "name": "Azure Purview", + "description": null, + + "pages": [ + { + "name": "Azure Purview", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.purview.accounts.ScanCompleted`) AS 'Total Scans Completed', SUM(`azure.purview.accounts.ScanCancelled`) AS 'Total Scans Cancelled', SUM(`azure.purview.accounts.ScanFailed`) AS 'Total Scans Failed' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.purview/accounts'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Purview\nAzure Purview is a cloud-based data governance service offered by Microsoft Azure. It provides a unified data governance experience across all of your data sources, allowing you to discover, understand and manage your data at scale." + } + }, + { + "title": "Scan details", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.purview.accounts.ScanCompleted`) AS 'Total Scans Completed', SUM(`azure.purview.accounts.ScanCancelled`) AS 'Total Scans Cancelled', SUM(`azure.purview.accounts.ScanFailed`) AS 'Total Scans Failed' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.purview/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Scan time taken", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.purview.accounts.ScanTimeTaken`) AS 'Total Scan Time Taken' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.purview/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data map storage size", + "layout": { + "column": 1, + "row": 6, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.purview.accounts.DataMapStorageSize`) AS 'Total Data Map Storage Size' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.purview/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Data map capacity units", + "layout": { + "column": 8, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.purview.accounts.DataMapCapacityUnits`) AS 'Total Data Map Capacity Units' WHERE collector.name = 'azure-monitor' AND azure.resourceType='microsoft.purview/accounts' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-purview/azure-purview.png b/dashboards/azure-purview/azure-purview.png new file mode 100644 index 0000000000..734258e521 Binary files /dev/null and b/dashboards/azure-purview/azure-purview.png differ diff --git a/dashboards/azure-question-answering/azure-question-answering.json b/dashboards/azure-question-answering/azure-question-answering.json new file mode 100644 index 0000000000..9c98634139 --- /dev/null +++ b/dashboards/azure-question-answering/azure-question-answering.json @@ -0,0 +1,284 @@ +{ + "name": "Azure Question Answering", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Question Answering", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Question answering\nQuestion answering provides cloud-based Natural Language Processing (NLP) that allows you to create a natural conversational layer over your data. It is used to find appropriate answers from customer input or from a project." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Question answering text records", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.QuestionAnsweringTextRecords`) AS 'Total Question Answering Text Records' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total data", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.DataIn`) AS 'Total Data In', SUM(`azure.cognitiveservices.accounts.DataOut`) AS 'Total Data Out' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts'AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Success rate", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%QuestionAnswering%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-question-answering/azure-question-answering.png b/dashboards/azure-question-answering/azure-question-answering.png new file mode 100644 index 0000000000..54d206cd34 Binary files /dev/null and b/dashboards/azure-question-answering/azure-question-answering.png differ diff --git a/dashboards/azure-relay/azure-relay.json b/dashboards/azure-relay/azure-relay.json new file mode 100644 index 0000000000..aaa539cc60 --- /dev/null +++ b/dashboards/azure-relay/azure-relay.json @@ -0,0 +1,288 @@ +{ + "name": "Azure Relay", + "description": null, + + "pages": [ + { + "name": "Azure Relay", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.relay.namespaces.ActiveConnections`) AS 'Total Active Connections', SUM(`azure.relay.namespaces.ActiveListeners`) AS 'Total Active Listeners', SUM(`azure.relay.namespaces.SenderConnections-TotalRequests`) AS 'Total Sender Connection Requests', SUM(`azure.relay.namespaces.ListenerConnections-TotalRequests`) AS 'Total Listener Connection Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Relay\nAzure Relay service securely exposes services that run in corporate network to the public cloud. Services can be exposed without opening a port on corporate firewall or making intrusive changes to corporate network infrastructure." + } + }, + { + "title": "Active connections", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.relay.namespaces.ActiveConnections) AS 'Total Active Connections' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active listeners", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.relay.namespaces.ActiveListeners) AS 'Total Active Listeners' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes transferred", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.relay.namespaces.BytesTransferred`) AS 'Total Bytes Transferred' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' FACET azure.relay.namespaces.entityname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Sender connection details", + "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 SUM(`azure.relay.namespaces.SenderConnections-TotalRequests`) AS 'Total Sender Connection Requests', SUM(`azure.relay.namespaces.SenderConnections-Success`) AS 'Total Sender Connections Success', SUM(`azure.relay.namespaces.SenderConnections-ServerError`) AS 'Total Sender Connections Server Error', SUM(`azure.relay.namespaces.SenderConnections-ClientError`) AS 'Total Sender Connections Client Error' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Listener connection details", + "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 SUM(`azure.relay.namespaces.ListenerConnections-TotalRequests`) AS 'Total Listener Connection Requests', SUM(`azure.relay.namespaces.ListenerConnections-Success`) AS 'Total Listener Connections Success', SUM(`azure.relay.namespaces.ListenerConnections-ServerError`) AS 'Total Listener Connections Server Error', SUM(`azure.relay.namespaces.ListenerConnections-ClientError`) AS 'Total Listener Connections Client Error' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Sender disconnects", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.relay.namespaces.SenderDisconnects`) AS 'Total Sender Disconnects' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Listener disconnects", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.relay.namespaces.ListenerDisconnects`) AS 'Total Listener Disconnects' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.relay/namespaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-relay/azure-relay.png b/dashboards/azure-relay/azure-relay.png new file mode 100644 index 0000000000..22edc71aa3 Binary files /dev/null and b/dashboards/azure-relay/azure-relay.png differ diff --git a/dashboards/azure-signalr/azure-signalr.json b/dashboards/azure-signalr/azure-signalr.json new file mode 100644 index 0000000000..677aa7a898 --- /dev/null +++ b/dashboards/azure-signalr/azure-signalr.json @@ -0,0 +1,355 @@ +{ + "name": "Azure SignalR", + "description": null, + + "pages": [ + { + "name": "Azure SignalR", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Maximum Connection Quota Utilization", + "precision": 2, + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.ConnectionCount`) AS 'Total Connection Count', MAX(`azure.signalrservice.signalr.ConnectionQuotaUtilization`) AS 'Maximum Connection Quota Utilization', SUM(`azure.signalrservice.signalr.MessageCount`) AS 'Total Message Count', AVERAGE(`azure.signalrservice.signalr.ServerLoad`) AS 'Average Server Load' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure SignalR\nAzure SignalR Service simplifies the process of adding real-time web functionality to applications over HTTP. This real-time functionality allows the service to push content updates to connected clients, such as a single page web or mobile application." + } + }, + { + "title": "Connection count by endpoint", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.ConnectionCount`) AS 'Total Connection Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr' FACET azure.signalrservice.signalr.endpoint" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.InboundTraffic`) AS 'Total Inbound Traffic', SUM(`azure.signalrservice.signalr.OutboundTraffic`) AS 'Total Outbound Traffic' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Connection open count by endpoint", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.ConnectionOpenCount`) AS 'Total Connection Open Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr' FACET azure.signalrservice.signalr.Endpoint" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection close count by endpoint", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.ConnectionCloseCount`) AS 'Total Connection Close Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr' FACET azure.signalrservice.signalr.Endpoint" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection close count by category ", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.ConnectionCloseCount`) AS 'Total Connection Close Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr' FACET azure.signalrservice.signalr.ConnectionCloseCategory" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.signalrservice.signalr.UserErrors) AS 'Maximum User Errors', MAX(azure.signalrservice.signalr.SystemErrors) AS 'Maximum System Errors' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + } + } + }, + { + "title": "Connection quota utilization", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.signalrservice.signalr.ConnectionQuotaUtilization`) AS 'Maximum Connection Quota Utilization' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "seriesOverrides": [ + { + "seriesName": "Average Connection Quota Utilization", + "unit": "PERCENTAGE" + } + ], + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Server load", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.signalrservice.signalr.ServerLoad`) AS 'Average Server Load' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message count", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.signalrservice.signalr.MessageCount`) AS 'Total Message Count' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.signalrservice/signalr'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-signalr/azure-signalr.png b/dashboards/azure-signalr/azure-signalr.png new file mode 100644 index 0000000000..2d64a94452 Binary files /dev/null and b/dashboards/azure-signalr/azure-signalr.png differ diff --git a/dashboards/azure-speech/azure-speech.json b/dashboards/azure-speech/azure-speech.json new file mode 100644 index 0000000000..76f09f65f4 --- /dev/null +++ b/dashboards/azure-speech/azure-speech.json @@ -0,0 +1,506 @@ +{ + "name": "Azure Speech", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Speech", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Speech\nThe Speech service provides speech to text and text to speech capabilities with an Azure Speech resource. You can transcribe speech to text with high accuracy, produce natural-sounding text to speech voices, translate spoken audio, and use speaker recognition during conversations." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.SuccessfulCalls) AS 'Total Successful Calls', SUM(azure.cognitiveservices.accounts.BlockedCalls) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.cognitiveservices.accounts.ClientErrors) AS 'Total Client Errors', SUM(azure.cognitiveservices.accounts.ServerErrors) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency by region", + "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 AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Audio seconds translated", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.AudioSecondsTranslated`) AS 'Total Audio Seconds Translated' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Synthesized characters", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SynthesizedCharacters`) AS 'Total Synthesized Characters' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Audio seconds transcribed", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.AudioSecondsTranscribed`) AS 'Total Audio Seconds Transcribed' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Speech model hosting hours", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SpeechModelHostingHours`) AS 'Total Speech Model Hosting Hours' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Voice model hosting hours", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.VoiceModelHostingHours`) AS 'Total Voice Model Hosting Hours' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Speaker profiles", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.NumberofSpeakerProfiles`) AS 'Total Speaker Profiles' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Voice model training minutes", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.VoiceModelTrainingMinutes`) AS 'Total Voice Model Training Minutes' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Speaker recognition transactions", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SpeakerRecognitionTransactions`) AS 'Total Speaker Recognition Transactions' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND azure.cognitiveservices.accounts.apiname LIKE '%Speech%' FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-speech/azure-speech.png b/dashboards/azure-speech/azure-speech.png new file mode 100644 index 0000000000..dd3a479384 Binary files /dev/null and b/dashboards/azure-speech/azure-speech.png differ diff --git a/dashboards/azure-spring-apps/azure-spring-apps.json b/dashboards/azure-spring-apps/azure-spring-apps.json new file mode 100644 index 0000000000..1e21d16f3f --- /dev/null +++ b/dashboards/azure-spring-apps/azure-spring-apps.json @@ -0,0 +1,353 @@ +{ + "name": "Azure Spring Apps", + "description": null, + + "pages": [ + { + "name": "Azure Spring Apps", + "description": null, + "widgets": [ + { + "title": "Usage summary", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT AVERAGE(azure.appplatform.spring.PodCpuUsage) AS 'Average App CPU Usage', AVERAGE(azure.appplatform.spring.PodMemoryUsage) AS 'Average App Memory Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes recieved and sent", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT AVERAGE(azure.appplatform.spring.PodNetworkIn) AS 'Average App Network In', AVERAGE(azure.appplatform.spring.PodNetworkOut) AS 'Average App Network Out' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure spring Apps\nAzure Spring Apps makes it easy to deploy Spring Boot applications to Azure without any code changes. Azure Spring Apps provides lifecycle management using comprehensive monitoring and diagnostics, configuration management, service discovery, CI/CD integration, blue-green deployments and more." + } + }, + { + "title": "Throughput", + "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 AVERAGE(azure.appplatform.spring.IngressBytesSentRate) AS 'Average Throughput Out', AVERAGE(azure.appplatform.spring.IngressBytesReceivedRate) AS 'Average Throughput In' WHERE collector.name ='azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Response time", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.appplatform.spring.tomcat.global.request.avg.time) AS 'Average Response Time' TIMESERIES AUTO WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appplatform/spring'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } + }, + { + "title": "Tomcat request details", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.appplatform.spring.tomcat.global.request.total.count) AS 'Total Tomcat Request Count' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.appname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failed requests", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.appplatform.spring.IngressFailedRequests) AS 'Total Failed Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.appname TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Tomcat errors", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.appplatform.spring.tomcat.global.error) AS 'Total Tomcat Global Error' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.appname TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Bytes sent by host", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.appplatform.spring.IngressBytesSent) AS 'Average Bytes Sent' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.hostname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App memory used in bytes", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.appplatform.spring.jvm.memory.used) AS 'Average App Memory Used in Bytes' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.appname Timeseries AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes received by host", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.appplatform.spring.IngressBytesReceived) AS 'Average Bytes Received' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.appplatform/spring' FACET azure.appplatform.spring.hostname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-spring-apps/azure-spring-apps.png b/dashboards/azure-spring-apps/azure-spring-apps.png new file mode 100644 index 0000000000..85c1b713c4 Binary files /dev/null and b/dashboards/azure-spring-apps/azure-spring-apps.png differ diff --git a/dashboards/azure-sql-database/azure-sql-database.json b/dashboards/azure-sql-database/azure-sql-database.json new file mode 100644 index 0000000000..f7e07d9109 --- /dev/null +++ b/dashboards/azure-sql-database/azure-sql-database.json @@ -0,0 +1,640 @@ +{ + "name": "Azure SQL Database", + "description": null, + + "pages": [ + { + "name": "Azure SQL Database", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Average DTU Usage", + "precision": 2, + "type": "decimal" + }, + { + "name": "Average Sessions Count", + "precision": 2, + "type": "decimal" + }, + { + "name": "Average CPU Usage (%)", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.sql.servers.databases.cpu_percent) AS 'Average CPU Usage (%)', average(azure.sql.servers.databases.dtu_used) AS 'Average DTU Usage', average(azure.sql.servers.databases.sessions_count) AS 'Average Sessions Count', sum(azure.sql.servers.databases.workers_percent) AS 'Total Workers Percent'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure SQL Database\nAzure SQL Database is a fully managed platform as a service (PaaS) database engine that handles most of the database management functions such as upgrading, patching, backups, and monitoring without user involvement." + } + }, + { + "title": "Connections Details", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.sql.servers.databases.connection_successful`) AS 'Total Successful Connections', sum(`azure.sql.servers.databases.connection_failed`) AS 'Total Failed Connections : System', sum(`azure.sql.servers.databases.connection_failed_user_error`) AS 'Total Failed Connections\t: User' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failed connections : user errors", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.sql.servers.databases.connection_failed_user_error`) AS 'Total Failed Connections : User Errors' FACET azure.sql.servers.databases.error" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failed connections : system errors\t", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(`azure.sql.servers.databases.connection_failed`) AS 'Total Failed Connections : System Errors'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "DTU usage details", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.sql.servers.databases.dtu_limit) AS 'Average DTU Limit', AVERAGE(azure.sql.servers.databases.dtu_used) AS 'Average DTU Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DWU usage details", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.sql.servers.databases.dwu_limit`) AS 'Average DWU Limit', AVERAGE(`azure.sql.servers.databases.dwu_used`) AS 'Average DWU Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU usage details", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.sql.servers.databases.cpu_limit) AS 'Average CPU Limit', AVERAGE(azure.sql.servers.databases.cpu_used) AS 'Average CPU Used' WHERE TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Database size (bytes)", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.sql.servers.databases.storage`) AS 'Max Data Space Used', MAX(`azure.sql.servers.databases.allocated_data_storage`) AS 'Max Allocated Data Storage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Tempdb usage (Kilobytes)", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.sql.servers.databases.tempdb_log_size`) AS 'Max Tempdb Log File Size', MAX(azure.sql.servers.databases.tempdb_data_size) AS 'Max Tempdb Data File Size' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Usage", + "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 AVERAGE(`azure.sql.servers.databases.cache_used_percent`) AS 'Average Cache used percentage', AVERAGE(`azure.sql.servers.databases.cache_hit_percent`) AS 'Average Cache hit percentage' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Backup Details", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.sql.servers.databases.full_backup_size_bytes`) AS 'Max Full Backup Storage Size', MAX(`azure.sql.servers.databases.snapshot_backup_size_bytes`) AS 'Max Data Backup Storage Size', MAX(`azure.sql.servers.databases.diff_backup_size_bytes`) AS 'Max Differential Backup Storage Size', MAX(`azure.sql.servers.databases.log_backup_size_bytes`) AS 'Max Log Backup Storage Size' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Data & Log IO", + "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 AVERAGE(`azure.sql.servers.databases.physical_data_read_percent`)/100 AS 'Average Data IO Percentage', AVERAGE(`azure.sql.servers.databases.log_write_percent`)/100 AS 'Average Log IO Percentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 16, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.sql.servers.databases.blocked_by_firewall`) AS 'Total Blocked By Firewall', SUM(`azure.sql.servers.databases.deadlock`) AS 'Total Deadlocks', SUM(`azure.sql.servers.databases.ledger_digest_upload_failed`) AS 'Total Failed Ledger Digest Uploads' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Query Details", + "layout": { + "column": 8, + "row": 16, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.sql.servers.databases.active_queries`) AS 'Total Active Queries', SUM(`azure.sql.servers.databases.queued_queries`) AS 'Total Queued Queries' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App CPU Details", + "layout": { + "column": 1, + "row": 19, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.sql.servers.databases.app_cpu_billed`) AS 'Total App CPU Billed', SUM(`azure.sql.servers.databases.app_cpu_billed_ha_replicas`) AS 'Total App CPU Billed HA Replicas' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App CPU & Memory", + "layout": { + "column": 6, + "row": 19, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.sql.servers.databases.app_cpu_percent`)/100 AS 'Average App CPU Percentage', AVERAGE(`azure.sql.servers.databases.app_memory_percent`)/100 AS 'Average Memory Percentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Workload Group Query Details", + "layout": { + "column": 1, + "row": 22, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.sql.servers.databases.wlg_active_queries`) AS 'Total Workload Group Active Queries', SUM(`azure.sql.servers.databases.wlg_queued_queries`) AS 'Total Workload Group Queued Queries', SUM(`azure.sql.servers.databases.wlg_active_queries_timeouts`) AS 'Total Workload Group Query Timeouts' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Workload group allocation", + "layout": { + "column": 7, + "row": 22, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.sql.servers.databases.wlg_allocation_relative_to_system_percent`) AS 'Max Workload group allocation by System percent', MAX(`azure.sql.servers.databases.wlg_allocation_relative_to_wlg_effective_cap_percent`) AS 'Max Workload group allocation by Cap Resource percent', MAX(`azure.sql.servers.databases.wlg_effective_cap_resource_percent`) AS 'Max Effective cap resource percent', MAX(`azure.sql.servers.databases.wlg_effective_min_resource_percent`) AS 'Max Effective min resource percent' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-sql-database/azure-sql-database.png b/dashboards/azure-sql-database/azure-sql-database.png new file mode 100644 index 0000000000..9b761376c0 Binary files /dev/null and b/dashboards/azure-sql-database/azure-sql-database.png differ diff --git a/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.json b/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.json new file mode 100644 index 0000000000..8c06c21e50 --- /dev/null +++ b/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.json @@ -0,0 +1,311 @@ +{ + "name": "Azure SQL Elastic pool", + "description": null, + + "pages": [ + { + "name": "Azure SQL Elastic pool", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Average DTU Usage", + "precision": 2, + "type": "decimal" + }, + { + "name": "Average Sessions Count", + "precision": 2, + "type": "decimal" + }, + { + "name": "Average CPU Usage (%)", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(azure.sql.servers.elasticpools.cpu_percent) AS 'Average CPU Percentage', average(azure.sql.servers.elasticpools.eDTU_used) AS 'Average DTU Usage', average(azure.sql.servers.elasticpools.sessions_count) AS 'Average Sessions Count', sum(azure.sql.servers.elasticpools.workers_percent) AS 'Total Workers Percent'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure SQL Elastic Pool\nAzure SQL Database elastic pools are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. The databases in an elastic pool are on a single server and share a set number of resources at a set price. Elastic pools in SQL Database enable software as a service (SaaS) developers to optimize the price performance for a group of databases within a prescribed budget while delivering performance elasticity for each database." + } + }, + { + "title": "eDTU usage details", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.sql.servers.elasticpools.eDTU_limit) AS 'Average eDTU Limit', AVERAGE(azure.sql.servers.elasticpools.eDTU_used) AS 'Average eDTU Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Data & Log IO", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.sql.servers.elasticpools.physical_data_read_percent`) AS 'Average Data IO Percentage', AVERAGE(`azure.sql.servers.elasticpools.log_write_percent`) AS 'Average Log IO Percentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU usage details", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.sql.servers.elasticpools.cpu_limit) AS 'Average CPU Limit', AVERAGE(azure.sql.servers.elasticpools.cpu_used) AS 'Average CPU Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Database size (bytes)", + "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 AVERAGE(`azure.sql.servers.elasticpools.storage_limit`) AS 'Average Data Space Limit', AVERAGE(`azure.sql.servers.elasticpools.storage_used`) AS 'Average Data Space Used' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Tempdb usage (Kilobytes)", + "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 MAX(`azure.sql.servers.elasticpools.tempdb_log_size`) AS 'Maximum Tempdb Log File Size', MAX(azure.sql.servers.elasticpools.tempdb_data_size) AS 'Maximum Tempdb Data File Size' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "App CPU billed", + "layout": { + "column": 1, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.sql.servers.elasticpools.app_cpu_billed`) AS 'Total App CPU Billed' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App CPU & Memory", + "layout": { + "column": 6, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.sql.servers.elasticpools.app_cpu_percent`)/100 AS 'Average App CPU Percentage', AVERAGE(`azure.sql.servers.elasticpools.app_memory_percent`)/100 AS 'Average Memory Percentage' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.png b/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.png new file mode 100644 index 0000000000..8726e94ea0 Binary files /dev/null and b/dashboards/azure-sql-elastic-pool/azure-sql-elastic-pool.png differ diff --git a/dashboards/azure-storage-sync/azure-storage-sync.json b/dashboards/azure-storage-sync/azure-storage-sync.json new file mode 100644 index 0000000000..2969818f53 --- /dev/null +++ b/dashboards/azure-storage-sync/azure-storage-sync.json @@ -0,0 +1,222 @@ +{ + "name": "Azure Storage Sync", + "description": null, + + "pages": [ + { + "name": "Azure Storage Sync", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.storagesync.storagesyncservices.StorageSyncSyncSessionAppliedFilesCount`) AS 'Total Files Synced' , AVERAGE(`azure.storagesync.storagesyncservices.ServerSyncSessionResult`) AS 'Average Sync Session Result', SUM(`azure.storagesync.storagesyncservices.StorageSyncSyncSessionPerItemErrorsCount`) AS 'Total Files not Syncing', SUM(`azure.storagesync.storagesyncservices.StorageSyncBatchTransferredFileBytes`) AS 'Total Bytes synced' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure File Sync\nAzure File Sync enables centralizing your organization's file shares in Azure Files, while keeping the flexibility, performance, and compatibility of a Windows file server." + } + }, + { + "title": "Server online status", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.storagesync.storagesyncservices.StorageSyncServerHeartbeat`) AS 'Server Online Status' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices' FACET azure.storagesync.storagesyncservices.servername TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Sync session result", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(`azure.storagesync.storagesyncservices.ServerSyncSessionResult`) AS 'Average Server Sync Session Result' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices' FACET azure.storagesync.storagesyncservices.syncgroupname TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Files synced", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.storagesync.storagesyncservices.StorageSyncSyncSessionAppliedFilesCount`) AS 'Total Files Synced' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices' FACET azure.storagesync.storagesyncservices.syncgroupname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Files not syncing", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.storagesync.storagesyncservices.StorageSyncSyncSessionPerItemErrorsCount`) AS 'Total Files not syncing' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices' FACET azure.storagesync.storagesyncservices.syncgroupname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes synced", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.storagesync.storagesyncservices.StorageSyncBatchTransferredFileBytes`) AS 'Total Bytes Synced' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.storagesync/storagesyncservices' FACET azure.storagesync.storagesyncservices.syncgroupname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-storage-sync/azure-storage-sync.png b/dashboards/azure-storage-sync/azure-storage-sync.png new file mode 100644 index 0000000000..afa6a1fc50 Binary files /dev/null and b/dashboards/azure-storage-sync/azure-storage-sync.png differ diff --git a/dashboards/azure-stream-analytics/azure-stream-analytics.json b/dashboards/azure-stream-analytics/azure-stream-analytics.json new file mode 100644 index 0000000000..c34d3c9cec --- /dev/null +++ b/dashboards/azure-stream-analytics/azure-stream-analytics.json @@ -0,0 +1,321 @@ +{ + "name": "Azure Stream Analytics", + "description": null, + + "pages": [ + { + "name": "Azure Stream Analytics", + "description": null, + "widgets": [ + { + "title": "Event details", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.streamanalytics.streamingjobs.InputEvents`) AS 'Total Input Events',SUM(`azure.streamanalytics.streamingjobs.OutputEvents`) AS 'Total Output Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Resource utilization", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Average CPU % Utilization", + "type": null + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.streamanalytics.streamingjobs.ProcessCPUUsagePercentage`) AS 'Maximum CPU % Utilization', MAX(`azure.streamanalytics.streamingjobs.ResourceUtilization`) AS 'Maximum SU (Memory) % Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Stream Analytics\nAzure Stream Analytics is a fully managed stream processing engine that is designed to analyze and process large volumes of streaming data with sub-millisecond latencies. Patterns and relationships can be identified in data that originates from a variety of input sources including applications, devices, sensors, clickstreams and social media feeds." + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 3, + "width": 8, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.streamanalytics.streamingjobs.Errors`) AS 'Total Runtime Errors', SUM(`azure.streamanalytics.streamingjobs.ConversionErrors`) AS 'Total Data Conversion Errors', SUM(`azure.streamanalytics.streamingjobs.DeserializationError`) AS 'Total Input Deserialization Errors' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Input event details", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.streamanalytics.streamingjobs.InputEvents`) AS 'Total Input Events', SUM(`azure.streamanalytics.streamingjobs.EarlyInputEvents`) AS 'Total Early Input Events', SUM(`azure.streamanalytics.streamingjobs.LateInputEvents`) AS 'Total Late Input Events', SUM(`azure.streamanalytics.streamingjobs.InputEventsSourcesBacklogged`) AS 'Total Backlogged Input Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Output events", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.streamanalytics.streamingjobs.OutputEvents`) AS 'Total Output Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' FACET azure.streamanalytics.streamingjobs.LogicalName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU utilization by node", + "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 MAX(`azure.streamanalytics.streamingjobs.ProcessCPUUsagePercentage`)/100 AS 'Maximum CPU % Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' FACET azure.streamanalytics.streamingjobs.nodename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "SU (memory) utilization by node", + "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 MAX(`azure.streamanalytics.streamingjobs.ResourceUtilization`)/100 AS 'Maximum SU (Memory) % Utilization' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' FACET azure.streamanalytics.streamingjobs.nodename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Out of order events", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.streamanalytics.streamingjobs.DroppedOrAdjustedEvents`) AS 'Total Out of order Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' FACET azure.streamanalytics.streamingjobs.LogicalName TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Watermark delay", + "layout": { + "column": 5, + "row": 10, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.streamanalytics.streamingjobs.OutputWatermarkDelaySeconds`) AS 'Maximum Watermark Delay' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.streamanalytics/streamingjobs' FACET azure.streamanalytics.streamingjobs.logicalname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-stream-analytics/azure-stream-analytics.png b/dashboards/azure-stream-analytics/azure-stream-analytics.png new file mode 100644 index 0000000000..c81775e94a Binary files /dev/null and b/dashboards/azure-stream-analytics/azure-stream-analytics.png differ diff --git a/dashboards/azure-synapse-analytics/azure-synapse-analytics.json b/dashboards/azure-synapse-analytics/azure-synapse-analytics.json new file mode 100644 index 0000000000..77cceb9ef2 --- /dev/null +++ b/dashboards/azure-synapse-analytics/azure-synapse-analytics.json @@ -0,0 +1,321 @@ +{ + "name": "Azure Synapse Analytics", + "description": null, + + "pages": [ + { + "name": "Azure Synapse Analytics", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.BuiltinSqlPoolDataProcessedBytes`) AS 'Total Data Processed', SUM(`azure.synapse.workspaces.BuiltinSqlPoolRequestsEnded`) AS 'Total Requests Ended', SUM(`azure.synapse.workspaces.IntegrationPipelineRunsEnded`) AS 'Total Pipeline Runs Ended', SUM(`azure.synapse.workspaces.IntegrationActivityRunsEnded`) AS 'Total Activity Runs Ended' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Synapse Analytics\nAzure Synapse Analytics is an enterprise analytics service that accelerates time to insight across data warehouses and big data systems. It brings together the best of SQL technologies used in enterprise data warehousing, Apache Spark technologies for big data and Azure Data Explorer for log and time series analytics." + } + }, + { + "title": "Data processed", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.BuiltinSqlPoolDataProcessedBytes`) AS 'Total Data Processed' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Link latency", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(`azure.synapse.workspaces.IntegrationLinkProcessingLatencyInSeconds`) AS 'Maximum Link Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Login attempts", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.BuiltinSqlPoolLoginAttempts`) AS 'Total Login Attempts' WHERE collector.name = 'azure-monitor' and azure.resourceType = 'microsoft.synapse/workspaces' FACET azure.synapse.workspaces.result TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pipeline runs ended", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.IntegrationPipelineRunsEnded`) AS 'Total Pipelines Runs Ended' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' FACET azure.synapse.workspaces.Pipeline TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests ended", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.BuiltinSqlPoolRequestsEnded`) AS 'Total Requests Ended' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' FACET azure.synapse.workspaces.result TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Link processed data volume", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.IntegrationLinkProcessedDataVolume`) AS 'Total Link Processed Data Volume' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Activity runs ended", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.IntegrationActivityRunsEnded`) AS 'Total Activity Runs Ended' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' FACET azure.synapse.workspaces.ActivityType TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Trigger runs ended", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.synapse.workspaces.IntegrationTriggerRunsEnded`) AS 'Total Trigger Runs Ended' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.synapse/workspaces' FACET azure.synapse.workspaces.Trigger TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-synapse-analytics/azure-synapse-analytics.png b/dashboards/azure-synapse-analytics/azure-synapse-analytics.png new file mode 100644 index 0000000000..5a2282bb8b Binary files /dev/null and b/dashboards/azure-synapse-analytics/azure-synapse-analytics.png differ diff --git a/dashboards/azure-time-series-insights/azure-time-series-insights.json b/dashboards/azure-time-series-insights/azure-time-series-insights.json new file mode 100644 index 0000000000..7977820d27 --- /dev/null +++ b/dashboards/azure-time-series-insights/azure-time-series-insights.json @@ -0,0 +1,189 @@ +{ + "name": "Azure Time Series Insights", + "description": null, + + "pages": [ + { + "name": "Azure Time Series Insights", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.timeseriesinsights.environments.IngressReceivedBytes) AS 'Average Ingress Received Bytes', SUM(azure.timeseriesinsights.environments.IngressReceivedMessages) AS 'Total Ingress Received Messages', AVERAGE(azure.timeseriesinsights.environments.IngressStoredBytes) AS 'Average Ingress Stored Bytes', SUM(azure.timeseriesinsights.environments.IngressStoredEvents) AS 'Total Ingress Stored Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.timeseriesinsights/environments'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Time Series Insights Environment\nAzure Time Series Insights Environments are the containers that hold the data ingested by the service. Each environment has a unique set of Time Series Insights features, such as retention policies, data access policies and query APIs." + } + }, + { + "title": "Ingress storage", + "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 AVERAGE(azure.timeseriesinsights.environments.IngressStoredBytes) AS 'Average Ingress Stored Bytes', SUM(azure.timeseriesinsights.environments.IngressStoredEvents) AS 'Total Ingress Stored Events' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.timeseriesinsights/environments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ingress received messages", + "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 SUM(azure.timeseriesinsights.environments.IngressReceivedMessages) AS 'Total Ingress Received Messages', SUM(azure.timeseriesinsights.environments.IngressReceivedInvalidMessages) AS 'Total Ingress Received Invalid Messages' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.timeseriesinsights/environments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ingress received bytes", + "layout": { + "column": 1, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.timeseriesinsights.environments.IngressReceivedBytes) AS 'Average Ingress Received Bytes' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.timeseriesinsights/environments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Warm storage properties", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.timeseriesinsights.environments.WarmStorageMaxProperties) AS 'Maximum Warm Storage Properties', MAX(azure.timeseriesinsights.environments.WarmStorageUsedProperties) AS 'Maximum Warm Storage Used Properties' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.timeseriesinsights/environments' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-time-series-insights/azure-time-series-insights.png b/dashboards/azure-time-series-insights/azure-time-series-insights.png new file mode 100644 index 0000000000..a6d21f0108 Binary files /dev/null and b/dashboards/azure-time-series-insights/azure-time-series-insights.png differ diff --git a/dashboards/azure-traffic-manager/azure-traffic-manager.json b/dashboards/azure-traffic-manager/azure-traffic-manager.json new file mode 100644 index 0000000000..fabeb1fa8d --- /dev/null +++ b/dashboards/azure-traffic-manager/azure-traffic-manager.json @@ -0,0 +1,123 @@ +{ + "name": "Azure Traffic Manager", + "description": null, + + "pages": [ + { + "name": "Azure Traffic Manager", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.trafficmanagerprofiles.ProbeAgentCurrentEndpointStateByProfileResourceId) As 'Maximum Endpoint Status By Endpoint', SUM(azure.network.trafficmanagerprofiles.QpsByEndpoint) as 'Total Queries By Endpoint Returned' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/trafficmanagerprofiles'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Traffic Manager\nAzure Traffic Manager is a DNS-based traffic load balancer. This service allows you to distribute traffic to your public facing applications across the global Azure regions. Traffic Manager also provides your public endpoints with high availability and quick responsiveness." + } + }, + { + "title": "Endpoint status by endpoint", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT MAX(azure.network.trafficmanagerprofiles.ProbeAgentCurrentEndpointStateByProfileResourceId) AS 'Maximum Endpoint Status By Endpoint' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/trafficmanagerprofiles' FACET azure.network.trafficmanagerprofiles.endpointname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries by endpoint returned ", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.network.trafficmanagerprofiles.QpsByEndpoint) AS 'Total Queries By Endpoint Returned ' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.network/trafficmanagerprofiles' FACET azure.network.trafficmanagerprofiles.endpointname TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-traffic-manager/azure-traffic-manager.png b/dashboards/azure-traffic-manager/azure-traffic-manager.png new file mode 100644 index 0000000000..8daf89b821 Binary files /dev/null and b/dashboards/azure-traffic-manager/azure-traffic-manager.png differ diff --git a/dashboards/azure-translator/azure-translator.json b/dashboards/azure-translator/azure-translator.json new file mode 100644 index 0000000000..11ae4c893c --- /dev/null +++ b/dashboards/azure-translator/azure-translator.json @@ -0,0 +1,350 @@ +{ + "name": "Azure Translator", + "description": null, + + "pages": [ + { + "name": "Cognitive Service Translator", + "description": null, + "widgets": [ + { + "title": "Total calls", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING" + } + ] + } + }, + { + "title": "Total errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Azure Translator\nAzure Cognitive Services Translator is a cloud-based machine translation service you can use to translate text and documents with a simple REST API call.The Custom Translator interface allows you to use your translation memory to create customized neural translation systems. The customized translation system can be used to translate text and documents with the Translator service." + } + }, + { + "title": "Total calls by operation name", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TotalCalls`) AS 'Total calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') FACET azure.cognitiveservices.accounts.operationname" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Call details", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.SuccessfulCalls`) AS 'Total Successful Calls', SUM(`azure.cognitiveservices.accounts.BlockedCalls`) AS 'Total Blocked Calls', SUM(`azure.cognitiveservices.accounts.TotalErrors`) AS 'Total Error Calls' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.ClientErrors`) AS 'Total Client Errors', SUM(`azure.cognitiveservices.accounts.ServerErrors`) AS 'Total Server Errors' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + } + } + }, + { + "title": "Success rate", + "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 AVERAGE(`azure.cognitiveservices.accounts.SuccessRate`)/100 AS 'Average Success Rate' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency by region", + "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 AVERAGE(azure.cognitiveservices.accounts.Latency) AS 'Average Latency' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') FACET azure.cognitiveservices.accounts.region TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Characters translated", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TextCharactersTranslated`) AS 'Total Text Characters Translated', SUM(`azure.cognitiveservices.accounts.DocumentCharactersTranslated`) AS 'Total Document Characters Translated' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Custom characters translated", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TextCustomCharactersTranslated`) AS 'Total Text Custom Characters Translated', SUM(`azure.cognitiveservices.accounts.DocumentCustomCharactersTranslated`) AS 'Total Document Custom Characters Translated' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Text trained characters", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(`azure.cognitiveservices.accounts.TextTrainedCharacters`) AS 'Total Text Trained Characters' WHERE collector.name='azure-monitor' AND azure.resourceType='microsoft.cognitiveservices/accounts' AND (azure.cognitiveservices.accounts.apiname LIKE '%Translation%' OR azure.cognitiveservices.accounts.apiname LIKE '%Translator%') FACET azure.cognitiveservices.accounts.featurename TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-translator/azure-translator.png b/dashboards/azure-translator/azure-translator.png new file mode 100644 index 0000000000..d41586ae94 Binary files /dev/null and b/dashboards/azure-translator/azure-translator.png differ diff --git a/dashboards/azure-web-apps/azure-web-apps.json b/dashboards/azure-web-apps/azure-web-apps.json new file mode 100644 index 0000000000..ba33c4da76 --- /dev/null +++ b/dashboards/azure-web-apps/azure-web-apps.json @@ -0,0 +1,336 @@ +{ + "name": "Azure Web Apps", + "description": null, + + "pages": [ + { + "name": "Azure Web Apps", + "description": null, + "widgets": [ + { + "title": "Summary", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.CpuTime) AS 'Total CPU Time', AVERAGE(azure.web.sites.HttpResponseTime) AS 'Average HTTP Response Time', SUM(azure.web.sites.Requests) AS 'Total Requests', AVERAGE(azure.web.sites.AppConnections) AS 'Average Number of Connections' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Azure Web Apps\nAzure Web Apps Service is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favorite language, be it .NET, .NET Core, Java, Ruby, Node.js, PHP or Python. Applications run and scale with ease on both Windows and Linux-based environments." + } + }, + { + "title": "CPU time", + "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": "FROM Metric SELECT SUM(azure.web.sites.CpuTime) AS 'Total CPU Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Memory working set", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.MemoryWorkingSet) AS 'Average Memory Working Set' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.Requests) AS 'Total Requests' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests by HTTP status code", + "layout": { + "column": 1, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.Http101) AS 'Total Requests Resulting HTTP 101', SUM(azure.web.sites.Http2xx) AS 'Total Requests Resulting HTTP 2xx', SUM(azure.web.sites.Http3xx) AS 'Total Requests Resulting HTTP 3xx', SUM(azure.web.sites.Http4xx) AS 'Total Requests Resulting HTTP 4xx', SUM(azure.web.sites.Http5xx) AS 'Total Requests Resulting HTTP 5xx' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP response time", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.HttpResponseTime) AS 'Average HTTP Response Time' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Number of connections", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.AppConnections) AS 'Average Number of Connections' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' FACET azure.web.sites.Instance TIMESERIES AUTO" + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total data", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT SUM(azure.web.sites.BytesReceived) AS 'Total Data In', SUM(azure.web.sites.BytesSent) AS 'Total Data Out' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "File system usage", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT AVERAGE(azure.web.sites.FileSystemUsage) AS 'Average File System Usage' WHERE collector.name = 'azure-monitor' AND azure.resourceType = 'microsoft.web/sites' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/azure-web-apps/azure-web-apps.png b/dashboards/azure-web-apps/azure-web-apps.png new file mode 100644 index 0000000000..d8bd357455 Binary files /dev/null and b/dashboards/azure-web-apps/azure-web-apps.png differ diff --git a/dashboards/blazemeter/blazemeter.json b/dashboards/blazemeter/blazemeter.json new file mode 100644 index 0000000000..f8ecff22ef --- /dev/null +++ b/dashboards/blazemeter/blazemeter.json @@ -0,0 +1,299 @@ +{ + "name": "BlazeMeter API Monitoring", + "description": null, + "pages": [ + { + "name": "BlazeMeter API Monitoring", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![BlazeMeter logo](https://www.blazemeter.com/sites/default/themes/custom/blazemeter/logo.svg)\n# BlazeMeter API Monitoring\n## BlazeMeter was designed and built by engineers who are passionate about ***open source***. From `mobile` to `mainframe`, `IDE` or `UI`, bring teams together in a single platform with shared visibility, tests, and reports." + } + }, + { + "title": "Test Result Counts for Past Week", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM RunscopeRadarTestRun FACET result TIMESERIES SINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Assertion Pass/Fail Counts by Day for Past Week", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(assertions_passed), sum(assertions_failed) FROM RunscopeRadarTestRun SINCE 1 week ago TIMESERIES 1 day" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Times Histogram Over Past Week", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(response_time_ms, 1000) FROM RunscopeRadarTestRequest SINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Response Times Over Past Day", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(response_time_ms, 50) AS 'Average' FROM RunscopeRadarTestRequest TIMESERIES SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "90th Percentile Response Times Over Past Day", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(response_time_ms, 90) AS '90th Percentile' FROM RunscopeRadarTestRequest TIMESERIES SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "95th Percentile Response Times Over Past Day", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(response_time_ms, 95) AS '95th Percentile' FROM RunscopeRadarTestRequest TIMESERIES SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "99th Percentile Response Times Over Past Day", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(response_time_ms, 99) AS '99th Percentile' FROM RunscopeRadarTestRequest TIMESERIES SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Status Codes for Past Day", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM RunscopeRadarTestRequest SINCE yesterday FACET response_status_code TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Test Run Summary", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "From RunscopeRadarTestRun SELECT test_name, result, started_at, finished_at SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/blazemeter/blazemeter.png b/dashboards/blazemeter/blazemeter.png new file mode 100644 index 0000000000..95e63c153a Binary files /dev/null and b/dashboards/blazemeter/blazemeter.png differ diff --git a/dashboards/botolytics/botolytics.json b/dashboards/botolytics/botolytics.json new file mode 100644 index 0000000000..cbd2e8c4b0 --- /dev/null +++ b/dashboards/botolytics/botolytics.json @@ -0,0 +1,576 @@ + +{ + "name": "Botolytics", + "description": "Analyse your traffic for bots.", + "pages": [ + { + "name": "Traffic / Agents", + "description": null, + "widgets": [ + { + "title": "Click to filter", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction select count(*) \nfacet cases(\nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand request.headers.host like '%www%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/1.%'\nand request.headers.userAgent not like '%Chrome/2.%'\nand request.headers.userAgent not like '%Chrome/3%'\nand request.headers.userAgent not like '%Chrome/4%'\nand request.headers.userAgent not like '%Chrome/5%'\nand request.headers.userAgent not like '%Chrome/6%'\nand request.headers.userAgent not like '%Chrome/12.%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/100%'\nand request.headers.userAgent not like '%Firefox/2%'\nand request.headers.userAgent not like '%Firefox/3%'\nand request.headers.userAgent not like '%Firefox/4%'\nand request.headers.userAgent not like '%Firefox/5%'\nand request.headers.userAgent not like '%Firefox/6%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/91%'\nand request.headers.userAgent not like '%Firefox/98%'\nand request.headers.userAgent not like '%Firefox/99%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%RKQ1.200826%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Version/9.0.2 Safari/601.3.9%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand request.headers.host like '%www%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/1.%'\nor request.headers.userAgent like '%Chrome/2.%'\nor request.headers.userAgent like '%Chrome/3%'\nor request.headers.userAgent like '%Chrome/4%'\nor request.headers.userAgent like '%Chrome/5%'\nor request.headers.userAgent like '%Chrome/6%'\nor request.headers.userAgent like '%Chrome/7%'\nor request.headers.userAgent like '%Chrome/12.%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/100%'\nor request.headers.userAgent like '%Firefox/2%'\nor request.headers.userAgent like '%Firefox/3%'\nor request.headers.userAgent like '%Firefox/4%'\nor request.headers.userAgent like '%Firefox/5%'\nor request.headers.userAgent like '%Firefox/6%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/98%'\nor request.headers.userAgent like '%Firefox/99%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%RKQ1.200826%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Version/9.0.2 Safari/601.3.9%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd') since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Status Codes", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) facet httpResponseCode, http.statusCode since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Agents", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) facet request.headers.userAgent limit 30 since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bots vs Real", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#c5bcb4", + "seriesName": "Bots" + }, + { + "color": "#f2e554", + "seriesName": "No User Agent" + }, + { + "color": "#50943d", + "seriesName": "mostly real" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) \nfacet cases(\nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/1.%'\nand request.headers.userAgent not like '%Chrome/2.%'\nand request.headers.userAgent not like '%Chrome/3%'\nand request.headers.userAgent not like '%Chrome/4%'\nand request.headers.userAgent not like '%Chrome/5%'\nand request.headers.userAgent not like '%Chrome/6%'\nand request.headers.userAgent not like '%Chrome/12.%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/100%'\nand request.headers.userAgent not like '%Firefox/2%'\nand request.headers.userAgent not like '%Firefox/3%'\nand request.headers.userAgent not like '%Firefox/4%'\nand request.headers.userAgent not like '%Firefox/5%'\nand request.headers.userAgent not like '%Firefox/6%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/98%'\nand request.headers.userAgent not like '%Firefox/99%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%RKQ1.200826%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Version/9.0.2 Safari/601.3.9%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/1.%'\nor request.headers.userAgent like '%Chrome/2.%'\nor request.headers.userAgent like '%Chrome/3%'\nor request.headers.userAgent like '%Chrome/4%'\nor request.headers.userAgent like '%Chrome/5%'\nor request.headers.userAgent like '%Chrome/6%'\nor request.headers.userAgent like '%Chrome/7%'\nor request.headers.userAgent like '%Chrome/12.%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/100%'\nor request.headers.userAgent like '%Firefox/2%'\nor request.headers.userAgent like '%Firefox/3%'\nor request.headers.userAgent like '%Firefox/4%'\nor request.headers.userAgent like '%Firefox/5%'\nor request.headers.userAgent like '%Firefox/6%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/98%'\nor request.headers.userAgent like '%Firefox/99%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%RKQ1.200826%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Version/9.0.2 Safari/601.3.9%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd') since 1 day ago\ntimeseries max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Errors excl. gif, png, js, css, ico, xml and path /_ui/", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) timeseries max where httpResponseCode >= '400' or http.statusCode >= 400 or http.statusCode >= '400' where request.uri not like '/_ui/%' and request.uri not like '%.png' and request.uri not like '%css' and request.uri not like '%gif' and request.uri not like '%.js' and request.uri not like '%.ico' and request.uri not like '%woff%' facet httpResponseCode, http.statusCode since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Response Errors only gif, png, js, css, ico, xml and path /_ui/", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) timeseries max where httpResponseCode >= '400' or http.statusCode >= 400 or http.statusCode >= '400' \n where request.uri like '/_ui/%' or request.uri like '%.png' or request.uri like '%css' or request.uri like '%woff%' or request.uri like '%gif' or request.uri like '%.js' or request.uri like '%.ico' or request.uri like '%.xml' facet httpResponseCode, http.statusCode since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bots vs Real duration", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT percentile(duration) since 1 day ago facet cases(\nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/1.%'\nand request.headers.userAgent not like '%Chrome/2.%'\nand request.headers.userAgent not like '%Chrome/3%'\nand request.headers.userAgent not like '%Chrome/4%'\nand request.headers.userAgent not like '%Chrome/5%'\nand request.headers.userAgent not like '%Chrome/6%'\nand request.headers.userAgent not like '%Chrome/12.%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/100%'\nand request.headers.userAgent not like '%Firefox/2%'\nand request.headers.userAgent not like '%Firefox/3%'\nand request.headers.userAgent not like '%Firefox/4%'\nand request.headers.userAgent not like '%Firefox/5%'\nand request.headers.userAgent not like '%Firefox/6%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/98%'\nand request.headers.userAgent not like '%Firefox/99%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%RKQ1.200826%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Version/9.0.2 Safari/601.3.9%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/1.%'\nor request.headers.userAgent like '%Chrome/2.%'\nor request.headers.userAgent like '%Chrome/3%'\nor request.headers.userAgent like '%Chrome/4%'\nor request.headers.userAgent like '%Chrome/5%'\nor request.headers.userAgent like '%Chrome/6%'\nor request.headers.userAgent like '%Chrome/7%'\nor request.headers.userAgent like '%Chrome/12.%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/100%'\nor request.headers.userAgent like '%Firefox/2%'\nor request.headers.userAgent like '%Firefox/3%'\nor request.headers.userAgent like '%Firefox/4%'\nor request.headers.userAgent like '%Firefox/5%'\nor request.headers.userAgent like '%Firefox/6%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/98%'\nor request.headers.userAgent like '%Firefox/99%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%RKQ1.200826%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Version/9.0.2 Safari/601.3.9%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd') timeseries max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total requests gif, png, js, css, ico, xml and path /_ui/", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) where request.uri like '/_ui/%' or request.uri like '%.png' or request.uri like '%css' or request.uri like '%gif' or request.uri like '%.js' or request.uri like '%.ico' or request.uri like '%.xml' facet request.uri limit 50 since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apps", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) since 1 day ago facet appName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors excl. gif, png, js, css, ico, xml and path /_ui/", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*)\n where request.uri not like '/_ui/%' and request.uri not like '%.png' and request.uri not like '%css' and request.uri not like '%woff%' and request.uri not like '%gif' and request.uri not like '%.js' and request.uri not like '%.ico' and request.uri not like '%.xml' facet request.uri limit 50 since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Agents != Mozilla", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) facet request.headers.userAgent limit 50 where request.headers.userAgent not like 'Mozilla%' since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Referer", + "layout": { + "column": 1, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) facet request.headers.referer limit 50 since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Compute Hours serving Bots vs Real", + "layout": { + "column": 5, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "binop", + "precision": 3, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT sum(duration)/60/60 as 'Hours' since 1 day ago facet cases(\nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/1.%'\nand request.headers.userAgent not like '%Chrome/2.%'\nand request.headers.userAgent not like '%Chrome/3%'\nand request.headers.userAgent not like '%Chrome/4%'\nand request.headers.userAgent not like '%Chrome/5%'\nand request.headers.userAgent not like '%Chrome/6%'\nand request.headers.userAgent not like '%Chrome/12.%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/100%'\nand request.headers.userAgent not like '%Firefox/2%'\nand request.headers.userAgent not like '%Firefox/3%'\nand request.headers.userAgent not like '%Firefox/4%'\nand request.headers.userAgent not like '%Firefox/5%'\nand request.headers.userAgent not like '%Firefox/6%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/98%'\nand request.headers.userAgent not like '%Firefox/99%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%RKQ1.200826%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Version/9.0.2 Safari/601.3.9%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/1.%'\nor request.headers.userAgent like '%Chrome/2.%'\nor request.headers.userAgent like '%Chrome/3%'\nor request.headers.userAgent like '%Chrome/4%'\nor request.headers.userAgent like '%Chrome/5%'\nor request.headers.userAgent like '%Chrome/6%'\nor request.headers.userAgent like '%Chrome/7%'\nor request.headers.userAgent like '%Chrome/12.%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/100%'\nor request.headers.userAgent like '%Firefox/2%'\nor request.headers.userAgent like '%Firefox/3%'\nor request.headers.userAgent like '%Firefox/4%'\nor request.headers.userAgent like '%Firefox/5%'\nor request.headers.userAgent like '%Firefox/6%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/98%'\nor request.headers.userAgent like '%Firefox/99%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%RKQ1.200826%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Version/9.0.2 Safari/601.3.9%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Calls Bots vs Real", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "binop", + "precision": 3, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT sum(databaseCallCount) as 'Sum Database Requests' since 1 day ago facet cases(\nwhere request.headers.host like '%prod%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/106%'\nand request.headers.userAgent not like '%Chrome/39%'\nand request.headers.userAgent not like '%Chrome/48%'\nand request.headers.userAgent not like '%Chrome/51%'\nand request.headers.userAgent not like '%Chrome/58%'\nand request.headers.userAgent not like '%Chrome/59%'\nand request.headers.userAgent not like '%Chrome/61%'\nand request.headers.userAgent not like '%Chrome/66%'\nand request.headers.userAgent not like '%Chrome/69%'\nand request.headers.userAgent not like '%Chrome/71%'\nand request.headers.userAgent not like '%Chrome/72%'\nand request.headers.userAgent not like '%Chrome/74%'\nand request.headers.userAgent not like '%Chrome/76%'\nand request.headers.userAgent not like '%Chrome/77%'\nand request.headers.userAgent not like '%Chrome/79%'\nand request.headers.userAgent not like '%Chrome/70%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/78%'\nand request.headers.userAgent not like '%Firefox/30%'\nand request.headers.userAgent not like '%Firefox/46%'\nand request.headers.userAgent not like '%Firefox/61%'\nand request.headers.userAgent not like '%Firefox/57%'\nand request.headers.userAgent not like '%Firefox/43%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/41%'\nand request.headers.userAgent not like '%Firefox/59%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/68%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/62%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host like '%prod%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/106%'\nor request.headers.userAgent like '%Chrome/39%'\nor request.headers.userAgent like '%Chrome/48%'\nor request.headers.userAgent like '%Chrome/51%'\nor request.headers.userAgent like '%Chrome/58%'\nor request.headers.userAgent like '%Chrome/59%'\nor request.headers.userAgent like '%Chrome/61%'\nor request.headers.userAgent like '%Chrome/66%'\nor request.headers.userAgent like '%Chrome/69%'\nor request.headers.userAgent like '%Chrome/71%'\nor request.headers.userAgent like '%Chrome/72%'\nor request.headers.userAgent like '%Chrome/74%'\nor request.headers.userAgent like '%Chrome/76%'\nor request.headers.userAgent like '%Chrome/77%'\nor request.headers.userAgent like '%Chrome/79%'\nor request.headers.userAgent like '%Chrome/70%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/78%'\nor request.headers.userAgent like '%Firefox/30%'\nor request.headers.userAgent like '%Firefox/46%'\nor request.headers.userAgent like '%Firefox/61%'\nor request.headers.userAgent like '%Firefox/57%'\nor request.headers.userAgent like '%Firefox/43%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/41%'\nor request.headers.userAgent like '%Firefox/59%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/68%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/62%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd', \nwhere request.headers.userAgent is null as 'No User Agent'\n)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Raw", + "layout": { + "column": 1, + "row": 18, + "width": 12, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT * since 1 day ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts", + "layout": { + "column": 1, + "row": 24, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null + , + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) facet request.headers.host limit 50 since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Percent", + "layout": { + "column": 5, + "row": 24, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction select percentage(count(*), where error is true) since 1 day ago timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 24, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": + null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction select count(*) \nfacet cases(\nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nand tags.Env !='Test'\nand host not like '%issrv%'\nand request.headers.host not like '%localhost%' \nand request.headers.host not like '%139.%' \nand request.headers.host is not null \nand request.headers.referer not like '%192.168.%'\nand request.headers.referer not like 'http://www.brodjanac.com/'\nand request.headers.userAgent not like '%preview%'\nand request.headers.host not like '%.fi.muc.%' \nand request.headers.userAgent not like '%spider%' \nand request.headers.userAgent not like '%crawler%' \nand request.headers.userAgent not like '%bot%' \nand request.headers.userAgent not like '%/13.0.5 Safari/605.1.15'\nand request.headers.userAgent not like '%Trident%' \nand request.headers.userAgent not like '%contentking%'\nand request.headers.userAgent != 'Mozilla/5.0'\nand request.headers.userAgent != 'Mozilla/5.1'\nand request.headers.userAgent not like '%Lighthouse'\nand request.headers.userAgent not like '%Chrome/81%'\nand request.headers.userAgent not like '%Chrome/1.%'\nand request.headers.userAgent not like '%Chrome/2.%'\nand request.headers.userAgent not like '%Chrome/3%'\nand request.headers.userAgent not like '%Chrome/4%'\nand request.headers.userAgent not like '%Chrome/5%'\nand request.headers.userAgent not like '%Chrome/6%'\nand request.headers.userAgent not like '%Chrome/12.%'\nand request.headers.userAgent not like '%Chrome/80%'\nand request.headers.userAgent not like '%Chrome/83%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/87%'\nand request.headers.userAgent not like '%Chrome/88%'\nand request.headers.userAgent not like '%Chrome/86%'\nand request.headers.userAgent not like '%Chrome/89%'\nand request.headers.userAgent not like '%Chrome/91%'\nand request.headers.userAgent not like '%Chrome/98%'\nand request.headers.userAgent not like '%Chrome/99%'\nand request.headers.userAgent not like '%Chrome/100%'\nand request.headers.userAgent not like '%Firefox/2%'\nand request.headers.userAgent not like '%Firefox/3%'\nand request.headers.userAgent not like '%Firefox/4%'\nand request.headers.userAgent not like '%Firefox/5%'\nand request.headers.userAgent not like '%Firefox/6%'\nand request.headers.userAgent not like '%Firefox/86%'\nand request.headers.userAgent not like '%Firefox/15%'\nand request.headers.userAgent not like '%Firefox/92%'\nand request.headers.userAgent not like '%Firefox/98%'\nand request.headers.userAgent not like '%Firefox/99%'\nand request.headers.userAgent not like '%Firefox/75%'\nand request.headers.userAgent not like '%Firefox/70%'\nand request.headers.userAgent not like '%Firefox/102.8%'\nand request.headers.userAgent not like '%Firefox/73%'\nand request.headers.userAgent not like '%Firefox/71%'\nand request.headers.userAgent not like '%Firefox/77%'\nand request.headers.userAgent not like '%Firefox/78%'\nand request.headers.userAgent not like '%PhantomJS%'\nand request.headers.userAgent not like '%RKQ1.200826%'\nand request.headers.userAgent not like '%Version/13.0.3%'\nand request.headers.userAgent not like '%Version/9.0.2 Safari/601.3.9%'\nand request.headers.userAgent not like '%Mobile Safari/10600.%'\nand request.headers.userAgent not like '%OS X 11_2_2%'\nand request.headers.userAgent not like '%OS 14_4%'\nand request.headers.userAgent not like '%beanserver%'\nand request.headers.userAgent not like '%SISTRIX%'\nand request.headers.userAgent not like '%Chrome/42%'\nand request.headers.userAgent not like 'Mozilla/5.0 (Linux; Android 10; K)%'\nand request.headers.userAgent like 'Mozilla%' \nor request.headers.userAgent like 'Opera%' \nas 'Real Prod', \nwhere request.headers.host not like '%dev%' \nand request.headers.host not like '%stage%' \nand request.headers.host not like '%qa%' \nor request.headers.host is null \nor tags.Env ='Test'\nor host like '%issrv%'\nor request.headers.userAgent like '%preview%'\nor request.headers.host like '%.fi.muc.%' \nor request.headers.userAgent like '%spider%' \nor request.headers.userAgent like '%crawler%' \nor request.headers.userAgent like '%bot%' \nor request.headers.userAgent like '%/13.0.5 Safari/605.1.15'\nor request.headers.userAgent like '%Trident%' \nor request.headers.userAgent like '%contentking%'\nor request.headers.userAgent != 'Mozilla/5.0'\nor request.headers.userAgent != 'Mozilla/5.1'\nor request.headers.userAgent like '%Lighthouse'\nor request.headers.userAgent like '%Chrome/81%'\nor request.headers.userAgent like '%Chrome/1.%'\nor request.headers.userAgent like '%Chrome/2.%'\nor request.headers.userAgent like '%Chrome/3%'\nor request.headers.userAgent like '%Chrome/4%'\nor request.headers.userAgent like '%Chrome/5%'\nor request.headers.userAgent like '%Chrome/6%'\nor request.headers.userAgent like '%Chrome/7%'\nor request.headers.userAgent like '%Chrome/12.%'\nor request.headers.userAgent like '%Chrome/80%'\nor request.headers.userAgent like '%Chrome/83%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/87%'\nor request.headers.userAgent like '%Chrome/88%'\nor request.headers.userAgent like '%Chrome/86%'\nor request.headers.userAgent like '%Chrome/89%'\nor request.headers.userAgent like '%Chrome/91%'\nor request.headers.userAgent like '%Chrome/98%'\nor request.headers.userAgent like '%Chrome/99%'\nor request.headers.userAgent like '%Chrome/100%'\nor request.headers.userAgent like '%Firefox/2%'\nor request.headers.userAgent like '%Firefox/3%'\nor request.headers.userAgent like '%Firefox/4%'\nor request.headers.userAgent like '%Firefox/5%'\nor request.headers.userAgent like '%Firefox/6%'\nor request.headers.userAgent like '%Firefox/86%'\nor request.headers.userAgent like '%Firefox/15%'\nor request.headers.userAgent like '%Firefox/92%'\nor request.headers.userAgent like '%Firefox/98%'\nor request.headers.userAgent like '%Firefox/99%'\nor request.headers.userAgent like '%Firefox/75%'\nor request.headers.userAgent like '%Firefox/70%'\nor request.headers.userAgent like '%Firefox/102.8%'\nor request.headers.userAgent like '%Firefox/73%'\nor request.headers.userAgent like '%Firefox/71%'\nor request.headers.userAgent like '%Firefox/77%'\nor request.headers.userAgent like '%Firefox/78%'\nor request.headers.userAgent like '%RKQ1.200826%'\nor request.headers.userAgent like '%PhantomJS%'\nor request.headers.userAgent like '%Version/13.0.3%'\nor request.headers.userAgent like '%Version/9.0.2 Safari/601.3.9%'\nor request.headers.userAgent like '%Mobile Safari/10600.%'\nor request.headers.userAgent like '%OS X 11_2_2%'\nor request.headers.userAgent like '%OS 14_4%'\nor request.headers.userAgent like '%beanserver%'\nor request.headers.userAgent like '%SISTRIX%'\nor request.headers.userAgent like '%Chrome/42%'\nor request.headers.userAgent like 'Mozilla/5.0 (Linux; orroid 10; K)%'\nor request.headers.userAgent not like 'Mozilla%' \nor request.headers.userAgent not like 'Opera%' \nas 'Bot / PreProd') since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/botolytics/botolytics01.png b/dashboards/botolytics/botolytics01.png new file mode 100644 index 0000000000..51bc4c601a Binary files /dev/null and b/dashboards/botolytics/botolytics01.png differ diff --git a/dashboards/botolytics/botolytics02.png b/dashboards/botolytics/botolytics02.png new file mode 100644 index 0000000000..862a47c52d Binary files /dev/null and b/dashboards/botolytics/botolytics02.png differ diff --git a/dashboards/botolytics/botolytics03.png b/dashboards/botolytics/botolytics03.png new file mode 100644 index 0000000000..229fc26df0 Binary files /dev/null and b/dashboards/botolytics/botolytics03.png differ diff --git a/dashboards/confluent-cloud/confluent-cloud.json b/dashboards/confluent-cloud/confluent-cloud.json index 50c6bb3f0f..343d4e3cd8 100644 --- a/dashboards/confluent-cloud/confluent-cloud.json +++ b/dashboards/confluent-cloud/confluent-cloud.json @@ -1,622 +1,633 @@ { - "name": "Confluent Cloud", - "description": null, - "pages": [ - { - "name": "Confluent Cloud", - "description": null, - "widgets": [ - { - "title": "Number of Brokers", - "layout": { - "column": 1, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers) FROM Metric" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "name": "Confluent Cloud", + "description": null, + "pages": [ + { + "name": "Confluent Cloud", + "description": null, + "widgets": [ + { + "title": "Number of Brokers", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(kafka.brokers) as 'Kafka Brokers' FROM Metric " } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + }, + { + "title": "Consumer Group Lag", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 }, - { - "title": "Consumer Group Lag", - "layout": { - "column": 5, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.consumer_group.lag) FROM Metric TIMESERIES FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(kafka.consumer_group.lag) FROM Metric TIMESERIES FACET `topic` LIMIT MAX" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Active Connections", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Records Recieved Per Minute", - "layout": { - "column": 9, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_received_records) FROM Metric TIMESERIES FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT max(confluent_kafka_server_active_connection_count) AS 'Active Connections' FROM Metric facet kafka_id LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Topics", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" }, - { - "title": "Topics", - "layout": { - "column": 1, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.topic.partitions) FROM Metric FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(kafka.topic.partitions) FROM Metric FACET `topic` LIMIT 100" } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + }, + { + "title": "Records Sent Per Minute", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 }, - { - "title": "Cluster Partitions", - "layout": { - "column": 5, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_partition_count) FROM Metric FACET `kafka_id` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_sent_records),1 minute ) FROM Metric TIMESERIES FACET `topic` where `kafka_id` in ({{kafka_id}}) LIMIT MAX" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Records Recieved Per Minute", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Records Sent Per Minute", - "layout": { - "column": 9, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_sent_records) FROM Metric TIMESERIES FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_received_records),1 minute ) FROM Metric TIMESERIES FACET `topic` where `kafka_id` in ({{kafka_id}}) LIMIT MAX" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Cluster Specs", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - { - "title": "Cluster Retained Bytes", - "layout": { - "column": 1, - "row": 7, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT sum(confluent_kafka_server_retained_bytes) FROM Metric TIMESERIES FACET `kafka_id` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES" - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Last Update", + "type": "date" } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(topic) as 'Topics',\nlatest(confluent_kafka_server_partition_count) as 'Partitions', uniqueCount(consumer_group_id) as 'Consumer Groups' FROM Metric where `kafka_id` in ({{kafka_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false } + } + }, + { + "title": "Recieved Bytes by Topic", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Recieved Bytes by Topic", - "layout": { - "column": 5, - "row": 7, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_received_bytes) FROM Metric TIMESERIES FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES" - }, - "yAxisLeft": { - "zero": false + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(confluent_kafka_server_received_bytes) FROM Metric TIMESERIES FACET `topic` where `kafka_id` in ({{kafka_id}}) LIMIT MAX" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": false } + } + }, + { + "title": "Sent Bytes by Topic", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 }, - { - "title": "Sent Bytes by Topic", - "layout": { - "column": 9, - "row": 7, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_sent_bytes) FROM Metric TIMESERIES FACET `topic` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES" - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(confluent_kafka_server_sent_bytes) FROM Metric TIMESERIES FACET `topic` where `kafka_id` in ({{kafka_id}}) LIMIT MAX " } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Retained Bytes Per Topic", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 }, - { - "title": "Broker Latency in ms (Average)", - "layout": { - "column": 1, - "row": 10, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.request_latency_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "MS" - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(confluent_kafka_server_retained_bytes) FROM Metric TIMESERIES FACET topic LIMIT MAX" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Egres rate (bytes/minute)", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Consumer Fetch Rate", - "layout": { - "column": 5, - "row": 10, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.consumer_fetch_rate_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 100" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(l) as egress from (SELECT rate(sum(confluent_kafka_server_response_bytes), 1 minute) as l FROM Metric WHERE kafka_id IN {{kafka_id}} FACET topic LIMIT MAX TIMESERIES) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Ingress rate (bytes/minute)", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 }, - { - "title": "Broker Incoming Byte Rate Average", - "layout": { - "column": 9, - "row": 10, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.incoming_byte_rate_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES_PER_SECOND" - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(l) as ingress from (SELECT rate(sum(confluent_kafka_server_request_bytes), 1 minute) as l FROM Metric WHERE kafka_id IN {{kafka_id}} FACET topic LIMIT MAX TIMESERIES) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Partitions ", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Broker Outgoing Byte Rate Average", - "layout": { - "column": 1, - "row": 13, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.outgoing_byte_rate_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES_PER_SECOND" - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(confluent_kafka_server_partition_count) AS partitions FROM Metric WHERE `kafka_id` in ({{kafka_id}}) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Request Rate", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Broker Request Rate Average", - "layout": { - "column": 5, - "row": 13, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.request_rate_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_request_count), 1 minute) as 'Requests Per Minute' FROM Metric WHERE `kafka_id` in ({{kafka_id}}) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Response Rate ", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Broker Request Size Average", - "layout": { - "column": 9, - "row": 13, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.request_size_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES" - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_response_count), 1 minute) as 'Responses Per Minute' FROM Metric WHERE `kafka_id` in ({{kafka_id}}) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "REQUESTS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Successful Auth Attempts", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - { - "title": "Broker Requests in Flight", - "layout": { - "column": 1, - "row": 16, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.requests_in_flight) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "COUNT" - }, - "yAxisLeft": { - "zero": true + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_successful_authentication_count), 1 minute) AS 'Auths Per Minute' FROM Metric WHERE `kafka_id` in ({{kafka_id}}) LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Request Bytes (bytes/second) Per Kafka Protocol Request Type", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 }, - { - "title": "Broker Response Rate Average", - "layout": { - "column": 5, - "row": 16, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.response_rate_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_request_bytes), 1 second) FROM Metric WHERE\n`kafka_id` in ({{kafka_id}}) FACET type LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + }, + "yAxisLeft": { + "zero": true } + } + }, + { + "title": "Response Bytes (bytes/second) Per Kafka Protocol Request Type", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 }, - { - "title": "Broker Respone Size Average", - "layout": { - "column": 9, - "row": 16, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT latest(kafka.brokers.response_size_avg) FROM Metric TIMESERIES FACET `broker` LIMIT 1000" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES" - }, - "yAxisLeft": { - "zero": true + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(confluent_kafka_server_response_bytes), 1 second) FROM Metric WHERE\n`kafka_id` in ({{kafka_id}}) FACET type LIMIT MAX TIMESERIES" } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES_PER_SECOND" + }, + "yAxisLeft": { + "zero": true } } - ] - } - ], - "variables": [] - } + } + ] + } + ], + "variables": [ + { + "name": "kafka_id", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "select uniques(kafka_id) from Metric" + }, + "title": "Kafka Cluster Id", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/confluent-cloud/confluentcloud01.png b/dashboards/confluent-cloud/confluentcloud01.png index e9cefa45c6..8f2bbb8901 100644 Binary files a/dashboards/confluent-cloud/confluentcloud01.png and b/dashboards/confluent-cloud/confluentcloud01.png differ diff --git a/dashboards/confluent-cloud/confluentcloud02.png b/dashboards/confluent-cloud/confluentcloud02.png index 89d7c7c1be..baaec85fa9 100644 Binary files a/dashboards/confluent-cloud/confluentcloud02.png and b/dashboards/confluent-cloud/confluentcloud02.png differ diff --git a/dashboards/confluent-cloud/confluentcloud03.png b/dashboards/confluent-cloud/confluentcloud03.png index 19ab202021..46fd83bacf 100644 Binary files a/dashboards/confluent-cloud/confluentcloud03.png and b/dashboards/confluent-cloud/confluentcloud03.png differ diff --git a/dashboards/conviva/conviva.json b/dashboards/conviva/conviva.json new file mode 100644 index 0000000000..29896367a8 --- /dev/null +++ b/dashboards/conviva/conviva.json @@ -0,0 +1,1256 @@ +{ + "name": "Conviva Integration", + "description": null, + "pages": [ + { + "name": "By Device Name", + "description": null, + "widgets": [ + { + "title": "Attempts", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) as 'Attempts' FROM Metric since 381 minutes ago until 20 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Attempts", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) FROM Metric since 381 minutes ago until 21 minutes ago TIMESERIES 1 minute FACET device_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "EBVS %", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.exit_before_video_starts.percentage`) as 'EBVS %' FROM Metric since 381 minutes ago until 20 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "EBVS %", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.exit_before_video_starts.percentage`) as 'EBVS %' FROM Metric since 381 minutes ago until 20 minutes ago FACET device_name TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Plays", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) as 'Plays' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Plays", + "layout": { + "column": 3, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Concurrent Plays", + "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": "SELECT sum(`conviva.concurrent_plays`) as 'Concurrent Plays' FROM Metric since 381 minutes ago until 21 minute ago FACET device_name limit 20 TIMESERIES 1 minute " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Video Start Failures %", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_failures.percentage`) as 'VSF %' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Video Start Failures %", + "layout": { + "column": 3, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_failures.percentage`) as 'VSF %' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Failures %", + "layout": { + "column": 7, + "row": 8, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_playback_failures.percentage`) as 'Playback Failures %' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Failures %", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_playback_failures.percentage`) as 'Playback Failures %' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "VST", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_time`) as 'VST' FROM Metric since 381 minutes ago until 20 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "VST", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_time`) as 'VST' FROM Metric since 381 minutes ago until 20 minutes ago FACET device_name TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffering Ratio", + "layout": { + "column": 7, + "row": 11, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.rebuffering_ratio`) as 'Rebuffering Ratio' FROM Metric since 381 minutes ago until 21 minutes ago FACET device_name limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffering Ratio", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.rebuffering_ratio`) as 'Rebuffering Ratio' FROM Metric since 381 minutes ago until 21 minutes ago TIMESERIES 15 minutes FACET device_name limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "By Asset", + "description": null, + "widgets": [ + { + "title": "Attempts", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) as 'Attempts' FROM Metric since 381 minutes ago until 20 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Attempts", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) FROM Metric since 381 minutes ago until 21 minutes ago TIMESERIES 1 minute FACET asset" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "EBVS %", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.exit_before_video_starts.percentage`) as 'EBVS %' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "EBVS %", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.exit_before_video_starts.percentage`) as 'EBVS %' FROM Metric since 381 minutes ago until 20 minutes ago FACET asset TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Plays", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) as 'Plays' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Plays", + "layout": { + "column": 3, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) FROM Metric since 381 minutes ago until 21 minutes ago FACET asset TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Concurrent Plays", + "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": "SELECT sum(`conviva.concurrent_plays`) as 'Concurrent Plays' FROM Metric since 381 minutes ago until 21 minute ago FACET asset limit 20 TIMESERIES 1 minute " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Video Start Failures %", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_failures.percentage`) as 'VSF %' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Video Start Failures %", + "layout": { + "column": 3, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_failures.percentage`) as 'VSF %' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Failures %", + "layout": { + "column": 7, + "row": 8, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_playback_failures.percentage`) as 'Playback Failures %' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Failures %", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_playback_failures.percentage`) as 'Playback Failures %' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "VST", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_time`) as 'VST' FROM Metric since 381 minutes ago until 20 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "VST", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.video_start_time`) as 'VST' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset TIMESERIES 15 minute limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffering Ratio", + "layout": { + "column": 7, + "row": 11, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.rebuffering_ratio`) as 'Rebuffering Ratio' FROM Metric since 381 minutes ago until 21 minutes ago FACET asset limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffering Ratio", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`conviva.rebuffering_ratio`) as 'Rebuffering Ratio' FROM Metric since 381 minutes ago until 21 minutes ago TIMESERIES 15 minutes FACET asset limit 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "Attempts", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) as 'Attempts' FROM Metric since 381 minutes ago until 20 minutes ago where device_name is NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Attempts", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.attempts`) FROM Metric since 381 minutes ago until 21 minutes ago TIMESERIES 1 minute where device_name is NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "EBVS", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.exit_before_video_starts`) as 'EBVS' FROM Metric since 381 minutes ago until 20 minutes ago where device_name is NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "EBVS", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.exit_before_video_starts`) as 'EBVS' FROM Metric since 381 minutes ago until 20 minutes ago where device_name is NOT NULL TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Plays", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) as 'Plays' FROM Metric since 381 minutes ago until 21 minutes ago where device_name is NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Plays", + "layout": { + "column": 3, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.plays`) FROM Metric since 381 minutes ago until 21 minutes ago where device_name is NOT NULL TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Concurrent Plays", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.concurrent_plays`) as 'Concurrent Plays' FROM Metric since 381 minutes ago until 21 minute ago where device_name is NOT NULL TIMESERIES 1 minute " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Video Start Failures", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "VSF Percent", + "type": null + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.video_start_failures`) as 'VSF' FROM Metric since 381 minutes ago until 21 minutes ago where device_name is NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Video Start Failures", + "layout": { + "column": 3, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.video_start_failures`) as 'VSF' FROM Metric since 381 minutes ago until 21 minutes ago where device_name is NOT NULL TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Playback Failures", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.video_playback_failures`) as 'Playback Failures' FROM Metric since 381 minutes ago until 21 minutes ago where device_name IS NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Failures", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`conviva.video_playback_failures`) as 'Playback Failures %' FROM Metric since 381 minutes ago until 21 minutes ago WHERE device_name is NOT NULL TIMESERIES 1 minute" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# VST and Rebuffer Ratio\n## Please see other tabs for VST and Rebuffer Ratio" + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/conviva/conviva.png b/dashboards/conviva/conviva.png new file mode 100644 index 0000000000..00144d2dfe Binary files /dev/null and b/dashboards/conviva/conviva.png differ diff --git a/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.json b/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.json new file mode 100644 index 0000000000..9b5e237a02 --- /dev/null +++ b/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.json @@ -0,0 +1,979 @@ +{ + "name": "Dapr Metrics", + "description": "", + "pages": [ + { + "name": "Dapr Metrics", + "description": "", + "widgets": [ + { + "title": "dapr_grpc_io_client_completed_rpcs_bucket", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_completed_rpcs_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_completed_rpcs_count", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_completed_rpcs_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_completed_rpcs_sum", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_completed_rpcs_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_received_bytes_per_rpc_bucket", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_received_bytes_per_rpc_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_received_bytes_per_rpc_count", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_received_bytes_per_rpc_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_received_bytes_per_rpc_sum", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_received_bytes_per_rpc_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_client_sent_bytes_per_rpc", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_client_sent_bytes_per_rpc) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_completed_rpcs", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_completed_rpcs) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_received_bytes_per_rpc_bucket", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_received_bytes_per_rpc_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_received_bytes_per_rpc_count", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_received_bytes_per_rpc_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_received_bytes_per_rpc_sum", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_received_bytes_per_rpc_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_sent_bytes_per_rpc_bucket", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_sent_bytes_per_rpc_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_sent_bytes_per_rpc_count", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_sent_bytes_per_rpc_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_sent_bytes_per_rpc_sum", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_sent_bytes_per_rpc_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_server_latency_bucket", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_server_latency_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_grpc_io_server_server_latency_count", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_server_latency_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000 " + } + ] + } + }, + { + "title": "dapr_grpc_io_server_server_latency_sum", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_grpc_io_server_server_latency_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_completed_count", + "layout": { + "column": 1, + "row": 19, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_completed_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_received_bytes_bucket", + "layout": { + "column": 1, + "row": 22, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_received_bytes_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_received_bytes_count", + "layout": { + "column": 5, + "row": 22, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_received_bytes_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_received_bytes_sum", + "layout": { + "column": 9, + "row": 22, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_received_bytes_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_roundtrip_latency_bucket", + "layout": { + "column": 1, + "row": 25, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_roundtrip_latency_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_roundtrip_latency_count", + "layout": { + "column": 5, + "row": 25, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_roundtrip_latency_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_roundtrip_latency_sum", + "layout": { + "column": 9, + "row": 25, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_roundtrip_latency_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_sent_bytes_bucket", + "layout": { + "column": 1, + "row": 28, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_sent_bytes_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_sent_bytes_count", + "layout": { + "column": 5, + "row": 28, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_sent_bytes_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_client_sent_bytes_sum", + "layout": { + "column": 9, + "row": 28, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_client_sent_bytes_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_latency_bucket", + "layout": { + "column": 1, + "row": 31, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_latency_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_latency_count", + "layout": { + "column": 5, + "row": 31, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_latency_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_latency_sum", + "layout": { + "column": 9, + "row": 31, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_latency_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_request_bytes_bucket", + "layout": { + "column": 1, + "row": 34, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_request_bytes_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_request_bytes_count", + "layout": { + "column": 5, + "row": 34, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_request_bytes_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_request_bytes_sum", + "layout": { + "column": 9, + "row": 34, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_request_bytes_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_request_count", + "layout": { + "column": 1, + "row": 37, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_request_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_response_bytes_bucket", + "layout": { + "column": 1, + "row": 40, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_response_bytes_bucket) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_response_bytes_count ", + "layout": { + "column": 5, + "row": 40, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_response_bytes_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_response_bytes_sum", + "layout": { + "column": 9, + "row": 40, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_response_bytes_sum) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_http_server_response_count", + "layout": { + "column": 1, + "row": 43, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_http_server_response_count) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_injector_sidecar_injection_requests_total", + "layout": { + "column": 1, + "row": 46, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_injector_sidecar_injection_requests_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_injector_sidecar_injection_succeeded_total", + "layout": { + "column": 7, + "row": 46, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_injector_sidecar_injection_succeeded_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_operator_service_created_total", + "layout": { + "column": 1, + "row": 49, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_operator_service_created_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_runtime_mtls_init_total", + "layout": { + "column": 1, + "row": 52, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_runtime_mtls_init_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_runtime_mtls_workload_cert_rotated_total", + "layout": { + "column": 7, + "row": 52, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_runtime_mtls_workload_cert_rotated_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_sentry_cert_sign_request_received_total", + "layout": { + "column": 1, + "row": 55, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_sentry_cert_sign_request_received_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_sentry_cert_sign_success_total", + "layout": { + "column": 5, + "row": 55, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_sentry_cert_sign_success_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "dapr_sentry_issuercert_changed_total", + "layout": { + "column": 9, + "row": 55, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_sentry_issuercert_changed_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.png b/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.png new file mode 100644 index 0000000000..b948ea8e66 Binary files /dev/null and b/dashboards/dapr-metrics/nr-dashboard-dapr-metrics.png differ diff --git a/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.json b/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.json new file mode 100644 index 0000000000..c732f92b78 --- /dev/null +++ b/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.json @@ -0,0 +1,357 @@ +{ + "name": "Dapr System Services Dashboard", + "description": "", + "pages": [ + { + "name": "Dapr System Services Dashboard", + "description": "", + "widgets": [ + { + "title": "Uptime", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(timestamp)- latest(process_start_time_seconds) FROM Metric where deploymentName in ('dapr-sentry','dapr-placement','dapr-sidecar-injector','dapr-operator') LIMIT 100 facet deploymentName" + } + ] + } + }, + { + "title": "Total CPU usage (kernel and user)", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(process_cpu_seconds_total), 1 SECONDS) FROM Metric WHERE (podName RLIKE '(dapr-sentry|dapr-sidecar-injector|dapr-placement|dapr-operator).*') SINCE 60 MINUTES AGO UNTIL NOW FACET podName LIMIT 100 TIMESERIES 300000 SLIDE BY 30000" + } + ] + } + }, + { + "title": "Memory usage in bytes", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT rate(sum(process_resident_memory_bytes), 1 SECONDS) FROM Metric WHERE (podName RLIKE '(dapr-sentry|dapr-sidecar-injector|dapr-placement|dapr-operator).*') SINCE 60 MINUTES AGO UNTIL NOW FACET podName LIMIT 100 TIMESERIES 300000 SLIDE BY 30000" + } + ] + } + }, + { + "title": "Number of GO routines", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT max(go_goroutines) FROM Metric WHERE (`label.app` RLIKE '(dapr-sentry|dapr-sidecar-injector|dapr-placement|dapr-operator)') SINCE 60 MINUTES AGO UNTIL NOW FACET `label.app` LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# Services Created", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT cardinality(dapr_operator_service_created_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET app_id LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# Services Deleted", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT cardinality(dapr_operator_service_deleted_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# sidecar injection requests", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_injector_sidecar_injection_requests_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# successful sidecar injected", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_injector_sidecar_injection_succeeded_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "Root/Issuer cert expiry", + "layout": { + "column": 1, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (min(dapr_sentry_issuercert_expiry_timestamp) - (aggregationendtime() / 1000))/60/60/24 as 'Days' FROM Metric SINCE 60 MINUTES AGO UNTIL NOW " + } + ] + } + }, + { + "title": "Certificate Signing Request ( CSR ) from Dapr runtime", + "layout": { + "column": 3, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_cert_sign_request_received_total) * cardinality(dapr_sentry_cert_sign_request_received_total)) as 'dapr_sentry_cert_sign_request_received_total' FROM Metric WHERE (podName = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 30000" + }, + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_cert_sign_success_total) * cardinality(dapr_sentry_cert_sign_success_total)) as 'dapr_sentry_cert_sign_success_total' FROM Metric WHERE (podName = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 30000" + }, + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_cert_sign_failure_total) * cardinality(dapr_sentry_cert_sign_failure_total)) as 'dapr_sentry_cert_sign_failure_total' FROM Metric WHERE (podName = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 30000" + } + ] + } + }, + { + "title": "CSR Failures", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_cert_sign_failure_total) * cardinality(dapr_sentry_cert_sign_failure_total)) FROM Metric WHERE (podName = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW FACET reason LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "Issuer cert and key changed total", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_issuercert_changed_total) * cardinality(dapr_sentry_issuercert_changed_total)) FROM Metric WHERE (podName = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 30000" + } + ] + } + }, + { + "title": "Server TLS certificate issuance failures", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (average(dapr_sentry_servercert_issue_failed_total) * cardinality(dapr_sentry_servercert_issue_failed_total)) FROM Metric WHERE (app = 'dapr-sentry') SINCE 60 MINUTES AGO UNTIL NOW FACET reason LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# total replicas", + "layout": { + "column": 1, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_placement_hosts_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# replicas not hosting actors", + "layout": { + "column": 7, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_placement_nonactorhosts_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + }, + { + "title": "# actor types", + "layout": { + "column": 1, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(dapr_placement_actortypes_total) FROM Metric SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100 TIMESERIES 30000" + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.png b/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.png new file mode 100644 index 0000000000..05e9cfc4be Binary files /dev/null and b/dashboards/dapr-system-services/nr-dashboard-dapr-system-services.png differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard01.jpg b/dashboards/datazoom-dashboard/datazoom_dashboard01.jpg new file mode 100644 index 0000000000..c592d706ce Binary files /dev/null and b/dashboards/datazoom-dashboard/datazoom_dashboard01.jpg differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard01.png b/dashboards/datazoom-dashboard/datazoom_dashboard01.png deleted file mode 100644 index fc23369fc4..0000000000 Binary files a/dashboards/datazoom-dashboard/datazoom_dashboard01.png and /dev/null differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard02.jpg b/dashboards/datazoom-dashboard/datazoom_dashboard02.jpg new file mode 100644 index 0000000000..8b5faeb218 Binary files /dev/null and b/dashboards/datazoom-dashboard/datazoom_dashboard02.jpg differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard02.png b/dashboards/datazoom-dashboard/datazoom_dashboard02.png deleted file mode 100644 index 42baf23df5..0000000000 Binary files a/dashboards/datazoom-dashboard/datazoom_dashboard02.png and /dev/null differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard03.jpg b/dashboards/datazoom-dashboard/datazoom_dashboard03.jpg new file mode 100644 index 0000000000..f72f516fa4 Binary files /dev/null and b/dashboards/datazoom-dashboard/datazoom_dashboard03.jpg differ diff --git a/dashboards/datazoom-dashboard/datazoom_dashboard04.jpg b/dashboards/datazoom-dashboard/datazoom_dashboard04.jpg new file mode 100644 index 0000000000..6211bae761 Binary files /dev/null and b/dashboards/datazoom-dashboard/datazoom_dashboard04.jpg differ diff --git a/dashboards/docker-otel/docker-otel.json b/dashboards/docker-otel/docker-otel.json new file mode 100644 index 0000000000..4d293ec914 --- /dev/null +++ b/dashboards/docker-otel/docker-otel.json @@ -0,0 +1,762 @@ +{ + "name": "Docker (OpenTelemetry)", + "description": null, + "pages": [ + { + "name": "otel/container-entity", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Docker Logo](https://raw.githubusercontent.com/docker-library/docs/c350af05d3fac7b5c3f6327ac82fe4d990d8729c/docker/logo.png)\n\n### Overview\n[Docker](https://www.docker.com/) is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.\n\n- - -\n### About this Dashboard\n\n- For information on the prerequisites for this dashboard, please visit the documentation [here](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/).\n- For more information on how to send telemetry data to New Relic using OTEL, visit the documentation [here](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/)\n\n\n\n" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# CPU" + } + }, + { + "title": "CPU utlization (%)", + "layout": { + "column": 4, + "row": 2, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(container.cpu.percent) OR max(container.cpu.utilization) AS 'CPU percent' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU usage (cores)", + "layout": { + "column": 8, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(container.cpu.usage.total)/1E9,1 second) AS 'CPU usage' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU limits", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(`container.cpu.limit`) OR '-' AS 'CPU Limit' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name AS 'Container Name' LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU throttling (%)", + "layout": { + "column": 8, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(container.cpu.throttling_data.throttled_periods)/sum(container.cpu.throttling_data.periods)* 100 AS 'CPU throttling' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Overview", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT uniqueCount(host.id) AS 'Hosts', uniqueCount(container.id) AS 'Containers', uniqueCount(container.image.name) AS 'Images' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) COMPARE WITH 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 8, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Memory" + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Storage" + } + }, + { + "title": "Memory utilization (%)", + "layout": { + "column": 1, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(container.memory.percent) AS 'Memory percent' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory limits", + "layout": { + "column": 4, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory Limit", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(`container.memory.usage.limit`) OR '-' AS 'Memory Limit' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name AS 'Container Name' LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory usage (bytes)", + "layout": { + "column": 6, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(container.memory.usage.total) AS 'Memory usage' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Storage usage (bytes/sec)", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " FROM Metric SELECT rate(sum(container.blockio.io_service_bytes_recursive),1 second) WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 8, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Network" + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Other" + } + }, + { + "title": "Network traffic sent (bytes/sec)", + "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 rate(sum(container.network.io.usage.tx_bytes),1 second) AS 'Transmit' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name, interface TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network traffic received (bytes/sec)", + "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 rate(sum(container.network.io.usage.rx_bytes),1 second) AS 'Receive' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name, interface TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Containers restarted (%)", + "layout": { + "column": 9, + "row": 13, + "width": 1, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT percentage(uniqueCount(container.id) , WHERE container.restarts > 0 ) WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) COMPARE WITH 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Container restarts", + "layout": { + "column": 10, + "row": 13, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(container.restarts),1 minute) AS 'Restarts' WHERE container.restarts>0 AND host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network dropped (packets/sec)", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(container.network.io.usage.tx_dropped), 1 second) AS 'Transmit',rate(sum(container.network.io.usage.rx_dropped),1 second) AS 'Receive' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network packet error (%)", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(container.network.io.usage.tx_errors)/sum(container.network.io.usage.tx_packets)*100 AS 'Transmit',sum(container.network.io.usage.rx_errors)/sum(container.network.io.usage.rx_packets)*100 AS 'Receive' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pids", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(container.pids.count) AS 'Pids' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.name TIMESERIES AUTO 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": "# Images" + } + }, + { + "title": "Image Usage", + "layout": { + "column": 1, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT uniqueCount(container.id) AS 'Containers' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.image.name AS 'Image' LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average CPU utilization per image (%)", + "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 average(container.cpu.percent) OR average(container.cpu.utilization) AS 'CPU Usage' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.image.name AS 'Image' TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average memory utilization per image (%)", + "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 average(container.memory.percent) AS 'CPU Usage' WHERE host.id IN ({{select_host}}) AND container.name IN ({{select_container}}) AND container.image.name IN ({{select_image}}) FACET container.image.name AS 'Image' TIMESERIES AUTO LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "select_host", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(host.id) WHERE otel.library.name='otelcol/dockerstatsreceiver' LIMIT MAX" + }, + "title": "Host", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "select_container", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(container.name) WHERE otel.library.name='otelcol/dockerstatsreceiver' LIMIT MAX" + }, + "title": "Container", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "select_image", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(container.image.name) WHERE otel.library.name='otelcol/dockerstatsreceiver' LIMIT MAX" + }, + "title": "Image", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/docker-otel/docker-otel.png b/dashboards/docker-otel/docker-otel.png new file mode 100644 index 0000000000..13d146b1e8 Binary files /dev/null and b/dashboards/docker-otel/docker-otel.png differ diff --git a/dashboards/elasticsearch-elasticsearch/elasticsearch.json b/dashboards/elasticsearch-elasticsearch/elasticsearch.json index bf3e1d2f01..8b235b3748 100644 --- a/dashboards/elasticsearch-elasticsearch/elasticsearch.json +++ b/dashboards/elasticsearch-elasticsearch/elasticsearch.json @@ -332,10 +332,16 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT (latest(elasticsearch.node.activeSearches) - earliest(elasticsearch.node.activeSearches))/(latest(elasticsearch.node.activeSearchesInMilliseconds) - earliest(elasticsearch.node.activeSearchesInMilliseconds)) FACET host.hostname TIMESERIES SINCE 1 WEEK AGO" + "query" : "FROM Metric SELECT (latest(elasticsearch.node.activeSearchesInMilliseconds) - earliest(elasticsearch.node.activeSearchesInMilliseconds))/sum(elasticsearch.node.activeSearches) FACET capture(entity.name, r'es-node:(?P.*)') TIMESERIES SINCE 1 WEEK AGO" } ], + "nullValues": { + "nullValue": "zero" + }, "yAxisLeft" : { "zero" : false + }, + "units": { + "unit": "MS" } } }, { @@ -358,10 +364,16 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT (latest(elasticsearch.node.get.totalGetRequests) - earliest(elasticsearch.node.get.totalGetRequests))/(latest(elasticsearch.node.get.timeGetRequestsInMilliseconds) - earliest(elasticsearch.node.get.timeGetRequestsInMilliseconds)) AS 'Total', (latest(elasticsearch.node.get.requestsDocumentExists) - earliest(elasticsearch.node.get.requestsDocumentExists))/(latest(elasticsearch.node.get.requestsDocumentExistsInMilliseconds) - earliest(elasticsearch.node.get.requestsDocumentExistsInMilliseconds)) AS 'Document Exists', (latest(elasticsearch.node.get.requestsDocumentMissing) - earliest(elasticsearch.node.get.requestsDocumentMissing))/(latest(elasticsearch.node.get.requestsDocumentMissingInMilliseconds) - earliest(elasticsearch.node.get.requestsDocumentMissingInMilliseconds)) AS 'Document Missing' FACET host.hostname TIMESERIES SINCE 1 WEEK AGO" + "query" : "FROM Metric SELECT (latest(elasticsearch.node.get.totalGetRequests) - earliest(elasticsearch.node.get.totalGetRequests)) / (latest(elasticsearch.node.get.timeGetRequestsInMilliseconds) - earliest(elasticsearch.node.get.timeGetRequestsInMilliseconds)) AS 'Total', (latest(elasticsearch.node.get.requestsDocumentExists) - earliest(elasticsearch.node.get.requestsDocumentExists)) / (latest(elasticsearch.node.get.requestsDocumentExistsInMilliseconds) - earliest(elasticsearch.node.get.requestsDocumentExistsInMilliseconds)) AS 'Document Exists', (latest(elasticsearch.node.get.requestsDocumentMissing) - earliest(elasticsearch.node.get.requestsDocumentMissing)) / (latest(elasticsearch.node.get.requestsDocumentMissingInMilliseconds) - earliest(elasticsearch.node.get.requestsDocumentMissingInMilliseconds)) AS 'Document Missing' FACET capture(entity.name, r'es-node:(?P.*)') TIMESERIES SINCE 1 WEEK AGO" } ], + "nullValues": { + "nullValue": "zero" + }, "yAxisLeft" : { "zero" : false + }, + "units": { + "unit": "MS" } } }, { @@ -382,7 +394,7 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT latest(elasticsearch.node.index.indexingOperationsFailed) - earliest(elasticsearch.node.index.indexingOperationsFailed) AS 'Failed Operations' FACET host.hostname" + "query" : "FROM Metric SELECT latest(elasticsearch.node.index.indexingOperationsFailed) - earliest(elasticsearch.node.index.indexingOperationsFailed) AS 'Failed Operations' FACET capture(entity.name, r'es-node:(?P.*)')" } ] } }, { @@ -405,7 +417,7 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT (latest(elasticsearch.node.indexing.documentsIndexed) - earliest(elasticsearch.node.indexing.documentsIndexed))/(latest(elasticsearch.node.indexing.timeIndexingDocumentsInMilliseconds) - earliest(elasticsearch.node.indexing.timeIndexingDocumentsInMilliseconds)) FACET host.hostname TIMESERIES SINCE 1 WEEK AGO" + "query" : "FROM Metric SELECT (latest(elasticsearch.node.indexing.documentsIndexed) - earliest(elasticsearch.node.indexing.documentsIndexed))/(latest(elasticsearch.node.indexing.timeIndexingDocumentsInMilliseconds) - earliest(elasticsearch.node.indexing.timeIndexingDocumentsInMilliseconds)) FACET capture(entity.name, r'es-node:(?P.*)') TIMESERIES SINCE 1 WEEK AGO" } ], "yAxisLeft" : { "zero" : false @@ -431,8 +443,11 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT (latest(elasticsearch.node.merges.segmentMerges) - earliest(elasticsearch.node.merges.segmentMerges))/(latest(elasticsearch.node.merges.totalSegmentMergingInMilliseconds) - earliest(elasticsearch.node.merges.totalSegmentMergingInMilliseconds)) FACET host.hostname TIMESERIES SINCE 1 WEEK AGO" + "query" : "FROM Metric SELECT (latest(elasticsearch.node.merges.totalSegmentMergingInMilliseconds) - earliest(elasticsearch.node.merges.totalSegmentMergingInMilliseconds)) / (latest(elasticsearch.node.merges.segmentMerges) - earliest(elasticsearch.node.merges.segmentMerges)) FACET capture(entity.name, r'es-node:(?P.*)') TIMESERIES SINCE 1 WEEK AGO" } ], + "nullValues": { + "nullValue": "zero" + }, "yAxisLeft" : { "zero" : false } @@ -457,12 +472,18 @@ }, "nrqlQueries" : [ { "accountId" : 0, - "query" : "FROM Metric SELECT (latest(elasticsearch.node.refresh.total) - earliest(elasticsearch.node.refresh.total))/(latest(elasticsearch.node.refresh.totalInMilliseconds) - earliest(elasticsearch.node.refresh.totalInMilliseconds)) FACET host.hostname TIMESERIES SINCE 1 WEEK AGO" + "query" : "FROM Metric SELECT (latest(elasticsearch.node.refresh.totalInMilliseconds) - earliest(elasticsearch.node.refresh.totalInMilliseconds))/(latest(elasticsearch.node.refresh.total) - earliest(elasticsearch.node.refresh.total)) FACET capture(entityName, r'es-node:(?P.*)') TIMESERIES SINCE 1 WEEK AGO" } ], + "nullValues": { + "nullValue": "zero" + }, "yAxisLeft" : { "zero" : false + }, + "units": { + "unit": "MS" } } } ] } ] -} \ No newline at end of file +} diff --git a/dashboards/f5/f5-big-ip.json b/dashboards/f5/f5-big-ip.json new file mode 100644 index 0000000000..d9c5cc581a --- /dev/null +++ b/dashboards/f5/f5-big-ip.json @@ -0,0 +1,1184 @@ +{ + "name": "F5 BIG-IP", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![f5 logo](https://newrelic.com/sites/default/files/quickstarts/images/icons/f5--logo.svg)\n\n### Overview\n[f5 BIG-IP](https://www.f5.com/products/big-ip-services) is a set of application delivery products that work together to ensure high availability, improved performance, application security, and access control.\n- - -\n### About this Dashboard\n- For more information on how to instrument your f5 environment, visit the documentation [here](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/f5-monitoring-integration/#install)." + } + }, + { + "title": "F5 Systems", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory %", + "precision": 2, + "type": "decimal" + }, + { + "name": "CPU System %", + "precision": 2, + "type": "decimal" + }, + { + "name": "CPU User %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpSystemSample SELECT\n latest(system.cpuUserUtilization) AS 'CPU User %',\n latest(system.cpuSystemUtilization) AS 'CPU System %',\n ( latest(system.memoryUsedInBytes) / latest(system.memoryTotalInBytes) )*100 AS 'Memory %'\nFACET url AS 'F5 System'\nWHERE displayName IN ( {{f5_system}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Unhealthy Objects", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Virtual Servers", + "type": "decimal" + }, + { + "name": "Pool Members", + "type": "decimal" + }, + { + "name": "Pools", + "type": "decimal" + }, + { + "name": "Nodes", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample, F5BigIpPoolSample, F5BigIpPoolMemberSample, F5BigIpVirtualServerSample SELECT\n filter(uniqueCount(entityGuid), WHERE eventType() = 'F5BigIpNodeSample' AND (node.enabled != 1 OR node.availabilityState != 2 OR node.monitorStatus != 2 OR node.sessionStatus != 1 ) AND (reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ))) AS 'Nodes',\n filter(uniqueCount(entityGuid), WHERE eventType() = 'F5BigIpPoolSample' AND (pool.enabled != 1 OR pool.availabilityState != 2 ) AND (reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_pool}} ))) AS 'Pools',\n filter(uniqueCount(entityGuid), WHERE eventType() = 'F5BigIpPoolMemberSample' AND member.statusReason NOT IN ('Pool member is available', 'The DNS server(s) are available') AND (aparse(url,'%//*') IN ( {{f5_system}} ) AND poolName IN ( {{f5_pool}} ) AND displayName IN ( {{f5_pool_member}} ))) AS 'Pool Members',\n filter(uniqueCount(entityGuid), WHERE eventType() = 'F5BigIpVirtualServerSample' AND virtualserver.statusReason NOT IN ('The virtual server is available') AND (reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ))) AS 'Virtual Servers'\nCOMPARE WITH 1 DAY AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU User %", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpSystemSample SELECT\n average(system.cpuUserUtilization) AS 'CPU User %'\nFACET displayName AS 'F5 System'\nWHERE displayName IN ( {{f5_system}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "CPU System %", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpSystemSample SELECT\n average(system.cpuSystemUtilization) AS 'CPU System %'\nFACET displayName AS 'F5 System'\nWHERE displayName IN ( {{f5_system}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Memory %", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpSystemSample SELECT\n ( average(system.memoryUsedInBytes) / average(system.memoryTotalInBytes) )*100 AS 'Memory %'\nFACET displayName AS 'F5 System'\nWHERE displayName IN ( {{f5_system}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + } + ] + }, + { + "name": "Nodes", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![f5 logo](https://newrelic.com/sites/default/files/quickstarts/images/icons/f5--logo.svg)\n\n### Nodes\nA [node](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-concepts-11-5-1/5.html) is a logical object on the BIG-IP® Local Traffic Manager™ system that identifies the IP address of a physical resource on the network. You can explicitly create a node, or you can instruct Local Traffic Manager (LTM®) to automatically create one when you add a pool member to a load balancing pool.\n\nThe difference between a node and a pool member is that a node is designated by the device’s IP address only (`10.10.10.10`), while designation of a pool member includes an IP address and a service (such as `10.10.10:8`)." + } + }, + { + "title": "Nodes with Health Problems", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT\n if(latest(node.enabled) = 0, 'Disabled', 'Enabled') AS 'Enabled State',\n if(latest(node.availabilityState) = 2, 'Online', if(latest(node.availabilityState) = 0, 'Offline', 'Unknown')) AS 'Availability State',\n if(latest(node.monitorStatus) = 2, 'Up', if(latest(node.monitorStatus) = 0, 'Down', 'Unchecked')) AS 'Health Monitor Status',\n if(latest(node.sessionStatus) = 0, 'Disabled', 'Enabled') AS 'Session Status',\n latest(node.statusReason) AS 'Status Reason'\nWHERE (\n node.enabled != 1 OR\n node.availabilityState != 2 OR\n node.monitorStatus != 2 OR\n node.sessionStatus != 1\n )\nAND reportingEndpoint IN ( {{f5_system}} )\nAND displayName IN ( {{f5_node}} )\nFACET\n reportingEndpoint AS 'System',\n displayName AS 'Node'\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Connections and Sessions", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Sessions", + "type": "decimal" + }, + { + "name": "Client Connections", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT latest(node.connections) AS 'Client Connections', latest(node.sessions) AS 'Sessions' WHERE (node.connections > 0 OR node.sessions > 0) AND reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Connections per Second", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT average(node.connectionsPerSecond) AS 'Connections/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Requests per Second", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT average(node.requestsPerSecond) AS 'Requests/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Receive bps", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT average(node.inDataInBytesPerSecond) AS 'Rx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 Transmit bps", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT average(node.outDataInBytesPerSecond) AS 'Tx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_node}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Pools", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![f5 logo](https://newrelic.com/sites/default/files/quickstarts/images/icons/f5--logo.svg)\n\n### Pools\nA [pool](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-concepts-11-5-1/6.html#conceptid) is a logical set of devices, such as web servers, that you group together to receive and process traffic. Instead of sending client traffic to the destination IP address specified in the client request, Local Traffic Manager™ sends the request to any of the servers that are members of that pool. This helps to efficiently distribute the load on your server resources." + } + }, + { + "title": "Pools with Health Problems", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT\n if(latest(pool.enabled) = 0, 'Disabled', 'Enabled') AS 'Enabled State',\n if(latest(pool.availabilityState) = 2, 'Online', if(latest(pool.availabilityState) = 0, 'Offline', 'Unknown')) AS 'Availability State',\n latest(pool.statusReason) AS 'Status Reason'\nWHERE (\n pool.enabled != 1 OR\n pool.availabilityState != 2\n )\nAND reportingEndpoint IN ( {{f5_system}} )\nAND displayName IN ( {{f5_pool}} )\nFACET\n reportingEndpoint AS 'System',\n displayName AS 'Pool'\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Connections and Sessions", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Application Sessions", + "type": "decimal" + }, + { + "name": "Client Connections", + "type": "decimal" + }, + { + "name": "Active Members", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT latest(pool.activeMembers) AS 'Active Members', latest(pool.connections) AS 'Client Connections', latest(pool.sessions) AS 'Application Sessions' WHERE (pool.activeMembers > 0 OR pool.connections > 0 OR pool.sessions > 0) AND reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_pool}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Requests per Second", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT average(pool.requestsPerSecond) AS 'Requests/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_pool}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Receive bps", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT average(pool.outDataInBytesPerSecond) AS 'Tx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_pool}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 Transmit bps", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT average(pool.inDataInBytesPerSecond) AS 'Rx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_pool}} ) FACET reportingEndpoint AS 'System', displayName AS 'Node' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Pool Members", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![f5 logo](https://newrelic.com/sites/default/files/quickstarts/images/icons/f5--logo.svg)\n\n### Pool Members\nA [pool member](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-concepts-11-5-1/6.html#conceptid) is a logical object that represents a physical node (server), on the network. You then associate the pool with a virtual server on the BIG-IP® system. Once you have assigned a pool to a virtual server, Local Traffic Manager (LTM®) directs traffic coming into the virtual server to a member of that pool. An individual pool member can belong to one or multiple pools, depending on how you want to manage your network traffic." + } + }, + { + "title": "Active Connections and Sessions", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Application Sessions", + "type": "decimal" + }, + { + "name": "Client Connections", + "type": "decimal" + }, + { + "name": "Active Members", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT latest(member.connections) AS 'Client Connections', latest(member.sessions) AS 'Application Sessions' WHERE (member.connections > 0 OR member.sessions > 0) AND aparse(url,'%//*') IN ( {{f5_system}} ) AND poolName IN ( {{f5_pool}} ) AND displayName IN ( {{f5_pool_member}} ) FACET aparse(url, '%//*') AS 'System', poolName AS 'Pool', displayName AS 'Member' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool Members with Health Problems", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Application Sessions", + "type": "decimal" + }, + { + "name": "Client Connections", + "type": "decimal" + }, + { + "name": "Active Members", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT\n if(latest(member.enabled) = 0, 'Disabled', 'Enabled') AS 'Enabled State',\n if(latest(member.state) = 0, 'Down', 'Up') AS 'Member State',\n if(latest(member.availabilityState) = 2, 'Online', if(latest(member.availabilityState) = 0, 'Offline', 'Unknown')) AS 'Availability State',\n if(latest(member.monitorStatus) = 2, 'Up', if(latest(member.monitorStatus) = 0, 'Down', 'Unchecked')) AS 'Health Monitor Status',\n if(latest(member.sessionStatus) = 0, 'Disabled', 'Enabled') AS 'Session Status',\n latest(member.statusReason) AS 'Status Reason'\nWHERE member.statusReason NOT IN ('Pool member is available', 'The DNS server(s) are available')\nAND aparse(url,'%//*') IN ( {{f5_system}} )\nAND poolName IN ( {{f5_pool}} )\nAND displayName IN ( {{f5_pool_member}} )\nFACET\n aparse(url, '%//*') AS 'System',\n poolName AS 'Pool',\n displayName AS 'Member'\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Requests per Second", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT average(member.requestsPerSecond) AS 'Requests/sec' WHERE aparse(url,'%//*') IN ( {{f5_system}} ) AND poolName IN ( {{f5_pool}} ) AND displayName IN ( {{f5_pool_member}} ) FACET aparse(url, '%//*') AS 'System', poolName AS 'Pool', displayName AS 'Member' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Receive bps", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT average(member.inDataInBytesPerSecond) AS 'Rx bps' WHERE aparse(url,'%//*') IN ( {{f5_system}} ) AND poolName IN ( {{f5_pool}} ) AND displayName IN ( {{f5_pool_member}} ) FACET aparse(url, '%//*') AS 'System', poolName AS 'Pool', displayName AS 'Member' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 Transmit bps", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT average(member.outDataInBytesPerSecond) AS 'Tx bps' WHERE aparse(url,'%//*') IN ( {{f5_system}} ) AND poolName IN ( {{f5_pool}} ) AND displayName IN ( {{f5_pool_member}} ) FACET aparse(url, '%//*') AS 'System', poolName AS 'Pool', displayName AS 'Member' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Virtual Servers", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![f5 logo](https://newrelic.com/sites/default/files/quickstarts/images/icons/f5--logo.svg)\n\n### Virtual Servers\nA [virtual server](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-concepts-11-5-1/3.html#conceptid) is a traffic-management object on the BIG-IP system that is represented by an IP address and a service. Clients on an external network can send application traffic to a virtual server, which then directs the traffic according to your configuration instructions. Virtual servers typically direct traffic to a pool of servers on an internal network, by translating the destination IP address in each packet to a pool member address." + } + }, + { + "title": "Active Usage by Connection Limit", + "layout": { + "column": 4, + "row": 1, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Client Connections", + "type": "decimal" + }, + { + "name": "Usage %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT\n latest(virtualserver.usageRatio) * 100 AS 'Usage %',\n latest(virtualserver.connections) AS 'Client Connections'\nWHERE (virtualserver.usageRatio > 0 OR virtualserver.connections > 0)\nAND reportingEndpoint IN ( {{f5_system}} )\nAND displayName IN ( {{f5_virtual_server}} )\nFACET\n reportingEndpoint AS 'System',\n displayName AS 'Virtual Server'\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Slow Killed Connections per Second", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT max(virtualserver.slowKilledPerSecond) AS 'Slow Killed/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ) FACET reportingEndpoint AS 'System', displayName AS 'Virtual Server' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Virtual Servers with Health Problems", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT\n if(latest(virtualserver.enabled) = 0, 'Disabled', 'Enabled') AS 'Enabled State',\n latest(virtualserver.cmpEnableMode) AS 'CMP Mode',\n if(latest(virtualserver.availabilityState) = 2, 'Online', if(latest(virtualserver.availabilityState) = 0, 'Offline', 'Unknown')) AS 'Availability State',\n if(latest(virtualserver.monitorStatus) = 2, 'Up', if(latest(virtualserver.monitorStatus) = 0, 'Down', 'Unchecked')) AS 'Health Monitor Status',\n if(latest(virtualserver.sessionStatus) = 0, 'Disabled', 'Enabled') AS 'Session Status',\n latest(virtualserver.statusReason) AS 'Status Reason'\nWHERE virtualserver.statusReason NOT IN ('The virtual server is available')\nAND reportingEndpoint IN ( {{f5_system}} )\nAND displayName IN ( {{f5_virtual_server}} )\nFACET\n reportingEndpoint AS 'System',\n displayName AS 'Virtual Server'\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Connections per Second", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT average(virtualserver.clientsideConnectionsPerSecond) AS 'Connections/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ) FACET reportingEndpoint AS 'System', displayName AS 'Virtual Server' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Requests per Second", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT average(virtualserver.requestsPerSecond) AS 'Requests/sec' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ) FACET reportingEndpoint AS 'System', displayName AS 'Virtual Server' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Receive bps", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT average(virtualserver.inDataInBytesPerSecond) AS 'Rx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ) FACET reportingEndpoint AS 'System', displayName AS 'Virtual Server' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 10 Transmit bps", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT average(virtualserver.outDataInBytesPerSecond) AS 'Tx bps' WHERE reportingEndpoint IN ( {{f5_system}} ) AND displayName IN ( {{f5_virtual_server}} ) FACET reportingEndpoint AS 'System', displayName AS 'Virtual Server' TIMESERIES LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BITS_PER_SECOND" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "f5_system", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM F5BigIpSystemSample SELECT uniques(displayName, 2000) SINCE 1 WEEK AGO" + }, + "title": "F5 System", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "f5_node", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM F5BigIpNodeSample SELECT uniques(displayName, 2000) SINCE 1 WEEK AGO" + }, + "title": "F5 Node", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "f5_pool", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM F5BigIpPoolSample SELECT uniques(displayName, 2000) SINCE 1 WEEK AGO" + }, + "title": "F5 Pool", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "f5_pool_member", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM F5BigIpPoolMemberSample SELECT uniques(displayName, 2000) SINCE 1 WEEK AGO" + }, + "title": "F5 Pool Member", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "f5_virtual_server", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM F5BigIpVirtualServerSample SELECT uniques(displayName, 2000) SINCE 1 WEEK AGO" + }, + "title": "F5 Virtual Server", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } diff --git a/dashboards/f5/f5-big-ip_01.png b/dashboards/f5/f5-big-ip_01.png new file mode 100644 index 0000000000..9fdd9ca750 Binary files /dev/null and b/dashboards/f5/f5-big-ip_01.png differ diff --git a/dashboards/f5/f5-big-ip_02.png b/dashboards/f5/f5-big-ip_02.png new file mode 100644 index 0000000000..9924f33d22 Binary files /dev/null and b/dashboards/f5/f5-big-ip_02.png differ diff --git a/dashboards/flutter-android/flutter-android.json b/dashboards/flutter-android/flutter-android.json new file mode 100644 index 0000000000..b402e12f76 --- /dev/null +++ b/dashboards/flutter-android/flutter-android.json @@ -0,0 +1,1071 @@ +{ + "name": "Flutter Android", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Flutter icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/flutter-web/logo.png)\n" + } + }, + { + "title": "App Crashes", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS '' FROM MobileCrash WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "App Crashes by Version", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileCrash FACET appVersion WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App Usage by Country", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(sessionId) as '' FROM Mobile FACET `countryCode` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App Sessions", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(newrelic.timeslice.value) FROM Metric WHERE (metricTimesliceName = 'Session/Start') FACET `instanceName` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add data](https://one.newrelic.com/marketplace?account=3510613&state=4a64ec9c-67b8-c2ba-c820-cbfa5ab0c7d7).\n\nUnable to find data in your dashboard? - [Troubleshoot here](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/troubleshoot/no-data-appears-android/)\n\nFollow New Relic [Flutter Android documentation](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/) to instrument Flutter Android.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=FlutterAndroid) here and let us know how we can improve it for you." + } + }, + { + "title": "Active Sessions", + "layout": { + "column": 3, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileSession FACET sessionId TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Avg Memory Utilization", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 AS `Memory/Used` FROM Metric WHERE metricTimesliceName = 'Memory/Used' TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avg Session Time (minutes)", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(sessionDuration)/60 AS '' FROM MobileSession WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "HTTP Responses & Errors", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Monitoring the HTTP Responses & Errors\nOur New Relic Flutter agent monitors HTTP errors, network failures, and HTTP response times for your application." + } + }, + { + "title": "HTTP Status Codes & Request Methods", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequest WHERE appName = {{appName}} FACET statusCode , requestMethod" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Messages", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequestError FACET errorType, requestPath, IF(networkError is not null, networkError, responseBody ) as 'Error Message' LIMIT 5 WHERE appName = {{appName}} " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors and Failures Rate", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), where errorType is not null) AS 'Errors and Failures Rate %' FROM MobileRequestError, MobileRequest WHERE appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors and Network Failures", + "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": "SELECT count(*) FROM MobileRequestError FACET `errorType` WHERE appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests per Minute", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(count(*), 1 minute) FROM MobileRequest LIMIT 5 WHERE appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Request Domains", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequestError FACET `requestDomain` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avg Response Time (seconds)", + "layout": { + "column": 4, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(responseTime) as `Average response time`, percentile(responseTime, 99) as `99th percentile`, percentile(responseTime, 50) as `50th percentile`, percentile(responseTime, 1) as `1st percentile` FROM MobileRequest LIMIT 1000 TIMESERIES AUTO WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requested URLs", + "layout": { + "column": 8, + "row": 8, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequest FACET `requestUrl` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Response", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric FACET `requestDomain` LIMIT 5 WITH METRIC_FORMAT 'External/{requestDomain}/all' TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Mobile Events", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(install), average(interactionDuration), latest(isFirstOccurrence), average(memUsageMb), average(reportedTimestampMs), average(sessionCrashed), average(sessionDuration), count(symbolicated), average(timeSinceLoad) FROM Mobile TIMESERIES AUTO WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Flutter Device Interaction Time (milliseconds)", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) as value FROM Metric FACET `device` LIMIT 5 WITH METRIC_FORMAT 'Mobile/DeviceGroup/{deviceGroup}/Device/{device}/Activity' TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Crash Analysis", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Crash Analysis\nUsing our Android and Flutter mobile agents, we monitor your application crash rate, crash free users, and app crash locations.\n" + } + }, + { + "title": "App Crash Rate", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') as 'Crash rate' FROM MobileSession, MobileCrash LIMIT 5 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Crashed Sessions", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(sessionCrashed) FROM MobileCrash FACET sessionId WHERE appName = {{appName}} " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App Crash Location", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileCrash FACET `crashLocation` LIMIT 5 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Crash Free Users", + "layout": { + "column": 6, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (1 - filter(uniqueCount(uuid), where category = 'Crash') / uniqueCount(uuid)) as 'Crash free users' FROM MobileSession, MobileCrash LIMIT 5 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Dart Exceptions", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Dart Exceptions\nMonitor your Flutter application with our New Relic Flutter agent. Capture Dart errors, track specific network requests and metrics to fully capture your end users' experience." + } + }, + { + "title": "Top Last Interactions", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `lastInteraction` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recent Dart Exception Locations", + "layout": { + "column": 4, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `exceptionLocation` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Users Affected Rate Due to Exception Location", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) as 'Users affected' FROM MobileSession, MobileHandledException LIMIT 1000 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dart Sessions Affected Rate Due to Exception Location", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where exceptionLocation IS NOT NULL) as 'Sessions affected' FROM MobileSession, MobileHandledException LIMIT 1000 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recent Dart Exception Causes", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `exceptionCause` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "Crash Rate (%)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') as '' FROM MobileSession, MobileCrash LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.05 + }, + { + "alertSeverity": "WARNING", + "value": 0.02 + } + ] + } + }, + { + "title": "Error & Failure Rate (%)", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), where errorType is not null) AS '' FROM MobileRequestError, MobileRequest WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.02 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.04 + } + ] + } + }, + { + "title": "Users Affected Rate Due to Exception Location (%)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) as '' FROM MobileSession, MobileHandledException LIMIT 1000 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.05 + }, + { + "alertSeverity": "WARNING", + "value": 0.02 + } + ] + } + }, + { + "title": "Response Time (seconds)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(responseTime) AS '' FROM MobileRequest WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 5 + }, + { + "alertSeverity": "WARNING", + "value": 2 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "appName", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(appName) FROM Metric, Mobile, MobileSession, MobileUserAction, MobileCrash LIMIT MAX SINCE 6 MONTHS AGO WHERE appName IS NOT NULL " + }, + "title": "Select Your Application Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/flutter-android/flutter-android01.png b/dashboards/flutter-android/flutter-android01.png new file mode 100644 index 0000000000..c75e8fa165 Binary files /dev/null and b/dashboards/flutter-android/flutter-android01.png differ diff --git a/dashboards/flutter-android/flutter-android02.png b/dashboards/flutter-android/flutter-android02.png new file mode 100644 index 0000000000..58715c9dfa Binary files /dev/null and b/dashboards/flutter-android/flutter-android02.png differ diff --git a/dashboards/flutter-android/flutter-android03.png b/dashboards/flutter-android/flutter-android03.png new file mode 100644 index 0000000000..1a294b40bc Binary files /dev/null and b/dashboards/flutter-android/flutter-android03.png differ diff --git a/dashboards/flutter-android/flutter-android04.png b/dashboards/flutter-android/flutter-android04.png new file mode 100644 index 0000000000..0dae6f7975 Binary files /dev/null and b/dashboards/flutter-android/flutter-android04.png differ diff --git a/dashboards/flutter-android/flutter-android05.png b/dashboards/flutter-android/flutter-android05.png new file mode 100644 index 0000000000..53812bbba6 Binary files /dev/null and b/dashboards/flutter-android/flutter-android05.png differ diff --git a/dashboards/flutter-android/flutter-android06.png b/dashboards/flutter-android/flutter-android06.png new file mode 100644 index 0000000000..b6504400d8 Binary files /dev/null and b/dashboards/flutter-android/flutter-android06.png differ diff --git a/dashboards/flutter-ios/flutter-ios.json b/dashboards/flutter-ios/flutter-ios.json new file mode 100644 index 0000000000..198e4ec2e5 --- /dev/null +++ b/dashboards/flutter-ios/flutter-ios.json @@ -0,0 +1,1098 @@ +{ + "name": "Flutter iOS", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Flutter icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/flutter-web/logo.png)\n" + } + }, + { + "title": "App Crashes", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS `` FROM MobileCrash WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "App Crashes by Version", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileCrash FACET appVersion WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App Usage by Country", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(sessionId) as '' FROM Mobile FACET `countryCode` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App Sessions", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(newrelic.timeslice.value) FROM Metric WHERE (metricTimesliceName = 'Session/Start') FACET `instanceName` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add data](https://one.newrelic.com/marketplace?account=3510613&state=4a64ec9c-67b8-c2ba-c820-cbfa5ab0c7d7).\n\nUnable to find data in your dashboard? - [Troubleshoot here](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/troubleshoot/no-data-appears-ios/)\n\nFollow New Relic [Flutter iOS documentation](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/) to instrument Flutter iOS.\n\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=FlutteriOS) here and let us know how we can improve it for you." + } + }, + { + "title": "Avg CPU Utilization", + "layout": { + "column": 3, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 AS `Avg User CPU Utilization`, average(newrelic.timeslice.value) * 1000 AS `Avg System CPU Utilization`, average(newrelic.timeslice.value) * 1000 AS `Avg Total CPU Utilization` FROM Metric WHERE metricTimesliceName = 'CPU/User/Utilization' WHERE appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Used (MB)", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) / 1000 AS `Memory used` FROM Metric TIMESERIES AUTO WHERE metricTimesliceName = 'Memory/Used' where appName = {{appName}} " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Sessions", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileSession FACET sessionId TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Avg Session Time (minutes)", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(sessionDuration) / 60 AS '' FROM MobileSession WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "HTTP Responses & Errors", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Monitoring the HTTP Responses & Errors\nOur New Relic Flutter agent monitors HTTP errors, network failures, and HTTP response times for your application." + } + }, + { + "title": "HTTP Status Code & Request Methods", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequest WHERE appName = {{appName}} FACET statusCode, requestMethod" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Messages", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequestError FACET errorType, requestPath, IF(networkError is not null, networkError, responseBody ) as 'Error Message' LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors and Failures Rate", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), where errorType is not null) AS 'Errors and Failures Rate %' FROM MobileRequestError, MobileRequest WHERE appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors and Network Failures", + "layout": { + "column": 5, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequestError FACET `errorType` WHERE appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top Request Domains", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequestError FACET `requestDomain` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Requested URLs", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileRequest FACET `requestUrl` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per Minute", + "layout": { + "column": 4, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(count(*), 1 minute) FROM MobileRequest LIMIT 5 WHERE appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avg Response Time (seconds)", + "layout": { + "column": 8, + "row": 8, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(responseTime) as `Average response time`, percentile(responseTime, 99) as `99th percentile`, percentile(responseTime, 50) as `50th percentile`, percentile(responseTime, 1) as `1st percentile` FROM MobileRequest LIMIT 1000 TIMESERIES AUTO WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Response Time", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric FACET `requestDomain` LIMIT 5 WITH METRIC_FORMAT 'External/{requestDomain}/all' TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Mobile Events", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(install), average(interactionDuration), latest(isFirstOccurrence), average(memUsageMb), average(reportedTimestampMs), average(sessionCrashed), average(sessionDuration), count(symbolicated), average(timeSinceLoad) FROM Mobile TIMESERIES AUTO WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Flutter Device Interaction Time (milliseconds)", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) as value FROM Metric FACET `device` LIMIT 5 WITH METRIC_FORMAT 'Mobile/DeviceGroup/{deviceGroup}/Device/{device}/Activity' TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Crash Analysis", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Crash Analysis\nUsing our iOS and Flutter mobile agents, we monitor your application crash rate, crash free users, and app crash locations." + } + }, + { + "title": "App Crash Rate", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') as 'Crash rate' FROM MobileSession, MobileCrash LIMIT 5 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Crashed Sessions", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(sessionCrashed) FROM MobileCrash FACET sessionId WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recent Crash Messages", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT crashMessage FROM MobileCrash LIMIT 5 WHERE appName = {{appName}} and crashMessage!=''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Crash Free Users", + "layout": { + "column": 6, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (1 - filter(uniqueCount(uuid), where category = 'Crash') / uniqueCount(uuid)) as 'Crash free users' FROM MobileSession, MobileCrash LIMIT 5 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Dart Exceptions", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Dart Exceptions\nMonitor your Flutter application with our New Relic Flutter agent. Capture Dart errors, track specific network requests and metrics to fully capture your end users' experience." + } + }, + { + "title": "Top Last Interactions", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `lastInteraction` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Dart Exception Locations", + "layout": { + "column": 4, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `exceptionLocation` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Users Affected Rate Due to Exception Location", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) as 'Users affected' FROM MobileSession, MobileHandledException LIMIT 1000 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Dart Sessions Affected Rate Due to Exception Location", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where exceptionLocation IS NOT NULL) as 'Sessions affected' FROM MobileSession, MobileHandledException LIMIT 1000 TIMESERIES WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Dart Exception Causes", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM MobileHandledException FACET `exceptionCause` LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "Crash Rate (%)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(sessionId), where category LIKE 'Crash') as '' FROM MobileSession, MobileCrash LIMIT 5 WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.05 + }, + { + "alertSeverity": "WARNING", + "value": 0.02 + } + ] + } + }, + { + "title": "Errors & Failure Rate (%)", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), where errorType is not null) AS '' FROM MobileRequestError, MobileRequest WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.02 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.04 + } + ] + } + }, + { + "title": "Users Affected Rate Due to Exception Location (%)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(uniqueCount(uuid), where exceptionLocation IS NOT NULL) as '' FROM MobileSession, MobileHandledException LIMIT 1000 WHERE appName = {{appName}} since 3 months ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.05 + }, + { + "alertSeverity": "WARNING", + "value": 0.02 + } + ] + } + }, + { + "title": "Response Time (seconds)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(responseTime) AS '' FROM MobileRequest WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 5 + }, + { + "alertSeverity": "WARNING", + "value": 2 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "appName", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(appName) FROM Metric, Mobile, MobileSession, MobileUserAction, MobileCrash LIMIT MAX SINCE 6 MONTHS AGO WHERE appName IS NOT NULL" + }, + "title": "Select Your Application Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/flutter-ios/flutter-ios01.png b/dashboards/flutter-ios/flutter-ios01.png new file mode 100644 index 0000000000..462b9fd819 Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios01.png differ diff --git a/dashboards/flutter-ios/flutter-ios02.png b/dashboards/flutter-ios/flutter-ios02.png new file mode 100644 index 0000000000..92ee0d4283 Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios02.png differ diff --git a/dashboards/flutter-ios/flutter-ios03.png b/dashboards/flutter-ios/flutter-ios03.png new file mode 100644 index 0000000000..4328222203 Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios03.png differ diff --git a/dashboards/flutter-ios/flutter-ios04.png b/dashboards/flutter-ios/flutter-ios04.png new file mode 100644 index 0000000000..843bbe7f5d Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios04.png differ diff --git a/dashboards/flutter-ios/flutter-ios05.png b/dashboards/flutter-ios/flutter-ios05.png new file mode 100644 index 0000000000..510e210765 Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios05.png differ diff --git a/dashboards/flutter-ios/flutter-ios06.png b/dashboards/flutter-ios/flutter-ios06.png new file mode 100644 index 0000000000..316544c0f4 Binary files /dev/null and b/dashboards/flutter-ios/flutter-ios06.png differ diff --git a/dashboards/flutter-web/dashboard.json b/dashboards/flutter-web/dashboard.json new file mode 100644 index 0000000000..9252dcc06a --- /dev/null +++ b/dashboards/flutter-web/dashboard.json @@ -0,0 +1,1157 @@ +{ + "name": "Flutter Web", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Flutter icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/flutter-web/logo.png)" + } + }, + { + "title": "Applications (click on the application name to filter)", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT count(*) FACET appName LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "List of Page URLs (click on the page URL to filter)", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET pageUrl" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browser Names (click on the browser name to filter)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=b868bae3-4090-7c89-68f7-a7e933295a15).\n\nFollow New Relic [Flutter Web documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/browser-monitoring-integrations/flutter-web-integration/) to instrument Flutter Web.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=FlutterWeb) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Page Load Duration (seconds)", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(duration) as '' FROM PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 3 + }, + { + "alertSeverity": "CRITICAL", + "value": 5 + } + ] + } + }, + { + "title": "Page View Duration (seconds)", + "layout": { + "column": 3, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT latest(backendDuration ), latest(domProcessingDuration), latest(pageRenderingDuration), latest(duration) as 'Total Duration ' SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page Views Comparision", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) AS '' FROM PageView SINCE 1 week ago COMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Time on Site (seconds)", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(pageHide, 75), percentile(windowUnload, 75) FROM PageViewTiming " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Sessions", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(session) FROM PageView until 10 seconds ago COMPARE WITH 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page Load Timing Names", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT count(*) FACET timingName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Time Distribution (seconds)", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(duration, 7, 100) FROM PageView FACET browserTransactionName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Response Codes - Ajax Requests", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM AjaxRequest FACET httpResponseCode" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "User Statistics", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# User Browser Monitoring\nWith the help of browser monitoring section you can easily track your application’s core web vitals,user time on the site and throughput." + } + }, + { + "title": "End User & App Server Duration (seconds)", + "layout": { + "column": 1, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(duration) as 'End User Time', average(backendDuration) as 'App Server Time ' FROM PageView TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page Views Per Day", + "layout": { + "column": 6, + "row": 2, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET dateOf(timestamp), hourof(timestamp) TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Browser Usage (%)", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentage(uniqueCount(session), WHERE userAgentName = 'IE') AS '% of IE Users', percentage(uniqueCount(session), WHERE userAgentName = 'Chrome') AS '% of Chrome Users', percentage(uniqueCount(session), WHERE userAgentName = 'Firefox') AS '% of Firefox Users', percentage(uniqueCount(session), WHERE userAgentName = 'Safari') AS '% of Safari Users' FROM PageView " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 25 Viewed Pages", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET pageUrl limit 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Traffic Analysis", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Demographics\nDetails of Country and City metrics." + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# OS and Device\nDetails of operating system and device metrics." + } + }, + { + "title": "Country (click on the country name to filter)", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET countryCode" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "City (click on the city name to filter)", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET city" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "OS", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET userAgentOS" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device Type", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET deviceType WHERE deviceType != 'Unknown'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Traffic Analysis \n\nNetwork traffic monitoring is the process for identifying, diagnosing, and resolving network issues impacting the performance of applications running on the network." + } + }, + { + "title": "User Sessions", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT uniqueCount(session)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browser Version", + "layout": { + "column": 3, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET userAgentVersion" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browser Name (click on the browser name to filter)", + "layout": { + "column": 7, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top ISPs", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET asnOrganization LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Longest Interactive Page Load Time (seconds)", + "layout": { + "column": 1, + "row": 9, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT pageUrl, duration FROM PageView ORDER BY duration DESC limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Interactive Page Load Time (seconds)", + "layout": { + "column": 6, + "row": 9, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(duration) from PageView facet pageUrl TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "JavaScript Errors", + "description": null, + "widgets": [ + { + "title": "JS Errors by Application (click on the application name to filter)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET appName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 50 Error Class", + "layout": { + "column": 4, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET errorClass LIMIT 50" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Messages", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET errorMessage" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error by Request URI", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET requestUri" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error by Transaction Name", + "layout": { + "column": 6, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET transactionName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors by Device Type", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET deviceType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors by OS", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET userAgentOS" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors by Browser", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors by Browser Versions", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET userAgentVersion" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily Running JS Error Count", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET errorClass TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Stack Trace Context", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM JavaScriptError FACET stackTrace" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} diff --git a/dashboards/flutter-web/flutter-web01.png b/dashboards/flutter-web/flutter-web01.png new file mode 100644 index 0000000000..fd9ab57f11 Binary files /dev/null and b/dashboards/flutter-web/flutter-web01.png differ diff --git a/dashboards/flutter-web/flutter-web02.png b/dashboards/flutter-web/flutter-web02.png new file mode 100644 index 0000000000..071809c1c4 Binary files /dev/null and b/dashboards/flutter-web/flutter-web02.png differ diff --git a/dashboards/flutter-web/flutter-web03.png b/dashboards/flutter-web/flutter-web03.png new file mode 100644 index 0000000000..606654c627 Binary files /dev/null and b/dashboards/flutter-web/flutter-web03.png differ diff --git a/dashboards/flutter-web/flutter-web04.png b/dashboards/flutter-web/flutter-web04.png new file mode 100644 index 0000000000..8dd7c29f93 Binary files /dev/null and b/dashboards/flutter-web/flutter-web04.png differ diff --git a/dashboards/flutter-web/flutter-web05.png b/dashboards/flutter-web/flutter-web05.png new file mode 100644 index 0000000000..6fa3bb138c Binary files /dev/null and b/dashboards/flutter-web/flutter-web05.png differ diff --git a/dashboards/flutter-web/flutter-web06.png b/dashboards/flutter-web/flutter-web06.png new file mode 100644 index 0000000000..ec2505ac5b Binary files /dev/null and b/dashboards/flutter-web/flutter-web06.png differ diff --git a/dashboards/flutter-web/flutter-web07.png b/dashboards/flutter-web/flutter-web07.png new file mode 100644 index 0000000000..0f69ddfe31 Binary files /dev/null and b/dashboards/flutter-web/flutter-web07.png differ diff --git a/dashboards/gcp-alloydb/gcp-alloydb.json b/dashboards/gcp-alloydb/gcp-alloydb.json new file mode 100644 index 0000000000..ad16cafb8c --- /dev/null +++ b/dashboards/gcp-alloydb/gcp-alloydb.json @@ -0,0 +1,336 @@ +{ + "name": "AlloyDB", + "description": null, + "pages": [ + { + "name": "AlloyDB", + "description": null, + "widgets": [ + { + "title": "AlloyDB Data Total", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbClusterSample, GcpAlloydbDatabaseSample, GcpAlloydbInstanceSample SELECT * " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Instance CPU Utilization", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbInstanceSample SELECT max(instance.cpu.MaximumUtilization), average(instance.cpu.AverageUtilization) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cluster Storage Usage", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbClusterSample SELECT max(cluster.storage.Usage), average(cluster.storage.Usage) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Connections ", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbInstanceSample SELECT sum(instance.postgres.TotalConnections) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Per Query Latencies", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbDatabaseSample SELECT max(database.postgresql.insights.perquery.Latencies), average(database.postgresql.insights.perquery.Latencies) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Per Query Execution Time", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbDatabaseSample SELECT max(database.postgresql.insights.perquery.ExecutionTime), average(database.postgresql.insights.perquery.ExecutionTime) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Transactions per Minute", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbInstanceSample SELECT rate(sum(instance.postgres.Transaction),1 minute ) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Database Latencies", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbDatabaseSample SELECT max(database.postgresql.insights.aggregate.Latencies), average(database.postgresql.insights.aggregate.Latencies), min(database.postgresql.insights.aggregate.Latencies) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Database Execution Time", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbDatabaseSample SELECT max(database.postgresql.insights.aggregate.ExecutionTime), average(database.postgresql.insights.aggregate.ExecutionTime) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Minimal Available Memory", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM GcpAlloydbClusterSample, GcpAlloydbDatabaseSample, GcpAlloydbInstanceSample SELECT sum(instance.memory.MinAvailableMemory) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/gcp-alloydb/gcp-alloydb.png b/dashboards/gcp-alloydb/gcp-alloydb.png new file mode 100644 index 0000000000..5a853198a6 Binary files /dev/null and b/dashboards/gcp-alloydb/gcp-alloydb.png differ diff --git a/dashboards/gcp-cloud-spanner/gcp-cloud-spanner.json b/dashboards/gcp-cloud-spanner/gcp-cloud-spanner.json index 41a93bb254..ec97893c2f 100644 --- a/dashboards/gcp-cloud-spanner/gcp-cloud-spanner.json +++ b/dashboards/gcp-cloud-spanner/gcp-cloud-spanner.json @@ -19,7 +19,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "## Google Cloud Spanner \n![spanner logo](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAzFBMVEX///9EhvlEhfVEhvdEhfRDh/xEhvhAe99Dh/tAe91FhfNDhvpAe95FhfJEhvZGg+s/fOSHrf4/f+o7hP2IqvA5dtiGpeT0+P1xmus5euaVs+64zPpEf+Xo7/s3f/T0+P7k7f10oPnC1/urx/vc5/2/1Ptzo/bN3PeXuv5UkP1knP3K3P650f6mxP5jmfyYu/0ufftdkuotdOV8pO1YkPadue9LhON0nuiyx/Bdlf1ik/Gov/BhlPRLg+N1neiLrOsdbN5hkeRWieAsb9jR2lUhAAAM+0lEQVR4nO2dC3eiPBPHgVpptVpEWUTLpYq3autW0dqq7aP9/t/pDd5BrskE3Pf43z09u1pJfkyYmUwCMsxVV1111VVXXXXVVVf949I7zW6JtrrNjpwSn9n97N3clmnr9qb32TXT4HuxW09GqKWXpBnVbmJ4e8iumiRg/yVZvg3jSz85wEEveUCE2Bv8fwMmiNgopgOIEIuNJACNz7QAEeKnkQBhOz1AhNimDzgopgh4e1ukfimqz2maEBnxmXZYfL1LFfD29u6VLqD5lq4JkRHfqOZv+jBtQIQ41CkSmum6ma2KFI0opxop9iq36c0XW3/vLkF/W7QA9d5t2nAb3fZoXYnDctpsO5WHdADNCzGhbUQ6zqZyKYAIsUIDsHUxJrSNSMHZ6O3LAUSIbXhn07y7KMK7JjSg+XIpjnQr8PKi/HoJ2cypyq+wmY35eZu/LN1+ghpRr5TTJjpTuQLpbPqXZkFbt5AV4s/LMyEy4iccYPNv2jSe+gsWMfRLtKCtMtSV2L1Ywi4MYL+YNomviiDORi+lzRGgEsQ4HfTSxggQxGqU8ZxnL1f5Z4OYsH7JgAixTgpofl44IWl6qnfLaTOEqNwlczad3mWbEBmx1yEy4fOlmxAZ8ZnEiIPLB2RZjSRiFC99jNrKF/EBh/+CCdE4xS6Bm/+ECW0j4kaM0r8BiBBLeICti48Ue+XxSuBqO5+FVD7PHv7N5oGP3cbZoVEvsuGHjt4H7a3+tT8g+1Z/0yAZ2SJGemq+AHaBLVtNg6kqO8T8M2M0rTLgGcxjlMCbGlzz5eLAzjuqiriFQoQoXxoUy3AnUYtdlTKzQGeYzbPWrvWqIoib1zaE9lm02DxUM9mYRpRLQCbM916a+wUGRLhF3BMycvOlB2RHrRRvHaMPNUZLg6OXswk3iAdC5LEHJaCWtFhVKdmCObNs8fTEbghtxBNC1FYBZqDmrThGbP4FaRQRnh51SyiIrIOQeRJhGotTAlet7A2Isl6EgugiFESYxqzoYb/LgjTpRygoLkIgRDZyCbwPZUJfwqqLEAYxa0V0NnopD9Heps2ohDCIUUvggx6UCWMQCmIRoLloJXDjWSNva99kdEIQK2rPRjig3CyCmTAWIQRittgMD4qmBeVIb9yEZmVkMypKxZFD7gkhEFkrND2Vh3Bj1E3I6P33kTJ67zv9wYEQAlEbhhnRhAR0E6ITOHufuf3dkRAEMcyIb4Bj1IPQSyeEAB6VfQtubQBqwviEAIjBJXDdyhYhdZOLS4gQCZW1gsL+kIXgOgqDkByRDSiBm9YNBNdROITEiDcBEaMCO0ZRYwUMQmLErO8u8Ba0CZHC65hzNyAx4o3lUwJXSxoM1am0aSMoBMuN6eicUBA5skZL3nPhOmyk2Ck7WjX85t5qYzVSPABtRKJGNc+hYy5Ag/1BnDKqejKqjaoPn0Ca3bALD2cjv1IxITIiJyrKuOVmVFtjxZePGFHz2AVuFjhKusmIgvL07Tyr/fFTEN92oBI0Wjg3YkkDQzoTQhRGs9PW9JqXg3EjEkg7WzRtUAREchPKtRALkiO6H79gZaFgvCUq8QmJELOWE/CVrgnRQMWwIULM4LeoOW5rNyw4Fr8G6xiEJIhZyzhprwuI4iM8QqKB2j1GjD7tq5DDJiRAPCmB6xX6gNiEJIiH+4YGOUASP2ETEiDmdgUNo80CkvgJnxAfkW1vnU2TdqTYiIAQ36Nud2gYCy6TgEgIBTGH1yi3MDYmhEXxEREhsiJmq8iIcjImJCTEReQWMmMkY0JSQlxEzUhqkBITYiKiYdpOZpCSE+Ihcm3GSoQQeW7HcoI+iQ2I51E5i0kGMNduOQsn8qyaECIDi5LNeVzWnPbVPC+2qZO110gNLk9hdAkR5nK5jP1n+8P+uf27fcF+9/g7+9cPbx3+2v/juPaggma7p8fLZTTr1XshoVN7Ung3xM/8PYBRzO176ejQvjO7Vncd2r7J5MCUyS7qKqPXF9rpq1yh4ruPR+6PHTS8sp7pjFkLKMOJsbvFZKAA2cLQ2PTbHGcPB81oX62g5Ty9tT4xozLeGFvuVOEQM4wFg8hp7cNQlAePWzNmsplm2C4lvbYvfCtPxwWV2b1/NTweoIXiIQRfZuEo3ulj5D4zXCHSLiz12x6ggjB2/HLNj5AXC3F61kY5DTlfbnFWRK8vMo/tqHcGNqpPwmrmetGsLAGsiHIag5QQBVWvB4qrw3r0Pbv6fOKxdtP6OFs8jY2I8lLmi2yYclylT+spf+ps5bP4Frl3X4y9bEgE+Hy2qgQpc+I9VKMibrJhNMcnIAzdgkQouUFixe0cn8zXaDFvwp2s5vE+0PdZpIqEuLuTxmhzBWxpscZowx5z77Eeyt1QeG+J4Z3jdrU2ZlDI4RNGv49DNlcju2vCqKJG900zP8JwxFxhP2PTKxl8wsgGMSe8sOubsJwbUT9W8yUMRcwcn5XVt7ARo94qbiDHf9I5FOAjXsABhCGImZOt+3IXF7DgWqUzfPo5+z4YcIf4UPGzvupg/xB88MIRT9aeGMPCvRK5k21y+mxVnXj1ufNnedZPQZn+eEaaSbVymu29BxEGIWZO1w8Z5hXXnZ4QdqoPKC+uniWjam3t3UthPTkbqp0qysGntaOHXgUSBiByrkeb416Jmfc9x9jO+1H3+B9HANFnPnw2orB2DlX1h98e5OGQhy8DAf0RM651fKahERHqc0HZgQgrx+Dr/BdkBGHp+OXGYTT/rnffgfRfCKEf4rmTH+ON08zC5mucOEph7RinnQBfiDR1Ek6PhxF+TJtxFEbojciN3YCM+YjnbDQE8eNwlEvH2TOnvl2ztTJ8CO1TNTcZNZyQfzrvVe7x3IvJmM5GMydT5zicOgnXgb37cFy0DdfpqM58k7ZgRM7r6abmF54Rz9z5Ep9w5n57uYoAeI6Y+/IMRHXMmCg6W1OcniYWYUsIjg1REXPeW5NVTGdTEB+OTQnCxDk+1I+gnglj59zEqEYZlWGI3NhnxtPCzWz2VkRxbOyO4Wpg2qVM3NdLZ81j2fHEo+b89nkzDPYcQ9x0Slh+n+eacQlR2obHeETM+D+x3cROT0W74Fn1mi/EJ2RMlOZhMO4Rc0F36A2xZ/uiMp14Hlj/iU3IyJ0Kjhl3iFzQY6N03PSU07YZiEdvgyZ4vOKuA++kNla/8Rk3iJnA+56YFl56yrX7PodVa9PAvPSs1H344Nw/Yw9E1EKeqPSFNU5zVR/AWXA0RLqv+lw1arRg79QTCvbBgIyJZ8Sc6LVG0XmPMtR+a17Rq/WLAYgGRWgBV65hIo7O+mkG+pjTXk1nZ3dj1PAAeaUWWsYzF5gRQ1k1ToeqMZ9GTk8E/tvxWTQbw8ze+HV4DV5u4gEixOXEOBzF3moRo2PC/c9xmJu1sIm9v+YRKrH4JXCR3+c0aMYYV4o9G9yoUcU1IC98G75cJxpYuFYUhWkNjTYjOEL49Y5fzWR71Rvnwzst/WKPU/oYuz6MkrdVY46ZO28iR2eF+2FbZ3m/j/rYRtzOMgi6SKZp5EWUH/yVGjG8H/T0ExWQUfGNmCKiMI2x0tfErJ5uER/Ce0NDv3HWXuUFPmHhiX9IQ/w61oaJvvLPIf7G+yYIuRJhEdkfMQVAYRxzz4tJAJgGIs/H3RQiN/FXvtNAFGJu8bCN+IwfFAuJX4v8CmNfT/2RhDBZRP4+WkLqlDomMmKiiK7FgahqEGQ2ySK6lruiqyI+Eunp4T4Z8X/wABnzsUCImAzgwz329sGJQkaYEKJQwwVkGFIjJoLI3+MDMi3CK/GxkMC1KOFEir3kNikifXcjfRBtwu4Qj1PaiA9Lou8KYuQhqbOhjSiEF7mDZX4Rj1Oq7uYhQpE7RE1yQpqIPImb2cogdzYUEfkPg5iQaVnEzobetTiF+I51fUwOSMuKD39Avmu1Y10s4pQsUhxUA7gSqSBK0YvcwdJBCCkgSmDfzN0kD/s0EKX41SdfAYR9eERpDQfIdGAIYRElIDezkUxa0KCAKP0BvbETIj2FRQRISB2SJ0CEYIhSlF0XcWRWLwtR8tsshq86ECAUIvmcwi19DGVECETpAyzYH9UCSU+BEHGL3MH6ATMiMaKEW+QOlgkGSIy4pHSPPHEJHArx1/M+TgDpFtw4JUGUphTczFaNERwhAeIvFTezkQwXMQgQCYvcwYJ0NtiIU5qP4tBhChpEiFKN2lVoy3xPG1HC2XURR3NIQCxEwNKFp1SwOQYeovRN84E/Gw2WoIRxEafwc4ozgUaMuIjSB31AxoAqaGAgSmsjAUKmv0wLUVrSy2Ycak3TQZSSuAjTRJRAltIiqgMcMx4jLC9K35AV4FCpNTHZuChJnncp0hRw/haIKEnUczVvxtr71/JRhJIgeet+ul7V0uCzJXdmtQqY/nhrMutQnA9eddVVV1111VVXXXVVMvofAlT4ioxrICQAAAAASUVORK5CYII=)" + "text": "## Google Cloud Spanner \n![spanner logo](https://github.com/newrelic/newrelic-quickstarts/blob/main/quickstarts/gcp/google-cloud-spanner/gcpspanner.png?raw=true)" } }, { diff --git a/dashboards/gcp-spanner/gcp-spanner.json b/dashboards/gcp-spanner/gcp-spanner.json new file mode 100644 index 0000000000..28bc67142a --- /dev/null +++ b/dashboards/gcp-spanner/gcp-spanner.json @@ -0,0 +1,659 @@ +{ + "name": "GCP Cloud Spanner Monitoring", + "description": null, + "pages": [ + { + "name": "Monitoring", + "description": null, + "widgets": [ + { + "title": "CPU utilization - rolling average 24 hours (%)", + "layout": { + "column": 1, + "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 percentile(gcp.spanner.instance.cpu.smoothed_utilization, 99)as '%' FACET gcp.spanner.database WHERE gcp.spanner.database IN ({{db_id}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Node count", + "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 max(gcp.spanner.instance.node_count) as 'Node count' WHERE gcp.spanner.database IN ({{db_id}}) TIMESERIES SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU utilization by priority & system (true) vs. user (false)", + "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 average(gcp.spanner.instance.cpu.utilization_by_priority*100)as '%' FACET gcp.spanner.priority, gcp.spanner.is_system as 'System' TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU utilization by operation type", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(gcp.spanner.instance.cpu.utilization_by_operation_type*100)as '%' FACET gcp.spanner.category TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency - 99th percentile (ms)", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(`gcp.spanner.api.request_latencies`, 99) FROM Metric FACET gcp.spanner.method SINCE 1 day ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Latency (API method)- 99th percentile (ms)", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(gcp.spanner.request_latencies, 99) FROM Metric FACET gcp.spanner.method SINCE 30 minutes ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Operations per second", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(gcp.spanner.api.request_count) FROM Metric SINCE 1 day ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Operations per second (api method)", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gcp.spanner.api.request_count) FROM Metric SINCE 1 day ago TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throughput", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gcp.spanner.api.sent_bytes_count) as 'bytes' FROM Metric SINCE 1 day ago TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throughput (API method)", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gcp.spanner.api.sent_bytes_count) as 'bytes' FROM Metric SINCE 1 hour ago TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total backups storage", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(gcp.spanner.instance.storage.used_bytes) as 'bytes' FROM Metric SINCE 1 hour ago TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total database storage", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gcp.spanner.instance.storage.used_bytes) as 'bytes' FROM Metric SINCE 1 hour ago TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Database", + "description": null, + "widgets": [ + { + "title": "Total CPU utilization", + "layout": { + "column": 1, + "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 average(gcp.spanner.instance.cpu.utilization*100)as '%' FACET gcp.spanner.database TIMESERIES WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "24 hr Write latency - 99th percentile", + "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 percentile(gcp.spanner.api.request_latencies, 99)as 'ms' WHERE gcp.spanner.method='Commit' FACET gcp.spanner.database TIMESERIES SINCE 1 day ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "24hr Read latency - 99th percentile", + "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 percentile(gcp.spanner.api.request_latencies, 99)as 'ms' WHERE gcp.spanner.method in ('ExecuteBatchDml','ExecuteSql','ExecuteStreamingSql','Read','StreamingRead') FACET gcp.spanner.database TIMESERIES SINCE 1 day ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Write operations per second", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(gcp.spanner.api.request_count)as 'operations' WHERE gcp.spanner.method='Commit' FACET gcp.spanner.database TIMESERIES SINCE 1 hour ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Read operations per second", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(gcp.spanner.api.request_count)as 'ms' WHERE gcp.spanner.method in ('ExecuteBatchDml','ExecuteSql','ExecuteStreamingSql','Read','StreamingRead') FACET gcp.spanner.database TIMESERIES SINCE 1 hour ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Write throughput", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(gcp.spanner.api.received_bytes_count)as 'operations' WHERE gcp.spanner.method IN ('Commit')FACET gcp.spanner.database TIMESERIES SINCE 1 day ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Read throughput", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(gcp.spanner.api.received_bytes_count)as 'operations' WHERE gcp.spanner.method in ('ExecuteBatchDml', 'ExecuteSql', 'ExecuteStreamingSql', 'Read', 'StreamingRead') FACET gcp.spanner.database TIMESERIES SINCE 1 day ago WHERE gcp.spanner.database IN ({{db_id}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "db_id", + "items": null, + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(gcp.spanner.database) FROM Metric SINCE 3 days ago\n\n\n" + }, + "title": "Database ID", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/gcp-spanner/gcp-spanner01.png b/dashboards/gcp-spanner/gcp-spanner01.png new file mode 100644 index 0000000000..d6a1c8b065 Binary files /dev/null and b/dashboards/gcp-spanner/gcp-spanner01.png differ diff --git a/dashboards/gcp-spanner/gcp-spanner02.png b/dashboards/gcp-spanner/gcp-spanner02.png new file mode 100644 index 0000000000..193a291571 Binary files /dev/null and b/dashboards/gcp-spanner/gcp-spanner02.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights.json b/dashboards/gigamon-appinsights/gigamon-appinsights.json new file mode 100644 index 0000000000..2a9f8c6319 --- /dev/null +++ b/dashboards/gigamon-appinsights/gigamon-appinsights.json @@ -0,0 +1,1978 @@ +{ + "name": "Application Insights", + "description": null, + "pages": [ + { + "name": "Application Traffic Overview", + "description": null, + "widgets": [ + { + "title": "Application Mix", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET app_name WHERE app_name IS NOT NULL AND app_name != 'Classification-unknown' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Encrypted vs non-encryoted traffic breakdown", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET app_name WHERE app_name = 'http' OR app_name = 'https' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Application Traffic", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET app_name TIMESERIES SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Rogue Activity", + "description": null, + "widgets": [ + { + "title": "Cryptomining Activity", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET app_name,src_ip WHERE app_name LIKE '%ethereum%' OR app_name LIKE '%tcoin%' OR app_name LIKE 'monero' OR app_name LIKE '%miner%' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cryptomining sessions", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip WHERE app_name LIKE '%tcoin%' OR app_name LIKE 'monero' OR app_name LIKE '%miner%' OR app_name LIKE '%ether%'SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P2P Applications", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET app_name WHERE app_name LIKE '%torren%' OR app_name LIKE '%gnu%' OR app_name LIKE '%edonk%' OR app_name LIKE 'slsk' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P2P sessions", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip WHERE app_name LIKE '%torrent%' OR app_name LIKE '%mano%' OR app_name LIKE '%gnu%' OR app_name LIKE '%slsk%' OR app_name LIKE 'edonkey' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bittorrent Client Software", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET bittorrent_user_agent as 'P2P client' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P2P Client Version", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET bittorrent_client_version as 'Client Version' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Troubleshooting Network Traffic Insights", + "description": null, + "widgets": [ + { + "title": "IP crc failures", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT src_ip,dst_ip,ip_wrong_crc where ip_wrong_crc IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "TCP crc failures", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip,tcp_wrong_crc WHERE tcp_wrong_crc IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Lost Packets", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET src_ip,dst_ip,app_name,tcp_loss_count where tcp_loss_count IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "TCP aborts (resets)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET src_ip,dst_ip,app_name where tcp_flag_reset = 1 SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "IP Versions", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET ip_version SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Vlans detected", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET ingress_vlan_id SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DHCP Packets", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon3 FACET dhcp_message_type SINCE 240 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DHCP Servers response", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon3 FACET dhcp_siaddr SINCE 180 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "UDP connection with CRC failures", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET src_ip,dst_ip,udp_wrong_crc WHERE udp_wrong_crc IS NOT NULL SINCE 30 days ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DHCP clients over time", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET dhcp_ciaddr SINCE 1656658800000 UNTIL 1662448440000 TIMESERIES" + } + ] + } + }, + { + "title": "DHCP Host", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET dhcp_host_name SINCE 30 MINUTES AGO" + } + ] + } + } + ] + }, + { + "name": "Network Performance", + "description": null, + "widgets": [ + { + "title": "Network Performance", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip,tcp_rtt WHERE tcp_rtt IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Performance", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip,tcp_rtt_app WHERE tcp_rtt_app IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DNS sessions with slow response times", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT src_ip,dst_ip,dns_response_time,dns_name,dns_host_addr where dns_response_time IS NOT NULL AND dns_response_time > '0.12' AND src_ip IS NOT NULL AND dst_ip IS NOT NULL SINCE 60 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Youtube Avg Video Data rate", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET youtube_video_avgdatarate WHERE youtube_video_avgdatarate IN (500, '500') SINCE 30 DAYS AGO TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Http response times", + "layout": { + "column": 1, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET src_ip,http_server,http_rtt where http_rtt IS NOT NULL AND http_rtt > '5' SINCE 30 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DHCP Clients with ip lease times", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET dhcp_ip_lease_time, src_ip where dhcp_ip_lease_time IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "TLS vulnerabilities", + "description": null, + "widgets": [ + { + "title": "Ciphers", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET ssl_cipher_suite_id_string,src,dst SINCE 60 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "TLS Ciphers", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET ssl_cipher_suite_id_string SINCE 200 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SSL Certs", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon3 FACET ssl_issuer as CA,ssl_validity_not_after as 'Expiration',ssl_common_name as 'common name',ssl_organization_name as 'Organization Name' where ssl_validity_not_after is not NULL SINCE 300 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Suspicious Connections", + "description": null, + "widgets": [ + { + "title": "Unmanaged Host sessions", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT app_name,src_ip,dst_ip,src_mac,dst_mac WHERE app_name LIKE 'mqtt' OR app_name LIKE '%iec%' OR app_name LIKE '%coap%' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SSH on non standard port", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET app_name,src_ip,dst_ip,dst_port,src_port WHERE app_name= 'ssh' AND src_ip= '10.0.5.8' AND dst_port='443' SINCE 60 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET src_ip, src_port,dst_ip,dst_port WHERE app_name = 'rdp' OR app_name = '%box%' OR app_name = '%smb%' OR app_name = '%ftp%' OR app_name = '%nfs%' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "RDP connections", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET rdp_default_username, src_ip, src_port,dst_ip,dst_port WHERE app_name = 'rdp' and rdp_default_username IS NOT NULL SINCE 90 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Kerberos Logins", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET krb5_cname_string SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Youtube Query", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET youtube_query_raw SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Ftp logins", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET ftp_login SINCE 60 DAYS AGO TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "SMB logins", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET smb_login SINCE 1656658800000 UNTIL 1662448440000 TIMESERIES" + } + ] + } + }, + { + "title": "Traffic via Proxy Server", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET src_ip, dst_ip, http_proxied_traffic where http_proxied_traffic IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Email info", + "layout": { + "column": 1, + "row": 15, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET smtp_date, smtp_subject, src_ip, dst_ip, smtp_sender, smtp_receiver, smtp_client_domain where smtp_subject IS NOT NULL SINCE 60 DAYS AGO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMB resources accessed", + "layout": { + "column": 1, + "row": 18, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET smb_path SINCE 1656658800000 UNTIL 1662448440000 TIMESERIES" + } + ] + } + } + ] + }, + { + "name": "DNS Activity", + "description": null, + "widgets": [ + { + "title": "DNS Name Resolution Overview", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "dns_host_addr", + "type": null + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT src_ip as 'DNS client',dst_ip as 'DNS Server', dns_name as 'query', dns_host_addr as 'DNS response' WHERE dns_host_addr IS NOT NULL AND dns_query IS NOT NULL AND src_ip IS NOT NULL AND dst_ip IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DNS Tunneling (indicates that the DNS traffic is likely to be diverted to transmit data of an other protocol)", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET src_ip, dst_ip, dns_tunneling where dns_tunneling IS NOT NULL SINCE 60 DAYS AGO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DNS Top Queries", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET dns_query SINCE 30 DAYS AGO TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average DNS Response time", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET dns_response_time SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DNS TTL", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET src_ip,dst_ip,dns_ttl WHERE dns_ttl IS NOT NULL AND src_ip IS NOT NULL AND dst_ip IS NOT NULL SINCE 30 DAYS AGO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DNS Server via DHCP", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "Select count(*) FROM Gigamon FACET dhcp_dns_server SINCE 30 DAYS AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Web Traffic Details", + "description": null, + "widgets": [ + { + "title": "Http response codes", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET http_code WHERE http_code IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP File Name", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon where http_filename NOT LIKE '%Gigamon%' FACET http_filename,src_ip where http_filename is NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Method", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_method where http_method not like '%Gigamon%' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Client software", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_user_agent where http_user_agent IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Software", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_server_agent where http_server_agent IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Referrer", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_referer,http_host where http_referer is NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Http Version", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_version where http_version not like '%Gigamon%' and http_version='1.1' or http_version='1.0' SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP URI", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET app_name,http_uri,http_server where http_uri is NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Header Status", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_code TIMESERIES where http_code is NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Size/RTT", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_request_size,http_rtt,http_server where http_rtt is not NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Compression schemes detected", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_accept_encoding SINCE 60 DAYS AGO TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Http files accessed over time", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Gigamon FACET http_filename SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "SMB Traffic Insights", + "description": null, + "widgets": [ + { + "title": "SMB file access", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET smb_filename,smb_path,src_ip WHERE app_name = 'smb' WHERE smb_path IS NOT NULL since 30 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMB version seen in traffic", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET smb_version WHERE app_name = 'smb' WHERE smb_version IS NOT NULL since 30 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Clients running SMB version 1", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET src_ip,dst_ip,smb_version WHERE app_name = 'smb' WHERE smb_version='1' since 30 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "BGP Details", + "description": null, + "widgets": [ + { + "title": "AS Numbers", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET bgp_as WHERE bgp_as IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hold Time", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET bgp_hold_time,bgp_identifier WHERE bgp_hold_time IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "NLRI Info exchanged", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET bgp_nlri_prefix,bgp_nlri_prefix_len,bgp_identifier WHERE bgp_nlri_prefix IS NOT NULL SINCE 30 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Path Attribute Type", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "Select count(*) from Gigamon FACET bgp_path_attr_type,bgp_identifier where bgp_path_attr_type IS NOT NULL SINCE 90 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "BGP messages seen", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET bgp_message_type,bgp_identifier SINCE 90 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Gigamon SELECT count(*) FACET bgp_error_subcode, bgp_identifier where bgp_error_subcode IS NOT NULL SINCE 90 DAYS AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights01.png b/dashboards/gigamon-appinsights/gigamon-appinsights01.png new file mode 100755 index 0000000000..518aee5b62 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights01.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights02.png b/dashboards/gigamon-appinsights/gigamon-appinsights02.png new file mode 100755 index 0000000000..0c12c6d19e Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights02.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights03.png b/dashboards/gigamon-appinsights/gigamon-appinsights03.png new file mode 100755 index 0000000000..139228fa56 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights03.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights04.png b/dashboards/gigamon-appinsights/gigamon-appinsights04.png new file mode 100755 index 0000000000..bc18410bf3 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights04.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights05.png b/dashboards/gigamon-appinsights/gigamon-appinsights05.png new file mode 100755 index 0000000000..00ab0bc6b5 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights05.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights06.png b/dashboards/gigamon-appinsights/gigamon-appinsights06.png new file mode 100755 index 0000000000..0043db07bd Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights06.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights07.png b/dashboards/gigamon-appinsights/gigamon-appinsights07.png new file mode 100755 index 0000000000..c950a47b46 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights07.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights08.png b/dashboards/gigamon-appinsights/gigamon-appinsights08.png new file mode 100755 index 0000000000..cadc1d374c Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights08.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights09.png b/dashboards/gigamon-appinsights/gigamon-appinsights09.png new file mode 100755 index 0000000000..83fbfa7f42 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights09.png differ diff --git a/dashboards/gigamon-appinsights/gigamon-appinsights10.png b/dashboards/gigamon-appinsights/gigamon-appinsights10.png new file mode 100755 index 0000000000..737c2ff379 Binary files /dev/null and b/dashboards/gigamon-appinsights/gigamon-appinsights10.png differ diff --git a/dashboards/github-repo/github_repo_dashboard.json b/dashboards/github-repo/github_repo_dashboard.json new file mode 100644 index 0000000000..5956263f78 --- /dev/null +++ b/dashboards/github-repo/github_repo_dashboard.json @@ -0,0 +1,300 @@ +{ + "name": "Sample Dashboard - GitHub Repo Monitoring", + "description": null, + "pages": [ + { + "name": "GitHub Monitoring", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 1, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/GitHub_Mark.png/246px-GitHub_Mark.png)\n# GitHub Repo Monitoring\nIncludes commits, pull requests, merges, actions, deployments, and more.\n\nFilter by Repository name to narrow down the data!" + } + }, + { + "title": "Repository Summary", + "layout": { + "column": 2, + "row": 1, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(repository.open_issues_count), latest(repository.watchers_count), latest(repository.forks_count), latest(repository.stargazers_count)\nFROM Log WHERE repository.git_url IS NOT NULL FACET repository.full_name SINCE 1 MONTH AGO LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Workflow Summary", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT repository.full_name, workflow_job.workflow_name, workflow_job.name, workflow_job.status, workflow_job.conclusion, workflow_job.run_attempt\nFROM Log WHERE workflow_job.workflow_name IS NOT NULL SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Commit Summary", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT repository.full_name, head_commit.modified, head_commit.message, head_commit.author.username, head_commit.author.email\nFROM Log WHERE head_commit.message IS NOT NULL SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Job Summary", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(workflow_job.workflow_name)\nFROM Log WHERE workflow_job.workflow_name IS NOT NULL FACET workflow_job.name, workflow_job.status SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Job Status Summary", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(workflow_job.conclusion) FROM Log WHERE workflow_job.conclusion !='null' FACET workflow_job.conclusion SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Issue Summary", + "layout": { + "column": 5, + "row": 9, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(issue.comments) FROM Log WHERE issue.title IS NOT NULL FACET issue.title, action, issue.state, issue.body, issue.user.login, comment.reactions.total_count SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Deployment Frequency", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(workflow_job.conclusion) AS 'Deployment Frequency' FROM Log\nWHERE repository.git_url IS NOT NULL AND workflow_job.status='completed'\nSINCE 1 MONTH AGO COMPARE WITH 1 MONTH AGO TIMESERIES 1 DAY" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Workflow Duration (minutes)", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "WITH \n aparse(workflow_job.started_at, '*-*-*T*:*:*Z') AS (year1, month1, day1, hour1, minute1, second1) , \nnumeric(month1) - 1 as month1Num,floor((if(month1Num >= 2, numeric(year1), numeric(year1) - 1) - 1970)/4)* 24 * 60 * 60 as leaps1, \nif(month1Num = 1 ,31,\n if(month1Num = 2,59,\n if(month1Num = 3, 90,\n if(month1Num = 4,120,\n if(month1Num = 5,151, \n if(month1Num = 6,181,\n if(month1Num = 7,212,\n if(month1Num = 8,243,\n if(month1Num = 9,273,\n if(month1Num = 10,304,\n if(month1Num = 11,334,\n if(month1Num = 12,365, 0\n)))))))))))) as month1NumDays,\n((numeric(year1) - 1970) * 365 * 24 * 60 * 60) \n+ (month1NumDays * 24 * 60 * 60) \n+ (numeric(day1) - 1) * 24 * 60 * 60 \n+ ((numeric(hour1)) * 3600) \n+ (numeric(minute1)) * 60 \n+ numeric(second1) \n+ leaps1 as start_time, \n aparse(workflow_job.completed_at, '*-*-*T*:*:*Z') AS (year2, month2, day2, hour2, minute2, second2) , \nnumeric(month2) - 1 as month2Num,floor((if(month2Num >= 2, numeric(year2), numeric(year2) - 1) - 1970)/4)* 24 * 60 * 60 as leaps2, \nif(month2Num = 1 ,31,\n if(month2Num = 2,59,\n if(month2Num = 3, 90,\n if(month2Num = 4,120,\n if(month2Num = 5,151, \n if(month2Num = 6,181,\n if(month2Num = 7,212,\n if(month2Num = 8,243,\n if(month2Num = 9,273,\n if(month2Num = 10,304,\n if(month2Num = 11,334,\n if(month2Num = 12,365, 0\n)))))))))))) as month2NumDays,\n((numeric(year2) - 1970) * 365 * 24 * 60 * 60) \n+ (month2NumDays * 24 * 60 * 60) \n+ (numeric(day2) - 1) * 24 * 60 * 60 \n+ ((numeric(hour2)) * 3600) \n+ (numeric(minute2)) * 60 \n+ numeric(second2) \n+ leaps2 as finish_time\n\nSELECT average(finish_time-start_time)/60 FROM Log \nWHERE workflow_job.status = 'completed'\nFACET workflow_job.conclusion SINCE 1 MONTH AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pipelines for last month", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#00c080", + "seriesName": "success" + }, + { + "color": "#0080c0", + "seriesName": "all" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(workflow_job.name) AS 'success' FROM Log WHERE workflow_job.name IS NOT NULL\nAND workflow_job.conclusion = 'success' SINCE 1 MONTH AGO TIMESERIES" + }, + { + "accountId": 0, + "query": "SELECT count(workflow_job.name) AS 'all' FROM Log WHERE workflow_job.name IS NOT NULL\nAND workflow_job.conclusion != 'null' SINCE 1 MONTH AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/github-repo/github_repo_dashboard.png b/dashboards/github-repo/github_repo_dashboard.png new file mode 100644 index 0000000000..75fd36e3e9 Binary files /dev/null and b/dashboards/github-repo/github_repo_dashboard.png differ diff --git a/dashboards/golden-signals-dashboard/golden-signals-dashboard-01.png b/dashboards/golden-signals-dashboard/golden-signals-dashboard-01.png new file mode 100644 index 0000000000..e35d53d4a2 Binary files /dev/null and b/dashboards/golden-signals-dashboard/golden-signals-dashboard-01.png differ diff --git a/dashboards/golden-signals-dashboard/golden-signals-dashboard-02.png b/dashboards/golden-signals-dashboard/golden-signals-dashboard-02.png new file mode 100644 index 0000000000..6d7afddf97 Binary files /dev/null and b/dashboards/golden-signals-dashboard/golden-signals-dashboard-02.png differ diff --git a/dashboards/golden-signals-dashboard/golden-signals-dashboard-03.png b/dashboards/golden-signals-dashboard/golden-signals-dashboard-03.png new file mode 100644 index 0000000000..18fff71c4f Binary files /dev/null and b/dashboards/golden-signals-dashboard/golden-signals-dashboard-03.png differ diff --git a/dashboards/golden-signals-dashboard/golden-signals-dashboard-04.png b/dashboards/golden-signals-dashboard/golden-signals-dashboard-04.png new file mode 100644 index 0000000000..3bc418a505 Binary files /dev/null and b/dashboards/golden-signals-dashboard/golden-signals-dashboard-04.png differ diff --git a/dashboards/golden-signals-dashboard/golden-signals-dashboard.json b/dashboards/golden-signals-dashboard/golden-signals-dashboard.json new file mode 100644 index 0000000000..cdc758f678 --- /dev/null +++ b/dashboards/golden-signals-dashboard/golden-signals-dashboard.json @@ -0,0 +1,874 @@ +{ + "name": "Golden signals dashboard", + "description": "Dashboard to monitor golden signals across APM, Infrastructure, Synthetics, Browser and Mobile with template variables to dynamically filter widgets.", + "pages": [{ + "name": "Golden signals dashboard", + "description": null, + "widgets": [{ + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Golden Signals\n#### Monitoring the golden signals allows you to quickly see an overview of the health of your application.\n\n- [NerdGraph tutorial: View and configure an entity's golden metrics](https://docs.newrelic.com/docs/apis/nerdgraph/examples/golden-metrics-entities-nerdgraph-api-tutorial/)\n- [Why you need to monitor the four golden signals](https://newrelic.com/blog/best-practices/monitoring-golden-signals)\n- Databyte - [Configure the Golden Metric Charts in Workloads](https://www.youtube.com/watch?v=3JSb68Gdhlg)\n" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Performance \n" + } + }, + { + "title": "Response time (ms)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.responseTimeMs) AS 'Response Time Ms' FROM Metric WHERE appName in ({{appname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Throughput", + "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 rate(count(newrelic.goldenmetrics.apm.application.throughput), 1 MINUTES) AS 'Throughput' FROM Metric WHERE appName in ({{appname}}) LIMIT MAX TIMESERIES facet appName\n" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error rate", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.errorRate) AS 'Error Rate' FROM Metric WHERE appName in ({{appname}}) LIMIT MAX facet appName\n" + }], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [{ + "alertSeverity": "CRITICAL", + "value": 5 + }, + { + "alertSeverity": "WARNING", + "value": 3 + } + ] + } + }, + { + "title": "Apdex", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT apdex(`apm.service.apdex`) as 'APDEX' FROM Metric where appName in ({{appname}}) facet appName limit max" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "App availability", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "FROM Transaction SELECT percentage(count(*), WHERE error is false) WHERE appName in ({{appname}}) LIMIT MAX facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latency", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT percentile(duration, 50, 90, 99) as 'Duration' from Transaction WHERE appName in ({{appname}}) LIMIT MAX " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Performance " + } + }, + { + "title": "CPU usage (%)", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.infra.host.cpuUsage) AS 'Cpu Usage' FROM Metric WHERE entity.name in ({{hostname}}) LIMIT MAX TIMESERIES FACET entity.name" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage usage (%)", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.infra.host.storageUsage) AS 'Storage Usage' FROM Metric WHERE entity.name in ({{hostname}}) LIMIT MAX TIMESERIES FACET entity.name" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory usage (%)", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.infra.host.memoryUsage) AS 'Memory Usage' FROM Metric WHERE entity.name in ({{hostname}}) LIMIT MAX TIMESERIES FACET entity.name" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network receive traffic (bytes/s)", + "layout": { + "column": 1, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.infra.host.networkTrafficRx) AS 'Network Traffic Rx' FROM Metric WHERE entity.name in ({{hostname}}) LIMIT MAX TIMESERIES FACET entity.name" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network transmit traffic (bytes/s)", + "layout": { + "column": 7, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.infra.host.networkTrafficTx) AS 'Network Traffic Tx' FROM Metric WHERE entity.name in ({{hostname}}) LIMIT MAX TIMESERIES FACET entity.name" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 17, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Browser Performance \n" + } + }, + { + "title": "Throughput (ppm)", + "layout": { + "column": 1, + "row": 18, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT rate(count(newrelic.goldenmetrics.browser.application.throughputPpm), 1 MINUTES) AS 'Throughput Ppm' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Largest contentful paint (75 percentile) (s)", + "layout": { + "column": 5, + "row": 18, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT percentile(newrelic.goldenmetrics.browser.application.largestContentfulPaint75PercentileS, 75) AS 'Largest Contentful Paint 75 Percentile S' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First input delay (75 percentile) (ms)", + "layout": { + "column": 9, + "row": 18, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT percentile(newrelic.goldenmetrics.browser.application.firstInputDelay75PercentileMs, 75) AS 'First Input Delay 75 Percentile Ms' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors", + "layout": { + "column": 1, + "row": 21, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT count(newrelic.goldenmetrics.browser.application.errors) AS 'Errors' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [{ + "alertSeverity": "WARNING", + "value": 20 + }, + { + "alertSeverity": "CRITICAL", + "value": 30 + } + ] + } + }, + { + "title": "Pageload time (s)", + "layout": { + "column": 5, + "row": 21, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.browser.application.pageLoadSeconds) AS 'Page Load Seconds' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ajax throughput (rpm)", + "layout": { + "column": 9, + "row": 21, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT rate(count(newrelic.goldenmetrics.browser.application.throughputAjax), 1 MINUTES) AS 'Throughput Ajax' FROM Metric WHERE appName in ({{browserappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 24, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Synthetics Performance\n" + } + }, + { + "title": "Median duration (s)", + "layout": { + "column": 1, + "row": 25, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT percentile(newrelic.goldenmetrics.synth.monitor.medianDurationS, 50) AS 'Median Duration S' FROM Metric WHERE monitorName in ({{monitorname}}) LIMIT MAX TIMESERIES FACET monitorName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failures", + "layout": { + "column": 7, + "row": 25, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT count(newrelic.goldenmetrics.synth.monitor.failures) AS 'Failures' FROM Metric WHERE monitorName in ({{monitorname}}) LIMIT MAX TIMESERIES FACET monitorName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 28, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Mobile Performance " + } + }, + { + "title": "App launches", + "layout": { + "column": 1, + "row": 29, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT count(newrelic.goldenmetrics.mobile.application.appLaunchCountMetric) AS 'App Launch Count Metric' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES facet appName" + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Crash Count", + "layout": { + "column": 5, + "row": 29, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT count(newrelic.goldenmetrics.mobile.application.crashCount) AS 'Crash Count' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES FACET appName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP response time (ms)", + "layout": { + "column": 9, + "row": 29, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.mobile.application.httpResponseTimeMsMetric) AS 'Http Response Time Ms Metric' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES FACET appName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network failure count", + "layout": { + "column": 1, + "row": 32, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.mobile.application.networkFailuresCountMetric) AS 'Network Failures Count Metric' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES FACET appName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP error rate", + "layout": { + "column": 5, + "row": 32, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.mobile.application.httpErrorsRateMetric) AS 'Http Errors Rate Metric' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES FACET appName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per minute (req/min)", + "layout": { + "column": 9, + "row": 32, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [{ + "accountIds": [], + "query": "SELECT rate(count(newrelic.goldenmetrics.mobile.application.requestsPerMinute), 1 MINUTES) AS 'Requests Per Minute' FROM Metric WHERE appName in ({{mobileappname}}) LIMIT MAX TIMESERIES FACET appName " + }], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }], + "variables": [{ + "name": "appname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "Select uniques(appName) from Transaction" + }, + "title": "Application Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "hostname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "Select uniques(hostname) from SystemSample" + }, + "title": "Host Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "monitorname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(monitorName) from SyntheticCheck LIMIT max" + }, + "title": "Monitor Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "browserappname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "from PageView SELECT uniques(appName)" + }, + "title": "Browser App Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mobileappname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "from Mobile SELECT uniques(appName) SINCE 10 days ago" + }, + "title": "Mobile App Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/gridgain/gridgain.json b/dashboards/gridgain/gridgain.json new file mode 100644 index 0000000000..a54e6eeb2f --- /dev/null +++ b/dashboards/gridgain/gridgain.json @@ -0,0 +1,238 @@ +{ + "name": "GridGain", + "description": null, + "pages": [ + { + "name": "GridGain", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# GridGain Dashboard\n## Overview\n[GridGain](https://www.gridgain.com) is a distributed, memory-first database based on [Apache Ignite](https://ignite.apache.org).\n\n## Widgets\n\nThe widgets seen here are reasonable defaults, though what is interesting will depend on your configuration and product version.\n\n## More information\n\nMore information can be found in [our documentation](https://docs.gridgain.com). Download GridGain [here](https://www.gridgain.com/download) or launch your own cluster in the cloud [here](https://portal.gridgain.com)." + } + }, + { + "title": "Cache Size (by cache)", + "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": "SELECT sum(`gridgain.cache.CacheSize`) FROM Metric FACET name SINCE 30 MINUTES AGO TIMESERIES where entity.name = {{ cluster }}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Size (by node)", + "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": "SELECT sum(`gridgain.cache.CacheSize`) FROM Metric FACET service.instance.id WHERE `entity.name` = {{ cluster }} SINCE 30 MINUTES AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Free SQL Memory", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`gridgain.sql.SqlFreeMemoryBytes`) FROM Metric FACET service.instance.id WHERE `entity.name` = {{ cluster }} SINCE 30 MINUTES AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes Received", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`gridgain.spis.communication.ReceivedBytesCount`) FROM Metric facet service.instance.id WHERE `entity.name` = {{ cluster }} SINCE 30 MINUTES AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Checkpoint TIme", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`gridgain.storage.LastCheckpointDuration`) FROM Metric FACET service.instance.id WHERE `entity.name` = {{ cluster }} SINCE 30 MINUTES AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Snapshot Size", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`gridgain.storage.snapshots.BytesWritten`) FROM Metric FACET service.instance.id WHERE `entity.name` = {{ cluster }} SINCE 30 MINUTES AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "cluster", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "select uniques(entity.name) from Metric" + }, + "title": "Cluster name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/gridgain/gridgain.png b/dashboards/gridgain/gridgain.png new file mode 100644 index 0000000000..25510a97a9 Binary files /dev/null and b/dashboards/gridgain/gridgain.png differ diff --git a/dashboards/openai/openai-dashboard.json b/dashboards/jmeter/jmeter.json similarity index 55% rename from dashboards/openai/openai-dashboard.json rename to dashboards/jmeter/jmeter.json index 004888a58c..8b6120b471 100644 --- a/dashboards/openai/openai-dashboard.json +++ b/dashboards/jmeter/jmeter.json @@ -1,9 +1,9 @@ { - "name": "OpenAI Monitoring", + "name": "JMeter Results Summary", "description": null, "pages": [ { - "name": "OpenAI Monitoring", + "name": "JMeter Test Results", "description": null, "widgets": [ { @@ -11,28 +11,28 @@ "layout": { "column": 1, "row": 1, - "width": 4, - "height": 2 + "width": 2, + "height": 3 }, "linkedEntityGuids": null, "visualization": { "id": "viz.markdown" }, "rawConfiguration": { - "text": "Prices are based https://openai.com/api/pricing/ March 14\n## Language models - Base models\n- Ada - $0.0004/1K tokens\n- Babbage - $0.0005/1K tokens\n- Curie - $0.0020/1K tokens\n- Davinci - $0.0200/1K tokens\n- gpt-3.5-turbo - $0.002/1K tokens\n- gpt-4 - $0.03/1k prompt tokens, $0.06/1k sampled tokens\n- gpt-gpt-4-32k - $0.06/1k prompt tokens, $0.12/1k sampled tokens\n\nPrices are per 1,000 tokens. You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. This paragraph is 35 tokens.\n\n" + "text": "![JMeter logo](https://jmeter.apache.org/images/logo.svg)" } }, { - "title": "", + "title": "Thread Group Details", "layout": { - "column": 5, + "column": 3, "row": 1, - "width": 4, + "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { "facet": { @@ -41,7 +41,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT average(usage.total_tokens) AS 'Avg Tokens per request' " + "query": "SELECT TestName,ThreadName, AllThreads, GrpThreads FROM Metric WHERE metricName = 'jmeter'" } ], "platformOptions": { @@ -50,16 +50,16 @@ } }, { - "title": "", + "title": "HTTP Responses", "layout": { - "column": 9, + "column": 8, "row": 1, - "width": 4, + "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { "facet": { @@ -68,7 +68,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT filter(sum(usage.prompt_tokens) * 0.0300 / 1000, where model in ('gpt-4', 'gpt-4-0314')) + filter(sum(usage.completion_tokens) * 0.0600 / 1000, where model in ('gpt-4', 'gpt-4-0314')) + filter(sum(usage.prompt_tokens) * 0.0600 / 1000, where model in ('gpt-4-32k', 'gpt-4-32k-0314')) + filter(sum(usage.completion_tokens) * 0.1200 / 1000, where model in ('gpt-4-32k', 'gpt-4-32k-0314')) + filter(sum(usage.total_tokens) * 0.0020 / 1000, where model LIKE '%gpt-3.5-turbo%') + filter(sum(usage.total_tokens) * 0.0200 / 1000, where model LIKE '%davinci%') + filter(sum(usage.total_tokens) * 0.0020 / 1000, where model LIKE '%curie%') + filter(sum(usage.total_tokens) * 0.0005 / 1000, where model LIKE '%babbage%') + filter(sum(usage.total_tokens) * 0.0004 / 1000, where model LIKE '%ada%') as 'Cost (USD)'" + "query": "SELECT count(jmeter) as 'Count' FROM Metric WHERE metricName = 'jmeter' FACET SampleLabel as 'Label', ResponseCode AS 'HTTP Response'" } ], "platformOptions": { @@ -77,25 +77,28 @@ } }, { - "title": "", + "title": "Latency - Average", "layout": { "column": 1, - "row": 3, - "width": 4, - "height": 1 + "row": 4, + "width": 2, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT count(*) as 'Total Requests'" + "query": "SELECT average(jmeter) AS 'Average' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" } ], "platformOptions": { @@ -104,25 +107,28 @@ } }, { - "title": "", + "title": "Latency - 90th Percentile", "layout": { - "column": 1, + "column": 3, "row": 4, - "width": 4, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT average(response_time)" + "query": "SELECT percentile(jmeter, 90) AS '90th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" } ], "platformOptions": { @@ -131,16 +137,16 @@ } }, { - "title": "", + "title": "Latency - 95th Percentile", "layout": { "column": 5, "row": 4, - "width": 8, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -152,40 +158,37 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT average(response_time) TIMESERIES" + "query": "SELECT percentile(jmeter, 95) AS '95th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" } ], - "nullValues": { - "nullValue": "preserve" - }, "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "", + "title": "Latency - 99th Percentile", "layout": { - "column": 1, - "row": 7, - "width": 4, + "column": 7, + "row": 4, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT count(*) AS 'Requests per model' FACET model" + "query": "SELECT percentile(jmeter, 99) AS '99th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" } ], "platformOptions": { @@ -194,16 +197,16 @@ } }, { - "title": "", + "title": "Error Rate", "layout": { - "column": 5, - "row": 7, - "width": 8, + "column": 9, + "row": 4, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -215,41 +218,19 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT average(response_time) AS 'Average response time' FACET model TIMESERIES" + "query": "SELECT percentage(count(jmeter), WHERE ResponseCode != '200') FROM Metric FACET SampleLabel TIMESERIES AUTO" } ], - "nullValues": { - "nullValue": "preserve" - }, "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "", + "title": "Summary Report", "layout": { "column": 1, - "row": 10, - "width": 12, - "height": 1 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "## Completion samples" - } - }, - { - "title": "", - "layout": { - "column": 1, - "row": 11, + "row": 7, "width": 12, "height": 2 }, @@ -264,7 +245,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT prompt, choices.0.text WHERE prompt is not NUll" + "query": "SELECT count(jmeter) AS '# Samples', average(jmeter) AS 'Average', min(jmeter) AS 'Min', max(jmeter) AS 'Max', median(jmeter) AS 'Median', stddev(jmeter) AS 'Std. Dev.', percentile(jmeter, 90) AS 'Line', percentile(jmeter, 95) AS 'Line', percentile(jmeter, 99) AS 'Line' FROM Metric WHERE metricName = 'jmeter' FACET SampleLabel AS 'Label'" } ], "platformOptions": { @@ -273,41 +254,26 @@ } }, { - "title": "", - "layout": { - "column": 1, - "row": 13, - "width": 12, - "height": 1 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "## ChatCompletion samples" - } - }, - { - "title": "", + "title": "View Results in Table", "layout": { "column": 1, - "row": 14, + "row": 9, "width": 12, - "height": 2 + "height": 3 }, "linkedEntityGuids": null, "visualization": { "id": "viz.table" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountIds": [], - "query": "FROM OpenAICompletion SELECT messages, choices.0.message.content WHERE messages IS NOT NULL" + "query": "SELECT SampleLabel, URL, (numeric(SampleEndTime) - numeric(SampleStartTime)) AS 'Sample Time (ms)', Bytes, SentBytes, Latency, ConnectTime FROM Metric WHERE metricName = 'jmeter' LIMIT MAX" } ], "platformOptions": { @@ -319,4 +285,4 @@ } ], "variables": [] -} +} \ No newline at end of file diff --git a/dashboards/jmeter/jmeter.png b/dashboards/jmeter/jmeter.png new file mode 100644 index 0000000000..6681b4ebdb Binary files /dev/null and b/dashboards/jmeter/jmeter.png differ diff --git a/dashboards/k6/k6.json b/dashboards/k6/k6.json new file mode 100644 index 0000000000..55a7cf1799 --- /dev/null +++ b/dashboards/k6/k6.json @@ -0,0 +1,515 @@ +{ + "name": "k6", + "description": "", + "pages": [ + { + "name": "k6", + "description": null, + "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": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT latest(k6.vus) FROM Metric TIMESERIES SINCE 1800 seconds ago" + } + ] + } + }, + { + "title": "Response time: max, 90th, avg, median", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(k6.http_req_duration.sum.percentiles) as '90th' FROM Metric WHERE percentile = 90 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" + } + ] + } + }, + { + "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 per second", + "layout": { + "column": 2, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(max(k6.http_reqs.per_second), 1 seconds) from Metric timeseries 10 second since 30 minutes ago" + } + ] + } + }, + { + "title": "Response timings - 90th", + "layout": { + "column": 6, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(k6.http_req_duration.sum.percentiles) as '90th' FROM Metric WHERE percentile = 90 TIMESERIES 10 seconds SINCE 1800 seconds ago" + } + ] + } + }, + { + "title": "Data Sent/Received (B)", + "layout": { + "column": 2, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(k6.data_received) as 'Data Received', max(k6.data_sent) as 'Data Sent' FROM Metric TIMESERIES 10 seconds since 30 minutes ago" + } + ] + } + }, + { + "title": "Requests Histogram", + "layout": { + "column": 6, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(`k6.http_reqs`, 80, 20) FROM Metric SINCE 30 minutes AGO UNTIL NOW " + } + ] + } + }, + { + "title": "Ramping Rate", + "layout": { + "column": 2, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "select derivative(k6.http_reqs, 30 seconds) as 'Ramping Rate /reqs' from Metric timeseries since 30 minutes ago" + } + ] + } + }, + { + "title": "Blocked Requests", + "layout": { + "column": 6, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(k6.http_req_blocked.per_second) as 'Blocked Requests' timeseries 10 seconds since 30 minutes ago" + } + ] + } + } + ] + }, + { + "name": "Infrastructure Scaling Impact", + "description": null, + "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": null, + "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/k6.png b/dashboards/k6/k6.png new file mode 100644 index 0000000000..3f613bdfe2 Binary files /dev/null and b/dashboards/k6/k6.png differ diff --git a/dashboards/kubernetes/kubernetes.json b/dashboards/kubernetes/kubernetes.json index 56ffea398d..4556339bc5 100644 --- a/dashboards/kubernetes/kubernetes.json +++ b/dashboards/kubernetes/kubernetes.json @@ -82,7 +82,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT uniqueCount(k8s.namespaceName) FACET k8s.clusterName UNTIL 1 minute ago limit 100" + "query": "FROM Metric SELECT uniqueCount(k8s.namespaceName) WHERE metricName = 'k8s.pod.createdAt' FACET k8s.clusterName UNTIL 1 minute ago limit 100" } ] } @@ -103,7 +103,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT uniqueCount(k8s.podName) as 'pod' FACET k8s.namespaceName UNTIL 1 minute ago limit 100" + "query": "FROM Metric SELECT uniqueCount(k8s.podName) as 'pod' WHERE metricName = 'k8s.pod.createdAt' FACET k8s.namespaceName UNTIL 1 minute ago limit 100" } ] } @@ -124,7 +124,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT max(k8s.container.restartCount)-min(k8s.container.restartCount) as 'Restarts' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" + "query": "FROM Metric SELECT max(k8s.container.restartCount)-min(k8s.container.restartCount) as 'Restarts' WHERE metricName = 'k8s.container.restartCount' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" } ] } @@ -145,7 +145,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(k8s.container.cpuUsedCores)/latest(k8s.container.cpuLimitCores) * 100 as '% CPU' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" + "query": "FROM Metric SELECT latest(k8s.container.cpuUsedCores)/latest(k8s.container.cpuLimitCores) * 100 as '% CPU' WHERE metricName = 'k8s.container.restartCount' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" } ] } @@ -166,7 +166,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(k8s.container.memoryWorkingSetUtilization) as '% Memory' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" + "query": "FROM Metric SELECT latest(k8s.container.memoryWorkingSetUtilization) as '% Memory' WHERE metricName = 'k8s.container.restartCount' FACET k8s.clusterName, k8s.podName, k8s.containerName UNTIL 1 minute ago TIMESERIES limit 50" } ] } @@ -187,7 +187,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select latest(k8s.volume.fsUsedPercent) facet k8s.podName, k8s.volumeName, k8s.pvcName timeseries" + "query": "FROM Metric select latest(k8s.volume.fsUsedPercent) where metricName = 'k8s.volume.fsUsedPercent' facet k8s.podName, k8s.volumeName, k8s.pvcName timeseries" } ] } @@ -208,7 +208,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(k8s.container.cpuUsedCores) as 'CPU Cores Used' FROM Metric FACET k8s.clusterName, k8s.podName, k8s.containerName timeseries since 60 minutes ago UNTIL 1 minute ago limit 50" + "query": "SELECT average(k8s.container.cpuUsedCores) as 'CPU Cores Used' FROM Metric WHERE metricName = 'k8s.container.restartCount' FACET k8s.clusterName, k8s.podName, k8s.containerName timeseries since 60 minutes ago UNTIL 1 minute ago limit 50" } ] } @@ -326,7 +326,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(k8s.node.cpuUsedCores) as 'Used Cores', latest(k8s.node.memoryWorkingSetBytes) / 1000000 as 'Used Memory MB', uniqueCount(k8s.podName) as 'Pods' FACET k8s.nodeName since 10 minutes ago UNTIL 1 minute ago limit 100" + "query": "FROM Metric SELECT latest(k8s.node.cpuUsedCores) as 'Used Cores', latest(k8s.node.memoryWorkingSetBytes) / 1000000 as 'Used Memory MB', uniqueCount(k8s.podName) as 'Pods' WHERE metricName = 'k8s.node.cpuUsedCores' FACET k8s.nodeName since 10 minutes ago UNTIL 1 minute ago limit 100" } ] } @@ -347,7 +347,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(k8s.podName) FROM Metric where k8s.status='Running' SINCE 10 minutes AGO UNTIL 1 minute ago facet k8s.clusterName, k8s.deploymentName WHERE k8s.deploymentName IS NOT NULL TIMESERIES limit 50" + "query": "SELECT uniqueCount(k8s.podName) FROM Metric where k8s.status = 'Running' AND metricName = 'k8s.pod.createdAt' SINCE 10 minutes AGO UNTIL 1 minute ago facet k8s.clusterName, k8s.deploymentName WHERE k8s.deploymentName IS NOT NULL TIMESERIES limit 50" } ] } @@ -389,7 +389,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniquecount(k8s.podName) FROM Metric where status='Running' facet k8s.nodeName since 10 minutes ago UNTIL 1 minute ago" + "query": "SELECT uniquecount(k8s.podName) FROM Metric where status='Running' and metricName = 'k8s.pod.createdAt' facet k8s.nodeName since 10 minutes ago UNTIL 1 minute ago" } ] } @@ -453,7 +453,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select uniqueCount(k8s.nodeName) as 'Nodes', filter(uniqueCount(k8s.podName), where k8s.status = 'Running') as 'Running Pods', filter(uniqueCount(k8s.podName), where k8s.status in ('Pending')) as 'Pending Pods', uniqueCount(k8s.podName) as 'Total Pods' facet k8s.clusterName since 30 minutes ago limit 1000" + "query": "FROM Metric select uniqueCount(k8s.nodeName) as 'Nodes', filter(uniqueCount(k8s.podName), where k8s.status = 'Running' and metricName = 'k8s.pod.createdAt') as 'Running Pods', filter(uniqueCount(k8s.podName), where k8s.status in ('Pending') and metricName = 'k8s.pod.createdAt') as 'Pending Pods', uniqueCount(k8s.podName) as 'Total Pods' where metricName = 'k8s.pod.createdAt' facet k8s.clusterName since 30 minutes ago limit 1000" } ] } @@ -583,7 +583,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select filter(uniqueCount(k8s.podName), where k8s.status = 'Running') as 'Running Pods', filter(uniqueCount(k8s.podName), where k8s.status = 'Pending') as 'Pending Pods', (average(k8s.node.cpuUsedCores) / average(k8s.node.allocatableCpuCores) * 100) as 'CPU %', (average(k8s.node.memoryWorkingSetBytes) / average(k8s.node.allocatableMemoryBytes) * 100) as 'Mem %', (average(k8s.node.fsUsedBytes) / average(k8s.node.fsCapacityBytes) * 100) as 'Disk Util %' where nodeName is not null facet nodeName limit 2000 since 30 minutes ago" + "query": "FROM Metric select filter(uniqueCount(k8s.podName), where k8s.status = 'Running') as 'Running Pods', filter(uniqueCount(k8s.podName), where k8s.status = 'Pending') as 'Pending Pods', (average(k8s.node.cpuUsedCores) / average(k8s.node.allocatableCpuCores) * 100) as 'CPU %', (average(k8s.node.memoryWorkingSetBytes) / average(k8s.node.allocatableMemoryBytes) * 100) as 'Mem %', (average(k8s.node.fsUsedBytes) / average(k8s.node.fsCapacityBytes) * 100) as 'Disk Util %' where metricName = 'k8s.pod.createdAt' and nodeName is not null facet nodeName limit 2000 since 30 minutes ago" } ] } @@ -718,7 +718,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select max(k8s.container.restartCount) AS 'Restart Count', latest(k8s.reason) AS 'Last Restart Reason' where k8s.container.restartCount[latest] > 0 AND k8s.reason IS NOT NULL order by k8s.container.restartCount facet k8s.containerName AS 'Container Name', k8s.podName AS 'Pod Name', k8s.clusterName AS 'Cluster Name' since 30 minutes ago limit 1000" + "query": "FROM Metric select max(k8s.container.restartCount) AS 'Restart Count', latest(k8s.reason) AS 'Last Restart Reason' where k8s.container.restartCount[latest] > 0 AND k8s.reason IS NOT NULL and metricName = 'k8s.container.restartCount' order by k8s.container.restartCount facet k8s.containerName AS 'Container Name', k8s.podName AS 'Pod Name', k8s.clusterName AS 'Cluster Name' since 30 minutes ago limit 1000" } ] } @@ -786,7 +786,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select uniqueCount(k8s.podName) as 'Pod Count' where k8s.status is not null facet k8s.clusterName AS 'Cluster Name', k8s.status AS 'Status' since 30 minutes ago limit 100" + "query": "FROM Metric select uniqueCount(k8s.podName) as 'Pod Count' where k8s.status is not null and metricName = 'k8s.pod.createdAt' facet k8s.clusterName AS 'Cluster Name', k8s.status AS 'Status' since 30 minutes ago limit 100" } ] } @@ -811,7 +811,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select k8s.podName AS 'Pod Name', k8s.status AS 'Status' , k8s.clusterName AS 'Cluster Name' where k8s.status = 'Pending' since 30 minutes ago limit 1000" + "query": "FROM Metric select k8s.podName AS 'Pod Name', k8s.status AS 'Status' , k8s.clusterName AS 'Cluster Name' where k8s.status = 'Pending' and metricName = 'k8s.pod.createdAt' since 30 minutes ago limit 1000" } ] } @@ -857,7 +857,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select k8s.podName AS 'Pod Name', k8s.status AS 'Status', k8s.clusterName AS 'Cluster Name' where k8s.status = 'Failed' since 30 minutes ago limit 1000" + "query": "FROM Metric select k8s.podName AS 'Pod Name', k8s.status AS 'Status', k8s.clusterName AS 'Cluster Name' where k8s.status = 'Failed' and metricName = 'k8s.pod.createdAt' since 30 minutes ago limit 1000" } ] } @@ -1421,4 +1421,4 @@ } ], "variables": [] -} \ No newline at end of file +} diff --git a/dashboards/lambdatest/lambdatest-logs.json b/dashboards/lambdatest/lambdatest-logs.json new file mode 100644 index 0000000000..6b5ac498a7 --- /dev/null +++ b/dashboards/lambdatest/lambdatest-logs.json @@ -0,0 +1,508 @@ +{ + "name": "LambdaTest Dashboard", + "description": null, + "pages": [ + { + "name": "LambdaTest - Test Overview", + "description": null, + "widgets": [ + { + "title": "Test Runs", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Tests' FROM Log WHERE `service-name`='lambdatest' AND `newrelic.source` = 'api.logs' SINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tests Completed", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Tests' FROM Log WHERE `service-name`='lambdatest' AND `newrelic.source` = 'api.logs' AND `status`='Completed' SINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tests Passed", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Tests' FROM Log WHERE `service-name`='lambdatest' AND `newrelic.source` = 'api.logs' AND `status`='Passed' SINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tests Failed", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Tests' FROM Log WHERE `service-name`='lambdatest' AND `newrelic.source` = 'api.logs' AND `status`='Failed' SINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tests Errored", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Errored Tests' \nFROM Log \nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND (status = 'Queue_Timeout' OR status = 'Idle_Timeout') \nSINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 - Tests By OS", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log \nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND test_env_os != '' \nAND test_env_os != '--'\nAND test_env_os != '-'\nFACET test_env_os \nLIMIT 10\nSINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 - Tests by Browsers", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log \nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND test_env_browser != '' \nAND test_env_browser != '--'\nAND test_env_browser != '-'\nFACET test_env_browser \nLIMIT 10\nSINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tests Execution Trend", + "layout": { + "column": 1, + "row": 11, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Test_Execution_Count' \nFROM Log \nWHERE `service-name` = 'lambdatest' \nAND `newrelic.source` = 'api.logs' \nSINCE 7 day ago\nTIMESERIES 1 hour\nCOMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queue Usage Trend", + "layout": { + "column": 1, + "row": 14, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'Queued_Tests_Count'\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND test_id IS NOT NULL \nAND test_created_at IS NOT NULL \nAND test_started_at IS NOT NULL\nAND `test_created_at` != `test_started_at`\nSINCE 7 days ago\nTIMESERIES 1 hour\nCOMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "LambdaTest - Test Error Overview", + "description": null, + "widgets": [ + { + "title": "Test Errors", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS Tests\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND status IN ('Lambda Error', 'Queue_Timeout', 'Idle_Timeout')\nAND test_id IS NOT NULL\nSINCE 1 week ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Idle Timeout", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS Tests\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND `status` = 'Idle_Timeout'\nAND test_id IS NOT NULL\nSINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Queue Timeout", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS Tests\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND `status` = 'Queue_Timeout'\nAND test_id IS NOT NULL\nSINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Lambda Error", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS Tests\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND `status` = 'Lambda Error'\nAND test_id IS NOT NULL\nSINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Stats", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Tests\nFROM Log\nWHERE status NOT IN ('Passed', 'Failed', 'Completed')\nFACET status\nSINCE 1 week ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Message Categoriztion", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND error_message IS NOT NULL\nAND `error_message` != '-'\nFACET error_message\nLIMIT 10\nSINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Test Status Ratio", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT \n FILTER(count(*), WHERE status IN ('Lambda Error', 'Queue_Timeout', 'Idle_Timeout', 'Failed')) AS 'Failed',\n FILTER(count(*), WHERE status NOT IN ('Lambda Error', 'Queue_Timeout', 'Idle_Timeout', 'Failed')) AS 'Success'\nFROM Log\nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND test_id IS NOT NULL \nAND status IS NOT NULL \nSINCE 1 week ago TIMESERIES 1 hour" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Test Failure by Name", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) \nFROM Log \nWHERE `service-name`='lambdatest' \nAND `newrelic.source` = 'api.logs' \nAND status IN ('Idle_Timeout', 'Queue_Timeout', 'Lambda Error')\nFACET test_name, hourOf(timestamp)\nSINCE 1 week ago TIMESERIES 1 hour\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/lambdatest/lambdatest01.png b/dashboards/lambdatest/lambdatest01.png new file mode 100644 index 0000000000..36f66f5c27 Binary files /dev/null and b/dashboards/lambdatest/lambdatest01.png differ diff --git a/dashboards/lambdatest/lambdatest02.png b/dashboards/lambdatest/lambdatest02.png new file mode 100644 index 0000000000..acbc5c6293 Binary files /dev/null and b/dashboards/lambdatest/lambdatest02.png differ diff --git a/dashboards/lambdatest/lambdatest03.png b/dashboards/lambdatest/lambdatest03.png new file mode 100644 index 0000000000..761926da08 Binary files /dev/null and b/dashboards/lambdatest/lambdatest03.png differ diff --git a/dashboards/lambdatest/lambdatest04.png b/dashboards/lambdatest/lambdatest04.png new file mode 100644 index 0000000000..26529ebba3 Binary files /dev/null and b/dashboards/lambdatest/lambdatest04.png differ diff --git a/dashboards/lambdatest/logo.png b/dashboards/lambdatest/logo.png new file mode 100644 index 0000000000..db3b782463 Binary files /dev/null and b/dashboards/lambdatest/logo.png differ diff --git a/dashboards/lamp/apache.svg b/dashboards/lamp/apache.svg deleted file mode 100644 index c3962e0b19..0000000000 --- a/dashboards/lamp/apache.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dashboards/lamp/dashboard.json b/dashboards/lamp/dashboard.json index 97abb41d58..ac556fa45c 100644 --- a/dashboards/lamp/dashboard.json +++ b/dashboards/lamp/dashboard.json @@ -18,7 +18,7 @@ }, "title": "", "rawConfiguration": { - "text": "# Linux\n\n![Linux Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/dashboards/lamp/linux.svg)" + "text": "# Linux\n\n![Linux Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/linux/logo.svg)" }, "linkedEntityGuids": null }, @@ -121,7 +121,7 @@ }, "title": "", "rawConfiguration": { - "text": "# Apache\n![Apache](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/dashboards/lamp/apache.svg)\n" + "text": "# Apache\n![Apache](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/apache/logo.svg)\n" }, "linkedEntityGuids": null }, @@ -187,7 +187,7 @@ }, "title": "", "rawConfiguration": { - "text": "# MySQL\n![MySQL Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/dashboards/lamp/mysql.svg)" + "text": "# MySQL\n![MySQL Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/mysql/logo.png)" }, "linkedEntityGuids": null }, @@ -284,7 +284,7 @@ }, "title": "", "rawConfiguration": { - "text": "# PHP\n![PHP](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/dashboards/lamp/php.svg)\n" + "text": "# PHP\n![PHP](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/php/php/logo.svg)\n" }, "linkedEntityGuids": null }, diff --git a/dashboards/lamp/linux.svg b/dashboards/lamp/linux.svg deleted file mode 100644 index 8a78892d2b..0000000000 --- a/dashboards/lamp/linux.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dashboards/lamp/mysql.svg b/dashboards/lamp/mysql.svg deleted file mode 100644 index 45986fc64b..0000000000 --- a/dashboards/lamp/mysql.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dashboards/lamp/php.svg b/dashboards/lamp/php.svg deleted file mode 100644 index 142b62f0fe..0000000000 --- a/dashboards/lamp/php.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dashboards/lampy/lampy.json b/dashboards/lampy/lampy.json new file mode 100644 index 0000000000..92aec956c2 --- /dev/null +++ b/dashboards/lampy/lampy.json @@ -0,0 +1,909 @@ +{ + "name": "LAMPy", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Monitoring\n\nTrace the host related information at real-time using New Relic's Infra Agent. Your entire infrastructure can be observed, whether it is running on the dedicated server/container/cloud running in orchestrated environments." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Linux](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/linux/logo.svg)\n" + } + }, + { + "title": "Host Entity Name (click on the entity name to filter)", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Metric FACET entityName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 5, + "row": 2, + "width": 3, + "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 (megabytes)", + "layout": { + "column": 8, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(host.memoryFreeBytes)/1e+6 as 'Free', average(host.memoryUsedBytes)/1e+6 as 'Used',average(host.memoryTotalBytes)/1e+6 as 'Total'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Usage(%)", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) as 'Used ',latest(host.disk.freePercent) as 'Free' FROM Metric FACET device " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Apache HTTP Server\nBy using the New Relic Apache agent, you can get a sense of how busy, idle, and how many requests per second your servers are." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Apache](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/apache/logo.svg)\n" + } + }, + { + "title": "Server Entity Name (click on the entity name to filter)", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Metric where entityName like 'server:%' FACET entityName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per Second", + "layout": { + "column": 5, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`apache.server.net.requestsPerSecond`) as 'Requests' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes Sent per Request", + "layout": { + "column": 8, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`apache.server.net.bytesPerSecond`)/average(`apache.server.net.requestsPerSecond`)) as 'Bytes sent per request' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Busy Worker Status", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`apache.server.scoreboard.readingWorkers`) as 'Reading request', average(`apache.server.scoreboard.writingWorkers`) as 'Writing', average(`apache.server.scoreboard.loggingWorkers`) as 'Logging', average(`apache.server.scoreboard.finishingWorkers`) as 'Finishing', average(`apache.server.scoreboard.closingWorkers`) as 'Closing connection', average(`apache.server.scoreboard.keepAliveWorkers`) as 'Keep alive', average(`apache.server.scoreboard.dnsLookupWorkers`) as 'DNS lookup', average(`apache.server.scoreboard.idleCleanupWorkers`) as 'Idle cleanup', average(`apache.server.scoreboard.startingWorkers`) as 'Starting' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Database Monitoring\n\n By using the New Relic MySQL agent, you can easily understand database operations, read and write InnoDB data, and receive & send bytes.\n" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![MySQL](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/mysql/logo.png)" + } + }, + { + "title": "Node Entity Name(click on the entity name to filter)", + "layout": { + "column": 3, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Metric where entityName like 'node:%' FACET entityName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operations per Second", + "layout": { + "column": 5, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`mysql.node.query.insertPerSecond`) as 'Insert commands', average(`mysql.node.query.selectPerSecond`) as 'Select commands', average(`mysql.node.query.updatePerSecond`) as 'Update comands', average(`mysql.node.query.deletePerSecond`) as 'Delete commands' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received and Sent Bytes per Second", + "layout": { + "column": 8, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`mysql.node.net.bytesReceivedPerSecond`) as 'Bytes received', average(`mysql.node.net.bytesSentPerSecond`) as 'Bytes sent' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Read and Write InnoDB (bytes/s)", + "layout": { + "column": 10, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`mysql.node.innodb.dataReadBytesPerSecond`) as 'Read InnoDB data', average(`mysql.node.innodb.dataWrittenBytesPerSecond`) as 'Write InnoDB data' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Monitoring\nTrace your entire host related information at real time using the New Relic Python agent." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Python](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/ec054ad274f7ad248184911c445f2c711917076e/quickstarts/python/python/logo.svg)" + } + }, + { + "title": "Applications (click on the application name to filter)", + "layout": { + "column": 3, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric Select count(*) facet appName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Throughput", + "layout": { + "column": 5, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(count(apm.service.transaction.duration), 1 minute) as 'Web throughput' FROM Metric WHERE transactionType LIKE 'Web' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "WSGI (seconds)", + "layout": { + "column": 7, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(newrelic.timeslice.value) AS `seconds` FROM Metric WHERE metricTimesliceName LIKE 'Python/WSGI%' FACET metricTimesliceName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Transactions Overview", + "layout": { + "column": 11, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', average(duration) as 'Avg duration (s)', percentile(duration, 90) as 'Slowest 10% (s)', percentage(count(*), WHERE error is false) AS 'Success rate' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Errors", + "description": null, + "widgets": [ + { + "title": "Applications (click on the application name to filter)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric Select count(*) facet appName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Errors Overview", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', percentage(count(*), WHERE error IS true) as 'Failed transactions (%)', count(*) * percentage(count(*), WHERE error IS true) / 100 as 'Failed transactions'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache Error Logs", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT (message) WHERE filePath LIKE '%apache2/error.log%' AND apmApplicationNames IS NOT NULL " + } + ] + } + }, + { + "title": "Error count", + "layout": { + "column": 1, + "row": 4, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError WHERE (`error.expected` IS FALSE OR `error.expected` IS NULL) FACET `error.class`, `transactionUiName`, `error.message` TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Error (%)", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE error is true) AS '' FROM Transaction " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "Memory Usage", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM SystemSample SELECT average(memoryUsedPercent) as 'Memory used (%)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 90 + }, + { + "alertSeverity": "WARNING", + "value": 50 + } + ] + } + }, + { + "title": "CPU Utilization", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.cpuPercent) AS 'CPU used %' FROM Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 90 + }, + { + "alertSeverity": "WARNING", + "value": 80 + } + ] + } + }, + { + "title": "Questions per Second", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`mysql.node.query.questionsPerSecond`) as '' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 4 + }, + { + "alertSeverity": "WARNING", + "value": 2 + } + ] + } + }, + { + "title": "Error Transactions (%)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE error is true) AS '' FROM Transaction " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/lampy/lampy01.png b/dashboards/lampy/lampy01.png new file mode 100644 index 0000000000..f9d07aca3b Binary files /dev/null and b/dashboards/lampy/lampy01.png differ diff --git a/dashboards/lampy/lampy02.png b/dashboards/lampy/lampy02.png new file mode 100644 index 0000000000..b8882178f4 Binary files /dev/null and b/dashboards/lampy/lampy02.png differ diff --git a/dashboards/lampy/lampy03.png b/dashboards/lampy/lampy03.png new file mode 100644 index 0000000000..62b8f1cfe3 Binary files /dev/null and b/dashboards/lampy/lampy03.png differ diff --git a/dashboards/lampy/lampy04.png b/dashboards/lampy/lampy04.png new file mode 100644 index 0000000000..f38d841418 Binary files /dev/null and b/dashboards/lampy/lampy04.png differ diff --git a/dashboards/lampy/lampy05.png b/dashboards/lampy/lampy05.png new file mode 100644 index 0000000000..98373841b6 Binary files /dev/null and b/dashboards/lampy/lampy05.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb-01.png b/dashboards/langchain-vectordb/langchain-vectordb-01.png new file mode 100644 index 0000000000..951d37d1e2 Binary files /dev/null and b/dashboards/langchain-vectordb/langchain-vectordb-01.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb-02.png b/dashboards/langchain-vectordb/langchain-vectordb-02.png new file mode 100644 index 0000000000..84c3cab6d4 Binary files /dev/null and b/dashboards/langchain-vectordb/langchain-vectordb-02.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb-03.png b/dashboards/langchain-vectordb/langchain-vectordb-03.png new file mode 100644 index 0000000000..cbf6ba4956 Binary files /dev/null and b/dashboards/langchain-vectordb/langchain-vectordb-03.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb-04.png b/dashboards/langchain-vectordb/langchain-vectordb-04.png new file mode 100644 index 0000000000..f353779e6f Binary files /dev/null and b/dashboards/langchain-vectordb/langchain-vectordb-04.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb-05.png b/dashboards/langchain-vectordb/langchain-vectordb-05.png new file mode 100644 index 0000000000..76abaaa84c Binary files /dev/null and b/dashboards/langchain-vectordb/langchain-vectordb-05.png differ diff --git a/dashboards/langchain-vectordb/langchain-vectordb.json b/dashboards/langchain-vectordb/langchain-vectordb.json new file mode 100644 index 0000000000..6603b868fa --- /dev/null +++ b/dashboards/langchain-vectordb/langchain-vectordb.json @@ -0,0 +1,792 @@ +{ + "name": "LangChain", + "description": null, + "pages": [ + { + "name": "LangChain vector stores", + "description": null, + "widgets": [ + { + "title": "Response Time (seconds)", + "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": "FROM LlmVectorSearch SELECT latest(response_time) WHERE applicationName IN ({{applicationName}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Searches by provider", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LlmVectorSearch SELECT count(*) WHERE applicationName IN ({{applicationName}}) FACET provider" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average document retrieved", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(document_count) from LlmVectorSearch WHERE applicationName IN ({{applicationName}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "List of queries ", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(query) FROM LlmVectorSearch WHERE applicationName IN ({{applicationName}}) FACET query " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "List of search id's", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmVectorSearch WHERE applicationName IN ({{applicationName}}) FACET search_id " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page source and content", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT result_rank, document_metadata_source, document_page_content FROM LlmVectorSearchResult" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Popular content\nThe following metrics will help you understand what content is popular in your system, so that you can improve your application, its content, and the indexing of that content." + } + }, + { + "title": "Top metadata source", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LlmVectorSearchResult FACET document_metadata_source " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top page content", + "layout": { + "column": 5, + "row": 8, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LlmVectorSearchResult FACET document_page_content" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "LangChain", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Completion\nThe following metrics will help you identify trends, compare models and optimize your LLM." + } + }, + { + "title": "Average tokens", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(prompt_tokens) as 'Prompt tokens',average(completion_tokens) as 'Completion tokens',average(total_tokens) as 'Total tokens' from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmCompletion TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Models", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmCompletion facet model_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by model name", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT median(duration.ms/1000) from LlmCompletion facet model_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "LLM completion's details", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT model_name,messages,response, error, parent.id from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Chains\nThe following metrics will help you to get a better understanding of how your LLM chains are performing and to identify any potential problems." + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmChain" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmChain TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Chain's details", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT chat_history,input,outputs, error, guid,trace.id ,parent.id from LlmChain" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Chains triggered", + "layout": { + "column": 3, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmChain TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Tools\nThe following metrics helps you to understand how your LLM tools are performing and to identify any potential problems.\n " + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 1, + "row": 16, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmTool " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmTool TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Tool details", + "layout": { + "column": 7, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT tool_name,tool_invocation_counter, tool_input,tool_output, error, parent.id from LlmTool " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by tool name ", + "layout": { + "column": 1, + "row": 19, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration.ms/1000) as 'seconds' from LlmTool facet tool_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by tool name ", + "layout": { + "column": 3, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms / 1000),50) as 'seconds' from LlmTool facet tool_name TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top tool names", + "layout": { + "column": 9, + "row": 19, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmTool facet tool_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "applicationName", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "LangChain observability trace" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM LlmVectorSearch SELECT uniques(applicationName) WHERE applicationName IS NOT NULL since 1 month ago" + }, + "title": "Select Your Application Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/langchain/langchain-01.png b/dashboards/langchain/langchain-01.png new file mode 100644 index 0000000000..cbf6ba4956 Binary files /dev/null and b/dashboards/langchain/langchain-01.png differ diff --git a/dashboards/langchain/langchain-02.png b/dashboards/langchain/langchain-02.png new file mode 100644 index 0000000000..f353779e6f Binary files /dev/null and b/dashboards/langchain/langchain-02.png differ diff --git a/dashboards/langchain/langchain-03.png b/dashboards/langchain/langchain-03.png new file mode 100644 index 0000000000..76abaaa84c Binary files /dev/null and b/dashboards/langchain/langchain-03.png differ diff --git a/dashboards/langchain/langchain-04.png b/dashboards/langchain/langchain-04.png new file mode 100644 index 0000000000..951d37d1e2 Binary files /dev/null and b/dashboards/langchain/langchain-04.png differ diff --git a/dashboards/langchain/langchain-05.png b/dashboards/langchain/langchain-05.png new file mode 100644 index 0000000000..84c3cab6d4 Binary files /dev/null and b/dashboards/langchain/langchain-05.png differ diff --git a/dashboards/langchain/langchain.json b/dashboards/langchain/langchain.json new file mode 100644 index 0000000000..9d07f534ce --- /dev/null +++ b/dashboards/langchain/langchain.json @@ -0,0 +1,792 @@ +{ + "name": "LangChain Application", + "description": null, + "pages": [ + { + "name": "LangChain", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Completion\nThe following metrics will help you identify trends, compare models and optimize your LLM." + } + }, + { + "title": "Average tokens", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(prompt_tokens) as 'Prompt tokens',average(completion_tokens) as 'Completion tokens',average(total_tokens) as 'Total tokens' from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmCompletion TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Models", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmCompletion facet model_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by model name", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT median(duration.ms/1000) from LlmCompletion facet model_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "LLM completion's details", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT model_name,messages,response, error, parent.id from LlmCompletion " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Chains\nThe following metrics will help you to get a better understanding of how your LLM chains are performing and to identify any potential problems." + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmChain" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmChain TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Chain's details", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT chat_history,input,outputs, error, guid,trace.id ,parent.id from LlmChain" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Chains triggered", + "layout": { + "column": 3, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmChain TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# LLM Tools\nThe following metrics helps you to understand how your LLM tools are performing and to identify any potential problems.\n " + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 1, + "row": 16, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmTool " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds)", + "layout": { + "column": 3, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms/1000),95) as 'seconds',percentile((duration.ms/1000),99) as 'seconds',percentile((duration.ms/1000),50) as 'seconds' from LlmTool TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Tool details", + "layout": { + "column": 7, + "row": 16, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT tool_name,tool_invocation_counter, tool_input,tool_output, error, parent.id from LlmTool " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by tool name ", + "layout": { + "column": 1, + "row": 19, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration.ms/1000) as 'seconds' from LlmTool facet tool_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Duration (seconds) by tool name ", + "layout": { + "column": 3, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile((duration.ms / 1000),50) as 'seconds' from LlmTool facet tool_name TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top tool names", + "layout": { + "column": 9, + "row": 19, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmTool facet tool_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "LangChain vector stores", + "description": null, + "widgets": [ + { + "title": "Response Time (seconds)", + "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": "FROM LlmVectorSearch SELECT latest(response_time) WHERE applicationName IN ({{applicationName}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Searches by provider", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LlmVectorSearch SELECT count(*) WHERE applicationName IN ({{applicationName}}) FACET provider" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average document retrieved", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(document_count) from LlmVectorSearch WHERE applicationName IN ({{applicationName}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "List of queries ", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(query) FROM LlmVectorSearch WHERE applicationName IN ({{applicationName}}) FACET query " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "List of search id's", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from LlmVectorSearch WHERE applicationName IN ({{applicationName}}) FACET search_id " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page source and content", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT result_rank, document_metadata_source, document_page_content FROM LlmVectorSearchResult" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Popular content\nThe following metrics will help you understand what content is popular in your system, so that you can improve your application, its content, and the indexing of that content." + } + }, + { + "title": "Top metadata source", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LlmVectorSearchResult FACET document_metadata_source " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top page content", + "layout": { + "column": 5, + "row": 8, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LlmVectorSearchResult FACET document_page_content" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "applicationName", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "LangChain observability trace" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM LlmVectorSearch SELECT uniques(applicationName) WHERE applicationName IS NOT NULL since 1 month ago" + }, + "title": "Select Your Application Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/lighttpd/lighttpd.json b/dashboards/lighttpd/lighttpd.json new file mode 100644 index 0000000000..d3d55a9e01 --- /dev/null +++ b/dashboards/lighttpd/lighttpd.json @@ -0,0 +1,798 @@ +{ + "name": "Lighttpd", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![logo](https://github.com/newrelic/newrelic-quickstarts/blob/main/quickstarts/lighttpd/logo.png?raw=true)" + } + }, + { + "title": "Memory Used (%)", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS 'Memory Used (%)' FROM Metric WHERE host.hostname = {{hostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.9 + }, + { + "alertSeverity": "WARNING", + "value": 0.8 + } + ] + } + }, + { + "title": "Busy Servers", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(BusyServers) As 'Busy Servers'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1000 + }, + { + "alertSeverity": "WARNING", + "value": 800 + } + ] + } + }, + { + "title": "Latest Uptime (hh:mm:ss)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(concat(\nif(day is not null,day, ''), if(day is not null, ' day(s) ',''),\nif(hour is not null, hour, ''),if(hour is not null,':',''),\nif(min is not null,min,''),if(min is not null,':',''),\nsec, precision: 0)) as 'Uptime (hh:mm:ss)' FROM (SELECT floor(latest(Uptime/86400)) as 'day', floor(latest(mod(Uptime, 86400)/3600)) as 'hour', floor(latest(mod(mod(Uptime, 86400),3600)/60)) as 'min', floor(latest(mod(mod(mod(Uptime, 86400),3600),60))) as 'sec' FROM LighttpdStatusSample) " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Idle Servers", + "layout": { + "column": 3, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(IdleServers) As 'Idle Servers' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Busy Servers", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#69378b", + "seriesName": "Busy Servers" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(BusyServers) As 'Busy Servers' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Uptime (hh:mm:ss)", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#d6bf29", + "seriesName": "Uptime" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Uptime) as 'Uptime' FROM LighttpdStatusSample TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details/nr1-core/home?state=2b90838a-3f1e-07db-001a-6943eef5f6dc).\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Lighttpd documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/lighttpd-integration/) to instrument Lighttpd.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Lighttpd) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Total Volume Deliver (MB)", + "layout": { + "column": 1, + "row": 7, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(TrafficTotal) / 1e+3 As 'Traffic' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Traffic", + "layout": { + "column": 4, + "row": 7, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(TrafficAverage5s) As 'Average Traffic' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Requests Handled (KB)", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(RequestsTotal)/1e+3 AS 'Requests' FROM LighttpdStatusSample TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Number of Requests", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT latest(RequestAverage5s) As 'Average Number of Requests' TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "Logs Information", + "layout": { + "column": 1, + "row": 1, + "width": 10, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT message FROM Log where logtype = 'lighttpd_log'" + } + ] + } + }, + { + "title": "Logs Message Received", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Logs Count' FROM Log since 1 hour ago COMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs Summary", + "layout": { + "column": 1, + "row": 4, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log" + } + ] + } + } + ] + }, + { + "name": "Infrastructure Monitoring", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Monitoring\n\nBy using New Relic infrastructure agent, you can track host-related information in real-time. Regardless of whether your infrastructure is running in the cloud, on dedicated servers, or in containers in orchestrated environments, you can monitor it all." + } + }, + { + "title": "CPU Used (%)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.cpuIdlePercent) as 'CPU Idle %', average(host.cpuIoWaitPercent) as 'CPU IO Wait %', average(host.cpuSystemPercent) as 'CPU System %', average(host.cpuUserPercent) as 'CPU User %' from Metric WHERE host.hostname = {{hostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Used (%)", + "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 average(host.memoryUsedPercent) AS 'Memory Used %' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Used (%)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.disk.usedPercent) as 'Storage Used %' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.net.transmitBytesPerSecond) AS 'Transmit Bytes per Second', latest(host.net.receiveBytesPerSecond) AS 'Receive Bytes per Second' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Average", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Size (megabytes)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`host.process.memoryResidentSizeBytes`)/1e+6 as 'Physical Memory', latest(`host.process.memoryVirtualSizeBytes`)/1e+6 as 'Virtual Memory' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "Number of Requests (%)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(RequestAverage5s)/latest(RequestsTotal) * 100 AS 'Number of Requests (%)' FROM LighttpdStatusSample where RequestAverage5s > 0" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.8 + }, + { + "alertSeverity": "WARNING", + "value": 0.6 + } + ] + } + }, + { + "title": "Busy Servers (%)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM LighttpdStatusSample SELECT (latest(BusyServers) * 100)/(latest(BusyServers) + latest(IdleServers)) As 'Busy Servers (%)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.8 + }, + { + "alertSeverity": "WARNING", + "value": 0.6 + } + ] + } + }, + { + "title": "High Memory Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS 'High Memory Usage (%)' FROM Metric WHERE host.hostname = {{hostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.9 + }, + { + "alertSeverity": "WARNING", + "value": 0.8 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "hostname", + "items": null, + "defaultValues": [ + { + "value": { + "string": "lighttpd-VM" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(hostname) FROM Metric" + }, + "title": "Select your host", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/lighttpd/lighttpd01.png b/dashboards/lighttpd/lighttpd01.png new file mode 100644 index 0000000000..a0a9fe6178 Binary files /dev/null and b/dashboards/lighttpd/lighttpd01.png differ diff --git a/dashboards/lighttpd/lighttpd02.png b/dashboards/lighttpd/lighttpd02.png new file mode 100644 index 0000000000..b5ac44c1a7 Binary files /dev/null and b/dashboards/lighttpd/lighttpd02.png differ diff --git a/dashboards/lighttpd/lighttpd03.png b/dashboards/lighttpd/lighttpd03.png new file mode 100644 index 0000000000..c644a41c4b Binary files /dev/null and b/dashboards/lighttpd/lighttpd03.png differ diff --git a/dashboards/lighttpd/lighttpd04.png b/dashboards/lighttpd/lighttpd04.png new file mode 100644 index 0000000000..e763993c02 Binary files /dev/null and b/dashboards/lighttpd/lighttpd04.png differ diff --git a/dashboards/loadmill/loadmill.jpeg b/dashboards/loadmill/loadmill.jpeg new file mode 100644 index 0000000000..854fb6997d Binary files /dev/null and b/dashboards/loadmill/loadmill.jpeg differ diff --git a/dashboards/loadmill/loadmill.json b/dashboards/loadmill/loadmill.json new file mode 100644 index 0000000000..926bcbcc27 --- /dev/null +++ b/dashboards/loadmill/loadmill.json @@ -0,0 +1,230 @@ +{ + "name": "Loadmill Test monitoring", + "description": null, + "pages": [ + { + "name": "Test results data", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "\n![Add Images](https://user-images.githubusercontent.com/13430395/235674279-85947af2-b9be-424e-af01-063ed89389f9.svg)\n\n------------------------------\n# Loadmill Tests Monitoring\n#### [Loadmill](https://docs.loadmill.com) streams your tests' events helping you monitor your testing environments in near real-time." + } + }, + { + "title": "Test Plan Runs", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#04c31a", + "seriesName": "PASSED" + }, + { + "color": "#ff0a0a", + "seriesName": "FAILED" + }, + { + "color": "#f8a71b", + "seriesName": "FALKY" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LoadmillTestPlan FACET status" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Test Suites Status", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#04c31a", + "seriesName": "PASSED" + }, + { + "color": "#ff0a0a", + "seriesName": "FAILED" + } + ] + }, + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LoadmillTestSuite FACET status " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Test Flows status", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#1e23be", + "seriesName": "Total Flows" + }, + { + "color": "#04c31a", + "seriesName": "Passed Flows" + }, + { + "color": "#ff0a0a", + "seriesName": "Failed Flows" + }, + { + "color": "#f8a71b", + "seriesName": "Flaky Flows" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(numOfFlows) as 'Total Flows', sum(numOfPassedFlows) as 'Passed Flows', sum(numOfFlows-numOfPassedFlows) as 'Failed Flows' , sum(numOfRetryFlows) as 'Flaky Flows' FROM LoadmillTestSuite TIMESERIES 1 minute " + } + ], + "nullValues": { + "nullValue": "zero" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top failed Flow", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM LoadmillTestSuiteFlow Where status = 'FAILED' FACET description " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Executed Tests", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Tests Executed' from LoadmillTestSuiteFlow" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/magento-business-insights/magentoBI.json b/dashboards/magento-business-insights/magentoBI.json new file mode 100644 index 0000000000..45f485c7ec --- /dev/null +++ b/dashboards/magento-business-insights/magentoBI.json @@ -0,0 +1,5440 @@ +{ + "name": "Magento Business Insights", + "description": null, + "pages": [ + { + "name": "Executive Summary", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Magento logo](https://upload.wikimedia.org/wikipedia/en/5/53/Magento.svg)\n" + } + }, + { + "title": "Registered Accounts", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Registered Accounts' from MYSQLCustomerEntityRegisteredUsers since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(`Order ID`) as 'Total Orders' FROM MYSQLSalesOrderByProduct since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Users", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Active Users`) from MYSQLCustomerEntityActiveUsers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Page Views", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select uniqueCount(session) as 'Total Page Views' since 3 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Downtime (%) per Month", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(result), where result = 'FAILED' and monitorName in ({{Monitor}})) as 'Downtime (%)' from SyntheticCheck since this month " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Abandoned Carts", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'Abandoned Carts' FROM MYSQLAbandonedCarts" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Total Revenue ($)", + "layout": { + "column": 3, + "row": 2, + "width": 7, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_billed_amount_by_status) as 'Total Revenue ($)' WHERE order_status = 'complete' TIMESERIES AUTO COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Revenue at Risk due to Website Downtime ($) - per month ", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration/1000) * (SELECT (latest(AverageRevenue) / 365) / 86400 AS 'Average Revenue per second' FROM MYSQLRevenuePerMonthAndYear WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED' and monitorName IN ({{Monitor}}) facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Canceled Orders", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(order_id) AS 'Canceled Orders' FROM MYSQLSalesOrderDetails where status ='canceled' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "New vs Returning Customers", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(newCustomers), LATEST(returningCustomers) from MYSQLReturningCustomers, MYSQLNewCustomers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue at Risk due to Website Downtime ($) - per day ", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration/1000) * (SELECT (latest(AverageRevenue) / 365) / 86400 AS 'Average Revenue per second' FROM MYSQLRevenuePerMonthAndYear WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED'and monitorName IN ({{Monitor}}) facet dateOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Customer Journey (Registered Users)", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT funnel(customerId as 'Customer', where name = 'WebTransaction/Action/catalog/product/view' as 'View Product', where name like 'WebTransaction/Action/checkout/cart/add' as 'Add to Cart', where name like 'WebTransaction/Action/checkout/onepage/success' as 'Success Page') " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue by Payment Method", + "layout": { + "column": 5, + "row": 6, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(CountOfOrderByMethod) FROM MySQLSalesOrderPaymentCount FACET PaymentMethodType " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue at Risk due to Slow Page Load ($) - per day", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(duration) - 2) * (SELECT (latest(AverageRevenue) / 365) AS 'Average Revenue per Second' FROM MYSQLRevenuePerMonthAndYear) AS 'Revenue at Risk due to Slow Page Load ($)' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Average Orders at Stake\nKeeping track of error, page load, order performance and lost average orders can help businesses quantify the impact of these issues." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Error Performance" + } + }, + { + "title": "HTTP Errors - per month", + "layout": { + "column": 3, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(httpResponseCode) from Transaction where httpResponseCode > '299' since 1 year ago until today facet MonthOf(timestamp) TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors - per month", + "layout": { + "column": 7, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(httpResponseCode) from Transaction where httpResponseCode > '299' facet MonthOf(timestamp) " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 10 + } + ] + } + }, + { + "title": "Average Orders at Risk due to HTTP Errors - per month", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) * (SELECT (LATEST(AverageNumberOfOrders)/365) FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) from Transaction where httpResponseCode > '299' facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page Load Performance" + } + }, + { + "title": "Average Page Load Time (seconds)", + "layout": { + "column": 3, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from PageView TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Page Load Time (seconds)", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 2 + } + ] + } + }, + { + "title": "Average Orders at Risk due to Slow Page Load - per day", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(duration) - 2) * (SELECT (LATEST(AverageNumberOfOrders) / 365) AS 'Average Order Count per day' FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) AS 'Average Order Count at Risk due to Slow Page Load' from PageView" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Order Performance" + } + }, + { + "title": "Average Orders - per year", + "layout": { + "column": 3, + "row": 15, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(AverageNumberOfOrders) AS 'Average Orders' FROM MYSQLOrdersAverage TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Orders - per year", + "layout": { + "column": 7, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(AverageNumberOfOrders) AS 'Average Orders' FROM MYSQLOrdersAverage " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Orders at Risk due to Downtime - per month", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " SELECT average(duration/1000) * (SELECT (LATEST(AverageNumberOfOrders)/365) FROM MYSQLOrdersAverage WHERE Year IN ({{Year}})) from SyntheticCheck where result = 'FAILED'and monitorName IN ({{Monitor}}) facet monthOf(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Customers", + "description": null, + "widgets": [ + { + "title": "Total Customers", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Total Customers' from MYSQLCustomerEntityRegisteredUsers" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "New Customers in Last One Month", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(newCustomers) from MYSQLNewCustomers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Returning Customers", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(returningCustomers) from MYSQLReturningCustomers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value (AOV) ($)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MySQLSalesOrderCumulative select latest(average_grand_total) as 'Average order value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Guest Users", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLUnregisteredCustomers SELECT uniqueCount(customer_email) AS 'Guest Users'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Orders By Guest Users", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByUnregisteredCustomersSummary SELECT latest(`Total Order Ids`) AS 'Number of Orders', latest(`Grand Total Sum`) AS 'Grand Total ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Customers", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Total Customers' from MYSQLCustomerEntityRegisteredUsers TIMESERIES since this week compare with 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Purchase Conversion Rate (%)", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT productID as 'Product ID',ProductName,conversionRateInPercent AS'Conversion Rate (%)'from MYSQLConversionRate" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Cart Abandonment\nWith the help of Cart Abandonment section you can easily track your abandoned carts, order value, product and quantity." + } + }, + { + "title": "Abandoned Carts", + "layout": { + "column": 1, + "row": 7, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'Abandoned Carts' FROM MYSQLAbandonedCarts TIMESERIES auto COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Abandoned Order Value ($)", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(subtotal) as 'Abandoned Order Value ($)'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Abandoned Products", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Products) as 'Abandoned Products'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Abandoned Quantity", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Quantity) as 'Abandoned Quantity'FROM MYSQLAbandonedCarts " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Products", + "description": null, + "widgets": [ + { + "title": "Most Viewed Products", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(viewCount) from MYSQLMostViewedProductsDaily facet product_id, product_name limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Selling Products", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(product_name), latest(QuantityOrdered) from MYSQLBestSellersDaily facet product_id limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with the Most Wishlist", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT LATEST(`‘product_name’`) as 'Product Name',LATEST(`‘wishlist_count’`)AS 'Wishlist Count' from MYSQLWishlistProducts FACET product_id " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most Viewed Products with No Inventory", + "layout": { + "column": 1, + "row": 6, + "width": 5, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(product_name),latest(`‘page_views’`) as 'Page Views',latest(`‘inventory_quantity’`)as 'Inventory' FROM MYSQLProductPageViewWithNoInventory facet product_id" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with Highest Page Views", + "layout": { + "column": 6, + "row": 6, + "width": 7, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(viewCount) from MYSQLMostViewedProductsDaily facet product_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Slow Moving Products", + "layout": { + "column": 1, + "row": 11, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSlowMovingProducts SELECT latest(product_name), latest(quantity) FACET product_id LIMIT 10 " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Products with Highest Number of Restock Alerts", + "layout": { + "column": 6, + "row": 11, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLHighestRestockAlerts SELECT latest(restockAlertCount) facet product_id, productName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Product Category with the Highest Cart Abandonment", + "layout": { + "column": 9, + "row": 11, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProdCartAbandonment SELECT latest(AbandonedProductsCount) FACET ProductName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Returned Products", + "layout": { + "column": 6, + "row": 13, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProductReturned SELECT latest(ReturnedProductCount) AS ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Orders", + "description": null, + "widgets": [ + { + "title": "Total Order Value", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderCumulative SELECT latest(grand_total_sum) AS 'Total Order Value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value (AOV) ($)", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MySQLSalesOrderCumulative select latest(average_grand_total) as 'Average Order Value ($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Orders Count", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(`Order ID`) as 'Orders Count' FROM MYSQLSalesOrderByProduct since this month compare with 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ordered Items Count", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderCumulative select latest(total_order_item_count) as 'Ordered Items Count' since this month COMPARE WITH 1 month ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Completion Rate ", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus,MYSQLSalesOrderByProduct SELECT (filter(latest(total_orders), where order_status = 'complete')/uniqueCount(`Order ID`)) * 100 as 'Order Completion Rate (%)' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Cancellation Rate", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus,MYSQLSalesOrderByProduct SELECT (filter(latest(total_orders), where order_status = 'canceled')/uniqueCount(`Order ID`)) * 100 as 'Order Cancellation Rate (%)' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Order Value ($) - By Order Status", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_billed_amount_by_status) FACET order_status " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders - By Order Status", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MySQLSalesOrderByStatus SELECT latest(total_orders) FACET order_status " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Orders Received compared with 1 month ago", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByProduct SELECT uniqueCount(`Order ID`) as 'Total Orders Received' since this month COMPARE WITH 1 month ago TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Order Value ($) by Region", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(grand_total)as'Average Order Value' FROM MYSQLSalesOrderByRegion facet `Region Name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Online Ordering Process" + } + }, + { + "title": "Signup", + "layout": { + "column": 1, + "row": 6, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`Registered Accounts`) as 'Signup' from MYSQLCustomerEntityRegisteredUsers " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 2, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 1\n# View Product\n\n" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 2\n# Add To Cart\n\n" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 3\n# Checkout\n\n" + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 6, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Stage 4\n# Success Page\n\n" + } + }, + { + "title": "View Product", + "layout": { + "column": 2, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%view%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%cart/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Checkout", + "layout": { + "column": 8, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Confirmation", + "layout": { + "column": 11, + "row": 7, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%onepage/success%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Product Page-Average Page Load Time (seconds)", + "layout": { + "column": 1, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%view%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page-Average Page Load Time (seconds)", + "layout": { + "column": 4, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%add%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checkout Page-Average Page Load Time (seconds)", + "layout": { + "column": 7, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Success -Average Page Load Time (seconds)", + "layout": { + "column": 10, + "row": 8, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction where name like '%success%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Product Page-HTTP Errors", + "layout": { + "column": 1, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%view%' and httpResponseCode > '299' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page-HTTP Errors", + "layout": { + "column": 4, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%add%' and httpResponseCode > '299' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Checkout Page-HTTP Errors", + "layout": { + "column": 7, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' and httpResponseCode > '299' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Order Success-HTTP Errors", + "layout": { + "column": 10, + "row": 11, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'HTTP Errors' from Transaction where name like '%success%' and httpResponseCode > '299' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value ($) by Customer Group", + "layout": { + "column": 1, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "from MYSQLSalesOrderByCustomerGroup select latest(grand_total_average_of_all_orders) facet if(customer_group_code = 'General','Registered Users','Guest Users')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Order Value ($) by Category Name", + "layout": { + "column": 7, + "row": 14, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(average_order_total) from MYSQLSalesOrderByCategory facet Category " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Latest 10 Orders", + "layout": { + "column": 1, + "row": 17, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLSalesOrderByProduct SELECT latest(`Order Created Date`), latest(`Order Quantity`) AS 'Quantity Ordered', latest(`Grand Total`) AS 'Order Value ($)' limit 10 FACET `Order ID`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Orders by Order Value", + "layout": { + "column": 7, + "row": 17, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLTopTenSalesOrdersByValue SELECT orderId as 'Order ID', grandTotal as 'Order Value ($)', orderQuantity as 'Quantity Ordered', createdDate as 'Order Created Date' ORDER BY grandTotal DESC SINCE 40 seconds ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Revenue", + "description": null, + "widgets": [ + { + "title": "Top 10 Customers driving Revenue ($)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProfitableCustomers SELECT latest(grand_total) AS 'Revenue ($)' FACET customer_email LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Revenue ($) vs Top Customers", + "layout": { + "column": 5, + "row": 1, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLProfitableCustomers SELECT latest(grand_total) AS 'Customers' FACET customer_email TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Revenue Impact Caused by Promotional Discounts ($)", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLRevenueLostDueToDiscounts SELECT latest(due_to_dicounts_revenue_loss) AS 'USD($)'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Discounts-Induced Sales", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLTotalSalesCountDueToDiscounts SELECT latest(due_to_dicounts_total_sales_count) AS ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Fraud", + "description": null, + "widgets": [ + { + "title": "Top 10 Customers with Recurring Purchases of the Same Product", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLCustomerPurchaseSameProd SELECT latest(purchase_count) FACET product_id,product_name, customer_email" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Accounts with Small Transactions", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(grand_total) AS 'Transactions' from MYSQLAccountWithSmallTransaction FACET customer_email order by grand_total asc limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Customers Exhibiting Cart Abandonment", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Products) as 'Abandoned Count' FROM MYSQLAbandonedCarts facet customer_email limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Customers who Frequently Switch Payment Methods", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLPaymentMethodChangedFrequently SELECT latest(transaction_count) FACET customer_email LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Customers who Change Addresses Frequently", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM MYSQLCustomerAddressChanging SELECT latest(address_count) facet customer_id,email" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Site Reliability and Performance", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Monitoring\n Leverage New Relic's APM (Application Performance Monitoring) capabilities by setting up errors inbox, average application throughput and apdex score. " + } + }, + { + "title": "3xx Redirects", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Redirect') WHERE httpResponseCode LIKE '3%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "4xx Client Errors", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Client Errors') WHERE httpResponseCode LIKE '4%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "5xx Server Errors", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' Server Errors') WHERE httpResponseCode LIKE '5%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Apdex Score", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT apdex(apm.service.apdex) as 'App server', apdex(apm.service.apdex.user) as 'End user' FROM Metric where appName like '%magento%' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Application Throughput", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.throughput) AS 'seconds' from Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Payment Declined (PayPal)", + "layout": { + "column": 8, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as 'Payment Declines' from Transaction where name ='WebTransaction/Action/paypal/express/cancel' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Carts Created", + "layout": { + "column": 11, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as 'Carts Created' from Transaction where name like '%cart/add%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Synthetic Monitoring\nSynthetic monitoring helps you proactively catch failures of synthetic checks and requests, failed checks by location and execution time." + } + }, + { + "title": "Synthetic Request-Failures", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM SyntheticRequest WHERE result = 'FAILED'and monitorName IN ({{Monitor}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Synthetic Check-Failures", + "layout": { + "column": 3, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM SyntheticCheck WHERE result = 'FAILED'and monitorName IN ({{Monitor}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Execution Time (seconds)", + "layout": { + "column": 5, + "row": 9, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration/1000) from SyntheticCheck where monitorName IN ({{Monitor}}) facet locationLabel timeseries " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Failures by Location", + "layout": { + "column": 10, + "row": 9, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM SyntheticCheck WHERE result = 'FAILED' and monitorName IN ({{Monitor}}) facet locationLabel" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Downtime\nSynthetic monitoring allows us to track website downtime. " + } + }, + { + "title": "Downtime (seconds)-Monthly", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(duration/1000) from SyntheticCheck where result = 'FAILED' and monitorName in ({{Monitor}}) since 12 month ago until today facet monthOf(timestamp) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 16, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Browser Monitoring\nWith the help of Browser Monitoring section you can easily track your application’s load time, browser breakdown, traffic by device type and top ISPs." + } + }, + { + "title": "Load Time by Country", + "layout": { + "column": 1, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView facet countryCode TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load Time by Device Type", + "layout": { + "column": 5, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView FACET deviceType TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load Time by Browser", + "layout": { + "column": 9, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(duration, 50) from PageView facet userAgentName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browser Breakdown", + "layout": { + "column": 1, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top ISPs", + "layout": { + "column": 5, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET asnOrganization LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic by Device Type", + "layout": { + "column": 9, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView FACET deviceType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 23, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Latency\nLatency helps us to know about average response time and page load time." + } + }, + { + "title": "Page Load Time (seconds)", + "layout": { + "column": 1, + "row": 24, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(duration) as 'seconds' from PageView TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Response Time (seconds)", + "layout": { + "column": 7, + "row": 24, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(newrelic.goldenmetrics.apm.application.responseTimeMs)/1000 as 'Average Response Time (seconds)' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 26, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction\nTransaction allows you to track transaction overview, completed and abandoned carts." + } + }, + { + "title": "Transaction Overview", + "layout": { + "column": 1, + "row": 27, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(appName), latest(duration) FROM Transaction facet name as 'Transactions'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "No. of Completed Carts", + "layout": { + "column": 10, + "row": 27, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(order_id) AS 'No. of Completed Carts' FROM MYSQLSalesOrderDetails where status = 'complete'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "No. of Abandoned Carts", + "layout": { + "column": 10, + "row": 29, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(customer_email) as 'No. of Abandoned Carts' FROM MYSQLAbandonedCarts" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 31, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Domain Analysis\nWith the help of Domain Analysis, you can gain insights into metrics related to agents." + } + }, + { + "title": "Total Requests by Domain", + "layout": { + "column": 1, + "row": 32, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from SyntheticRequest where monitorName in ({{Monitor}})facet domain TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Response Time (seconds) by Content Type", + "layout": { + "column": 6, + "row": 32, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(duration/1000) from SyntheticRequest where monitorName in ({{Monitor}}) facet contentType TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cluster Status", + "layout": { + "column": 11, + "row": 32, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM ElasticsearchClusterSample SELECT latest(cluster.status) AS 'Cluster Status', latest(cluster.nodes) AS 'Cluster Nodes', latest(cluster.dataNodes) AS 'Data Nodes'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Slowest Domains", + "layout": { + "column": 1, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select average(duration/1000) from SyntheticRequest facet domain limit 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Web Transaction Time (seconds)", + "layout": { + "column": 5, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(average(apm.service.overview.web), WHERE segmentName like 'PHP') as 'PHP', filter(average(apm.service.overview.web), WHERE segmentName like 'MySQL') as 'MySQL' FROM Metric TIMESERIES where appName like '%magento%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total vs Idle vs Busy Workers", + "layout": { + "column": 9, + "row": 35, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`apache.server.scoreboard.totalWorkers`) * uniqueCount(entity.name) as 'Total Workers', latest(`apache.server.idleWorkers`) * uniqueCount(entity.name) as 'Idle Workers', latest(`apache.server.busyWorkers`) * uniqueCount(entity.name) as 'Busy Workers' FROM Metric WHERE `metricName` IN ('apache.server.scoreboard.totalWorkers', 'apache.server.idleWorkers', 'apache.server.busyWorkers') TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 38, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Monitoring\nWith the help of Infrastructure Monitoring section you can easily track your cpu usage, disk usage, memory usage and storage usage." + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.cpuPercent) AS 'CPU used %' FROM Metric WHERE entity.name IN ({{hostName}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 4, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.memoryUsedPercent) AS 'Memory used %' FROM Metric WHERE entity.name IN ({{hostName}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 7, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) as 'Storage used %' FROM Metric WHERE entity.name IN ({{hostName}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Usage", + "layout": { + "column": 10, + "row": 39, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) as 'Used %' FROM Metric WHERE entity.name IN ({{hostName}}) FACET device" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Funnel", + "description": null, + "widgets": [ + { + "title": "Number of Product Views", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%catalog/product/view' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%cart/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Show Cart", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%checkout/cart/index%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Save Delivery Address", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%saveAddressInformation%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Save Payment Information and Place Order", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%savePaymentInformationAndPlaceOrder%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Success Page", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%onepage/success%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "View Order History", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/history%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "View Order Details", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/view%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Wishlist", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%wishlist/index/add%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Add to Cart from Wishlist", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%/wishlist/index/allcart%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Remove from Wishlist", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%wishlist/index/remove%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Remove from Cart", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%checkout/cart/delete%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cancel Order", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as '' from Transaction where name like '%sales/order/cancel%' since today COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + } + ] + }, + { + "name": "BOFA-Desktop", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# BOFA - Bottom of the funnel analysis" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 1. View Product\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%.html%' AND deviceType = 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 2. Begin Checkout \n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 3. Order Confirmed\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%onepage/success%' AND deviceType = 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + }, + { + "name": "BOFA-Mobile and other", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# BOFA - Bottom of the funnel analysis " + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 1. View Product\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType !='Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%.html%' AND deviceType != 'Desktop' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 2. Begin Checkout \n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%checkout%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# 3. Order Confirmed\n## Page Performance\n" + } + }, + { + "title": "Time to first byte", + "layout": { + "column": 3, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (score)", + "layout": { + "column": 5, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(cumulativeLayoutShift, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (seconds)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(largestContentfulPaint, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (milliseconds)", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstInputDelay, 75) FROM PageViewTiming WHERE pageUrl LIKE '%onepage/success%' AND deviceType!='Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "Javascript Errors per page", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass) / count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE pageUrl LIKE '%onepage/success%' AND deviceType != 'Desktop'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "Year", + "items": [ + { + "title": null, + "value": "2022" + }, + { + "title": null, + "value": "2023" + } + ], + "defaultValues": [ + { + "value": { + "string": "2023" + } + } + ], + "nrqlQuery": null, + "title": "Year", + "type": "ENUM", + "isMultiSelection": true, + "replacementStrategy": "NUMBER" + }, + { + "name": "Monitor", + "items": null, + "defaultValues": [ + { + "value": { + "string": "Magento2_v2 Availability" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(monitorName) from SyntheticCheck,SyntheticRequest since 1 month ago" + }, + "title": "Monitor", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "hostName", + "items": null, + "defaultValues": [ + { + "value": { + "string": "ip-172-31-8-210" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entity.name) FROM Metric since 1 month ago" + }, + "title": "Host", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/magento-business-insights/magentoBI001.png b/dashboards/magento-business-insights/magentoBI001.png new file mode 100644 index 0000000000..4e76b4277d Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI001.png differ diff --git a/dashboards/magento-business-insights/magentoBI002.png b/dashboards/magento-business-insights/magentoBI002.png new file mode 100644 index 0000000000..63d42ca4a9 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI002.png differ diff --git a/dashboards/magento-business-insights/magentoBI003.png b/dashboards/magento-business-insights/magentoBI003.png new file mode 100644 index 0000000000..6209f8104a Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI003.png differ diff --git a/dashboards/magento-business-insights/magentoBI004.png b/dashboards/magento-business-insights/magentoBI004.png new file mode 100644 index 0000000000..53ff548d06 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI004.png differ diff --git a/dashboards/magento-business-insights/magentoBI005.png b/dashboards/magento-business-insights/magentoBI005.png new file mode 100644 index 0000000000..f729b6e044 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI005.png differ diff --git a/dashboards/magento-business-insights/magentoBI006.png b/dashboards/magento-business-insights/magentoBI006.png new file mode 100644 index 0000000000..112c3f9aae Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI006.png differ diff --git a/dashboards/magento-business-insights/magentoBI007.png b/dashboards/magento-business-insights/magentoBI007.png new file mode 100644 index 0000000000..f45032ce28 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI007.png differ diff --git a/dashboards/magento-business-insights/magentoBI008.png b/dashboards/magento-business-insights/magentoBI008.png new file mode 100644 index 0000000000..54aa42d324 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI008.png differ diff --git a/dashboards/magento-business-insights/magentoBI009.png b/dashboards/magento-business-insights/magentoBI009.png new file mode 100644 index 0000000000..c1eb83dc40 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI009.png differ diff --git a/dashboards/magento-business-insights/magentoBI010.png b/dashboards/magento-business-insights/magentoBI010.png new file mode 100644 index 0000000000..de3874eea9 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI010.png differ diff --git a/dashboards/magento-business-insights/magentoBI011.png b/dashboards/magento-business-insights/magentoBI011.png new file mode 100644 index 0000000000..9b07596fc2 Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI011.png differ diff --git a/dashboards/magento-business-insights/magentoBI012.png b/dashboards/magento-business-insights/magentoBI012.png new file mode 100644 index 0000000000..c1e8a8991d Binary files /dev/null and b/dashboards/magento-business-insights/magentoBI012.png differ diff --git a/dashboards/mexn/dashboard.json b/dashboards/mexn/dashboard.json new file mode 100644 index 0000000000..d51c8e672a --- /dev/null +++ b/dashboards/mexn/dashboard.json @@ -0,0 +1,1916 @@ +{ + "name": "MExN", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Web Monitoring \n\nUse the New Relic Browser monitoring agent to get deep visibility and actionable insights into real user experience on the website." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![JavaScript](https://upload.wikimedia.org/wikipedia/commons/6/6a/JavaScript-logo.png?20120221235433)\n" + } + }, + { + "title": "Window Load Time (seconds)", + "layout": { + "column": 3, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageViewTiming SELECT LATEST(windowLoad) WHERE appName = {{appName_browser}} FACET pageUrl" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Initial Page Load and Route Change", + "layout": { + "column": 6, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(duration, 50) FROM BrowserInteraction WHERE (`mobileOptimized` IS NULL) AND (category IN ('Initial page load', 'Route change')) LIMIT 1000 FACET CASES (WHERE category LIKE '%Initial page load%' AS 'Initial Page Load (Window load + AJAX)', WHERE appName = {{appName_browser}} AND category LIKE '%Route change%' AS 'Route Change') TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Ajax Requests", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS 'HTTP Request' FROM AjaxRequest WHERE appName = {{appName_browser}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "User-Centric Page Load Times", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstContentfulPaint, 50), percentile(windowLoad, 50), percentile(firstInteraction, 50) FROM PageViewTiming WHERE appName = {{appName_browser}} LIMIT 1000" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction Information\n\nYou can track the detailed information of all connection requests received by the backend server using New Relic agents." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![ExpressJS](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/147a47e2e866c251b91e202175c9ccb68b55f1b1/quickstarts/node-js/express/logo.svg)\n" + } + }, + { + "title": "Top 10 Transactions", + "layout": { + "column": 3, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction WHERE appName = {{appName_nodejs}} AND (transactionType LIKE '%Web%' AND transactionSubType LIKE '%Expressjs%') EXTRAPOLATE FACET name LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Web Transactions Time", + "layout": { + "column": 7, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.transaction.duration * 1000) AS 'Response Time' FROM Metric WHERE appName = {{appName_nodejs}} AND (transactionType LIKE '%Web%') LIMIT MAX TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Login Frequencies", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT apdex(newrelic.timeslice.value) AS `Apdex/Expressjs/POST//user/login` FROM Metric WHERE appName = {{appName_nodejs}} AND metricTimesliceName LIKE '%Apdex/Expressjs/POST//user/login%' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Application Monitoring\n\nTrace the host related information at real-time using New Relic NodeJS agent. Your entire application can be observed." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![NodeJS](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/147a47e2e866c251b91e202175c9ccb68b55f1b1/quickstarts/node-js/node-js/logo.svg)" + } + }, + { + "title": "Event Loop", + "layout": { + "column": 3, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(count(newrelic.timeslice.value), WHERE appName = {{appName_nodejs}} AND metricTimesliceName LIKE '%Nodejs/EventLoop/CPU/Usage%') as 'Ticks per minute' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Garbage Collection Pause Time (seconds)", + "layout": { + "column": 6, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(newrelic.timeslice.value) * 1000)/1000 AS 'Average', (max(newrelic.timeslice.value) * 1000)/1000 AS 'Max' FROM Metric WHERE metricTimesliceName LIKE '%GC/System/Pauses%' AND appName = {{appName_nodejs}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "CPU Utilization", + "layout": { + "column": 9, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(rate(sum(newrelic.timeslice.value), 1 second), where metricTimesliceName LIKE '%CPU/System Time%') AS 'System', filter(rate(sum(newrelic.timeslice.value), 1 second), where metricTimesliceName LIKE '%CPU/User Time%') AS 'User' FROM Metric WHERE appName = {{appName_nodejs}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory Usage (MB)", + "layout": { + "column": 11, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT filter(average(newrelic.timeslice.value) * 1000 * 1000, where metricTimesliceName LIKE '%Memory/NonHeap/Used%') AS 'Non-Heap', filter(average(newrelic.timeslice.value) * 1000 * 1000, where metricTimesliceName LIKE '%Memory/Heap/Used%') AS 'V8 Heap (used)', filter(average(newrelic.timeslice.value) * 1000 * 1000, where metricTimesliceName LIKE '%Memory/Heap/Free%') AS 'V8 Heap (free)' FROM Metric WHERE appName = {{appName_nodejs}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Database Monitoring\n\nUsing the New Relic MongoDB agent, you have the ability to understand database operations, connections, errors and indexes.\n\n" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![mongodb](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/mongodb/logo.jpeg)\n" + } + }, + { + "title": "Opcounters - Total Operations Since Restart", + "layout": { + "column": 3, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_ss_opcounters) WHERE host.fullHostname = {{fullHostname}} FACET legacy_op_type TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 3 Connection Types", + "layout": { + "column": 7, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_ss_connections) WHERE host.fullHostname = {{fullHostname}} FACET conn_type LIMIT 3" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Indexes", + "layout": { + "column": 9, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_dbstats_indexes) AS 'Total Database Indexes', average(mongodb_dbstats_indexSize)/1000 AS 'Average Database Index Size (KB)' WHERE host.fullHostname = {{fullHostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operations Average", + "layout": { + "column": 11, + "row": 14, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(mongodb_ss_metrics_operation_scanAndOrder) AS 'Scan & Order', average(mongodb_ss_metrics_operation_writeConflicts) AS 'Write Conflicts' WHERE host.fullHostname = {{fullHostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 17, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Infrastructure Monitoring\n\nTrace the host related information at real-time using New Relic Infra Agent. Your entire infrastructure can be observed, whether it is running on the dedicated server/container/cloud running in orchestrated environments." + } + }, + { + "title": "Load Average", + "layout": { + "column": 1, + "row": 18, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) AS '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 4, + "row": 18, + "width": 3, + "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 WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 7, + "row": 18, + "width": 6, + "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 WHERE host.fullHostname = {{fullHostname}} FACET processId, processDisplayName ORDER BY cpuPercent asc LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "MongoDB", + "description": null, + "widgets": [ + { + "title": "MongoDB Up", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(mongodb_up) FROM Metric WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connections", + "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 latest(mongodb_ss_connections) WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Database(s) Dropped", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_ss_metrics_commands_dropDatabase_total) WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Stats", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(collection), latest(mongodb_dbstats_objects) AS 'Objects', latest(mongodb_dbstats_indexes) AS 'Indexes', latest(mongodb_dbstats_storageSize)/1000 AS 'Database Storage Size (KB)' WHERE host.fullHostname = {{fullHostname}} FACET database" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Collection Stats", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_collstats_storageStats_avgObjSize) AS 'Average Object Size (KB)', latest(mongodb_collstats_storageStats_storageSize)/1000 AS 'Collection Storage Size (KB)' WHERE host.fullHostname = {{fullHostname}} FACET collection" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes In Per Second", + "layout": { + "column": 1, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(mongodb_ss_network_bytesIn) AS 'Bytes In' FROM Metric WHERE host.fullHostName = {{fullHostname}} TIMESERIES 1 MINUTE" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bytes Out Per Second", + "layout": { + "column": 4, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(mongodb_ss_network_bytesOut) AS `Bytes Out` FROM Metric WHERE host.fullHostName = {{fullHostname}} TIMESERIES 1 MINUTE" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests Per Second", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(mongodb_ss_network_numRequests) FROM Metric WHERE host.fullHostName = {{fullHostname}} TIMESERIES 1 MINUTE" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "View(s)", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_dbstats_views) WHERE host.fullHostname = {{fullHostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "ExpressJS & NodeJS", + "description": null, + "widgets": [ + { + "title": "Transactions Overview", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', average(duration) as 'Avg duration (s)', percentile(duration, 90) as 'Slowest 10% (s)', percentage(count(*), WHERE error is false) AS 'Success rate' WHERE appName = {{appName_nodejs}} SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors Overview", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', percentage(count(*), WHERE error IS true) as 'Failed transactions (%)', count(*) * percentage(count(*), WHERE error IS true) / 100 as 'Failed transactions' WHERE appName = {{appName_nodejs}} SINCE 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 5 Slowest Transactions", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(duration) FROM Transaction WHERE (transactionType = 'Web') AND appName = {{appName_nodejs}} SINCE 1 week ago LIMIT 5 EXTRAPOLATE FACET name TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Transaction Errors Day by Day", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM TransactionError SELECT count(*), percentage(count(*), WHERE error IS true) FACET dateOf(timestamp) WHERE appName = {{appName_nodejs}} SINCE 1 week ago TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Day by Day", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*), percentage(count(*), WHERE error IS false) FACET dateOf(timestamp) WHERE appName = {{appName_nodejs}} SINCE 1 week ago TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most Popular Transactions", + "layout": { + "column": 1, + "row": 6, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction WHERE (transactionType = 'Web') AND appName = {{appName_nodejs}} SINCE last week EXTRAPOLATE FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transactions Errors Today Compared With 1 Week Ago", + "layout": { + "column": 8, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction WHERE response.status = '404' AND transactionType = 'Web' AND appName = {{appName_nodejs}} TIMESERIES 10 MINUTES SINCE TODAY COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Throughput Today Compared With 1 Week Ago", + "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": "SELECT COUNT(*) FROM Transaction WHERE appName = {{appName_nodejs}} TIMESERIES 1 HOUR SINCE TODAY COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Transaction Duration Today Compared With 1 Week Ago", + "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": "SELECT AVERAGE(duration) FROM Transaction WHERE appName = {{appName_nodejs}} TIMESERIES SINCE TODAY COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Apdex Score Today Compared With 1 Week Ago", + "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": "SELECT apdex(duration, t: 0.4) FROM Transaction WHERE appName = {{appName_nodejs}} TIMESERIES SINCE TODAY COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Browser Application", + "description": null, + "widgets": [ + { + "title": "Page Views Comparision", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS '' FROM PageView SINCE 1 week ago COMPARE WITH 1 day ago WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Interactive Page Load Time (seconds)", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) FROM PageView WHERE appName = {{appName_browser}} FACET pageUrl TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page Views Per Day", + "layout": { + "column": 7, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView FACET dateOf(timestamp), hourof(timestamp) TIMESERIES AUTO WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Response Codes - Ajax Requests", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM AjaxRequest WHERE appName = {{appName_browser}} FACET httpResponseCode" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Country", + "layout": { + "column": 1, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET countryCode WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "City", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET city WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "OS", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET userAgentOS WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device Type", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Page Views' FROM PageView FACET deviceType WHERE deviceType != 'Unknown' AND appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily Running JS Error Count", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM JavaScriptError FACET errorClass TIMESERIES AUTO WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Error Messages", + "layout": { + "column": 1, + "row": 9, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniques(errorMessage) FROM JavaScriptError WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Errors", + "description": null, + "widgets": [ + { + "title": "Browser - Javascript Error Messages", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorMessage) AS 'Count' FROM JavaScriptError WHERE (deviceType LIKE '%Desktop%') AND appName = {{appName_browser}} FACET `errorMessage`, `userAgentName` LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Errors", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM TransactionError SELECT count(*) FACET transactionUiName WHERE appName = {{appName_nodejs}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "NodeJS - Server Error", + "layout": { + "column": 1, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError WHERE appName = {{appName_nodejs}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "MongoDB - Page Faults", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(mongodb_ss_extra_info_page_faults) AS '' FROM Metric WHERE host.fullHostname = {{fullHostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + } + ] + }, + { + "name": "Alerts", + "description": null, + "widgets": [ + { + "title": "First Contentful Paint (FCP)", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(firstContentfulPaint, 75) AS 'Seconds' FROM PageViewTiming WHERE appName = {{appName_browser}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 3 + }, + { + "alertSeverity": "WARNING", + "value": 2 + } + ] + } + }, + { + "title": "Transaction Errors", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS '' FROM TransactionError WHERE appName = {{appName_nodejs}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 5 + }, + { + "alertSeverity": "WARNING", + "value": 0 + } + ] + } + }, + { + "title": "MongoDB Up", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(mongodb_up) AS '' WHERE host.fullHostname = {{fullHostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0.1 + }, + { + "alertSeverity": "WARNING", + "value": 0.9 + } + ] + } + }, + { + "title": "Free Memory (%)", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(memoryFreePercent) AS 'Percent (%)' FROM SystemSample WHERE fullHostname = {{fullHostname}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 15 + }, + { + "alertSeverity": "WARNING", + "value": 20 + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "appName_browser", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM PageView SELECT uniques(appName) WHERE appName IS NOT NULL LIMIT MAX SINCE 1 MONTH AGO" + }, + "title": "Select Your Browser Application Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "appName_nodejs", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Transaction SELECT uniques(appName) WHERE appName IS NOT NULL LIMIT MAX SINCE 1 MONTH AGO" + }, + "title": "Select Your NodeJS Application Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "fullHostname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM SystemSample SELECT uniques(fullHostname) WHERE fullHostname IS NOT NULL SINCE 1 MONTH AGO" + }, + "title": "Select Host Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/mexn/mexn001.png b/dashboards/mexn/mexn001.png new file mode 100644 index 0000000000..2e443c0b0b Binary files /dev/null and b/dashboards/mexn/mexn001.png differ diff --git a/dashboards/mexn/mexn002.png b/dashboards/mexn/mexn002.png new file mode 100644 index 0000000000..a477257fd2 Binary files /dev/null and b/dashboards/mexn/mexn002.png differ diff --git a/dashboards/mexn/mexn003.png b/dashboards/mexn/mexn003.png new file mode 100644 index 0000000000..08958f69a5 Binary files /dev/null and b/dashboards/mexn/mexn003.png differ diff --git a/dashboards/mexn/mexn004.png b/dashboards/mexn/mexn004.png new file mode 100644 index 0000000000..308da30073 Binary files /dev/null and b/dashboards/mexn/mexn004.png differ diff --git a/dashboards/mexn/mexn005.png b/dashboards/mexn/mexn005.png new file mode 100644 index 0000000000..57126de72c Binary files /dev/null and b/dashboards/mexn/mexn005.png differ diff --git a/dashboards/mexn/mexn006.png b/dashboards/mexn/mexn006.png new file mode 100644 index 0000000000..766d9b2b91 Binary files /dev/null and b/dashboards/mexn/mexn006.png differ diff --git a/dashboards/mexn/mexn007.png b/dashboards/mexn/mexn007.png new file mode 100644 index 0000000000..dd5bd3b113 Binary files /dev/null and b/dashboards/mexn/mexn007.png differ diff --git a/dashboards/mexn/mexn008.png b/dashboards/mexn/mexn008.png new file mode 100644 index 0000000000..c304e2ad1e Binary files /dev/null and b/dashboards/mexn/mexn008.png differ diff --git a/dashboards/mexn/mexn009.png b/dashboards/mexn/mexn009.png new file mode 100644 index 0000000000..6c7de0e27d Binary files /dev/null and b/dashboards/mexn/mexn009.png differ diff --git a/dashboards/mexn/mexn010.png b/dashboards/mexn/mexn010.png new file mode 100644 index 0000000000..ff64066e7c Binary files /dev/null and b/dashboards/mexn/mexn010.png differ diff --git a/dashboards/mobile-network-performance/NetworkPerformance.png b/dashboards/mobile-network-performance/NetworkPerformance.png new file mode 100644 index 0000000000..b7384010f7 Binary files /dev/null and b/dashboards/mobile-network-performance/NetworkPerformance.png differ diff --git a/dashboards/mobile-network-performance/NetworkPerformance2.png b/dashboards/mobile-network-performance/NetworkPerformance2.png new file mode 100644 index 0000000000..77a62d7b5c Binary files /dev/null and b/dashboards/mobile-network-performance/NetworkPerformance2.png differ diff --git a/dashboards/mobile-network-performance/NetworkPerformance3.png b/dashboards/mobile-network-performance/NetworkPerformance3.png new file mode 100644 index 0000000000..d02a4a897a Binary files /dev/null and b/dashboards/mobile-network-performance/NetworkPerformance3.png differ diff --git a/dashboards/mobile-network-performance/network-performance.json b/dashboards/mobile-network-performance/network-performance.json new file mode 100644 index 0000000000..a363eef447 --- /dev/null +++ b/dashboards/mobile-network-performance/network-performance.json @@ -0,0 +1,2003 @@ +{ + "name": "Mobile Network Performance", + "description": "Get an overview of mobile application network performance", + "pages": [ + { + "name": "Summary", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Hola! नमस्ते! Hello! やあ! ![New Relic logo](https://newrelic.com/static-assets/images/icons/avatar-newrelic.png)\n### This mobile network performance dashboard is designed to be used on both Android and iOS platforms. \nHere are few links which will help you with your mobile instrumentation journey.\n\n- [Introduction to mobile monitoring](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/)\n- [Introduction to Android monitoring](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/get-started/introduction-new-relic-mobile-android/)\n- [Introduction to iOS monitoring](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/get-started/introduction-new-relic-mobile-ios/)\n" + } + }, + { + "title": "", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Active Users\n" + } + }, + { + "title": "Daily Active Users", + "layout": { + "column": 6, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(uuid) AS 'Users' from MobileSession since 1 day ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Weekly Active Users", + "layout": { + "column": 7, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(uuid) AS 'Users' from MobileSession since 1 week ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly Active Users", + "layout": { + "column": 8, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(uuid) AS 'Users' from MobileSession since 30 days ago COMPARE WITH 30 days ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Android users", + "layout": { + "column": 9, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(deviceUuid) from Mobile where osName = 'Android' since 1 day ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "iOS users", + "layout": { + "column": 10, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(deviceUuid) from Mobile where osName = 'iOS' since 1 day ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Android users", + "layout": { + "column": 11, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where osName = 'Android' and networkError not like 'Cancelled'" + } + ] + } + }, + { + "title": "iOS users", + "layout": { + "column": 12, + "row": 2, + "width": 1, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where osName = 'iOS' and networkError not like 'Cancelled'" + } + ] + } + }, + { + "title": "Platform Histogram", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(sessionDuration, 10, 50) FROM Mobile FACET deviceType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Country Histogram", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(sessionDuration, 10, 50) FROM Mobile FACET countryCode" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors: Error-Free Sessions", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (1 - filter(uniqueCount(MobileRequestError.sessionId), WHERE errorType = 'HTTPError') / uniqueCount(Mobile.sessionId)) * 100 as '% Error-Free Sessions' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "HTTP Errors: Users Impacted", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(uniqueCount(MobileRequestError.uuid), WHERE errorType = 'HTTPError') / uniqueCount(Mobile.uuid) * 100 as '% Users Impacted' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "Network Failures: Failure-free Users", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (1 - filter(uniqueCount(MobileRequestError.uuid), WHERE errorType = 'NetworkFailure' and networkError not like 'Cancelled') / uniqueCount(Mobile.uuid)) * 100 as '% Failure-Free Users' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "Network Failures: Users Impacted", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(uniqueCount(MobileRequestError.uuid), WHERE errorType = 'NetworkFailure') / uniqueCount(Mobile.uuid) * 100 as '% Users Impacted' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Session Duration", + "layout": { + "column": 5, + "row": 16, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT average(sessionDuration) from Mobile where category = 'Session' TIMESERIES MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "HTTP Data", + "description": null, + "widgets": [ + { + "title": "HTTP Errors: Error-Free Sessions", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (1-filter(uniqueCount(MobileRequestError.sessionId), WHERE errorType='HTTPError' ) / uniqueCount(Mobile.sessionId)) * 100 as '% Error-Free Sessions' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "HTTP Errors: Sessions Impacted", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(uniqueCount(MobileRequestError.sessionId), WHERE errorType='HTTPError') / uniqueCount(Mobile.sessionId) * 100 as '% Sessions Impacted' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "Percentile Response Time", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(responseTime, 98) as '98 percentile (sec)', percentile(responseTime, 90) as '90 percentile (sec)', percentile(responseTime, 50) as '50 percentile (sec)' from MobileRequestError LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sessions with UUIDs", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(count(*), where uuid is not null) as ' ' from MobileRequestError LIMIT MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors: Percentage of Users Impacted", + "layout": { + "column": 1, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(uniqueCount(MobileRequestError.uuid), WHERE errorType='HTTPError') / uniqueCount(Mobile.uuid) * 100 as '% Users Impacted' FROM MobileRequestError, Mobile TIMESERIES LIMIT MAX" + } + ] + } + }, + { + "title": "HTTP Errors: Domains", + "layout": { + "column": 4, + "row": 3, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequestError where errorType='HTTPError' FACET requestDomain limit MAX " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Failures and Errors: % Users impacted", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(MobileRequestError.uuid) / uniqueCount(Mobile.uuid) * 100 as '% Users Impacted' from MobileRequestError, Mobile where networkError not like 'Cancelled' timeseries Limit MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Popular Requests", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequest FACET requestUrl LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors: Status Code Spikes", + "layout": { + "column": 7, + "row": 7, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType='HTTPError' facet statusCode TIMESERIES LIMIT MAX" + } + ] + } + }, + { + "title": "Historic HTTP error counts", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequestError where errorType = 'HTTPError' FACET requestDomain timeseries max " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Errors: App Versions", + "layout": { + "column": 1, + "row": 12, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequestError where errorType='HTTPError' FACET appVersion LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors: Status Codes", + "layout": { + "column": 4, + "row": 12, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType='HTTPError' facet statusCode LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Errors: Domain Spikes", + "layout": { + "column": 1, + "row": 15, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequestError where errorType='HTTPError' FACET requestDomain timeseries LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Errors: Path Spikes", + "layout": { + "column": 7, + "row": 15, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType='HTTPError' facet requestPath timeseries LIMIT MAX" + } + ] + } + }, + { + "title": "HTTP Errors: Paths", + "layout": { + "column": 1, + "row": 19, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType='HTTPError' facet requestPath LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures & HTTP Errors: Device Types", + "layout": { + "column": 7, + "row": 19, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where networkError not like 'Cancelled' facet deviceType LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active app versions", + "layout": { + "column": 1, + "row": 23, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(sessionId) from MobileSession facet appVersion timeseries" + } + ] + } + }, + { + "title": "Errors by Service", + "layout": { + "column": 1, + "row": 26, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*), latest(requestUrl) as 'Latest URL' from MobileRequestError where errorType like 'HTTPError' facet cases(where requestUrl like '%token%' as 'Tokens', where requestUrl like '%summary%' as 'Summary', where requestUrl like '%dashboards%' as 'Dashboards', where requestUrl like '%collections%' as 'Collections', where requestUrl not like '%token%' and requestUrl not like '%summary%' and requestUrl not like '%dashboards%' and requestUrl not like '%collections%' as 'Other' )" + } + ] + } + }, + { + "title": "Response Time[s]", + "layout": { + "column": 5, + "row": 26, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM MobileRequest, MobileRequestError SELECT percentile(responseTime, 50) as '', percentile(responseTime, 95) as '', percentile(responseTime, 99) as '' FACET appName LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Endpoint Communications", + "layout": { + "column": 8, + "row": 26, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError facet requestDomain LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rsponse Time Distribution by Domain, ASN Owner, Country ", + "layout": { + "column": 1, + "row": 30, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(responseTime, 20, 20) FROM MobileRequestError facet asnOwner" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Longest Interactions (p95)", + "layout": { + "column": 1, + "row": 34, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT percentile(interactionDuration, 95) as percentile95 FROM Mobile FACET lastInteraction, appName ORDER BY percentile95 DESC TIMESERIES LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "P95 Android Response Times", + "layout": { + "column": 1, + "row": 38, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 95) from MobileRequest where osName='Android' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P75 Android Response Times", + "layout": { + "column": 5, + "row": 38, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 75) from MobileRequest where osName='Android' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P50 Android Response Times", + "layout": { + "column": 9, + "row": 38, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 50) from MobileRequest where osName='Android' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P95 iOS Response Times", + "layout": { + "column": 1, + "row": 44, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 95) from MobileRequest where osName='iOS' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P75 iOS Response Times", + "layout": { + "column": 5, + "row": 44, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 75) from MobileRequest where osName='iOS' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "P50 iOS Response Times", + "layout": { + "column": 9, + "row": 44, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select percentile(responseTime / 1000, 50) from MobileRequest where osName='iOS' facet requestPath" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Request Errors", + "layout": { + "column": 1, + "row": 50, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM MobileRequestError WHERE errorType = 'HTTPError' FACET `requestDomain` SINCE 7 days AGO LIMIT Max TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Network Data", + "description": null, + "widgets": [ + { + "title": "Network Failures: Failure-free Users", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT (filter(uniqueCount(MobileRequestError.uuid), WHERE errorType = 'NetworkFailure' and networkError not like 'Cancelled') / uniqueCount(Mobile.uuid)) * 100 as '% Failure-Free Users' FROM MobileRequestError, Mobile compare with 1 day ago" + } + ] + } + }, + { + "title": "Network Error Code ", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' FACET networkErrorCode, networkError Limit MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Network problem spikes" + } + }, + { + "title": "Network Failures: Error Type Spikes", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError facet networkError where networkError not like 'Cancelled' timeseries LIMIT MAX" + } + ] + } + }, + { + "title": "Network Failures: Types", + "layout": { + "column": 1, + "row": 4, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError facet networkError where networkError not like 'Cancelled' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures: Path Spikes", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' facet requestPath timeseries LIMIT MAX" + } + ] + } + }, + { + "title": "Network Failures: App Versions", + "layout": { + "column": 1, + "row": 8, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'cancelled' facet appVersion LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures: Domain Spikes", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' facet requestDomain timeseries LIMIT MAX" + } + ] + } + }, + { + "title": "Network Failures: Manufacturer", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' facet deviceManufacturer LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures & HTTP Errors: Device Types", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where networkError not like 'Cancelled' facet deviceType LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Histogram", + "layout": { + "column": 1, + "row": 17, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT histogram(sessionDuration, 10, 50) FROM MobileRequest FACET requestUrl " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures: Carriers", + "layout": { + "column": 1, + "row": 22, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' facet carrier " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures: Apps", + "layout": { + "column": 7, + "row": 22, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'cancelled' facet appName LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Geo Diagnostics", + "description": null, + "widgets": [ + { + "title": "HTTP Error: Region wise (Filterable)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'HTTPError' facet regionCode " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Error: Country wise (Filterable)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'HTTPError' facet countryCode " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Error: City wise (Filterable)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'HTTPError' facet city " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failure: Region wise (Filterable)", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' facet regionCode " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failure: Country wise (Filterable)", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' facet countryCode " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failure: City wise (Filterable)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError where errorType = 'NetworkFailure' facet city " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Raw Data", + "description": null, + "widgets": [ + { + "title": "HTTP Errors", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT requestMethod, requestUrl, statusCode from MobileRequestError where errorType='HTTPError' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Errors", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT appName,appBuild,countryCode,city,requestUrl,networkErrorCode from MobileRequestError where errorType='NetworkFailure' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device UUIDS with Request Errors", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*),latest(device),latest(appName),latest(carrier),latest(asnOwner),latest(regionCode) FROM MobileRequestError where networkError not LiKE 'Cancelled' Facet deviceUuid limit MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Failures", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT networkError,requestMethod,requestDomain,requestPath from MobileRequestError where errorType = 'NetworkFailure' and networkError not like 'Cancelled' LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Mobile Spans", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT average(duration.ms) / 1000 as 'avg duration', max(duration.ms) / 1000 as 'max duration', count(*), count(error.statusCode) as 'Error count', percentage(count(*), where error.statusCode IS NOT NULL) as 'error (%)' where newRelic.ingestPoint = 'mobile.spans' FACET name limit MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Request URL details", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Total', average(responseTime) as 'Average', percentile(responseTime, 95) as 'AVE 95%', average(bytesReceived) / 1024 as 'Avg KB Received' from MobileRequest facet requestUrl LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Country & City Load Peformance", + "layout": { + "column": 1, + "row": 14, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Mobile,MobileRequest SELECT average(responseTime), average(sessionDuration), average(timeSinceLoad) facet countryCode,regionCode,city,connectionType,trace.id,category LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Type", + "layout": { + "column": 1, + "row": 18, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) from MobileRequestError facet errorType LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Time[s]", + "layout": { + "column": 1, + "row": 22, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM MobileRequest,MobileRequestError SELECT percentile(responseTime, 50) as '', percentile(responseTime, 95) as '', percentile(responseTime, 99) as '' FACET appName LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Time Graph", + "layout": { + "column": 3, + "row": 22, + "width": 10, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM MobileRequest, MobileRequestError SELECT percentile(responseTime, 50), percentile(responseTime, 95), percentile(responseTime, 99) FACET appName TIMESERIES MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Help", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 7 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Hola! नमस्ते! Hello! やあ! ![New Relic logo](https://newrelic.com/static-assets/images/icons/avatar-newrelic.png)\nUse this to further **enhance** your dashboard experience\n\n---\n### Filtering data for specific entities on Geo Diagnostic page 📊 \nThis enables you to view the data specific to your entities. You can enable filtering on below widgets:\n- HTTP Error: Region wise \n- HTTP Error: Country wise \n- HTTP Error: City wise\n- Network Failures: Region wise\n- Network Failures: Country wise\n- Network Failures: City wise\n\nFor applying **Filters** currently you need to provide the dashboard GUID to facet \nlink a widget to the this dashboard. \n\nThis can only be accomplished via a two stage apply -\nafter enabling the dashboard and then updating it with the known GUID. Enable it as follows-> \n\nEnable `Filter the current dashboard` under `Facet Linking` by editing the widget\n\n\n\n\n\n" + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/mobile/Mobile.png b/dashboards/mobile/Mobile.png index 52e77ab9f3..d6d8e80161 100644 Binary files a/dashboards/mobile/Mobile.png and b/dashboards/mobile/Mobile.png differ diff --git a/dashboards/mobile/mobile.json b/dashboards/mobile/mobile.json index b1225d65b2..a07edb5746 100644 --- a/dashboards/mobile/mobile.json +++ b/dashboards/mobile/mobile.json @@ -4,7 +4,7 @@ "pages": [ { "name": "Mobile", - "description": "A dashboard for all your mobile app instrumenting needs.", + "description": null, "widgets": [ { "title": "", @@ -19,11 +19,11 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "# Welcome to the New Relic Mobile dashboard! 📱📊\n## Before you start, make sure to follow this little instruction for maximum visibility. After that, you may delete this text box.\n\nThe views in this dashboard are `entity-guid` dependant, so it's important you add it to all your charts' NRQL queries. But fear no more, this is easy as 🍰! Complete these checklists and you'll be ready to go.\n\n## Finding your Entity guid:\n- [ ] Navigate to the [Mobile](https://one.eu.newrelic.com/mobile) section.\n- [ ] Find your app and click the ⋮ button on the right.\n- [ ] Click on *See metadata & tags* and copy your `entityGuid`.\n\n## Editing your NRQL queries:\n\n- [ ] Go to your charts and click the ⋮ button on the top right corner.\n- [ ] Click on *Edit* and add replace `addYourOwnGuid` with the guid you found. Make sure it remains \"in quotations\".\n\n > NOTE: While some of the charts in this dashboard might work out of the box without this addition, please bear in mind if you don't specify an Entity guid the results displayed will be an aggreagation of *all* your mobile apps in your account." + "text": "# Welcome to the New Relic Mobile dashboard! 📱📊\n## Before you start, make sure to follow this little instruction for maximum visibility. After that, you may delete this text box.\n\nYou may notice after installation that charts are showing no data. You can select a specific app to be the default in the variable dropdown labelled `Select Mobile App`:\n- [ ] Click on the ✏️ icon in the top right-hand corner of the dashboard\n- [ ] Click on the `Select Mobile App` variable dropdown in the top left-hand corner and then click **Edit**\n- [ ] In the settings sidebar select an app from the `Default value` dropdown\n\nThe dashboard will default to data from this app and you can select any other app from the `Select Mobile App` dropdown.\n\n > NOTE: While some of the charts in this dashboard might work out of the box without an app selected, please bear in mind the results displayed will be an aggreagation of *all* mobile apps in your account.\n \n ---\n \n ⚠️ The dropdown list of apps is currently limited to 10000. If you have more than 10000 apps in your account you can adjust the NRQL query to narrow down results by:\n- [ ] Click on the ✏️ icon in the top right-hand corner of the dashboard\n- [ ] Click on the `Select Mobile App` variable dropdown and then click **Edit**\n- [ ] Adjust the NRQL query to narrow down results e.g. `WHERE osName = 'iOS'`" } }, { - "title": "App Version", + "title": "Installations by country", "layout": { "column": 9, "row": 1, @@ -44,16 +44,16 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(appVersion) FROM MobileRequest WHERE (entityGuid = 'addYourOwnGuid') FACET appVersion SINCE 1 month ago EXTRAPOLATE" + "query": "SELECT uniqueCount(uuid) FROM MobileRequest WHERE (appName = {{select_mobile_app}}) FACET `countryCode` SINCE 1 month ago EXTRAPOLATE" } ], "platformOptions": { - "ignoreTimeRange": false + "ignoreTimeRange": true } } }, { - "title": "OS Version", + "title": "App Version", "layout": { "column": 9, "row": 4, @@ -74,7 +74,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(osVersion) FROM MobileRequest WHERE (entityGuid = 'addYourOwnGuid') FACET osVersion SINCE 1 month ago EXTRAPOLATE" + "query": "SELECT uniqueCount(appVersion) FROM MobileRequest WHERE (appName = {{select_mobile_app}}) FACET appVersion SINCE 1 month ago EXTRAPOLATE" } ], "platformOptions": { @@ -107,7 +107,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(uuid) as 'Installed devices' FROM MobileUserAction WHERE (entityGuid = 'addYourOwnGuid') SINCE 1 month ago COMPARE WITH 1 month ago" + "query": "SELECT uniqueCount(uuid) as 'Installed devices' FROM MobileUserAction WHERE (appName = {{select_mobile_app}}) SINCE 1 month ago COMPARE WITH 1 month ago" } ], "platformOptions": { @@ -116,7 +116,7 @@ } }, { - "title": "Installations by country", + "title": "App launches", "layout": { "column": 5, "row": 6, @@ -125,11 +125,11 @@ }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.area" }, "rawConfiguration": { "facet": { - "showOtherSeries": true + "showOtherSeries": false }, "legend": { "enabled": true @@ -137,16 +137,16 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(uuid) FROM MobileRequest WHERE (entityGuid = 'addYourOwnGuid') FACET `countryCode` SINCE 1 month ago EXTRAPOLATE" + "query": "SELECT count(newrelic.timeslice.value) FROM Metric WHERE (appName = {{select_mobile_app}}) AND (metricTimesliceName = 'Session/Start') FACET `instanceName` SINCE 30 minutes ago TIMESERIES" } ], "platformOptions": { - "ignoreTimeRange": true + "ignoreTimeRange": false } } }, { - "title": "Memory Usage (99%)", + "title": "OS Version", "layout": { "column": 9, "row": 7, @@ -155,11 +155,11 @@ }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.pie" }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true }, "legend": { "enabled": true @@ -167,7 +167,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT percentile(memUsageMb, 99) FROM MobileRequest WHERE (entityGuid = 'addYourOwnGuid') TIMESERIES SINCE 43200 seconds ago EXTRAPOLATE" + "query": "SELECT uniqueCount(osVersion) FROM MobileRequest WHERE (appName = {{select_mobile_app}}) FACET osVersion SINCE 1 month ago EXTRAPOLATE" } ], "platformOptions": { @@ -176,28 +176,25 @@ } }, { - "title": "App launches", + "title": "Transaction response time", "layout": { "column": 1, "row": 9, - "width": 4, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.heatmap" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "SELECT count(newrelic.timeslice.value) FROM Metric WHERE (entityGuid = 'addYourOwnGuid') AND (metricTimesliceName = 'Session/Start') FACET `instanceName` SINCE 30 minutes ago TIMESERIES" + "query": "SELECT histogram(responseTime, 10, 10) FROM MobileRequest FACET `requestDomain` LIMIT 10 SINCE 43200 seconds ago EXTRAPOLATE" } ], "platformOptions": { @@ -206,25 +203,28 @@ } }, { - "title": "Transaction response time", + "title": "Memory Usage (99%)", "layout": { - "column": 9, - "row": 10, - "width": 4, + "column": 1, + "row": 12, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.heatmap" + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "SELECT histogram(responseTime, 10, 10) FROM MobileRequest FACET `requestDomain` LIMIT 10 SINCE 43200 seconds ago EXTRAPOLATE" + "query": "SELECT percentile(memUsageMb, 99) FROM MobileRequest WHERE (appName = {{select_mobile_app}}) TIMESERIES SINCE 43200 seconds ago EXTRAPOLATE" } ], "platformOptions": { @@ -234,5 +234,20 @@ } ] } + ], + "variables": [ + { + "name": "select_mobile_app", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(appName, 10000) FROM Mobile SINCE 1 week ago" + }, + "title": "Select Mobile App", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } ] } \ No newline at end of file diff --git a/dashboards/mongodb-prometheus/mongodb.json b/dashboards/mongodb-prometheus/mongodb.json index 710a5920a0..a52205efd4 100644 --- a/dashboards/mongodb-prometheus/mongodb.json +++ b/dashboards/mongodb-prometheus/mongodb.json @@ -19,7 +19,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "![MongoDB logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/MongoDB_Logo.svg/320px-MongoDB_Logo.svg.png)\n\nMongoDB is a highly scalable document-oriented NoSQL database.\n\nNew Relic's MongoDB integration collects data by using a Prometheus exporter about the services running on your MongoDB infrastucture and sends it to our platform.\n\nUse this dashboard to get meaningful insights about clusters, databases and collections and shards,\n\nRead more in the [docs](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/mongodb/mongodb-monitoring-integration-new/) (TBD)\n- - -\nIn this tab, the following variables filters data\n- Cluster" + "text": "![MongoDB logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/MongoDB_Logo.svg/320px-MongoDB_Logo.svg.png)\n\nMongoDB is a highly scalable document-oriented NoSQL database.\n\nNew Relic's MongoDB integration collects data by using a Prometheus exporter about the services running on your MongoDB infrastucture and sends it to our platform.\n\nUse this dashboard to get meaningful insights about instances, databases and collections and shards,\n\nRead more in the [docs](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/mongodb/mongodb-monitoring-integration-new/)\n- - -\nIn this tab, the following variables filters data\n- Instance" } }, { @@ -40,8 +40,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT uniqueCount(mongodb_cluster_name) AS 'Clusters', filter(uniqueCount(concat(mongodb_cluster_name,database)), WHERE metricName='mongodb_dbstats_dataSize') AS 'Databases', filter(uniqueCount(concat(mongodb_cluster_name,database,collection)), WHERE metricName='mongodb_collstats_storageStats_count') AS 'Collections' WHERE mongodb_cluster_name IN ({{select_instance}}) compare with 1 hour ago" + "accountId": 0, + "query": "FROM Metric SELECT uniqueCount(mongodb_cluster_name) AS 'Instances', uniqueCount(database) AS 'Databases', filter(uniqueCount(collection), WHERE metricName='mongodb_collstats_storageStats_count') AS 'Collections' WHERE mongodb_cluster_name IN ({{select_instance}}) compare with 1 hour ago" } ], "platformOptions": { @@ -62,27 +62,13 @@ "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [ - { - "name": "% used", - "type": "humanized" - }, - { - "name": "Available", - "type": "humanized" - }, - { - "name": "Open", - "type": "humanized" - } - ], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric \nSELECT \n filter(average(mongodb_ss_connections) , WHERE conn_type IN ('current')) AS 'Open' ,\n filter(average(mongodb_ss_connections) , WHERE conn_type IN ('available')) AS 'Available',\n 100 * filter(average(mongodb_ss_connections) , WHERE conn_type IN ('current')) /\n filter(average(mongodb_ss_connections) , WHERE conn_type IN ('available')) AS '% used'\n WHERE metricName='mongodb_ss_connections' AND mongodb_cluster_name IN ({{select_instance}}) FACET mongodb_cluster_name AS 'Cluster'" + "accountId": 0, + "query": "FROM Metric SELECT filter(average(mongodb_ss_connections), WHERE conn_type IN ('current')) AS 'Open', filter(average(mongodb_ss_connections), WHERE conn_type IN ('available')) AS 'Available', 100 * filter(average(mongodb_ss_connections) , WHERE conn_type IN ('current')) / filter(average(mongodb_ss_connections), WHERE conn_type IN ('available')) AS '% used' WHERE metricName='mongodb_ss_connections' AND mongodb_cluster_name IN ({{select_instance}}) FACET mongodb_cluster_name AS 'Instance'" } ], "platformOptions": { @@ -200,7 +186,7 @@ } }, { - "title": "Document Query Executor (per minute)", + "title": "Query Operations", "layout": { "column": 1, "row": 10, @@ -209,17 +195,13 @@ }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { "dataFormatters": [ { - "name": "Scanned Objects", - "type": "humanized" - }, - { - "name": "Scanned", - "type": "humanized" + "name": "mongodb_ss_opcounters", + "type": "decimal" } ], "facet": { @@ -228,7 +210,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_queryExecutor_scanned, 1 minute) AS 'Scanned', derivative(mongodb_ss_metrics_queryExecutor_scannedObjects, 1 minute) AS 'Scanned Objects' WHERE (metricName='mongodb_ss_metrics_queryExecutor_scanned' OR metricName='mongodb_ss_metrics_queryExecutor_scannedObjects') AND mongodb_cluster_name IN ({{select_instance}}) facet mongodb_cluster_name" + "query": "FROM Metric SELECT derivative(mongodb_ss_opcounters, 1 minute) WHERE metricName='mongodb_ss_opcounters'AND mongodb_cluster_name IN ({{select_instance}}) FACET mongodb_cluster_name, CASES ( WHERE legacy_op_type = 'command' AS 'Command', WHERE legacy_op_type = 'delete' AS 'Delete', WHERE legacy_op_type = 'getmore' AS 'Getmore', WHERE legacy_op_type = 'insert' AS 'Insert', WHERE legacy_op_type = 'query' AS 'Query', WHERE legacy_op_type = 'update' AS 'Update') compare with 1 hour ago" } ], "platformOptions": { @@ -237,7 +219,7 @@ } }, { - "title": "Document Query Executor (per minute)", + "title": "Query Operations (per minute)", "layout": { "column": 5, "row": 10, @@ -258,7 +240,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_queryExecutor_scanned, 1 minute) + derivative(mongodb_ss_metrics_queryExecutor_scannedObjects, 1 minute) WHERE (metricName='mongodb_ss_metrics_queryExecutor_scanned' OR metricName='mongodb_ss_metrics_queryExecutor_scannedObjects') AND mongodb_cluster_name IN ({{select_instance}}) facet mongodb_cluster_name TIMESERIES AUTO" + "query": "FROM Metric SELECT derivative(mongodb_ss_opcounters, 1 minute) WHERE metricName='mongodb_ss_opcounters'AND mongodb_cluster_name IN ({{select_instance}}) FACET mongodb_cluster_name, CASES ( WHERE legacy_op_type = 'command' AS 'Command', WHERE legacy_op_type = 'delete' AS 'Delete', WHERE legacy_op_type = 'getmore' AS 'Getmore', WHERE legacy_op_type = 'insert' AS 'Insert', WHERE legacy_op_type = 'query' AS 'Query', WHERE legacy_op_type = 'update' AS 'Update') TIMESERIES AUTO " } ], "platformOptions": { @@ -267,52 +249,25 @@ } }, { - "title": "Query Operations (per minute)", + "title": "Document Query Executor", "layout": { "column": 1, "row": 13, - "width": 6, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [ - { - "name": "Update", - "type": "humanized" - }, - { - "name": "Query", - "type": "humanized" - }, - { - "name": "Insert", - "type": "humanized" - }, - { - "name": "Getmore", - "precision": 0, - "type": "humanized" - }, - { - "name": "Delete", - "type": "humanized" - }, - { - "name": "Command", - "type": "humanized" - } - ], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric \nSELECT \nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'command') AS 'Command',\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'delete') AS 'Delete',\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'getmore') AS 'Getmore',\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'insert') AS 'Insert',\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'query') AS 'Query',\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'update') AS 'Update'\nWHERE metricName='mongodb_ss_opcounters' AND mongodb_cluster_name IN ({{select_instance}})\nFACET mongodb_cluster_name\n\n\n" + "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_queryExecutor_scanned, 1 minute) AS 'Scanned', derivative(mongodb_ss_metrics_queryExecutor_scannedObjects, 1 minute) AS 'Scanned Objects' WHERE (metricName='mongodb_ss_metrics_queryExecutor_scanned' OR metricName='mongodb_ss_metrics_queryExecutor_scannedObjects') AND mongodb_cluster_name IN ({{select_instance}}) compare with 1 hour ago FACET mongodb_cluster_name" } ], "platformOptions": { @@ -321,16 +276,16 @@ } }, { - "title": "Query Operations (per minute)", + "title": "Document Query Executor (per minute)", "layout": { - "column": 7, + "column": 5, "row": 13, - "width": 6, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.line" }, "rawConfiguration": { "facet": { @@ -342,42 +297,36 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric \nSELECT \nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'command') +\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'delete') +\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'getmore')+\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'insert') +\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'query') +\nfilter(derivative(mongodb_ss_opcounters, 1 minute), WHERE legacy_op_type = 'update') AS 'Operations (per minute)'\nWHERE metricName='mongodb_ss_opcounters' AND mongodb_cluster_name IN ({{select_instance}})\nFACET mongodb_cluster_name timeseries auto\n\n\n" + "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_queryExecutor_scanned, 1 minute) AS 'Scanned', derivative(mongodb_ss_metrics_queryExecutor_scannedObjects, 1 minute) AS 'Scanned Objects' WHERE (metricName='mongodb_ss_metrics_queryExecutor_scanned' OR metricName='mongodb_ss_metrics_queryExecutor_scannedObjects') AND mongodb_cluster_name IN ({{select_instance}}) facet mongodb_cluster_name TIMESERIES AUTO" } ], "platformOptions": { "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true } } }, { - "title": "Document Operations (per minute)", + "title": "Document Operations", "layout": { "column": 1, "row": 16, - "width": 6, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { "dataFormatters": [ { - "name": "Updated", - "type": "humanized" - }, - { - "name": "Deleted", - "type": "humanized" - }, - { - "name": "Inserted", - "type": "humanized" - }, - { - "name": "Returned", + "name": "mongodb_ss_metrics_document", "type": "humanized" } ], @@ -387,7 +336,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric \nSELECT filter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'returned') AS 'Returned',\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'inserted') AS 'Inserted',\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'deleted') AS 'Deleted',\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'updated') AS 'Updated'\n WHERE metricName='mongodb_ss_metrics_document' AND mongodb_cluster_name IN ({{select_instance}})\nfacet mongodb_cluster_name\n" + "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_document, 1 minute) WHERE metricName='mongodb_ss_metrics_document' AND mongodb_cluster_name IN ({{select_instance}}) FACET mongodb_cluster_name, CASES ( WHERE doc_op_type = 'returned' AS 'Returned', WHERE doc_op_type = 'inserted' AS 'Inserted', WHERE doc_op_type = 'deleted' AS 'Deleted', WHERE doc_op_type = 'updated' AS 'Updated' ) compare with 1 hour ago" } ], "platformOptions": { @@ -398,9 +347,9 @@ { "title": "Document Operations (per minute)", "layout": { - "column": 7, + "column": 5, "row": 16, - "width": 6, + "width": 8, "height": 3 }, "linkedEntityGuids": null, @@ -417,7 +366,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric \nSELECT filter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'returned') +\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'inserted') +\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'deleted') +\nfilter(derivative(mongodb_ss_metrics_document, 1 minute), WHERE doc_op_type = 'updated') \n WHERE metricName='mongodb_ss_metrics_document' AND mongodb_cluster_name IN ({{select_instance}}) timeseries auto\nfacet mongodb_cluster_name\n" + "query": "FROM Metric SELECT derivative(mongodb_ss_metrics_document, 1 minute) WHERE metricName='mongodb_ss_metrics_document' AND mongodb_cluster_name IN ({{select_instance}}) FACET CASES ( WHERE doc_op_type = 'returned' AS 'Returned', WHERE doc_op_type = 'inserted' AS 'Inserted', WHERE doc_op_type = 'deleted' AS 'Deleted', WHERE doc_op_type = 'updated' AS 'Updated' ), mongodb_cluster_name TIMESERIES AUTO" } ], "platformOptions": { @@ -444,7 +393,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "In this tab, the following variables filters data\n- Cluster\n- Database" + "text": "In this tab, the following variables filters data\n- Instance\n- Database" } }, { @@ -469,7 +418,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(mongodb_dbstats_dataSize) AS 'Size (Bytes)' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Cluster',database AS 'Database' timeseries auto" + "query": "FROM Metric SELECT latest(mongodb_dbstats_dataSize) AS 'Size (Bytes)' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Instance',database AS 'Database' timeseries auto" } ], "platformOptions": { @@ -494,18 +443,6 @@ }, "rawConfiguration": { "dataFormatters": [ - { - "name": "Index Size (Bytes)", - "type": "humanized" - }, - { - "name": "Indexes", - "type": "humanized" - }, - { - "name": "Views", - "type": "humanized" - }, { "name": "Average Object Size (Bytes)", "type": "humanized" @@ -524,8 +461,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT latest(mongodb_dbstats_dataSize) AS 'Size (Bytes)', latest(mongodb_dbstats_objects) AS 'Objects', latest(mongodb_dbstats_views) AS 'Views', latest(mongodb_dbstats_indexes) AS 'Indexes', latest(mongodb_dbstats_indexSize) AS 'Index Size (Bytes)' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Cluster',database AS 'Database'" + "accountId": 0, + "query": "FROM Metric SELECT latest(mongodb_dbstats_dataSize) AS 'Size (Bytes)', latest(mongodb_dbstats_objects) AS 'Objects', latest(mongodb_dbstats_views) AS 'Views', latest(mongodb_dbstats_indexes) AS 'Indexes', latest(mongodb_dbstats_indexSize) AS 'Index Size (Bytes)' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Instance',database AS 'Database'" } ], "platformOptions": { @@ -555,7 +492,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(mongodb_dbstats_objects) AS 'Objects' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Cluster',database AS 'Database' timeseries auto" + "query": "FROM Metric SELECT latest(mongodb_dbstats_objects) AS 'Objects' WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) FACET mongodb_cluster_name AS 'Instance',database AS 'Database' timeseries auto" } ], "platformOptions": { @@ -648,7 +585,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "\nIn this tab, the following variables filters data\n- Cluster\n- Database\n- Collection" + "text": "\nIn this tab, the following variables filters data\n- Instance\n- Database\n- Collection" } }, { @@ -676,7 +613,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT \nlatest(mongodb_collstats_storageStats_size) AS 'Size (Bytes)'\nWHERE metricName IN ('mongodb_collstats_storageStats_count','mongodb_collstats_storageStats_size') \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) limit max\nFACET concat(mongodb_cluster_name,'-',database) AS 'Database', collection" + "query": "FROM Metric SELECT latest(mongodb_collstats_storageStats_size) AS 'Size (Bytes)' WHERE metricName IN ('mongodb_collstats_storageStats_count','mongodb_collstats_storageStats_size') AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) limit max FACET concat(mongodb_cluster_name,'-',database) AS 'Database', collection" } ], "platformOptions": { @@ -706,7 +643,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT \naverage(mongodb_collstats_storageStats_size) AS 'Size (Bytes)'\nWHERE metricName IN ('mongodb_collstats_storageStats_size') AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) timeseries auto limit max" + "query": "FROM Metric SELECT average(mongodb_collstats_storageStats_size) AS 'Size (Bytes)' WHERE metricName IN ('mongodb_collstats_storageStats_size') AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) timeseries auto limit max" } ], "platformOptions": { @@ -742,7 +679,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(size) FROM (FROM Metric SELECT \nlatest(mongodb_collstats_storageStats_size) AS 'size'\nWHERE metricName IN ('mongodb_collstats_storageStats_count','mongodb_collstats_storageStats_size') AND mongodb_cluster_name IN ({{select_instance}}) \nAND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET collection\n) COMPARE WITH 1 hour ago" + "query": "SELECT sum(size) FROM (FROM Metric SELECT latest(mongodb_collstats_storageStats_size) AS 'size' WHERE metricName IN ('mongodb_collstats_storageStats_count','mongodb_collstats_storageStats_size') AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET collection) COMPARE WITH 1 hour ago" } ], "platformOptions": { @@ -772,7 +709,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_reads_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_reads_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "FROM Metric SELECT derivative(mongodb_collstats_latencyStats_reads_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_reads_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -808,7 +745,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_reads_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_reads_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_reads_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_reads_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -844,7 +781,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_writes_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_writes_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_writes_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_writes_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -880,7 +817,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_writes_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_writes_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_writes_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_writes_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -916,7 +853,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_transactions_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_transactions_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_transactions_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_transactions_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -952,7 +889,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_transactions_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_transactions_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_transactions_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_transactions_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -988,7 +925,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "From Metric SELECT derivative(mongodb_indexstats_accesses_ops, 1 minute) WHERE metricName='mongodb_indexstats_accesses_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_indexstats_accesses_ops, 1 minute) WHERE metricName='mongodb_indexstats_accesses_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -1024,7 +961,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_commands_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_commands_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_commands_ops, 1 minute) WHERE metricName='mongodb_collstats_latencyStats_commands_ops' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -1054,7 +991,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "\nFrom Metric SELECT derivative(mongodb_collstats_latencyStats_commands_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_commands_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" + "query": "From Metric SELECT derivative(mongodb_collstats_latencyStats_commands_latency, 1 minute)/1000 WHERE metricName='mongodb_collstats_latencyStats_commands_latency' AND mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES AUTO limit max" } ], "platformOptions": { @@ -1089,8 +1026,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "SELECT average(mongodb_top_insert_count) AS 'Commands', average(mongodb_top_getmore_count) AS 'Getmore', average(mongodb_top_insert_count) AS 'Insert', average(mongodb_top_queries_count) AS 'Queries', average(mongodb_top_readLock_count) AS 'ReadLock', average(mongodb_top_writeLock_count) AS 'WriteLock', average(mongodb_top_remove_count) AS 'Remove', average(mongodb_top_update_count) AS 'Update' FROM Metric WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES auto" + "accountId": 0, + "query": "SELECT average(mongodb_top_insert_count) AS 'Commands', average(mongodb_top_getmore_count) AS 'Getmore', average(mongodb_top_insert_count) AS 'Insert', average(mongodb_top_queries_count) AS 'Queries', average(mongodb_top_readLock_count) AS 'ReadLock', average(mongodb_top_writeLock_count) AS 'WriteLock', average(mongodb_top_remove_count) AS 'Remove', average(mongodb_top_update_count) AS 'Update' FROM Metric WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) TIMESERIES auto" } ], "platformOptions": { @@ -1123,7 +1060,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "SELECT derivative(mongodb_top_insert_time, 1 minute)/1000 AS 'Commands', derivative(mongodb_top_getmore_time, 1 minute)/1000 AS 'Getmore', derivative(mongodb_top_insert_time, 1 minute)/1000 AS 'Insert', derivative(mongodb_top_queries_time, 1 minute)/1000 AS 'Queries', derivative(mongodb_top_readLock_time, 1 minute)/1000 AS 'ReadLock', derivative(mongodb_top_writeLock_time, 1 minute)/1000 AS 'WriteLock', derivative(mongodb_top_remove_time, 1 minute)/1000 AS 'Remove', derivative(mongodb_top_update_time, 1 minute)/1000 AS 'Update' FROM Metric WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}})\nAND collection IN ({{select_collection}}) FACET concat(mongodb_cluster_name,',', database, ',',collection) TIMESERIES limit max" + "query": "SELECT derivative(mongodb_top_insert_time, 1 minute)/1000 AS 'Commands', derivative(mongodb_top_getmore_time, 1 minute)/1000 AS 'Getmore', derivative(mongodb_top_insert_time, 1 minute)/1000 AS 'Insert', derivative(mongodb_top_queries_time, 1 minute)/1000 AS 'Queries', derivative(mongodb_top_readLock_time, 1 minute)/1000 AS 'ReadLock', derivative(mongodb_top_writeLock_time, 1 minute)/1000 AS 'WriteLock', derivative(mongodb_top_remove_time, 1 minute)/1000 AS 'Remove', derivative(mongodb_top_update_time, 1 minute)/1000 AS 'Update' FROM Metric FACET mongodb_cluster_name WHERE mongodb_cluster_name IN ({{select_instance}}) AND database IN ({{select_database}}) AND collection IN ({{select_collection}}) TIMESERIES limit max " } ], "platformOptions": { @@ -1156,7 +1093,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "### Replica Sets\nIn this section, the following variables filters data: Clusters | Replica Sets" + "text": "### Replica Sets\nIn this section, the following variables filters data: Instance | Replica Sets" } }, { @@ -1177,8 +1114,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT uniqueCount(rs_nm) AS 'Total' \nWHERE metricName='mongodb_members_health' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT uniqueCount(rs_nm) AS 'Total' WHERE metricName='mongodb_members_health' AND mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1204,8 +1141,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT \nfilter(uniqueCount(rs_nm), WHERE mongodb_rs_ok['latest']=1) AS 'Up ' \nWHERE metricName='mongodb_rs_ok' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT filter(uniqueCount(rs_nm), WHERE mongodb_rs_ok['latest']=1) AS 'Up ' WHERE metricName='mongodb_rs_ok' AND mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1231,8 +1168,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT \nfilter(uniqueCount(rs_nm), WHERE mongodb_rs_ok['latest']=0) AS 'Down' \nWHERE metricName='mongodb_rs_ok' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT filter(uniqueCount(rs_nm), WHERE mongodb_rs_ok['latest']=0) AS 'Down' WHERE metricName='mongodb_rs_ok' AND mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1267,8 +1204,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT uniqueCount(member_idx) WHERE mongodb_cluster_name IN ({{select_instance}}) AND mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \n FACET mongodb_cluster_name AS 'Cluster', rs_nm AS 'ReplicaSet' TIMESERIES auto" + "accountId": 0, + "query": "FROM Metric SELECT uniqueCount(member_idx) WHERE mongodb_cluster_name IN ({{select_instance}}) AND mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) FACET mongodb_cluster_name AS 'Instance', rs_nm AS 'ReplicaSet' TIMESERIES auto" } ], "platformOptions": { @@ -1297,8 +1234,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric WITH mongodb_rs_ok['latest'] AS mh SELECT latest(CASES(mh=1 AS 'Up', mh=0 as 'Down')) AS 'Status' WHERE mongodb_cluster_name IN ({{select_instance}}) AND mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \n FACET mongodb_cluster_name AS 'Cluster', rs_nm AS 'ReplicaSet' " + "accountId": 0, + "query": "FROM Metric WITH mongodb_rs_ok['latest'] AS mh SELECT latest(CASES(mh=1 AS 'Up', mh=0 as 'Down')) AS 'Status' WHERE mongodb_cluster_name IN ({{select_instance}}) AND mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) FACET mongodb_cluster_name AS 'Instance', rs_nm AS 'ReplicaSet'" } ], "platformOptions": { @@ -1307,7 +1244,7 @@ } }, { - "title": "Query operations", + "title": "Query operations (per minute)", "layout": { "column": 1, "row": 5, @@ -1328,7 +1265,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "FROM Metric SELECT derivative(mongodb_ss_opcountersRepl, 1 minute) WHERE mongodb_cluster_name IN ({{select_instance}}) \nAND rs_nm IN ({{select_replicaset}}) \n FACET CASES ( WHERE legacy_op_type = 'command' AS 'Command', WHERE legacy_op_type = 'delete' AS 'Delete', WHERE legacy_op_type = 'getmore' AS 'Getmore', WHERE legacy_op_type = 'insert' AS 'Insert', WHERE legacy_op_type = 'query' AS 'Query', WHERE legacy_op_type = 'update' AS 'Update') TIMESERIES AUTO" + "query": "FROM Metric SELECT derivative(mongodb_ss_opcountersRepl, 1 minute) WHERE mongodb_cluster_name IN ({{select_instance}}) AND rs_nm IN ({{select_replicaset}}) FACET mongodb_cluster_name, CASES ( WHERE legacy_op_type = 'command' AS 'Command', WHERE legacy_op_type = 'delete' AS 'Delete', WHERE legacy_op_type = 'getmore' AS 'Getmore', WHERE legacy_op_type = 'insert' AS 'Insert', WHERE legacy_op_type = 'query' AS 'Query', WHERE legacy_op_type = 'update' AS 'Update') TIMESERIES AUTO" } ], "platformOptions": { @@ -1349,7 +1286,7 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "### Members\nIn this section, the following variables filters data: Clusters | Replica Sets | Members | Members State" + "text": "### Members\nIn this section, the following variables filters data: Instance | Replica Sets | Members | Members State" } }, { @@ -1370,8 +1307,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT uniqueCount(member_idx) AS 'Total' \nWHERE metricName='mongodb_rs_members_health' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND member_idx IN ({{select_member}}) \nAND member_state IN ({{select_member_state}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT uniqueCount(member_idx) AS 'Total' WHERE metricName='mongodb_rs_members_health' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND member_state IN ({{select_member_state}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1397,8 +1334,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT \nfilter(uniqueCount(member_idx), WHERE mongodb_rs_members_health['latest']=1) AS 'Up' \nWHERE metricName='mongodb_rs_members_health' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND member_idx IN ({{select_member}}) \nAND member_state IN ({{select_member_state}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT filter(uniqueCount(member_idx), WHERE mongodb_rs_members_health['latest']=1) AS 'Up' WHERE metricName='mongodb_rs_members_health' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND member_state IN ({{select_member_state}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1424,8 +1361,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric SELECT \nfilter(uniqueCount(member_idx), WHERE mongodb_rs_members_health['latest']=0) AS 'Down' \nWHERE metricName='mongodb_rs_members_health' \nAND mongodb_cluster_name IN ({{select_instance}}) \nAND member_idx IN ({{select_member}}) \nAND member_state IN ({{select_member_state}}) \nAND rs_nm IN ({{select_replicaset}}) \ncompare with 1 hour ago\n" + "accountId": 0, + "query": "FROM Metric SELECT filter(uniqueCount(member_idx), WHERE mongodb_rs_members_health['latest']=0) AS 'Down' WHERE metricName='mongodb_rs_members_health' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND member_state IN ({{select_member_state}}) AND rs_nm IN ({{select_replicaset}}) compare with 1 hour ago" } ], "platformOptions": { @@ -1469,8 +1406,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "FROM Metric WITH mongodb_rs_members_health['latest'] AS mh SELECT latest(CASES(mh=1 AS 'Up', mh=0 as 'Down')) AS 'Status', latest(mongodb_members_lastHeartbeatRecv) AS 'Latest Heartbeat', latest(mongodb_members_optimeDate) AS 'Latest Oplog Entry' WHERE mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) \nAND member_state IN ({{select_member_state}}) \nAND rs_nm IN ({{select_replicaset}}) \n FACET mongodb_cluster_name AS 'Cluster', rs_nm AS 'ReplicaSet' , member_idx AS 'Member', member_state AS 'Member State' " + "accountId": 0, + "query": "FROM Metric WITH mongodb_rs_members_health['latest'] AS mh SELECT latest(CASES(mh=1 AS 'Up', mh=0 as 'Down')) AS 'Status', latest(mongodb_members_lastHeartbeatRecv) AS 'Latest Heartbeat', latest(mongodb_members_optimeDate) AS 'Latest Oplog Entry' WHERE mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND member_state IN ({{select_member_state}}) AND rs_nm IN ({{select_replicaset}}) FACET mongodb_cluster_name AS 'Instance', rs_nm AS 'ReplicaSet' , member_idx AS 'Member', member_state AS 'Member State'" } ], "platformOptions": { @@ -1499,8 +1436,8 @@ }, "nrqlQueries": [ { - "accountIds": [], - "query": "SELECT latest(mongodb_rs_members_pingMs) FROM Metric WHERE metricName='mongodb_rs_members_pingMs' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) \nAND member_state IN ({{select_member_state}}) \nAND rs_nm IN ({{select_replicaset}}) FACET member_idx TIMESERIES AUTO" + "accountId": 0, + "query": "SELECT latest(mongodb_rs_members_pingMs) FROM Metric WHERE metricName='mongodb_rs_members_pingMs' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND member_state IN ({{select_member_state}}) AND rs_nm IN ({{select_replicaset}}) FACET member_idx TIMESERIES AUTO" } ], "platformOptions": { @@ -1535,7 +1472,7 @@ }, "nrqlQueries": [ { - "accountIds": [], + "accountId": 0, "query": "FROM Metric SELECT (latest(mongodb_members_lastHeartbeat) - latest(mongodb_members_optimeDate)) / 1000 WHERE member_state='SECONDARY' AND mongodb_cluster_name IN ({{select_instance}}) AND member_idx IN ({{select_member}}) AND rs_nm IN ({{select_replicaset}}) FACET rs_nm, member_idx TIMESERIES AUTO" } ], @@ -1563,9 +1500,9 @@ ], "nrqlQuery": { "accountIds": [], - "query": "SELECT cluster FROM (FROM Metric SELECT count(*) WHERE metricName='mongodb_dbstats_dataSize' limit max FACET mongodb_cluster_name AS 'cluster' ) ORDER BY cluster" + "query": "SELECT instance FROM (FROM Metric SELECT count(*) WHERE metricName='mongodb_dbstats_dataSize' limit max FACET mongodb_cluster_name AS 'instance' ) limit max ORDER BY instance since 1 day ago" }, - "title": "Clusters", + "title": "Instances", "type": "NRQL", "isMultiSelection": true, "replacementStrategy": "STRING" @@ -1582,7 +1519,7 @@ ], "nrqlQuery": { "accountIds": [], - "query": "SELECT database FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_dbstats_dataSize' FACET database AS 'database' ) ORDER BY database" + "query": "SELECT database FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_dbstats_dataSize' FACET database AS 'database' ) limit max ORDER BY database since 1 day ago" }, "title": "Databases", "type": "NRQL", @@ -1601,7 +1538,7 @@ ], "nrqlQuery": { "accountIds": [], - "query": "SELECT collection FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_collstats_storageStats_count' FACET collection AS 'collection' ) ORDER BY collection" + "query": "SELECT collection FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_collstats_storageStats_count' FACET collection AS 'collection' ) limit max ORDER BY collection since 1 day ago" }, "title": "Collections", "type": "NRQL", @@ -1620,7 +1557,7 @@ ], "nrqlQuery": { "accountIds": [], - "query": "SELECT replica FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_rs_members_health' FACET rs_nm AS 'replica' ) ORDER BY replica\n" + "query": "SELECT replica FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_rs_members_health' FACET rs_nm AS 'replica' ) limit max ORDER BY replica since 1 day ago" }, "title": "Replica Sets", "type": "NRQL", @@ -1639,7 +1576,7 @@ ], "nrqlQuery": { "accountIds": [], - "query": "SELECT member FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_rs_members_health' FACET member_idx AS 'member' ) ORDER BY member\n" + "query": "SELECT member FROM (FROM Metric SELECT count(*) limit max WHERE metricName='mongodb_rs_members_health' FACET member_idx AS 'member' ) limit max ORDER BY member since 1 day ago" }, "title": "Members", "type": "NRQL", @@ -1754,4 +1691,4 @@ "replacementStrategy": "STRING" } ] -} \ No newline at end of file +} diff --git a/dashboards/mongodb-prometheus/mongodb01.png b/dashboards/mongodb-prometheus/mongodb01.png index c9a6c2ea12..d1d5bd12da 100644 Binary files a/dashboards/mongodb-prometheus/mongodb01.png and b/dashboards/mongodb-prometheus/mongodb01.png differ diff --git a/dashboards/mongodb-prometheus/mongodb02.png b/dashboards/mongodb-prometheus/mongodb02.png index 2ba4b5df83..904f12cf68 100644 Binary files a/dashboards/mongodb-prometheus/mongodb02.png and b/dashboards/mongodb-prometheus/mongodb02.png differ diff --git a/dashboards/mongodb-prometheus/mongodb03.png b/dashboards/mongodb-prometheus/mongodb03.png index a64c8983a2..9518e8b0ee 100644 Binary files a/dashboards/mongodb-prometheus/mongodb03.png and b/dashboards/mongodb-prometheus/mongodb03.png differ diff --git a/dashboards/mongodb-prometheus/mongodb04.png b/dashboards/mongodb-prometheus/mongodb04.png index ffc344d0be..ab086b8ab0 100644 Binary files a/dashboards/mongodb-prometheus/mongodb04.png and b/dashboards/mongodb-prometheus/mongodb04.png differ diff --git a/dashboards/mux-video-analytics/mux-video-analytics.json b/dashboards/mux-video-analytics/mux-video-analytics.json new file mode 100644 index 0000000000..b2fd90acec --- /dev/null +++ b/dashboards/mux-video-analytics/mux-video-analytics.json @@ -0,0 +1,635 @@ +{ + "name": "Mux Video Analytics", + "description": null, + "pages": [ + { + "name": "Overall", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# ![Mux logo](https://d10wwqvw6fr90w.cloudfront.net/moodboards/000/651/889/original_d81c3be9eb282ae96000207f6fc2653c244814c2.png)\n" + } + }, + { + "title": "Total View Count", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(view_id) as 'Total Views' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Overall Experience Score", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Overall Experience (Avg)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(viewer_experience_score) * 100 as 'Overall Experience (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Total Playing Time", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(numeric(view_playing_time)) / 60000 as 'Total Playing Time (mins)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Unique Viewers", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(viewer_user_id) as 'Total Viewers' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Success Score", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Playback Success (Avg)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(playback_success_score) * 100 as 'Playback Success (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Startup Time Score", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(startup_time_score) * 100 as 'Startup Time (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Smoothness Score", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(smoothness_score) * 100 as 'Smoothness (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Video Quality Score", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(video_quality_score) * 100 as 'Video Quality (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Failure %", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE player_error_code IS NOT NULL AND player_error_code != 'null') as 'Failure %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}})\nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffer %", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT SUM(rebuffer_duration)*100/SUM(watch_time) AS 'Rebuffer %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}})\nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views over time", + "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": "SELECT uniqueCount(view_id) as Views\nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nTIMESERIES 5 minutes COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Failure % over time", + "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": "SELECT percentage(count(*), WHERE player_error_code IS NOT NULL AND player_error_code != 'null')\nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) AND player_error_code NOT IN ('null','') AND player_error_code IS NOT NULL FACET concat(player_error_code,' : ', player_error_message) \nTIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rebuffering % over time", + "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": "SELECT sum(rebuffer_percentage) as 'Rebuffering %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nTIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Views by Country", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET country_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views by CDN", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET cdn" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views by Player", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET player_name LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Real Time Error Logs", + "layout": { + "column": 1, + "row": 11, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log WHERE mux_api_version is NOT NULL AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) AND player_error_code IS NOT NULL AND player_error_code != 'null' LIMIT 40" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "mux_video", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(video_title) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 1 week ago" + }, + "title": "Video Title", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_player", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(player_name) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "Player Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_browser", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(browser) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "Browser", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_cdn", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(cdn) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "CDN", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/mux-video-analytics/mux-video-analytics01.png b/dashboards/mux-video-analytics/mux-video-analytics01.png new file mode 100644 index 0000000000..9a6de9596e Binary files /dev/null and b/dashboards/mux-video-analytics/mux-video-analytics01.png differ diff --git a/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.json b/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.json deleted file mode 100644 index 1b9d97bfb7..0000000000 --- a/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.json +++ /dev/null @@ -1,1834 +0,0 @@ -{ - "name": "newrelic.ingest", - "description": null, - "pages": [ - { - "name": "Ingest Overview", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 1, - "row": 1, - "height": 3, - "width": 5 - }, - "title": "Ingest by Type - this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET ingestType since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.stacked-bar" - }, - "layout": { - "column": 6, - "row": 1, - "height": 3, - "width": 7 - }, - "title": "Ingest by Type - since 1 month ago", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET ingestType since 1 month ago timeseries" - } - ], - "yAxisLeft": { - "zero": true - } - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 1, - "row": 4, - "height": 3, - "width": 5 - }, - "title": "Ingest by appName - this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.stacked-bar" - }, - "layout": { - "column": 6, - "row": 4, - "height": 3, - "width": 7 - }, - "title": "Ingest by appName - since 1 month ago", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET appName since 1 month ago timeseries" - } - ], - "yAxisLeft": { - "zero": true - } - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 1, - "row": 7, - "height": 3, - "width": 5 - }, - "title": "Ingest by hostname - this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET hostname since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.stacked-bar" - }, - "layout": { - "column": 6, - "row": 7, - "height": 3, - "width": 7 - }, - "title": "Ingest by hostname - since 1 month ago", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' FACET hostname since 1 month ago timeseries" - } - ], - "yAxisLeft": { - "zero": true - } - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "APM Events", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# APM Events\n---\nThe `ingestType` for APM Events includes:\n## `Transaction`\n## `TransactionError`\n" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='APM Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Metrics", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Metrics\n---\nThe `ingestType` for Metrics includes:\n## `Metric`\n" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Metrics' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Browser Events", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Browser Events\n---\nThe `ingestType` for Browser Events includes:\n## `PageAction`\n## `JavaScriptError`\n## `PageView`\n## `AjaxRequest`\n## `PageViewTiming`\n## `BrowserInteraction`\n## `BrowserTiming`\n## `Ajax`\n" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Browser Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Tracing", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Tracing\n---\nThe `ingestType` for Tracing includes:\n## `Span`\n## `ErrorTrace`\n## `SqlTrace`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Tracing' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Mobile Events", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Mobile Events\n---\nThe `ingestType` for Mobile Events includes:\n## `Mobile`\n## `MobileActivityTrace`\n## `MobileBreadcrumb`\n## `MobileCrash`\n## `MobileHandledException`\n## `MobileRequest`\n## `MobileRequestError`\n## `MobileSession`\n## `MobileUserAction`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by appName this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Mobile Events' FACET appName since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Infrastructure Processes", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Infrastructure Processes\n---\nThe `ingestType` for Infrastructure Processes includes:\n## `ProcessSample`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Processes' FACET hostname since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Infrastructure Hosts", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Infrastructure Hosts\n---\nThe `ingestType` for Infrastructure Hosts includes:\n## `SystemSample`\n## `NetworkSample`\n## `StorageSample`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by hostname this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by hostname this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Infrastructure Hosts' FACET hostname since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Pixie", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Pixie\n---\nThe `ingestType` for Pixie includes:\n## `Span`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by cluster today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by cluster today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by cluser this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by cluster this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by cluster this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by cluster this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Pixie' FACET k8s.cluster.name since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Network Monitoring", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Network Monitoring\n---\nThe `ingestType` for Network Monitoring includes:\n## `Metric`\n## `KFlow`\n## `Log`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by instrumentation today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by instrumentation today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by instrumentation this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by instrumentation this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by instrumentation this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by instrumentation this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Network Monitoring' FACET instrumentation.name since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - }, - { - "name": "Logging", - "description": null, - "widgets": [ - { - "visualization": { - "id": "viz.markdown" - }, - "layout": { - "column": 1, - "row": 1, - "height": 9, - "width": 2 - }, - "title": "", - "rawConfiguration": { - "text": "# Logging\n---\nThe `ingestType` for Logging includes:\n## `Log`\n## `LogExtendedRecord`" - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 1, - "height": 3, - "width": 6 - }, - "title": "Ingest by app today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 - }, - "title": "Ingest by app today", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since today" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Ingest by app this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 4, - "height": 3, - "width": 4 - }, - "title": "Ingest by app this week", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since this week" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.bar" - }, - "layout": { - "column": 3, - "row": 7, - "height": 3, - "width": 6 - }, - "title": "Ingest by app this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since this month" - } - ] - }, - "linkedEntityGuids": null - }, - { - "visualization": { - "id": "viz.pie" - }, - "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 - }, - "title": "Ingest by app this month", - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT sum(newrelic.ingest) as 'Ingest GB' WHERE ingestType='Logging' FACET labels.app since this month" - } - ] - }, - "linkedEntityGuids": null - } - ] - } - ] - } diff --git a/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.png b/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.png deleted file mode 100644 index e964c27508..0000000000 Binary files a/dashboards/newrelic-ingest-metric/newrelic-ingest-metric.png and /dev/null differ diff --git a/dashboards/nodejs/node01.png b/dashboards/nodejs/node01.png deleted file mode 100644 index 7a5cb79762..0000000000 Binary files a/dashboards/nodejs/node01.png and /dev/null differ diff --git a/dashboards/nodejs/nodejs.json b/dashboards/nodejs/nodejs.json index 48fc38f7bf..fdf6c47881 100644 --- a/dashboards/nodejs/nodejs.json +++ b/dashboards/nodejs/nodejs.json @@ -1,517 +1,1044 @@ { "name": "Node.js", - "description": "Node.js", + "description": null, "pages": [ { - "name": "Node.js App Overview", - "description": "Node.js App Overview", + "name": "Overview", + "description": null, "widgets": [ { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, "visualization": { "id": "viz.markdown" }, + "rawConfiguration": { + "text": "![Node.js](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/bb8038eb251fb37c0e15f1f2ea930569f0eb1cb5/quickstarts/node-js/node-js/logo.svg)" + } + }, + { + "title": "Average CPU Utilization (%)", "layout": { - "column": 1, + "column": 3, "row": 1, - "height": 1, - "width": 12 + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - "title": "", "rawConfiguration": { - "text": "## More details available on Application Monitoring (APM) page.\n\nDive deeper on transaction details, distributed tracing, related entities, anomalies, errors and more. [Open the Explorer.](https://onenr.io/0rVRVGaNWja)" + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.cpu.usertime.utilization) as 'CPU utilization' FROM Metric WHERE appName IN ({{appName_nodejs}}) TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Heap Memory (MB)", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 }, - "linkedEntityGuids": null + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric WHERE metricTimesliceName like 'Memory/Heap%' AND appName IN ({{appName_nodejs}}) FACET metricTimesliceName TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } }, { + "title": "Garbage Collection", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.markdown" + "id": "viz.line" }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value)*1000 FROM Metric WHERE metricTimesliceName LIKE 'GC%' AND appName IN ({{appName_nodejs}}) FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", "layout": { "column": 1, - "row": 2, - "height": 3, - "width": 5 + "row": 3, + "width": 2, + "height": 2 }, - "title": "", - "rawConfiguration": { - "text": "\n![Transactions](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/node-js/node-js/images/Transactions.png)\n" + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" }, - "linkedEntityGuids": null + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=10a9beaa-cc09-d2dd-44f6-2be2b368c103).\n\nInstrument Node.js with New Relic using the [documentation](https://docs.newrelic.com/docs/apm/agents/nodejs-agent/installation-configuration/install-nodejs-agent/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Node.js&entry.358368110=https://onenr.io/0LREgmMWoQa) here and let us know how we can improve it for you." + } }, { + "title": "Event Loop Latency", + "layout": { + "column": 3, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric WHERE metricTimesliceName LIKE 'Nodejs/EventLoop%' AND appName IN ({{appName_nodejs}}) FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "HTTP Status Code", "layout": { - "column": 6, - "row": 2, - "height": 3, - "width": 7 + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" }, - "title": "Transactions Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Transaction SELECT count(*) as 'Total transactions', average(duration) as 'Avg duration (s)', percentile(duration, 90) as 'Slowest 10% (s)', percentage(count(*), WHERE error is false) AS 'Success rate' SINCE 1 WEEK AGO" + "accountIds": [], + "query": "SELECT latest(http.statusCode) FROM Transaction WHERE appName IN ({{appName_nodejs}}) FACET http.statusCode" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + } + } }, { + "title": "HTTP Dispatcher", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.markdown" + "id": "viz.line" }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 AS HttpDispatcher FROM Metric WHERE metricTimesliceName like 'HttpDispatcher' AND appName IN ({{appName_nodejs}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Errors", "layout": { "column": 1, "row": 5, - "height": 3, - "width": 5 + "width": 2, + "height": 2 }, - "title": "", - "rawConfiguration": { - "text": "![Errors](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/node-js/node-js/images/Errors.png)\n" - }, - "linkedEntityGuids": null - }, - { + "linkedEntityGuids": null, "visualization": { "id": "viz.billboard" }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM TransactionError SELECT uniqueCount(error.message) as 'Errors' WHERE appName IN ({{appName_nodejs}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Web Response Time", "layout": { - "column": 6, - "row": 5, - "height": 3, - "width": 7 + "column": 1, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - "title": "Errors Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Transaction SELECT count(*) as 'Total transactions',percentage(count(*), WHERE error IS true) as 'Failed transactions (%)', count(*) * percentage(count(*), WHERE error IS true) / 100 as 'Failed transactions' SINCE 1 week ago" + "accountIds": [], + "query": "SELECT average(apm.service.transaction.duration * 1000) AS 'Response time' FROM Metric WHERE transactionType = 'Web' AND appName IN ({{appName_nodejs}}) TIMESERIES " } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + }, + "yAxisLeft": { + "zero": true + } + } }, { + "title": "Segment Names", + "layout": { + "column": 4, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.markdown" + "id": "viz.pie" }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric select count(apm.service.overview.web) facet segmentName WHERE appName IN ({{appName_nodejs}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Web Transaction Time ", "layout": { - "column": 1, - "row": 8, - "height": 3, - "width": 5 + "column": 8, + "row": 7, + "width": 3, + "height": 3 }, - "title": "", - "rawConfiguration": { - "text": "![VM Metrics](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/node-js/node-js/images/VM-metrics.png)\n" + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, - "linkedEntityGuids": null + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 AS 'Web transaction time' FROM Metric WHERE metricTimesliceName like 'WebTransactionTotalTime' AND appName IN ({{appName_nodejs}}) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "MS" + } + } }, { + "title": "Instance Connection", + "layout": { + "column": 11, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { "id": "viz.billboard" }, - "layout": { - "column": 6, - "row": 8, - "height": 3, - "width": 7 - }, - "title": "VM Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Metric SELECT average(apm.service.cpu.usertime.utilization) * 100 as 'Average CPU utilization (%)', average(apm.service.memory.physical) as 'Average memory used (MB)' WHERE appName like '%' SINCE 1 week AGO" + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 AS `Instance/connects` FROM Metric WHERE metricTimesliceName like 'Instance/connects' AND appName = {{appName_nodejs}}" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + } + } } ] }, { - "name": "Errors", - "description": "Errors", + "name": "Transaction", + "description": null, "widgets": [ { + "title": "Transactions Overview", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { "id": "viz.billboard" }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', percentage(count(*), WHERE error is false) AS 'Success rate', percentage(count(*), WHERE error is true) AS 'Failed rate' WHERE appName IN ({{appName_nodejs}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most Popular Transactions", + "layout": { + "column": 5, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction WHERE (transactionType = 'Web') AND appName IN ({{appName_nodejs}}) FACET name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Transaction Duration Today Compared With 1 Day Ago", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT AVERAGE(duration) FROM Transaction WHERE appName IN ({{appName_nodejs}}) SINCE TODAY COMPARE WITH 1 day AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Types", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) FACET transactionType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apdex Score", "layout": { - "column": 1, - "row": 1, - "height": 3, - "width": 8 + "column": 4, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - "title": "Errors Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Transaction SELECT count(*) as 'Total transactions',percentage(count(*), WHERE error IS true) as 'Failed transactions (%)', count(*) * percentage(count(*), WHERE error IS true) / 100 as 'Failed transactions' SINCE 1 week ago" + "accountIds": [], + "query": "SELECT apdex(duration, t: 0.4) FROM Transaction WHERE appName IN ({{appName_nodejs}}) TIMESERIES" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } }, { - "visualization": { - "id": "dc5b694f-9125-4c64-8e4e-c52e604c8088.range-chart" - }, + "title": "Top 5 Slowest Transactions Per Day", "layout": { - "column": 9, - "row": 1, - "height": 3, - "width": 4 + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" }, - "title": "Transaction Errors Day By Day", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM TransactionError SELECT count(*), percentage(count(*), WHERE error IS true) FACET dateOf(timestamp) SINCE 1 week ago" + "accountIds": [], + "query": "SELECT max(duration) FROM Transaction WHERE (transactionType = 'Web') AND appName IN ({{appName_nodejs}}) SINCE today LIMIT 5 FACET name" } ], - "other": { - "visible": false + "platformOptions": { + "ignoreTimeRange": false } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "viz.line" - }, + "title": "Throughput", "layout": { "column": 1, - "row": 4, - "height": 3, - "width": 6 + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - "title": "Transactions Errors Today Compared With 1 Week Ago", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, "legend": { "enabled": true }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT count(*) from Transaction where response.status = '404' and transactionType = 'Web' TIMESERIES 10 minutes since today COMPARE WITH 1 week ago" + "accountIds": [], + "query": "SELECT rate(count(apm.service.transaction.duration), 1 minute) as 'Web throughput' FROM Metric WHERE transactionType = 'Web' AND appName IN ({{appName_nodejs}}) TIMESERIES" } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "viz.billboard" - }, + "title": "Transaction Day by Day", "layout": { - "column": 7, - "row": 4, - "height": 3, - "width": 6 + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" }, - "title": "Latest Error", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM TransactionError SELECT latest(timestamp) as 'Latest Error' SINCE last week " + "accountIds": [], + "query": "FROM Transaction SELECT count(*), percentage(count(*), WHERE error IS false) FACET dateOf(timestamp) WHERE appName IN ({{appName_nodejs}}) TIMESERIES AUTO" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + } + } } ] }, { - "name": "VM Metrics", - "description": "VM Metrics", + "name": "Errors", + "description": null, "widgets": [ { - "visualization": { - "id": "viz.billboard" - }, + "title": "Errors Overview", "layout": { "column": 1, "row": 1, - "height": 3, - "width": 7 + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" }, - "title": "VM Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Metric SELECT average(apm.service.cpu.usertime.utilization) * 100 as 'Average CPU utilization (%)', average(apm.service.memory.physical) as 'Average memory used (MB)' WHERE appName like '%' SINCE 1 week AGO" + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total transactions', percentage(count(*), WHERE error IS true) as 'Failed transactions (%)', count(*) * percentage(count(*), WHERE error IS true) / 100 as 'Failed transactions' WHERE appName IN ({{appName_nodejs}})" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + } + } }, { + "title": "Error Rate", + "layout": { + "column": 4, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, "visualization": { "id": "viz.line" }, - "layout": { - "column": 1, - "row": 4, - "height": 3, - "width": 6 - }, - "title": "Average Physical Memory Used", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, "legend": { "enabled": true }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT average(apm.service.memory.physical) as 'Average Physical Memory Used' FROM Metric WHERE appName LIKE '%' SINCE 30 MINUTES AGO TIMESERIES" + "accountIds": [], + "query": "SELECT count(apm.service.error.count) / count(apm.service.transaction.duration) AS 'Web errors' FROM Metric WHERE transactionType = 'Web' AND appName IN ({{appName_nodejs}}) TIMESERIES" } ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, "yAxisLeft": { "zero": true } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "viz.line" - }, + "title": "Transaction Errors Day by Day", "layout": { - "column": 7, - "row": 4, - "height": 3, - "width": 6 + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" }, - "title": "CPU Utilization", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, "legend": { "enabled": true }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT rate(sum(apm.service.cpu.usertime.utilization), 1 second) * 100 as cpuUsage FROM Metric WHERE appName like '%' SINCE 30 minutes ago TIMESERIES" + "accountIds": [], + "query": "FROM TransactionError SELECT count(*), percentage(count(*), WHERE error IS true) FACET dateOf(timestamp) WHERE appName IN ({{appName_nodejs}}) TIMESERIES AUTO" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } + } + }, + { + "title": "Error Message", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" }, - "linkedEntityGuids": null + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT error.message, error.class FROM TransactionError WHERE appName IN ({{appName_nodejs}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } } ] }, { - "name": "Transactions", - "description": "Transactions", + "name": "Infrastructure", + "description": null, "widgets": [ { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.markdown" }, + "rawConfiguration": { + "text": "## Infrastructure Monitoring\n\nUse New Relic infrastructure agent to track host-related information in real time. Whether it is operating on dedicated servers, in the cloud, or in containers, the full infrastructure can be observed." + } + }, + { + "title": "CPU Usage (%)", "layout": { "column": 1, - "row": 1, - "height": 3, - "width": 7 + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, - "title": "Transactions Overview", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Transaction SELECT count(*) as 'Total transactions', average(duration) as 'Avg duration (s)', percentile(duration, 90) as 'Slowest 10% (s)', percentage(count(*), WHERE error is false) AS 'Success rate' SINCE 1 WEEK AGO" + "accountIds": [], + "query": "SELECT average(host.cpuPercent) AS 'CPU used' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES" } ], - "thresholds": [] - }, - "linkedEntityGuids": null + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } }, { - "visualization": { - "id": "viz.pie" - }, + "title": "Memory Usage (%)", "layout": { - "column": 8, - "row": 1, - "height": 3, - "width": 5 + "column": 4, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, - "title": "Most Popular Transactions", "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT count(*) FROM Transaction WHERE (transactionType = 'Web') SINCE last week EXTRAPOLATE FACET name" + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS 'Memory used' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" } - ] - }, - "linkedEntityGuids": null + ], + "platformOptions": { + "ignoreTimeRange": false + } + } }, { - "visualization": { - "id": "dc5b694f-9125-4c64-8e4e-c52e604c8088.stacked-bar-chart" - }, + "title": "Storage Usage (%)", "layout": { - "column": 1, - "row": 4, - "height": 3, - "width": 4 + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" }, - "title": "Top 5 Slowest Transactions", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT max(duration) FROM Transaction WHERE (transactionType = 'Web') SINCE 1 week ago LIMIT 5 EXTRAPOLATE FACET name" + "accountIds": [], + "query": "SELECT average(host.disk.usedPercent) as 'Storage used' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" } ], - "other": { - "visible": false - }, - "yAxis": { - "label": "Seconds" + "platformOptions": { + "ignoreTimeRange": false } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "dc5b694f-9125-4c64-8e4e-c52e604c8088.range-chart" - }, + "title": "Network Traffic", "layout": { - "column": 5, - "row": 4, - "height": 3, - "width": 8 + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, - "title": "Transaction Day By Day", "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { - "accountId": 0, - "query": "FROM Transaction SELECT count(*), percentage(count(*), WHERE error IS false) FACET dateOf(timestamp) SINCE 1 week ago" + "accountIds": [], + "query": "SELECT average(host.net.transmitBytesPerSecond) AS 'Transmit bytes per second', average(host.net.receiveBytesPerSecond) AS 'Receive bytes per second' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" } ], - "other": { - "visible": null + "platformOptions": { + "ignoreTimeRange": false } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "viz.line" - }, + "title": "Load Average", "layout": { "column": 1, - "row": 7, - "height": 3, - "width": 4 + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, - "title": "Average Transaction Duration Today Compared With 1 Week Ago", "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "legend": { "enabled": true }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT average(duration) FROM Transaction TIMESERIES SINCE today COMPARE WITH 1 week ago" + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) AS '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES " } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } - }, - "linkedEntityGuids": null + } }, { - "visualization": { - "id": "viz.line" - }, + "title": "Processes Running", "layout": { - "column": 5, - "row": 7, - "height": 3, - "width": 4 + "column": 7, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" }, - "title": "Apdex Score Today Compared With 1 Week Ago", "rawConfiguration": { - "legend": { - "enabled": true + "facet": { + "showOtherSeries": false }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT apdex(duration,t: 0.4) FROM Transaction TIMESERIES SINCE today COMPARE WITH 1 week ago" + "accountIds": [], + "query": "SELECT latest(host.process.cpuPercent) as 'CPU %', latest(host.process.threadCount) as 'Threads' FROM Metric FACET processId, processDisplayName WHERE host.hostname = {{hostname}} ORDER BY cpuPercent asc LIMIT 100" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } - }, - "linkedEntityGuids": null - }, + } + } + ] + }, + { + "name": "Log", + "description": null, + "widgets": [ { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.markdown" }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate **logtype** variable(s) to display the related logs." + } + }, + { + "title": "Logs", "layout": { - "column": 9, - "row": 7, - "height": 3, - "width": 4 + "column": 1, + "row": 2, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" }, - "title": "Throughput Today Compared With 1 Week Ago", "rawConfiguration": { - "legend": { - "enabled": true - }, "nrqlQueries": [ { - "accountId": 0, - "query": "SELECT count(*) from Transaction TIMESERIES 1 hour since today COMPARE WITH 1 week ago" + "accountIds": [], + "query": "SELECT * FROM Log WHERE logtype = {{log_type}}" } - ], - "yAxisLeft": { - "zero": true - } - }, - "linkedEntityGuids": null + ] + } } ] } + ], + "variables": [ + { + "name": "appName_nodejs", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Transaction SELECT uniques(appName) WHERE appName IS NOT NULL LIMIT MAX SINCE 3 MONTH AGO" + }, + "title": "Select Your NodeJS Application Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "DEFAULT" + }, + { + "name": "hostname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entity.name) FROM Metric since 1 weeks ago" + }, + "title": "Select Your Host Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "log_type", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 1 month ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } ] -} +} \ No newline at end of file diff --git a/dashboards/nodejs/nodejs.png b/dashboards/nodejs/nodejs.png deleted file mode 100644 index 0b464dcab0..0000000000 Binary files a/dashboards/nodejs/nodejs.png and /dev/null differ diff --git a/dashboards/nodejs/nodejs01a.png b/dashboards/nodejs/nodejs01a.png new file mode 100644 index 0000000000..7b40189690 Binary files /dev/null and b/dashboards/nodejs/nodejs01a.png differ diff --git a/dashboards/nodejs/nodejs02.png b/dashboards/nodejs/nodejs02.png deleted file mode 100644 index afa3d855c5..0000000000 Binary files a/dashboards/nodejs/nodejs02.png and /dev/null differ diff --git a/dashboards/nodejs/nodejs02a.png b/dashboards/nodejs/nodejs02a.png new file mode 100644 index 0000000000..11ea64efe3 Binary files /dev/null and b/dashboards/nodejs/nodejs02a.png differ diff --git a/dashboards/nodejs/nodejs03.png b/dashboards/nodejs/nodejs03.png new file mode 100644 index 0000000000..9125d694b4 Binary files /dev/null and b/dashboards/nodejs/nodejs03.png differ diff --git a/dashboards/nodejs/nodejs04.png b/dashboards/nodejs/nodejs04.png new file mode 100644 index 0000000000..c4846165f6 Binary files /dev/null and b/dashboards/nodejs/nodejs04.png differ diff --git a/dashboards/nodejs/nodejs05.png b/dashboards/nodejs/nodejs05.png new file mode 100644 index 0000000000..482c2826ca Binary files /dev/null and b/dashboards/nodejs/nodejs05.png differ diff --git a/dashboards/nodejs/nodejs06.png b/dashboards/nodejs/nodejs06.png new file mode 100644 index 0000000000..5703265803 Binary files /dev/null and b/dashboards/nodejs/nodejs06.png differ diff --git a/dashboards/nodejs/nodejs07.png b/dashboards/nodejs/nodejs07.png new file mode 100644 index 0000000000..968bf0dba8 Binary files /dev/null and b/dashboards/nodejs/nodejs07.png differ diff --git a/dashboards/nr-logs-summary/nr-logs-summary-apm.png b/dashboards/nr-logs-summary/nr-logs-summary-apm.png new file mode 100644 index 0000000000..c2c2bbebcd Binary files /dev/null and b/dashboards/nr-logs-summary/nr-logs-summary-apm.png differ diff --git a/dashboards/nr-logs-summary/nr-logs-summary-attributes.png b/dashboards/nr-logs-summary/nr-logs-summary-attributes.png new file mode 100644 index 0000000000..a2d284e90c Binary files /dev/null and b/dashboards/nr-logs-summary/nr-logs-summary-attributes.png differ diff --git a/dashboards/nr-logs-summary/nr-logs-summary-errors.png b/dashboards/nr-logs-summary/nr-logs-summary-errors.png new file mode 100644 index 0000000000..18743247f4 Binary files /dev/null and b/dashboards/nr-logs-summary/nr-logs-summary-errors.png differ diff --git a/dashboards/nr-logs-summary/nr-logs-summary-ingest.png b/dashboards/nr-logs-summary/nr-logs-summary-ingest.png new file mode 100644 index 0000000000..2fdca2e15d Binary files /dev/null and b/dashboards/nr-logs-summary/nr-logs-summary-ingest.png differ diff --git a/dashboards/nr-logs-summary/nr-logs-summary.json b/dashboards/nr-logs-summary/nr-logs-summary.json new file mode 100644 index 0000000000..adccb369aa --- /dev/null +++ b/dashboards/nr-logs-summary/nr-logs-summary.json @@ -0,0 +1,1696 @@ +{ + "name": "New Relic Logs Summary", + "description": null, + "pages": [ + { + "name": "Log Ingestion Details", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![New Relic](https://cdn.bfldr.com/UP6M13EZ/at/cj73bqch9n9jbtkr49fb6x2s/NR_logo_HZ_3-COLOR.eps?auto=webp&format=png)\n# New Relic Log Ingestion Details\n\n* Ingestion Rates, Partition Size, Total Logs\n\n*THE DETAILS IN THIS DASHBOARD ARE ESTIMATES, THE [DATA MANAGEMENT HUB](https://one.newrelic.com/launcher/data-management-nerdlets.data-management-launcher) SHOULD BE USED TO VIEW OFFICIAL INGESTION RATES*\n" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## New Relic Logs Summary Dashboard \n\n### What information does this dashboard provide?\n1. Estimates on overall ingestion by partition, along with ingest estimates based on various attributes for log type, source, etc.\n2. Breakdown of attributes\n3. APM Logs\n4. Logging related NRIntegration errors\n\n\n#### See the ACTION REQUIRED details --->\nAfter you update the dashboard template variables for partition names and cost per GB you can remove these 3 markdown panels/widgets and customize to your liking." + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# ACTION REQUIRED: \n\n## Edit the *Select Log Partition* Dashboard Variable\n\n1. In [Logs UI](https://one.newrelic.com/launcher/logger.log-launcher), from **Views and partitions -> Select Partitions >** OR **Manage data -> Data Partitions**\n2. Click on `Edit` (pencil icon in upper left) in this dashboard, then click the `Select Log Partition` variable drop down to edit the variable.\n3. Create a comma separated list of all partition names and paste into variable configuration." + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# ACTION REQUIRED: \n\n## Edit the *Cost per GB* Dashboard Variable\n1. Click on `Edit` (pencil icon in upper left) in this dashboard, then click the `Cost per GB` variable drop down to edit the variable.\n2. Update the value available for selection based on your contracted cost per GB of data ingest.\n3. Make it the default value for the variable." + } + }, + { + "title": "Total Logs Ingested", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate()/10e8 AS 'Total Logs GB' from {{partition_name}} since 1 hour ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total APM Agent Logs Ingested", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate()/10e8 AS 'APM Logs GB' from {{partition_name}} WHERE newrelic.source='logs.APM' since 1 hour ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Logs", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM {{partition_name}} SELECT count(*) AS 'Total Logs' SINCE 1 hour AGO COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Log Partition Usage", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM {{partition_name}} SELECT \n bytecountestimate()/10e8 AS 'Last 24 Hrs (GB)',\n rate(bytecountestimate()/10e8, 1 MONTH) AS '1 Month Projection (GB)',\n round(rate(bytecountestimate()/10e8, 1 MONTH) * {{gb_cost}}, .01) AS '1 Month Projection ($)',\n {{gb_cost}} AS 'Cost per GB ($)'\nFACET eventType() SINCE 24 HOURS AGO COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": true + } + } + }, + { + "title": "Total GB Ingested", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate()/10e8 AS 'Partition GB' from {{partition_name}} since 1 hour ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total GB Ingested", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate()/10e8 AS 'Partition GB' from {{partition_name}} since 1 day ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total GB Ingested", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate()/10e8 AS 'Partition GB' from {{partition_name}} since 1 week ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Log Ingest by newrelic.source, plugin.type, logtype", + "layout": { + "column": 1, + "row": 8, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Total Logs', bytecountestimate() / 10e8 as 'Logs GB' from {{partition_name}} facet newrelic.source AS 'newrelic.source', plugin.type, logtype since 1 day ago limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "APM Log ingest by entity.name, newrelic.source", + "layout": { + "column": 7, + "row": 8, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) as 'Total Logs', bytecountestimate()/10e8 as 'Logs GB' FROM {{partition_name}} where entity.name is not NULL facet entity.name as Application, newrelic.source limit max since 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Log Ingest by newrelic.source", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate() / 10e8 as 'Logs GB' from {{partition_name}} FACET newrelic.source since 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Log Ingest by plugin.type ", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate() / 10e8 as 'Logs GB' from {{partition_name}} FACET plugin.type since 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Log Ingest by logtype", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT bytecountestimate() / 10e8 as 'Logs GB' from {{partition_name}} FACET logtype since 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Log Attribute Details", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Log Attribute Details\n* Unique #, Total by, Total over Time\n" + } + }, + { + "title": "Logs without Hostname", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) AS 'Logs with no hostname' from `Log` where hostname is null since 1 hour ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs without logtype", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) AS 'Logs with no logtype' from {{partition_name}} where logtype is null since 1 hour ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs without filePath", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) AS 'Logs with no filePath' from {{partition_name}} where filePath is null since 1 hour ago COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(logtype) AS 'Unique logtypes' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(filePath) AS 'Unique filePaths' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Unique hosts", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniquecount(hostname) AS 'Unique hosts' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(level) AS 'Unique Level' FROM {{partition_name}} SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Logs by logtype (Top 20)", + "layout": { + "column": 1, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET logtype limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Logs by filePath (Top 20)", + "layout": { + "column": 4, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET filePath limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Logs by hostname (Top 20)", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET hostname limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Logs by level ", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET level OR Level OR loglevel OR severity OR errorLevel limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by logtype over Time", + "layout": { + "column": 1, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET logtype limit max since 1 hour ago TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by filePath over Time", + "layout": { + "column": 4, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET filePath TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by hostname over Time", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET hostname TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by level over Time", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET level OR Level OR loglevel OR severity OR errorLevel TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(newrelic.source) AS 'Unique newrelic.source' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 10, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(plugin.type) AS 'Unique plugin.type' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 10, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniquecount(plugin.source) AS 'Unique plugin.source' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 10, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT uniqueCount(fb.input) AS 'FluentBit Input' FROM {{partition_name}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by newrelic.source (Top 20)", + "layout": { + "column": 1, + "row": 11, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM {{partition_name}} SELECT count(*) FACET newrelic.source limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by plugin.type (Top 20)", + "layout": { + "column": 4, + "row": 11, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM {{partition_name}} SELECT count(*) FACET plugin.type limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by plugin.source (Top 20)", + "layout": { + "column": 7, + "row": 11, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET plugin.source limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by FluentBit Input (Top 20)", + "layout": { + "column": 10, + "row": 11, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM {{partition_name}} SELECT count(*) FACET fb.input limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Logs by newrelic.source over Time", + "layout": { + "column": 1, + "row": 15, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET newrelic.source TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by plugin.type over Time", + "layout": { + "column": 4, + "row": 15, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET plugin.type TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by plugin.source over Time", + "layout": { + "column": 7, + "row": 15, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET plugin.source TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs by fb.input over Time", + "layout": { + "column": 10, + "row": 15, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM {{partition_name}} FACET fb.input TIMESERIES limit max since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "APM Log Details", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## APM Log Details\n* Logs sent via an APM Agent\n* Note that all queries in this tab search the main **Log** partition." + } + }, + { + "title": "APM Logs by entity.name (Top 20)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM Log FACET entity.name WHERE newrelic.source = 'logs.APM' limit 20 since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "APM Logs by entity.name over time", + "layout": { + "column": 5, + "row": 2, + "width": 8, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT count(*) WHERE newrelic.source = 'logs.APM' FACET entity.name TIMESERIES since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "APM Logs Sampling per App", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Seen') AS 'Logs_Generated', filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Sent') AS 'Logs_Shipped', filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Seen') - filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Sent') AS 'Logs_Dropped' FROM Metric WHERE appName LIKE '%' AND metricTimesliceName IN ('Supportability/Logging/Forwarding/Seen', 'Supportability/Logging/Forwarding/Sent') FACET appName LIMIT 25 SINCE 5 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "APM Logs Dropped per App (Last 1 Day)", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Seen') - filter(count(newrelic.timeslice.value), WHERE appName LIKE '%' AND metricTimesliceName = 'Supportability/Logging/Forwarding/Sent') AS 'Logs_Dropped' FROM Metric WHERE appName LIKE '%' AND metricTimesliceName IN ('Supportability/Logging/Forwarding/Seen', 'Supportability/Logging/Forwarding/Sent') FACET appName LIMIT 25 TIMESERIES SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "APM Error Logs by entity.name", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT count(*) WHERE newrelic.source = 'logs.APM' AND level NOT LIKE '%warn%' AND level NOT LIKE '%info%' AND level NOT LIKE '%debug%' FACET level, entity.name TIMESERIES since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "APM Logs by Level", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT count(*) WHERE newrelic.source = 'logs.APM' FACET level TIMESERIES SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "APM Agent vs. Non-APM Agent Logs", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT count(*) FACET newrelic.source WHERE entity.name LIKE '%' TIMESERIES since 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Duplicate Log List", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) AS 'Log_Count' FROM Log WHERE hostname IS NOT NULL FACET hostname, message, newrelic.source LIMIT MAX SINCE 5 minutes ago" + } + ] + } + }, + { + "title": "Apps NOT sending logs via APM Agent", + "layout": { + "column": 7, + "row": 12, + "width": 6, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "From Transaction select uniques(appName) where appName not in (from Log select uniques(entity.name) where newrelic.source = 'logs.APM') since 1 hour ago\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Log NrIntegration Errors", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Log NrIntegration Errors\n* [Use NrIntegrationError event to understand data ingest problems](https://docs.newrelic.com/docs/data-apis/manage-data/nrintegrationerror/)\n* **Best practice:** Create an Alert to notify you of any Logging NrIntegration Errors. A pre-built alert is included with this quickstart." + } + }, + { + "title": "Logs NrIntegrationErrors (Last 1h)", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM NrIntegrationError WHERE newRelicFeature = 'Logs' FACET message timeseries SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Logs NrIntegrationErrors (Last 1d)", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM NrIntegrationError WHERE newRelicFeature = 'Logs' FACET message timeseries SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Logs NrIntegrationErrors (Last 1d)", + "layout": { + "column": 1, + "row": 6, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM NrIntegrationError WHERE newRelicFeature = 'Logs' FACET level, name, message SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "partition_name", + "items": [ + { + "title": null, + "value": "Log" + }, + { + "title": null, + "value": "EDIT & ADD YOUR PARTITIONS" + } + ], + "defaultValues": [ + { + "value": { + "string": "Log" + } + } + ], + "nrqlQuery": null, + "title": "Select Log Partition", + "type": "ENUM", + "isMultiSelection": false, + "replacementStrategy": "IDENTIFIER" + }, + { + "name": "gb_cost", + "items": [ + { + "title": null, + "value": ".25" + }, + { + "title": null, + "value": ".30" + }, + { + "title": null, + "value": ".50" + } + ], + "defaultValues": [ + { + "value": { + "string": ".30" + } + } + ], + "nrqlQuery": null, + "title": "Cost per GB", + "type": "ENUM", + "isMultiSelection": false, + "replacementStrategy": "NUMBER" + } + ] +} \ No newline at end of file diff --git a/dashboards/nrm4sap/sap-dashboard.json b/dashboards/nrm4sap/sap-dashboard.json index 25df4f59a7..384f1af763 100644 --- a/dashboards/nrm4sap/sap-dashboard.json +++ b/dashboards/nrm4sap/sap-dashboard.json @@ -65,70 +65,84 @@ ] }, { - "name": "IDOC Trends", + "name": "Systems", "description": null, "widgets": [ { - "title": "Inbound", + "title": "Trend - Users Logged In", "layout": { "column": 1, "row": 1, - "width": 6, - "height": 2 + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) AS 'Total Number Inbound', filter(uniqueCount(DOCNUM), WHERE STATUS_LIGHT = 'RED') AS 'Total Number Error' WHERE DIRECTION = 'INBOUND' SINCE 1 day ago COMPARE WITH 1 day ago" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.USER.LOGON) as 'Number Loggon #' WHERE metricName = 'NR.SAP.SYSTEM.USER.LOGON' AND INSTANCE = 'TOTAL' SINCE 1 day ago TIMESERIES 15 minutes FACET SYS_ID" } ], - "thresholds": [] + "yAxisLeft": { + "zero": true + } } }, { - "title": "Outbound", + "title": "Trend - Dialog Response Time (seconds)", "layout": { - "column": 7, + "column": 5, "row": 1, - "width": 6, - "height": 2 + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) AS 'Total Number Outbound', filter(uniqueCount(DOCNUM), WHERE STATUS_LIGHT = 'RED') AS 'Total Number Error' WHERE DIRECTION = 'OUTBOUND' SINCE 1 day ago COMPARE WITH 1 day ago" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME) / 1000 as 'RESPONSE TIME' WHERE metricName = 'NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME' SINCE 1 day ago TIMESERIES AUTO FACET SYS_ID" } ], - "thresholds": [] + "yAxisLeft": { + "zero": true + } } }, { - "title": "Total IDOCs - by Direction", + "title": "Trend - Error (count)", "layout": { - "column": 1, - "row": 3, - "width": 5, + "column": 9, + "row": 1, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.line" }, "rawConfiguration": { "facet": { - "showOtherSeries": true + "showOtherSeries": false }, "legend": { "enabled": true @@ -136,20 +150,20 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET DIRECTION SINCE 1 day ago" + "query": "FROM Log SELECT count(*) as 'Errors' WHERE level = 'Error' SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX TIMESERIES AUTO FACET SYS_ID" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } }, { - "title": "Trend - by Direction", + "title": "Number of Locks Overtime", "layout": { - "column": 6, - "row": 3, - "width": 7, + "column": 1, + "row": 4, + "width": 4, "height": 3 }, "linkedEntityGuids": null, @@ -158,7 +172,7 @@ }, "rawConfiguration": { "facet": { - "showOtherSeries": true + "showOtherSeries": false }, "legend": { "enabled": true @@ -166,37 +180,37 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET DIRECTION SINCE 7 days ago TIMESERIES 2 hours" + "query": "FROM NR_SAP_LOCK_ENTRIES SELECT count(*) FACET SYS_ID, Lock_Mode SINCE 1 day ago TIMESERIES AUTO" } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } } }, { - "title": "Total IDOCs - by Message Type", + "title": "Active Locks", "layout": { - "column": 1, - "row": 6, - "width": 5, + "column": 5, + "row": 4, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.table" }, "rawConfiguration": { "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true + "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET MESSAGE_TYPE SINCE 1 day ago" + "query": "FROM NR_SAP_LOCK_ENTRIES SELECT Table_name, User_Name, SYS_ID, Client, Date AS 'Lock Date', Time AS 'Locking Time', Microseconds,`Locking_period(S)`, Lock_Mode, Lock_Object, Work_Process, DESTINATION, Counter, Counter_1, Counter_2, Use_Counter, Lock_Argument, Lock_Owner where timestamp = (SELECT latest(timestamp) FROM NR_SAP_LOCK_ENTRIES) SINCE 1 day ago LIMIT MAX" } ], "platformOptions": { @@ -205,50 +219,51 @@ } }, { - "title": "Trend - by Message Type", + "title": "Error Logs", "layout": { - "column": 6, - "row": 6, - "width": 7, - "height": 3 + "column": 1, + "row": 7, + "width": 12, + "height": 4 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET MESSAGE_TYPE, MESSAGE_TYPE_DESCRIPTION SINCE 7 days ago TIMESERIES 2 hours" + "query": "FROM Log SELECT CATEGORY,SUBCATEGORY, message, level, SYS_ID, INSTANCE, HOST_NAME SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX" } - ], - "yAxisLeft": { - "zero": true - } + ] } - }, + } + ] + }, + { + "name": "Instances", + "description": null, + "widgets": [ { - "title": "Total IDOCs - by Partner", + "title": "Trend of Work Process Usage", "layout": { "column": 1, - "row": 9, - "width": 5, + "row": 1, + "width": 3, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.line" }, "rawConfiguration": { "facet": { - "showOtherSeries": true + "showOtherSeries": false }, "legend": { "enabled": true @@ -256,20 +271,20 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET PRN_DESC SINCE 1 day ago" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.WP.INFORMATION) WHERE metricName = 'NR.SAP.SYSTEM.WP.INFORMATION' and WP_TYPE in ('DIA', 'BTC') AND INSTANCE != 'TOTAL' SINCE 1 day ago FACET INSTANCE, WP_TYPE, WP_STATUS TIMESERIES 10 minutes " } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } }, { - "title": "Trend - by Partner", + "title": "Trend of Memory Usage %", "layout": { - "column": 6, - "row": 9, - "width": 7, + "column": 4, + "row": 1, + "width": 3, "height": 3 }, "linkedEntityGuids": null, @@ -286,7 +301,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET PRN_DESC SINCE 7 days ago TIMESERIES 2 hours" + "query": "FROM Metric SELECT average(`NR.SAP.SYSTEM.MEMORY.EXTENDED_USAGE%`) as Extended, average(`NR.SAP.SYSTEM.MEMORY.HEAP_USAGE%`) as Heap SINCE 1 day ago FACET INSTANCE TIMESERIES AUTO " } ], "yAxisLeft": { @@ -295,11 +310,11 @@ } }, { - "title": "Error Trend -by Direction", + "title": "Trend of Users Logged In", "layout": { - "column": 1, - "row": 12, - "width": 6, + "column": 7, + "row": 1, + "width": 3, "height": 3 }, "linkedEntityGuids": null, @@ -316,7 +331,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET DIRECTION TIMESERIES 1 hour" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.USER.LOGON) as 'Number Loggon #' WHERE metricName = 'NR.SAP.SYSTEM.USER.LOGON' AND INSTANCE != 'TOTAL' FACET INSTANCE SINCE 1 day ago TIMESERIES AUTO" } ], "yAxisLeft": { @@ -325,11 +340,11 @@ } }, { - "title": "Error Trend -by Message Type", + "title": "Trend of Dialog Response Time (seconds)", "layout": { - "column": 7, - "row": 12, - "width": 6, + "column": 10, + "row": 1, + "width": 3, "height": 3 }, "linkedEntityGuids": null, @@ -346,7 +361,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET MESSAGE_TYPE,MESSAGE_TYPE_DESCRIPTION TIMESERIES 1 hour" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME) / 1000 WHERE metricName = 'NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME' FACET INSTANCE SINCE 1 day ago TIMESERIES AUTO" } ], "yAxisLeft": { @@ -355,12 +370,12 @@ } }, { - "title": "Average Processing Time - by Direction", + "title": "Error Trend (count)", "layout": { "column": 1, - "row": 15, - "width": 6, - "height": 3 + "row": 4, + "width": 3, + "height": 4 }, "linkedEntityGuids": null, "visualization": { @@ -376,7 +391,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT average(`Processing_Time(S)`) WHERE `Processing_Time(S)` IS NOT NULL SINCE 2 days ago FACET DIRECTION TIMESERIES AUTO" + "query": "FROM Log SELECT count(*) as 'Errors' WHERE level = 'Error' SINCE 1 day ago WHERE agentName != 'Infrastructure' FACET INSTANCE LIMIT MAX TIMESERIES AUTO" } ], "yAxisLeft": { @@ -385,141 +400,126 @@ } }, { - "title": "Max Processing Time - by Direction", + "title": "Error Logs", "layout": { - "column": 7, - "row": 15, - "width": 6, - "height": 3 + "column": 4, + "row": 4, + "width": 9, + "height": 4 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT max(`Processing_Time(S)`) WHERE `Processing_Time(S)` IS NOT NULL SINCE 2 days ago FACET DIRECTION TIMESERIES AUTO" + "query": "FROM Log SELECT CATEGORY,SUBCATEGORY, message, level, INSTANCE, HOST_NAME SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX" } - ], - "yAxisLeft": { - "zero": true - } + ] } } ] }, { - "name": "IDOC Resolution", + "name": "Hosts", "description": null, "widgets": [ { - "title": "Error Distribution - by Direction", + "title": "Average CPU Usage %", "layout": { "column": 1, "row": 1, - "width": 5, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.billboard" }, "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, + "dataFormatters": [], "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET DIRECTION" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.CPU.USAGE.SYSTEM) as 'System', average(NR.SAP.SYSTEM.CPU.USAGE.USER) as 'User', average(NR.SAP.SYSTEM.CPU.USAGE.IOWAIT) as 'IOWait' SINCE 20 minutes ago FACET HOST_NAME ORDER BY HOST_NAME LIMIT MAX" } ], - "platformOptions": { - "ignoreTimeRange": false - } + "thresholds": [] } }, { - "title": "Error Distribution - by Status", + "title": "Trend of Average CPU Usage %", "layout": { - "column": 6, + "column": 3, "row": 1, - "width": 7, - "height": 9 + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.line" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET STATUS, STATUS_DESCRIPTION" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.CPU.USAGE.SYSTEM) as System, average(NR.SAP.SYSTEM.CPU.USAGE.USER) as User, average(NR.SAP.SYSTEM.CPU.USAGE.IOWAIT) as IOWait SINCE 1 day ago FACET HOST_NAME TIMESERIES AUTO" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } }, { - "title": "Error Distribution - by Message Type", + "title": "Memory Usage %", "layout": { - "column": 1, - "row": 4, - "width": 5, + "column": 7, + "row": 1, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.billboard" }, "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, + "dataFormatters": [], "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET MESSAGE_TYPE" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.MEMORY.FREE) / average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) * 100 AS 'Percent Memory Free', average(NR.SAP.SYSTEM.MEMORY.FREE)/1000 as 'GB Free', average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) / 1000 as 'GB Configured' SINCE 20 minutes ago FACET HOST_NAME" } ], - "platformOptions": { - "ignoreTimeRange": false - } + "thresholds": [] } }, { - "title": "Error Distribution - by Partner", + "title": "Trend of Memory Usage %", "layout": { - "column": 1, - "row": 7, - "width": 5, + "column": 9, + "row": 1, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.line" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, @@ -529,25 +529,25 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET PRN" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.MEMORY.FREE) / average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) * 100 AS 'Percent Memory Free' SINCE 1 day ago FACET HOST_NAME TIMESERIES AUTO" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } }, { - "title": "IDOC in Error", + "title": "File System Usage %", "layout": { "column": 1, - "row": 10, - "width": 12, - "height": 5 + "row": 4, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.bar" }, "rawConfiguration": { "dataFormatters": [], @@ -557,7 +557,34 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_IDOC SELECT DOCNUM, STATUS, STATUS_DESCRIPTION, STATUS_TEXT, STATUS_GROUP, DIRECTION, MESSAGE_TYPE, MESSAGE_TYPE_DESCRIPTION, OUTPUT_MODE, RECEIVER_PARTNER_NUMBER, RECEIVER_PARTNER_TYPE, RECEIVER_PORT, SENDER_PARTNER_NUMBER, SENDER_PARTNER_TYPE, SENDER_PORT, MAX_IDOC_SEGMENT_NUMBER, APP WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago LIMIT MAX" + "query": "FROM Metric SELECT latest(NR.SAP.SYSTEM.FILESYSTEM.USAGE) as 'Percentage Used' WHERE metricName = 'NR.SAP.SYSTEM.FILESYSTEM.USAGE' FACET HOST_NAME, OBJECT SINCE 1 hour ago LIMIT MAX" + } + ] + } + }, + { + "title": "Network Traffic (packets/sec)", + "layout": { + "column": 7, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.NETWORK.INBOUND) AS 'Packets received', average(NR.SAP.SYSTEM.NETWORK.OUTBOUND) AS 'Packets transmitted' FACET HOST_NAME SINCE 1 hour ago TIMESERIES AUTO" } ] } @@ -565,30 +592,29 @@ ] }, { - "name": "RFCs", + "name": "Background Jobs", "description": null, "widgets": [ { - "title": "Total tRFC Calls with SYSFAIL Error", + "title": "By System, Job Server Group, Instance", "layout": { "column": 1, "row": 1, - "width": 2, - "height": 2 + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID, RFC_STATUS SINCE 1 day ago" + "query": "FROM NR_SAP_JOB_ALL SELECT uniqueCount(JOB_NAME) as 'No. of Jobs' FACET SYS_ID, JobServerGroup, INSTANCE SINCE 1 day ago LIMIT MAX WHERE Status NOT IN ('RELEASED')" } ], "platformOptions": { @@ -597,12 +623,12 @@ } }, { - "title": "Trend - tRFC SYSFAIL Errors", + "title": "Background Work Process Usage", "layout": { - "column": 3, + "column": 7, "row": 1, - "width": 4, - "height": 2 + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -618,56 +644,58 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID, RFC_STATUS SINCE 1 day ago TIMESERIES 10 minutes" + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.WP.INFORMATION) WHERE metricName = 'NR.SAP.SYSTEM.WP.INFORMATION' and WP_TYPE in ('BTC') AND INSTANCE != 'TOTAL' SINCE 1 day ago FACET SYS_ID, WP_STATUS TIMESERIES AUTO " } ], - "platformOptions": { - "ignoreTimeRange": false - }, "yAxisLeft": { "zero": true } } }, { - "title": "Total tRFC Calls with CPIC Error", + "title": "Average Run Time & Wait Time(Sec)", "layout": { - "column": 7, - "row": 1, - "width": 2, - "height": 2 + "column": 1, + "row": 4, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago" + "query": "FROM NR_SAP_JOB_ALL SELECT average(Run_Time), average(Wait_Time) FACET SYS_ID, JobServerGroup, INSTANCE TIMESERIES AUTO SINCE 1 day ago" } ], "platformOptions": { "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } } }, { - "title": "Trend - tRFC CPIC Errors", + "title": "Num of Job Run by Time", "layout": { - "column": 9, - "row": 1, - "width": 4, - "height": 2 + "column": 7, + "row": 4, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.stacked-bar" }, "rawConfiguration": { "facet": { @@ -679,22 +707,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_TRFC_STATUS SELECT COUNT(*) WHERE RFC_STATUS = 'CPICERR' TIMESERIES 10 minutes FACET SYS_ID, RFC_STATUS SINCE 1 DAY AGO" + "query": "FROM NR_SAP_JOB_ALL SELECT count(*) as 'Num Job Run' SINCE 1 day ago TIMESERIES AUTO FACET SYS_ID, JobServerGroup, INSTANCE" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "TRFC Status", + "title": "Job Completion Summary", "layout": { "column": 1, - "row": 3, + "row": 7, "width": 12, "height": 3 }, @@ -703,39 +728,40 @@ "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_TRFC_STATUS SELECT * SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_JOB_ALL SELECT filter(uniqueCount(JOB_ID), where Status = 'FINISHED') as '🟢 Finished #', percentage(uniqueCount(JOB_ID), where Status = 'FINISHED') as '🟢 Finished %', filter(uniqueCount(JOB_ID), where Status = 'CANCELED') as '🔴 Canceled #', percentage(uniqueCount(JOB_ID), where Status = 'CANCELED') as '🔴 Canceled %', filter(uniqueCount(JOB_ID), where Status in ('FINISHED', 'CANCELED')) as '#️⃣ Total', average(Wait_Time) as '🕐 Avg Wait', average(Run_Time) as '🕐 Avg Run' WHERE Status IN ('CANCELED', 'FINISHED') SINCE 1 day ago FACET SYS_ID, JOB_NAME LIMIT MAX" } - ] + ], + "platformOptions": { + "ignoreTimeRange": false + } } }, { - "title": "Total qRFC Calls with SYSFAIL Error", + "title": "Status of Last Run", "layout": { "column": 1, - "row": 6, - "width": 2, - "height": 2 + "row": 10, + "width": 12, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID SINCE 1 day ago COMPARE WITH 1 day ago" + "query": "FROM NR_SAP_JOB_ALL SELECT latest(HOST_NAME), latest(INSTANCE),latest(Status), latest(Run_Time), latest(Wait_Time), latest(SCHEDULE_START_AT), latest(STARTED_AT), latest(ENDED_AT) SINCE 24 hours ago FACET SYS_ID, JOB_NAME LIMIT MAX" } ], "platformOptions": { @@ -744,59 +770,89 @@ } }, { - "title": "Trend - qRFC SYSFAIL Error", + "title": "Failed Jobs", "layout": { - "column": 3, - "row": 6, - "width": 4, - "height": 2 + "column": 1, + "row": 13, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log SELECT SUBCATEGORY as Job, message, SYS_ID, INSTANCE, CLIENT WHERE CATEGORY = 'ABAP Aborted Jobs' SINCE 1 day ago" + } + ] + } + }, + { + "title": "Active Jobs", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID SINCE 1 day ago TIMESERIES 10 minutes" + "query": "SELECT SYS_ID, JOB_NAME, JOB_ID, Status, SCHEDULED_AT, SCHEDULE_START_AT, STARTED_AT, Run_Time, Wait_Time FROM (SELECT latest(Status)as Status, latest(Wait_Time) AS Wait_Time, latest(Run_Time) AS Run_Time FROM NR_SAP_JOB_ALL WHERE JOB_NAME IN (FROM NR_SAP_JOB_ALL SELECT uniques(JOB_NAME) WHERE Status IN ('RUNNING', 'READY') LIMIT MAX) FACET SYS_ID, JOB_NAME, JOB_ID, SCHEDULED_AT, SCHEDULE_START_AT, STARTED_AT) WHERE Status IN ('RUNNING', 'READY') SINCE 1 day ago LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } - }, + } + ] + }, + { + "name": "Transactions", + "description": null, + "widgets": [ { - "title": "Total qRFC Calls with CPIC Error", + "title": "Top 20 Transaction Response (ms)", "layout": { - "column": 7, - "row": 6, - "width": 2, - "height": 2 + "column": 1, + "row": 1, + "width": 3, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], + "dataFormatters": [ + { + "name": "Max", + "type": "humanized" + }, + { + "name": "Avg Response_Time", + "type": "humanized" + } + ], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago COMPARE WITH 1 day ago" + "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) as 'Max', average(Response_Time) as 'Avg' SINCE 1 day ago FACET SAP_EID as 'Transaction' LIMIT 20" } ], "platformOptions": { @@ -805,12 +861,12 @@ } }, { - "title": "Trend - qRFC Calls with CPIC Error", + "title": "Response Time Trend(ms)", "layout": { - "column": 9, - "row": 6, - "width": 4, - "height": 2 + "column": 4, + "row": 1, + "width": 3, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -826,7 +882,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago TIMESERIES 10 minutes" + "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago FACET Program TIMESERIES " } ], "platformOptions": { @@ -838,76 +894,66 @@ } }, { - "title": "QRFC Status", + "title": "Max Response TIme(ms) by Transaction Type", "layout": { - "column": 1, - "row": 8, - "width": 12, + "column": 7, + "row": 1, + "width": 3, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.bar" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_QRFC_STATUS SELECT * SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) SINCE 1 day ago FACET Task_Type_Name LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false } } - } - ] - }, - { - "name": "Systems", - "description": null, - "widgets": [ + }, { - "title": "Trend - Users Logged In", + "title": "Max Response TIme(ms) by Business Process", "layout": { - "column": 1, + "column": 10, "row": 1, "width": 3, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.bar" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.USER.LOGON) as 'Number Loggon #' WHERE metricName = 'NR.SAP.SYSTEM.USER.LOGON' AND INSTANCE = 'TOTAL' SINCE 1 day ago TIMESERIES 15 minutes FACET SYS_ID" + "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) FACET BUSIPROC_0001 SINCE 1 day ago" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "Trend - Dialog Response Time (seconds)", + "title": "HTTP Response Time(ms)", "layout": { - "column": 4, - "row": 1, + "column": 1, + "row": 4, "width": 3, - "height": 3 + "height": 4 }, "linkedEntityGuids": null, "visualization": { @@ -923,21 +969,24 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME) / 1000 as 'RESPONSE TIME' WHERE metricName = 'NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME' SINCE 1 day ago TIMESERIES AUTO FACET SYS_ID" + "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago WHERE Task_Type in ('65','66') FACET CASES (WHERE Task_Type = '65' AS 'HTTP', WHERE Task_Type = '66' AS 'HTTPS') TIMESERIES AUTO" } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } } }, { - "title": "Trend - Error (count)", + "title": "RFC Response Time(ms)", "layout": { - "column": 7, - "row": 1, + "column": 4, + "row": 4, "width": 3, - "height": 3 + "height": 4 }, "linkedEntityGuids": null, "visualization": { @@ -953,52 +1002,24 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Log SELECT count(*) as 'Errors' WHERE level = 'Error' SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX TIMESERIES AUTO FACET SYS_ID" + "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago WHERE Task_Type in ('FE') FACET CASES (WHERE Task_Type = 'FE' AS 'RFC') TIMESERIES AUTO" } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } } }, { - "title": "Error Logs", + "title": "Average Wait Time (ms)", "layout": { - "column": 1, + "column": 7, "row": 4, - "width": 9, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "dataFormatters": [], - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Log SELECT CATEGORY,SUBCATEGORY, message, level, SYS_ID, INSTANCE, HOST_NAME SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX" - } - ] - } - } - ] - }, - { - "name": "Instances", - "description": null, - "widgets": [ - { - "title": "Trend of Work Process Usage", - "layout": { - "column": 1, - "row": 1, "width": 3, - "height": 3 + "height": 4 }, "linkedEntityGuids": null, "visualization": { @@ -1014,21 +1035,24 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.WP.INFORMATION) WHERE metricName = 'NR.SAP.SYSTEM.WP.INFORMATION' and WP_TYPE in ('DIA', 'BTC') AND INSTANCE != 'TOTAL' SINCE 1 day ago FACET INSTANCE, WP_TYPE, WP_STATUS TIMESERIES 10 minutes " + "query": "FROM NR_SAP_PROGRAM SELECT average(Wait_Time) SINCE 1 day ago FACET Program TIMESERIES AUTO" } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } } }, { - "title": "Trend of Memory Usage %", + "title": "Number of Calls", "layout": { - "column": 4, - "row": 1, + "column": 10, + "row": 4, "width": 3, - "height": 3 + "height": 4 }, "linkedEntityGuids": null, "visualization": { @@ -1044,7 +1068,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(`NR.SAP.SYSTEM.MEMORY.EXTENDED_USAGE%`) as Extended, average(`NR.SAP.SYSTEM.MEMORY.HEAP_USAGE%`) as Heap SINCE 1 day ago FACET INSTANCE TIMESERIES AUTO " + "query": "FROM NR_SAP_PROGRAM SELECT count(*) SINCE 1 day ago FACET Program TIMESERIES AUTO" } ], "yAxisLeft": { @@ -1053,72 +1077,66 @@ } }, { - "title": "Trend of Users Logged In", + "title": "Transaction Detail", "layout": { - "column": 7, - "row": 1, - "width": 3, - "height": 3 + "column": 1, + "row": 8, + "width": 12, + "height": 4 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.USER.LOGON) as 'Number Loggon #' WHERE metricName = 'NR.SAP.SYSTEM.USER.LOGON' AND INSTANCE != 'TOTAL' FACET INSTANCE SINCE 1 day ago TIMESERIES AUTO" + "query": "FROM NR_SAP_PROGRAM SELECT SAP_EID, T_Code, Task_Type_Name, Response_Time, Process_Time, Wait_Time, Roll_Wait_Time, CPU_Time, GUI_Net_Time, GUI_Time, DB_Time, User, Terminal_ID, BUSIPROC_0001 as 'Business Process', BUSIFUNC_0001 as 'Business Function' SINCE 1 day ago LIMIT MAX" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "Trend of Dialog Response Time (seconds)", + "title": "Top 10 Dialog Process", "layout": { - "column": 10, - "row": 1, - "width": 3, + "column": 1, + "row": 12, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME) / 1000 WHERE metricName = 'NR.SAP.SYSTEM.DIALOG.RESPONSE_TIME' FACET INSTANCE SINCE 1 day ago TIMESERIES AUTO" + "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time), count(*), average(GUI_Time), average(Process_Time), average(DB_Time), average(CPU_Time) WHERE Task_Type_Name = 'DIALOG' FACET SAP_EID SINCE 1 day ago LIMIT 10" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "Error Trend (count)", + "title": "Reponse Time Trend", "layout": { - "column": 1, - "row": 4, - "width": 3, - "height": 4 + "column": 9, + "row": 12, + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -1134,104 +1152,116 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Log SELECT count(*) as 'Errors' WHERE level = 'Error' SINCE 1 day ago WHERE agentName != 'Infrastructure' FACET INSTANCE LIMIT MAX TIMESERIES AUTO" + "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) WHERE Task_Type_Name = 'DIALOG' FACET SAP_EID LIMIT 10 SINCE 7 day ago TIMESERIES AUTO " } ], + "platformOptions": { + "ignoreTimeRange": false + }, "yAxisLeft": { "zero": true } } - }, + } + ] + }, + { + "name": "HANA", + "description": null, + "widgets": [ { - "title": "Error Logs", + "title": "HANA Avaiilability", "layout": { - "column": 4, - "row": 4, - "width": 9, - "height": 4 + "column": 1, + "row": 1, + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Log SELECT CATEGORY,SUBCATEGORY, message, level, INSTANCE, HOST_NAME SINCE 1 day ago WHERE agentName != 'Infrastructure' LIMIT MAX" + "query": "FROM NR_SAP_HDB_SERVICES SELECT latest(ACTIVE_STATUS) SINCE 20 minutes ago FACET SYS_ID" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 } ] } - } - ] - }, - { - "name": "Hosts", - "description": null, - "widgets": [ + }, { - "title": "Average CPU Usage %", + "title": "HANA Services Status", "layout": { - "column": 1, + "column": 5, "row": 1, - "width": 2, + "width": 8, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.CPU.USAGE.SYSTEM) as 'System', average(NR.SAP.SYSTEM.CPU.USAGE.USER) as 'User', average(NR.SAP.SYSTEM.CPU.USAGE.IOWAIT) as 'IOWait' SINCE 20 minutes ago FACET HOST_NAME ORDER BY HOST_NAME LIMIT MAX" + "query": "FROM NR_SAP_HDB_SERVICES SELECT latest(timestamp) AS 'Last Checked', latest(ACTIVE_STATUS) FACET SYS_ID, HOST, PORT, SERVICE_NAME, SQL_PORT, PROCESS_ID SINCE 1 hour ago" } ], - "thresholds": [] + "platformOptions": { + "ignoreTimeRange": false + } } }, { - "title": "Trend of Average CPU Usage %", + "title": "Memory Usage - Instance (GB)", "layout": { - "column": 3, - "row": 1, + "column": 1, + "row": 4, "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.billboard" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.CPU.USAGE.SYSTEM) as System, average(NR.SAP.SYSTEM.CPU.USAGE.USER) as User, average(NR.SAP.SYSTEM.CPU.USAGE.IOWAIT) as IOWait SINCE 1 day ago FACET HOST_NAME TIMESERIES AUTO" + "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) /1024 /1024 /1024 WHERE KEY_FIGURE IN ('INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE', 'INSTANCE_TOTAL_MEMORY_USED_SIZE','INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE') FACET SYS_ID, CASES (WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE' AS 'Total Allocated', WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_USED_SIZE' AS 'Used', WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE' AS 'Peak Used') SINCE 15 minutes ago COMPARE WITH 1 day ago" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "Memory Usage %", + "title": "Physical Memory-Tenant(GB)", "layout": { - "column": 7, - "row": 1, - "width": 2, + "column": 5, + "row": 4, + "width": 4, "height": 3 }, "linkedEntityGuids": null, @@ -1239,83 +1269,112 @@ "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.MEMORY.FREE) / average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) * 100 AS 'Percent Memory Free', average(NR.SAP.SYSTEM.MEMORY.FREE)/1000 as 'GB Free', average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) / 1000 as 'GB Configured' SINCE 20 minutes ago FACET HOST_NAME" + "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS)/1024/1024/1024 WHERE KEY_FIGURE in ('FREE_PHYSICAL_MEMORY', 'USED_PHYSICAL_MEMORY') FACET SYS_ID, CASES (WHERE KEY_FIGURE = 'FREE_PHYSICAL_MEMORY' AS 'Free Physical Memory', WHERE KEY_FIGURE = 'USED_PHYSICAL_MEMORY' AS 'Used Physical Memory') COMPARE WITH 1 day ago" } ], - "thresholds": [] + "platformOptions": { + "ignoreTimeRange": false + } } }, { - "title": "Trend of Memory Usage %", + "title": "Space Usage (GB)", "layout": { "column": 9, - "row": 1, + "row": 4, "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.MEMORY.FREE) / average(NR.SAP.SYSTEM.MEMORY.CONFIGURED) * 100 AS 'Percent Memory Free' SINCE 1 day ago FACET HOST_NAME TIMESERIES AUTO" + "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) WHERE KEY_FIGURE IN ('LOG','TRACE', 'DATA') FACET SYS_ID, KEY_FIGURE SINCE 15 minutes ago" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "File System Usage %", + "title": "Swarp Space (GB)", "layout": { "column": 1, - "row": 4, - "width": 6, + "row": 7, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.SYSTEM.FILESYSTEM.USAGE) as 'Percentage Used' WHERE metricName = 'NR.SAP.SYSTEM.FILESYSTEM.USAGE' FACET HOST_NAME, OBJECT SINCE 1 hour ago LIMIT MAX" + "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) /1024 /1024/1024 WHERE KEY_FIGURE IN ('FREE_SWAP_SPACE', 'USED_SWAP_SPACE') FACET SYS_ID, KEY_FIGURE SINCE 15 minutes ago" } - ] - } - }, - { - "title": "Network Traffic (packets/sec)", + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Usage", "layout": { - "column": 7, - "row": 4, - "width": 6, + "column": 5, + "row": 7, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) WHERE KEY_FIGURE in ('CPU_CORES', 'CPU_THREADS') FACET entity.name, KEY_FIGURE SINCE 15 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU % Trend", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" }, "rawConfiguration": { "facet": { @@ -1327,37 +1386,820 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.NETWORK.INBOUND) AS 'Packets received', average(NR.SAP.SYSTEM.NETWORK.OUTBOUND) AS 'Packets transmitted' FACET HOST_NAME SINCE 1 hour ago TIMESERIES AUTO" + "query": "FROM Metric SELECT average(NR.SAP.HDB.METRICS) as CPU_Percent WHERE KEY_FIGURE = 'HOST_CPU' TIMESERIES AUTO SINCE 8 hours ago" } - ] + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Alerts", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_ALERT SELECT * SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Delta Merge Count", + "layout": { + "column": 1, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_DELTAMERGE SELECT count(*) FACET TYPE SINCE 1 day ago COMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Delta Merge Detail", + "layout": { + "column": 5, + "row": 14, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_DELTAMERGE SELECT HOST, PORT, SCHEMA_NAME, TABLE_NAME, PART_ID, TYPE, EXECUTION_TIME, MERGED_DELTA_RECORDS, MOTIVATION, ERROR_DESCRIPTION SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Column Store Tables", + "layout": { + "column": 1, + "row": 17, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_TOP_CS_TABLE SELECT latest(MEMORY_SIZE_IN_MAIN) /1024 /1024 /1024 AS 'MEMORY SIZE IN MAIN(GB)', latest(RECORD_COUNT) FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago LIMIT 15" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Column Store Tables Size Change", + "layout": { + "column": 5, + "row": 17, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago TIMESERIES 2 hours" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top Row Store Tables", + "layout": { + "column": 1, + "row": 20, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 120 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Row Store Tables Size Change", + "layout": { + "column": 5, + "row": 20, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago TIMESERIES 2 hours" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } } } ] }, { - "name": "Background Jobs", + "name": "Databases (Non HANA)", "description": null, "widgets": [ { - "title": "By System, Job Server Group, Instance", + "title": "DB Availability( (Percent)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(NR.SAP.DB.KPI.AVAILABLE) FACET entity.name SINCE 20 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 99 + }, + { + "alertSeverity": "CRITICAL", + "value": 95 + } + ] + } + }, + { + "title": "DB Availability Trend (Percent)", + "layout": { + "column": 5, + "row": 1, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.AVAILABLE) FACET entity.name TIMESERIES 5 minutes SINCE 1 day ago" + } + ], + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DB Size", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Used (GB)", + "precision": null, + "type": "decimal" + }, + { + "name": "DB Size(GB)", + "precision": null, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.SIZE)/1000 as `DB Size(GB)`, average(NR.SAP.DB.KPI.USED)/ 1000 as `Used (GB)`, average(NR.SAP.DB.KPI.USED)/average(NR.SAP.DB.KPI.SIZE) * 100 as `Percent Used` FACET entity.name SINCE 20 minutes ago" + } + ], + "thresholds": [] + } + }, + { + "title": "DB Space Usage", + "layout": { + "column": 5, + "row": 4, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.USED) / average(NR.SAP.DB.KPI.SIZE) * 100 as `DB Space Usage %` FACET entity.name TIMESERIES 5 minutes SINCE 1 day ago" + } + ], + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DB Response Time (ms)", + "layout": { + "column": 1, + "row": 7, + "width": 10, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.PROCESS) WHERE metricName= 'NR.SAP.SYSTEM.PROCESS' and KEY_FIGURE = 'DB Time' SINCE 1 day ago FACET SYS_ID TIMESERIES AUTO" + } + ], + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "HTTP/ODATA", + "description": null, + "widgets": [ + { + "title": "HTTP Status Overview ", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT filter(Count(*), WHERE STATUS_CODE LIKE '2%') AS '🟢 Success', filter(Count(*), WHERE STATUS_CODE LIKE '4%' OR STATUS_CODE LIKE '5%') AS '🔴 Error', filter(Count(*), WHERE STATUS_CODE LIKE '3%') AS '🟡 Redirect', average(`Call_Time(ms)`), average(`Execution_Time(ms)`) WHERE SAP_ETYPE ='HTTPDEST' FACET SYS_ID, PROTOCOL, DESTINATION , PATH SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HTTP Call Time", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT average(`Call_Time(ms)`) AS Call_Time WHERE SAP_ETYPE ='HTTPDEST' FACET name SINCE 1 day ago TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": " HTTP Call Details", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT name, PATH, SYS_ID, STATUS_CODE, STATUS_PHASE, `Call_Time(ms)`, `Execution_Time(ms)`, `Receive_Time(ms)`, `Data_Received(b)`, `Data_Send(b)`, INSTANCE,ROOT_CONTEXT_ID, TRANSACTION_ID,CONNECTION_ID WHERE SAP_ETYPE ='HTTPDEST' SINCE 1 day ago\r\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": " HTTP Errors", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Log select SYS_ID, CATEGORY, SUBCATEGORY, ERROR_CATEGORY, message, ERROR_CONTEXT WHERE ( message LIKE '%HTTP%' OR message LIKE '%http%' ) AND level = 'Error' SINCE 1 day ago" + } + ] + } + }, + { + "title": "ODATA Service Stats", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_ODATA_SERVICE SELECT count(*) as Num_of_calls, average(Processing_Time), average(Application_Time), average(SAP_GW_Backend_Overhead), average(Request_Size), average(Response_Size) FACET SYS_ID, Service_Name, User_Name, Entity_Type SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "OData Service Error", + "layout": { + "column": 1, + "row": 16, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_ODATA_SERVICE_ERROR SELECT SYS_ID, Message_ID, ERROR_TEXT, ERROR_COUNT, USERNAME, DESTINATION, REQUEST_URI, REQUEST_DATA, ERROR_COMPONENT, ERROR_CONTEXT,ERROR_PACKAGE, SOURCE_INCLUDE, SO, SOURCE_PROGRAM,SUBNO, EXPIRY_DATE, FIRST_DATE, FIRST_TIME, GW_SERVICE, LOCAL_DATE, LOCAL_TIME, LOCATION, LOG_LEVEL, T100_MSGID, T100_MSGNO, T100_MSGV2, T100_MSGV3 SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "RFCs", + "description": null, + "widgets": [ + { + "title": "RFC Volume by System - Pie", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "\r\nFROM Span SELECT count(*) AS RFC_Calls WHERE SAP_ETYPE ='RFCDEST' FACET SYS_ID SINCE 1 day ago\r\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "RFC Performance by Function Module(ms)", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT average(duration.ms) AS 'Average Calling Time' WHERE SAP_ETYPE ='RFCDEST' FACET FUNCTION_NAME SINCE 1 day ago\r\n" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "RFC Throughput by Destination (MB)", + "layout": { + "column": 1, + "row": 3, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT sum(`DATA_RECEIVE(b)`+ `DATA_SEND(b)`) / 1000000 AS 'Data Transmitted(MB)' WHERE SAP_ETYPE ='RFCDEST' FACET SYS_ID SINCE 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "RFC Performance by Destination(ms)", + "layout": { + "column": 6, + "row": 3, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Span SELECT average(duration.ms) AS 'Average Calling Time' WHERE SAP_ETYPE ='RFCDEST' WHERE DESTINATION NOT IN ('a_rfc', 'bgRFC', 'BGRFC_SUPER') FACET DESTINATION SINCE 1 day ago " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total tRFC Calls with SYSFAIL Error", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID, RFC_STATUS SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Trend - tRFC SYSFAIL Errors", + "layout": { + "column": 3, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID, RFC_STATUS SINCE 1 day ago TIMESERIES 10 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total tRFC Calls with CPIC Error", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_TRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Trend - tRFC CPIC Errors", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_TRFC_STATUS SELECT COUNT(*) WHERE RFC_STATUS = 'CPICERR' TIMESERIES 10 minutes FACET SYS_ID, RFC_STATUS SINCE 1 DAY AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total qRFC Calls with SYSFAIL Error", "layout": { "column": 1, - "row": 1, - "width": 6, - "height": 3 + "row": 7, + "width": 2, + "height": 2 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_JOB SELECT uniqueCount(JOB_NAME) as 'No. of Jobs' FACET SYS_ID, JobServerGroup, INSTANCE SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID SINCE 1 day ago COMPARE WITH 1 day ago" } ], "platformOptions": { @@ -1366,16 +2208,16 @@ } }, { - "title": "Num of Job Run by Time", + "title": "Trend - qRFC SYSFAIL Error", "layout": { - "column": 7, - "row": 1, - "width": 6, - "height": 3 + "column": 3, + "row": 7, + "width": 4, + "height": 2 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.stacked-bar" + "id": "viz.line" }, "rawConfiguration": { "facet": { @@ -1387,34 +2229,38 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_JOB SELECT count(*) as 'Num Job Run' SINCE 1 day ago TIMESERIES AUTO FACET SYS_ID, JobServerGroup, INSTANCE" + "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'SYSFAIL' FACET SYS_ID SINCE 1 day ago TIMESERIES 10 minutes" } ], "platformOptions": { "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } } }, { - "title": "Job Status Summary", + "title": "Total qRFC Calls with CPIC Error", "layout": { - "column": 1, - "row": 4, - "width": 6, - "height": 3 + "column": 7, + "row": 7, + "width": 2, + "height": 2 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_JOB SELECT count(*) as 'Num of Runs', average(Run_Time) as 'Avg Run Time(sec)', average(Wait_Time) as 'Avg Wait Time(sec)' FACET JOB_NAME SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago COMPARE WITH 1 day ago" } ], "platformOptions": { @@ -1423,12 +2269,12 @@ } }, { - "title": "Average Run Time & Wait Time(Sec)", + "title": "Trend - qRFC Calls with CPIC Error", "layout": { - "column": 7, - "row": 4, - "width": 6, - "height": 3 + "column": 9, + "row": 7, + "width": 4, + "height": 2 }, "linkedEntityGuids": null, "visualization": { @@ -1444,7 +2290,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_JOB SELECT average(Run_Time), average(Wait_Time) FACET SYS_ID, JobServerGroup, INSTANCE TIMESERIES AUTO SINCE 1 day ago" + "query": "FROM NR_SAP_QRFC_STATUS SELECT count(*) WHERE RFC_STATUS = 'CPICERR' FACET SYS_ID SINCE 1 day ago TIMESERIES 10 minutes" } ], "platformOptions": { @@ -1456,41 +2302,36 @@ } }, { - "title": "Background Work Process Usage", + "title": "TRFC Status", "layout": { "column": 1, - "row": 7, - "width": 4, + "row": 9, + "width": 12, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.WP.INFORMATION) WHERE metricName = 'NR.SAP.SYSTEM.WP.INFORMATION' and WP_TYPE in ('BTC') AND INSTANCE != 'TOTAL' SINCE 1 day ago FACET SYS_ID, WP_STATUS TIMESERIES AUTO " + "query": "FROM NR_SAP_TRFC_STATUS SELECT * SINCE 1 day ago LIMIT MAX" } - ], - "yAxisLeft": { - "zero": true - } + ] } }, { - "title": "Failed Jobs", + "title": "QRFC Status", "layout": { - "column": 5, - "row": 7, - "width": 8, + "column": 1, + "row": 12, + "width": 12, "height": 3 }, "linkedEntityGuids": null, @@ -1505,7 +2346,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Log SELECT SUBCATEGORY as Job, message, SYS_ID, INSTANCE, CLIENT WHERE CATEGORY = 'ABAP Aborted Jobs' SINCE 1 day ago" + "query": "FROM NR_SAP_QRFC_STATUS SELECT * SINCE 1 day ago LIMIT MAX" } ], "platformOptions": { @@ -1514,10 +2355,10 @@ } }, { - "title": "Critical Jobs", + "title": "RFC Transaction Detail", "layout": { "column": 1, - "row": 13, + "row": 15, "width": 12, "height": 3 }, @@ -1526,14 +2367,13 @@ "id": "viz.table" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_JOB SELECT JOB_NAME, SYS_ID, Wait_Time as 'Wait Time(sec)', Run_Time as 'Run Time(sec)', SCHEDULED_AT, STARTED_AT, ENDED_AT, Status SINCE 1 day ago LIMIT MAX" + "query": "FROM Span SELECT * WHERE SAP_ETYPE ='RFCDEST' SINCE 1 day ago" } ], "platformOptions": { @@ -1544,39 +2384,78 @@ ] }, { - "name": "Transactions", + "name": "IDOC Trends", "description": null, "widgets": [ { - "title": "Top 20 Transaction Response (ms)", + "title": "Inbound", "layout": { "column": 1, "row": 1, - "width": 3, - "height": 3 + "width": 6, + "height": 2 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.billboard" }, "rawConfiguration": { - "dataFormatters": [ + "dataFormatters": [], + "nrqlQueries": [ { - "name": "Max", - "type": "humanized" - }, + "accountId": 0, + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) AS 'Total Number Inbound', filter(uniqueCount(DOCNUM), WHERE STATUS_LIGHT = 'RED') AS 'Total Number Error' WHERE DIRECTION = 'INBOUND' SINCE 1 day ago COMPARE WITH 1 day ago" + } + ], + "thresholds": [] + } + }, + { + "title": "Outbound", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ { - "name": "Avg Response_Time", - "type": "humanized" + "accountId": 0, + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) AS 'Total Number Outbound', filter(uniqueCount(DOCNUM), WHERE STATUS_LIGHT = 'RED') AS 'Total Number Error' WHERE DIRECTION = 'OUTBOUND' SINCE 1 day ago COMPARE WITH 1 day ago" } ], + "thresholds": [] + } + }, + { + "title": "Total IDOCs - by Direction", + "layout": { + "column": 1, + "row": 3, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true + }, + "legend": { + "enabled": true }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) as 'Max', average(Response_Time) as 'Avg' SINCE 1 day ago FACET SAP_EID as 'Transaction' LIMIT 20" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET DIRECTION SINCE 1 day ago" } ], "platformOptions": { @@ -1585,11 +2464,11 @@ } }, { - "title": "Response Time Trend(ms)", + "title": "Trend - by Direction", "layout": { - "column": 4, - "row": 1, - "width": 3, + "column": 6, + "row": 3, + "width": 7, "height": 3 }, "linkedEntityGuids": null, @@ -1598,7 +2477,7 @@ }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true }, "legend": { "enabled": true @@ -1606,37 +2485,37 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago FACET Program TIMESERIES " + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET DIRECTION SINCE 7 days ago TIMESERIES 2 hours" } ], - "platformOptions": { - "ignoreTimeRange": false - }, "yAxisLeft": { "zero": true } } }, { - "title": "Max Response TIme(ms) by Transaction Type", + "title": "Total IDOCs - by Message Type", "layout": { - "column": 7, - "row": 1, - "width": 3, + "column": 1, + "row": 6, + "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.pie" }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true + }, + "legend": { + "enabled": true }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) SINCE 1 day ago FACET Task_Type_Name LIMIT MAX" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET MESSAGE_TYPE SINCE 1 day ago" } ], "platformOptions": { @@ -1645,47 +2524,50 @@ } }, { - "title": "Max Response TIme(ms) by Business Process", + "title": "Trend - by Message Type", "layout": { - "column": 10, - "row": 1, - "width": 3, + "column": 6, + "row": 6, + "width": 7, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.line" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT max(Response_Time) FACET BUSIPROC_0001 SINCE 1 day ago" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET MESSAGE_TYPE, MESSAGE_TYPE_DESCRIPTION SINCE 7 days ago TIMESERIES 2 hours" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } }, { - "title": "HTTP Response Time(ms)", + "title": "Total IDOCs - by Partner", "layout": { "column": 1, - "row": 4, - "width": 3, - "height": 4 + "row": 9, + "width": 5, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.pie" }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true }, "legend": { "enabled": true @@ -1693,24 +2575,21 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago WHERE Task_Type in ('65','66') FACET CASES (WHERE Task_Type = '65' AS 'HTTP', WHERE Task_Type = '66' AS 'HTTPS') TIMESERIES AUTO" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET PRN_DESC SINCE 1 day ago" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "RFC Response Time(ms)", + "title": "Trend - by Partner", "layout": { - "column": 4, - "row": 4, - "width": 3, - "height": 4 + "column": 6, + "row": 9, + "width": 7, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -1726,24 +2605,51 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT average(Response_Time) SINCE 1 day ago WHERE Task_Type in ('FE') FACET CASES (WHERE Task_Type = 'FE' AS 'RFC') TIMESERIES AUTO" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) FACET PRN_DESC SINCE 7 days ago TIMESERIES 2 hours" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Error Trend -by Direction", + "layout": { + "column": 1, + "row": 12, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET DIRECTION TIMESERIES 1 hour" + } + ], "yAxisLeft": { "zero": true } } }, { - "title": "Average Wait Time (ms)", + "title": "Error Trend -by Message Type", "layout": { "column": 7, - "row": 4, - "width": 3, - "height": 4 + "row": 12, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -1759,24 +2665,21 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT average(Wait_Time) SINCE 1 day ago FACET Program TIMESERIES AUTO" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET MESSAGE_TYPE,MESSAGE_TYPE_DESCRIPTION TIMESERIES 1 hour" } ], - "platformOptions": { - "ignoreTimeRange": false - }, "yAxisLeft": { "zero": true } } }, { - "title": "Number of Calls", + "title": "Average Processing Time - by Direction", "layout": { - "column": 10, - "row": 4, - "width": 3, - "height": 4 + "column": 1, + "row": 15, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { @@ -1792,7 +2695,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT count(*) SINCE 1 day ago FACET Program TIMESERIES AUTO" + "query": "FROM NR_SAP_IDOC SELECT average(`Processing_Time(S)`) WHERE `Processing_Time(S)` IS NOT NULL SINCE 2 days ago FACET DIRECTION TIMESERIES AUTO" } ], "yAxisLeft": { @@ -1801,44 +2704,47 @@ } }, { - "title": "Transaction Detail", + "title": "Max Processing Time - by Direction", "layout": { - "column": 1, - "row": 8, - "width": 12, - "height": 4 + "column": 7, + "row": 15, + "width": 6, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.line" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_PROGRAM SELECT SAP_EID, T_Code, Task_Type_Name, Response_Time, Process_Time, Wait_Time, Roll_Wait_Time, CPU_Time, GUI_Net_Time, GUI_Time, DB_Time, User, Terminal_ID, BUSIPROC_0001 as 'Business Process', BUSIFUNC_0001 as 'Business Function' SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_IDOC SELECT max(`Processing_Time(S)`) WHERE `Processing_Time(S)` IS NOT NULL SINCE 2 days ago FACET DIRECTION TIMESERIES AUTO" } ], - "platformOptions": { - "ignoreTimeRange": false + "yAxisLeft": { + "zero": true } } } ] }, { - "name": "Web Services", + "name": "IDOC Resolution", "description": null, "widgets": [ { - "title": "Count by Status", + "title": "Error Distribution - by Direction", "layout": { "column": 1, "row": 1, - "width": 4, + "width": 5, "height": 3 }, "linkedEntityGuids": null, @@ -1847,7 +2753,7 @@ }, "rawConfiguration": { "facet": { - "showOtherSeries": true + "showOtherSeries": false }, "legend": { "enabled": true @@ -1855,7 +2761,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET SYS_ID, STATUS_GROUP" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 day ago FACET DIRECTION" } ], "platformOptions": { @@ -1864,28 +2770,25 @@ } }, { - "title": "Count by Processing Status", + "title": "Error Distribution - by Status", "layout": { - "column": 5, + "column": 6, "row": 1, - "width": 4, - "height": 3 + "width": 7, + "height": 9 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.pie" + "id": "viz.bar" }, "rawConfiguration": { "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true + "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET SYS_ID, Processing_Status " + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET STATUS, STATUS_DESCRIPTION" } ], "platformOptions": { @@ -1894,25 +2797,28 @@ } }, { - "title": "Count by Interface", + "title": "Error Distribution - by Message Type", "layout": { - "column": 9, - "row": 1, - "width": 2, + "column": 1, + "row": 4, + "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.pie" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET Interface" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET MESSAGE_TYPE" } ], "platformOptions": { @@ -1921,25 +2827,28 @@ } }, { - "title": "Count by Adapter Type", + "title": "Error Distribution - by Partner", "layout": { - "column": 11, - "row": 1, - "width": 2, + "column": 1, + "row": 7, + "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.bar" + "id": "viz.pie" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET Adapter_Type" + "query": "FROM NR_SAP_IDOC SELECT uniqueCount(DOCNUM) WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago FACET PRN" } ], "platformOptions": { @@ -1948,58 +2857,59 @@ } }, { - "title": "Total Time (ms)", + "title": "IDOC in Error", "layout": { "column": 1, - "row": 4, - "width": 6, - "height": 3 + "row": 10, + "width": 12, + "height": 5 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { + "dataFormatters": [], "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT average(TOTAL_TIME) as 'Total Time' SINCE 1 day ago LIMIT MAX TIMESERIES AUTO" + "query": "FROM NR_SAP_IDOC SELECT DOCNUM, STATUS, STATUS_DESCRIPTION, STATUS_TEXT, STATUS_GROUP, DIRECTION, MESSAGE_TYPE, MESSAGE_TYPE_DESCRIPTION, OUTPUT_MODE, RECEIVER_PARTNER_NUMBER, RECEIVER_PARTNER_TYPE, RECEIVER_PORT, SENDER_PARTNER_NUMBER, SENDER_PARTNER_TYPE, SENDER_PORT, MAX_IDOC_SEGMENT_NUMBER, APP WHERE STATUS_LIGHT = 'RED' SINCE 1 days ago LIMIT MAX" } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true - } + ] } - }, + } + ] + }, + { + "name": "Web Services", + "description": null, + "widgets": [ { - "title": "Error Infomation", + "title": "Count by Status", "layout": { - "column": 7, - "row": 4, - "width": 6, + "column": 1, + "row": 1, + "width": 4, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.pie" }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true + }, + "legend": { + "enabled": true }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT SYS_ID, Error_ID, Error_Information, Message_Status, Processing_Status, STATUS_GROUP WHERE STATUS_GROUP = 'ERROR' SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET SYS_ID, STATUS_GROUP" } ], "platformOptions": { @@ -2008,188 +2918,173 @@ } }, { - "title": "Message Details", + "title": "Count by Processing Status", "layout": { - "column": 1, - "row": 7, - "width": 12, - "height": 6 + "column": 5, + "row": 1, + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.table" + "id": "viz.pie" }, "rawConfiguration": { "facet": { - "showOtherSeries": false + "showOtherSeries": true + }, + "legend": { + "enabled": true }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT SYS_ID, Interface, Message_Size, Message_Status, Processing_Status, Location, Queue_Name, Adapter_Type, Communication_Type, Persistency_Type, TOTAL_TIME, Message_ID, Client, Error_ID,Error_Information, Execution_Date, Execution_Time, Expiry_Date,Root_Context_ID,Transaction_ID,Receiver_Interface_Name,Receiver_Interface_Namespace, Receiver_Operation,Sender_Interface_Name,Sender_Interface_Namespace, Sender_Operation,Sender_Party, User, Changed_by SINCE 1 day ago LIMIT MAX" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET SYS_ID, Processing_Status " } ], "platformOptions": { "ignoreTimeRange": false } } - } - ] - }, - { - "name": "Databases", - "description": null, - "widgets": [ + }, { - "title": "DB Availability( (Percent)", + "title": "Count by Interface", "layout": { - "column": 1, + "column": 9, "row": 1, - "width": 4, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.bar" }, "rawConfiguration": { - "dataFormatters": [], "facet": { "showOtherSeries": false }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.DB.KPI.AVAILABLE) FACET entity.name SINCE 20 minutes ago" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET Interface" } ], - "thresholds": [] + "platformOptions": { + "ignoreTimeRange": false + } } }, { - "title": "DB Availability Trend (Percent)", + "title": "Count by Adapter Type", "layout": { - "column": 5, + "column": 11, "row": 1, - "width": 6, + "width": 2, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.bar" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.AVAILABLE) FACET entity.name TIMESERIES 5 minutes SINCE 1 day ago" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT count(*) SINCE 1 day ago FACET Adapter_Type" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "DB Size", + "title": "Total Time (ms)", "layout": { "column": 1, "row": 4, - "width": 4, + "width": 6, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { - "dataFormatters": [ - { - "name": "Used (GB)", - "precision": null, - "type": "decimal" - }, - { - "name": "DB Size(GB)", - "precision": null, - "type": "decimal" - } - ], "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.SIZE)/1000 as `DB Size(GB)`, average(NR.SAP.DB.KPI.USED)/ 1000 as `Used (GB)`, average(NR.SAP.DB.KPI.USED)/average(NR.SAP.DB.KPI.SIZE) * 100 as `Percent Used` FACET entity.name SINCE 20 minutes ago" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT average(TOTAL_TIME) as 'Total Time' SINCE 1 day ago LIMIT MAX TIMESERIES AUTO" } ], - "thresholds": [] + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } } }, { - "title": "DB Space Usage", + "title": "Error Infomation", "layout": { - "column": 5, + "column": 7, "row": 4, "width": 6, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.DB.KPI.USED) / average(NR.SAP.DB.KPI.SIZE) * 100 as `DB Space Usage %` FACET entity.name TIMESERIES 5 minutes SINCE 1 day ago" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT SYS_ID, Error_ID, Error_Information, Message_Status, Processing_Status, STATUS_GROUP WHERE STATUS_GROUP = 'ERROR' SINCE 1 day ago LIMIT MAX" } - ], - "yAxisLeft": { - "zero": true + ], + "platformOptions": { + "ignoreTimeRange": false } } }, { - "title": "DB Response Time (ms)", + "title": "Message Details", "layout": { "column": 1, "row": 7, - "width": 10, - "height": 3 + "width": 12, + "height": 6 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.line" + "id": "viz.table" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.SYSTEM.PROCESS) WHERE metricName= 'NR.SAP.SYSTEM.PROCESS' and KEY_FIGURE = 'DB Time' SINCE 1 day ago FACET SYS_ID TIMESERIES AUTO" + "query": "FROM NR_SAP_INTEGRATION_SERVICE SELECT SYS_ID, Interface, Message_Size, Message_Status, Processing_Status, Location, Queue_Name, Adapter_Type, Communication_Type, Persistency_Type, TOTAL_TIME, Message_ID, Client, Error_ID,Error_Information, Execution_Date, Execution_Time, Expiry_Date,Root_Context_ID,Transaction_ID,Receiver_Interface_Name,Receiver_Interface_Namespace, Receiver_Operation,Sender_Interface_Name,Sender_Interface_Namespace, Sender_Operation,Sender_Party, User, Changed_by SINCE 1 day ago LIMIT MAX" } ], - "yAxisLeft": { - "zero": true + "platformOptions": { + "ignoreTimeRange": false } } } @@ -2535,74 +3430,20 @@ ] }, { - "name": "HANA", + "name": "HANA Replication", "description": null, "widgets": [ { - "title": "Memory Usage - Instance (GB)", + "title": "Replication Latest Status Summary", "layout": { "column": 1, "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) /1024 /1024 /1024 WHERE KEY_FIGURE IN ('INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE', 'INSTANCE_TOTAL_MEMORY_USED_SIZE','INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE') FACET SYS_ID, CASES (WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE' AS 'Total Allocated', WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_USED_SIZE' AS 'Used', WHERE KEY_FIGURE = 'INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE' AS 'Peak Used') SINCE 15 minutes ago COMPARE WITH 1 day ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Physical Memory-Tenant(GB)", - "layout": { - "column": 5, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS)/1024/1024/1024 WHERE KEY_FIGURE in ('FREE_PHYSICAL_MEMORY', 'USED_PHYSICAL_MEMORY') FACET SYS_ID, CASES (WHERE KEY_FIGURE = 'FREE_PHYSICAL_MEMORY' AS 'Free Physical Memory', WHERE KEY_FIGURE = 'USED_PHYSICAL_MEMORY' AS 'Used Physical Memory') COMPARE WITH 1 day ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Space Usage (GB)", - "layout": { - "column": 9, - "row": 1, - "width": 4, + "width": 12, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.table" }, "rawConfiguration": { "facet": { @@ -2611,7 +3452,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) WHERE KEY_FIGURE IN ('LOG','TRACE', 'DATA') FACET SYS_ID, KEY_FIGURE SINCE 15 minutes ago" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT latest(REPLICATION_MODE),latest(REPLICATION_STATUS), latest(SECONDARY_ACTIVE_STATUS), latest(SECONDARY_FULLY_RECOVERABLE), latest(REPLICATION_STATUS_DETAILS), latest(HOST), latest(PORT), latest(SITE_NAME), latest(SECONDARY_HOST), latest(SECONDARY_PORT), latest(SECONDARY_SITE_NAME) FACET SITE_ID, SECONDARY_SITE_ID, VOLUME_ID SINCE 1 days ago" } ], "platformOptions": { @@ -2620,65 +3461,44 @@ } }, { - "title": "Swarp Space (GB)", + "title": "Log Replication Lagging", "layout": { "column": 1, "row": 4, - "width": 4, + "width": 6, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) /1024 /1024/1024 WHERE KEY_FIGURE IN ('FREE_SWAP_SPACE', 'USED_SWAP_SPACE') FACET SYS_ID, KEY_FIGURE SINCE 15 minutes ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "CPU Usage", - "layout": { - "column": 5, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false + "legend": { + "enabled": true }, "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT latest(NR.SAP.HDB.METRICS) WHERE KEY_FIGURE in ('CPU_CORES', 'CPU_THREADS') FACET entity.name, KEY_FIGURE SINCE 15 minutes ago" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT (latest(LAST_LOG_POSITION) - latest(SHIPPED_LOG_POSITION)) as 'Lagging Log Position', latest(SHIPPED_LOG_POSITION) - latest(REPLAYED_LOG_POSITION) AS 'Lagging Log Replayed' FACET SITE_NAME, VOLUME_ID, SECONDARY_SITE_NAME SINCE 1 day ago TIMESERIES 5 minutes" } ], "platformOptions": { "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true } } }, { - "title": "CPU % Trend", + "title": "Savepoint Version Last - Shipped", "layout": { - "column": 9, + "column": 7, "row": 4, - "width": 4, + "width": 6, "height": 3 }, "linkedEntityGuids": null, @@ -2695,7 +3515,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric SELECT average(NR.SAP.HDB.METRICS) as CPU_Percent WHERE KEY_FIGURE = 'HOST_CPU' TIMESERIES AUTO SINCE 8 hours ago" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT latest(LAST_SAVEPOINT_VERSION) - latest(SHIPPED_SAVEPOINT_VERSION) SINCE 1 day ago TIMESERIES 5 minutes" } ], "platformOptions": { @@ -2707,65 +3527,11 @@ } }, { - "title": "Alerts", + "title": "Log Shipping", "layout": { "column": 1, "row": 7, "width": 12, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM NR_SAP_HDB_ALERT SELECT * SINCE 1 day ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Delta Merge Count", - "layout": { - "column": 1, - "row": 11, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM NR_SAP_HDB_DELTAMERGE SELECT count(*) FACET TYPE SINCE 1 day ago COMPARE WITH 1 day ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Delta Merge Detail", - "layout": { - "column": 5, - "row": 11, - "width": 8, "height": 3 }, "linkedEntityGuids": null, @@ -2779,7 +3545,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_HDB_DELTAMERGE SELECT HOST, PORT, SCHEMA_NAME, TABLE_NAME, PART_ID, TYPE, EXECUTION_TIME, MERGED_DELTA_RECORDS, MOTIVATION, ERROR_DESCRIPTION SINCE 1 day ago" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT SITE_ID, SECONDARY_SITE_ID, VOLUME_ID,LAST_LOG_POSITION_TIME,LAST_LOG_POSITION, SHIPPED_LOG_POSITION_TIME,SHIPPED_LOG_POSITION, REPLAYED_LOG_POSITION_TIME, REPLAYED_LOG_POSITION_TIME, REPLAYED_LOG_POSITION,SHIPPED_LOG_BUFFERS_DURATION SINCE 1 days ago LIMIT MAX" } ], "platformOptions": { @@ -2788,11 +3554,11 @@ } }, { - "title": "Top Column Store Tables", + "title": "Savepoint Shipping", "layout": { "column": 1, - "row": 14, - "width": 4, + "row": 10, + "width": 12, "height": 3 }, "linkedEntityGuids": null, @@ -2806,53 +3572,20 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_HDB_TOP_CS_TABLE SELECT latest(MEMORY_SIZE_IN_MAIN) /1024 /1024 /1024 AS 'MEMORY SIZE IN MAIN(GB)', latest(RECORD_COUNT) FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago LIMIT 15" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Top Column Store Tables Size Change", - "layout": { - "column": 5, - "row": 14, - "width": 8, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago TIMESERIES 2 hours" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT SITE_NAME, VOLUME_ID, LAST_SAVEPOINT_VERSION, SHIPPED_SAVEPOINT_VERSION,LAST_SAVEPOINT_START_TIME,SHIPPED_SAVEPOINT_START_TIME,LAST_SAVEPOINT_LOG_POSITION, SHIPPED_SAVEPOINT_LOG_POSITION SINCE 1 days ago" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "Top Row Store Tables", + "title": "Full Replica Shipping", "layout": { "column": 1, - "row": 17, - "width": 4, + "row": 13, + "width": 12, "height": 3 }, "linkedEntityGuids": null, @@ -2866,44 +3599,11 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 120 minutes ago" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Top Row Store Tables Size Change", - "layout": { - "column": 5, - "row": 17, - "width": 8, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM NR_SAP_HDB_TOP_RS_TABLE SELECT latest(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) /1024 /1024 /1024 AS 'ALLOCATED_SIZE(GB)' FACET TABLE_NAME, SCHEMA_NAME, HOST, PORT SINCE 1 day ago TIMESERIES 2 hours" + "query": "FROM NR_SAP_HDB_REPLICATION SELECT latest(SHIPPED_FULL_REPLICA_COUNT),latest(SHIPPED_FULL_REPLICA_SIZE),latest(SHIPPED_FULL_REPLICA_DURATION),latest(SHIPPED_LAST_FULL_REPLICA_SIZE) FACET SITE_ID, SECONDARY_SITE_ID, VOLUME_ID, SHIPPED_LAST_FULL_REPLICA_START_TIME, SHIPPED_LAST_FULL_REPLICA_END_TIME SINCE 1 days ago" } ], "platformOptions": { "ignoreTimeRange": false - }, - "yAxisLeft": { - "zero": true } } } diff --git a/dashboards/nvidia-dcgm/nvidia-dcgm.json b/dashboards/nvidia-dcgm/nvidia-dcgm.json new file mode 100644 index 0000000000..b42d477172 --- /dev/null +++ b/dashboards/nvidia-dcgm/nvidia-dcgm.json @@ -0,0 +1,246 @@ +{ + "name": "NVIDIA-DCGM", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![NVIDIA DCGM](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/nvidia-dcgm/logo.png)" + } + }, + { + "title": "GPU Temperature ", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(DCGM_FI_DEV_GPU_TEMP ) AS 'gpu temperature' FROM Metric WHERE metricName LIKE 'DCGM_FI_DEV_GPU_TEMP' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "CELSIUS" + } + } + }, + { + "title": "Power usage(%)", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(DCGM_FI_DEV_POWER_USAGE) AS 'usage' FROM Metric WHERE metricName LIKE 'DCGM_FI_DEV_POWER_USAGE' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total NVLink bandwidth", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL) AS 'nvlink bandwidth' FROM Metric WHERE metricName like 'DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=4cf414ad-0a50-9fae-84b8-1925fbb2ebfb).\n\nInstrument NVIDIA DCGM with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-dcgm-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=nvidia-dcgm) here and let us know how we can improve it for you." + } + }, + { + "title": "Clocks(MHz)", + "layout": { + "column": 3, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(DCGM_FI_DEV_MEM_CLOCK) AS 'MEM Clock', latest(DCGM_FI_DEV_SM_CLOCK) AS 'SM Clock' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Framebuffer free (bytes)", + "layout": { + "column": 8, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(DCGM_FI_DEV_FB_FREE) AS 'Free', latest(DCGM_FI_DEV_FB_USED) AS 'Used' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "XID errors", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(DCGM_FI_DEV_XID_ERRORS) AS 'errors' FROM Metric WHERE metricName like 'DCGM_FI_DEV_XID_ERRORS'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "GPU utilisation ", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(DCGM_FI_DEV_GPU_UTIL) AS 'gpu utilisation' FROM Metric WHERE metricName LIKE 'DCGM_FI_DEV_GPU_UTIL'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/nvidia-dcgm/nvidia-dcgm01.png b/dashboards/nvidia-dcgm/nvidia-dcgm01.png new file mode 100644 index 0000000000..8b9b404a6f Binary files /dev/null and b/dashboards/nvidia-dcgm/nvidia-dcgm01.png differ diff --git a/dashboards/nvidia-gpu/nvidia-gpu.json b/dashboards/nvidia-gpu/nvidia-gpu.json new file mode 100644 index 0000000000..1960651000 --- /dev/null +++ b/dashboards/nvidia-gpu/nvidia-gpu.json @@ -0,0 +1,190 @@ +{ + "name": "Nvidia GPU Monitoring", + "description": null, + "pages": [ + { + "name": "Nvidia GPU Monitoring", + "description": null, + "widgets": [ + { + "visualization": { + "id": "viz.markdown" + }, + "layout": { + "column": 1, + "row": 1, + "height": 1, + "width": 4 + }, + "title": "", + "rawConfiguration": { + "text": "[![NVIDIA SMI](https://logos-download.com/wp-content/uploads/2016/10/Nvidia_logo.png)](https://developer.nvidia.com/nvidia-system-management-interface)\n" + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 5, + "row": 1, + "height": 3, + "width": 2 + }, + "title": "Current Clock Speeds", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(clocks.current.memory.MHz) as 'Memory MHz', latest(clocks.current.graphics.MHz) as 'Graphics MHz', latest(clocks.current.video.MHz) as 'Video MHz', latest(clocks.current.sm.MHz) as 'SM MHz' " + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 7, + "row": 1, + "height": 3, + "width": 6 + }, + "title": "Current Clock MHz", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(clocks.current.memory.MHz) as 'Memory MHz', latest(clocks.current.graphics.MHz) as 'Graphics MHz', latest(clocks.current.video.MHz) as 'Video MHz', latest(clocks.current.sm.MHz) as 'SM MHz' TIMESERIES" + } + ], + "yAxisLeft": { + "zero": true + } + } + }, + { + "visualization": { + "id": "viz.bar" + }, + "layout": { + "column": 1, + "row": 2, + "height": 2, + "width": 4 + }, + "title": "Select GPU", + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(name) FACET pci.device_id, hostname " + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 1, + "row": 4, + "height": 3, + "width": 2 + }, + "title": "Temps", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(temperature.gpu) as 'GPU Temp', latest(temperature.memory) as 'Memory Temp', latest(fan.speed.percent) as 'Fan speed %'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 3, + "row": 4, + "height": 3, + "width": 2 + }, + "title": "Power Usage", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(power.draw.watts) as 'Power Draw Watts', latest(`power.limit.watts`) as 'Power Limit Watts', latest(power.draw.watts)/latest(`power.limit.watts`) * 100 as 'Power usage %'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 5, + "row": 4, + "height": 3, + "width": 2 + }, + "title": "Memory Usage", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(memory.free.MiB) as 'Memory Free MiB', latest(memory.used.MiB) as 'Memory Used MiB', latest(memory.total.MiB) as 'Memory Total MiB'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 7, + "row": 4, + "height": 3, + "width": 6 + }, + "title": "Utilization", + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 123, + "query": "FROM NvidiaGpuSample SELECT latest(memory.used.MiB/memory.total.MiB) * 100 as 'Memory Used %', latest(utilization.gpu.percent) as 'GPU Utilization %', latest(power.draw.watts)/latest(`power.limit.watts`)*100 as 'Power Usage %', latest(fan.speed.percent) as 'Fan Speed %' TIMESERIES" + } + ], + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ] + } \ No newline at end of file diff --git a/dashboards/nvidia-gpu/nvidia-gpu.png b/dashboards/nvidia-gpu/nvidia-gpu.png new file mode 100644 index 0000000000..0eb50a6864 Binary files /dev/null and b/dashboards/nvidia-gpu/nvidia-gpu.png differ diff --git a/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.json b/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.json new file mode 100644 index 0000000000..bc261a2575 --- /dev/null +++ b/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.json @@ -0,0 +1,5334 @@ +{ + "name": "CX - Retail user journey", + "description": "Customer experience quality foundation - retail user journey", + "pages": [ + { + "name": "All Pages", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# All Pages\n\n" + } + }, + { + "title": "Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT count(*) WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "thresholds": [] + } + }, + { + "title": "Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' FACET deviceType SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' FACET countryCode SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "Requests per session", + "layout": { + "column": 3, + "row": 3, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest SELECT count(*) / uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 8, + "row": 3, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT count(*) / uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Availability\n## All Pages" + } + }, + { + "title": "Failed Synthetic Checks - Verify availability", + "layout": { + "column": 3, + "row": 5, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM SyntheticCheck SELECT percentage(count(*),WHERE result = 'FAILED') WHERE monitorName LIKE '%' SINCE 1 WEEK AGO " + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.05 + } + ] + } + }, + { + "title": "Failed Synthetic Checks - Verify All Pages", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM SyntheticCheck select percentage(count(*),WHERE result = 'FAILED') WHERE monitorName LIKE '%' SINCE 1 WEEK AGO " + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.05 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## All Pages\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## All Pages\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## All Pages" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## All Pages" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 13, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## All Pages" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## All Pages" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 15, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Home", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Home\n\n" + } + }, + { + "title": "Home vs Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentage(count(*), WHERE appName LIKE '%' AND pageUrl LIKE '%home%') AS '% of Page Views' WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Home Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%home%' FACET deviceType SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Home Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%home%' FACET countryCode SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User progression", + "layout": { + "column": 3, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT funnel(session, WHERE pageUrl LIKE '%home%' AS 'Home', WHERE pageUrl LIKE '%browse%' AS 'Browse') FROM PageView WHERE appName LIKE '%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per session", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest select count(*)/uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%home%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select count(*)/uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%home%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## Home\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## Home\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## Home" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## Home" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## Home" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## Home" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%home%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Browse", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Browse\n\n" + } + }, + { + "title": "Browse vs Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentage(count(*), WHERE appName LIKE '%' AND pageUrl LIKE '%browse%') AS '% of Page Views' WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browse Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' FACET deviceType SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Browse Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' FACET countryCode SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User progression", + "layout": { + "column": 3, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT funnel(session, WHERE pageUrl LIKE '%browse%' AS 'Browse', WHERE pageUrl LIKE '%product%' AS 'Product') FROM PageView WHERE appName LIKE '%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select count(*) / uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests per session", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest select count(*) / uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## Browse\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## Browse\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## Browses" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## Browse" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## Browse" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## Browse" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%browse%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Product", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Product\n\n" + } + }, + { + "title": "Product vs Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentage(count(*), WHERE appName LIKE '%' AND pageUrl LIKE '%product%') AS '% of Page Views' WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "thresholds": [] + } + }, + { + "title": "Product Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%product%' FACET deviceType SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "Product Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%product%' FACET countryCode SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "User progression", + "layout": { + "column": 3, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT funnel(session, WHERE pageUrl LIKE '%product%' AS 'Product', WHERE pageUrl LIKE '%cart%' AS 'Cart') FROM PageView WHERE appName LIKE '%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per session", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest select count(*) / uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%product%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select count(*) / uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%product%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## Product\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## Product\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## Product" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## Product" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## Product" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## Product" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%product%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Cart", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Cart\n\n" + } + }, + { + "title": "Cart vs Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT percentage(count(*), WHERE appName LIKE '%' AND pageUrl LIKE '%cart%') AS '% of Page Views' WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' FACET deviceType SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cart Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' FACET countryCode SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User progression", + "layout": { + "column": 3, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT funnel(session, WHERE pageUrl LIKE '%cart%' AS 'Cart', WHERE pageUrl LIKE '%checkout%' AS 'Checkout') FROM PageView WHERE appName LIKE '%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select count(*) / uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Requests per session", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest select count(*) / uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## Cart\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## Cart\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## Carts" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## Cart" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## Cart" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## Cart" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%cart%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Checkout", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Checkout\n\n" + } + }, + { + "title": "Checkout vs Total Page Views", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentage(count(*), WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%') AS '% of Page Views' WHERE appName LIKE '%' SINCE 1 WEEK AGO COMPARE WITH 1 WEEK AGO" + } + ], + "thresholds": [] + } + }, + { + "title": "Checkout Page Views by Device Type", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' FACET deviceType SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "Checkout Page Views by Country", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT count(*) FROM PageView WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' FACET countryCode SINCE 1 WEEK AGO" + } + ] + } + }, + { + "title": "User progression", + "layout": { + "column": 3, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.funnel" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT funnel(session, WHERE pageUrl LIKE '%checkout%' AS 'Checkout', WHERE pageUrl LIKE '%confirm%' AS 'Complete') FROM PageView WHERE appName LIKE '%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Requests per session", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM AjaxRequest select count(*) / uniqueCount(session) AS RequestsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Page views per session", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView select count(*) / uniqueCount(session) AS PageViewsPerSession WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' SINCE 1 week ago TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Desktop\n## Checkout\n" + } + }, + { + "title": "Time to first byte (Desktop)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Desktop)", + "layout": { + "column": 5, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Desktop)", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Desktop)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Page View Performance - Mobile web, other\n## Checkout\n" + } + }, + { + "title": "Time to first byte (Mobile, other)", + "layout": { + "column": 3, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageView SELECT percentile(backendDuration, 75) AS 'TTFB' WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Cumulative Layout Shift (Mobile, other)", + "layout": { + "column": 5, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(cumulativeLayoutShift, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.1 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.25 + } + ] + } + }, + { + "title": "Largest Contentful Paint (Mobile, other)", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(largestContentfulPaint, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 4 + } + ] + } + }, + { + "title": "First Input Delay (Mobile, other)", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM PageViewTiming SELECT percentile(firstInputDelay, 75) WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100 + }, + { + "alertSeverity": "CRITICAL", + "value": 300 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Desktop\n## Checkout" + } + }, + { + "title": "Duration", + "layout": { + "column": 3, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses", + "layout": { + "column": 9, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses", + "layout": { + "column": 11, + "row": 9, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AJAX Request Performance - Mobile, other\n## Checkout" + } + }, + { + "title": "Duration (Mobile, other)", + "layout": { + "column": 3, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentile(timeToSettle, 75) AS 'Time to Settle' WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 2 + }, + { + "alertSeverity": "CRITICAL", + "value": 2.5 + } + ] + } + }, + { + "title": "4xx Responses (Mobile, other)", + "layout": { + "column": 9, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 400 AND httpResponseCode < 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "5xx Responses (Mobile, other)", + "layout": { + "column": 11, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM AjaxRequest SELECT percentage(count(*), WHERE httpResponseCode >= 500) WHERE httpResponseCode >= 200 AND appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.01 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.03 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Desktop\n## Checkout" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 3, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 5, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType = 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Javascript Error Rate - Mobile, other\n## Checkout" + } + }, + { + "title": "JSErrors/PageView", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(errorClass)/count(backendDuration) AS 'Javascript Errors/PageView' FROM JavaScriptError, PageView WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.05 + }, + { + "alertSeverity": "CRITICAL", + "value": 0.1 + } + ] + } + }, + { + "title": "Sessions with JS Errors", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) AS 'Sessions with JavaScriptErrors' FROM JavaScriptError WHERE appName LIKE '%' AND pageUrl LIKE '%checkout%' AND deviceType != 'Desktop' SINCE 1 WEEK AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.png b/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.png new file mode 100644 index 0000000000..7bea509da2 Binary files /dev/null and b/dashboards/om-qf-retail-user-journey/om-qf-retail-user-journey.png differ diff --git a/dashboards/openai/openai-dashboard-screenshot.png b/dashboards/openai/openai-dashboard-screenshot.png deleted file mode 100644 index c706d5b681..0000000000 Binary files a/dashboards/openai/openai-dashboard-screenshot.png and /dev/null differ diff --git a/dashboards/openstack-controller/openstack-controller.json b/dashboards/openstack-controller/openstack-controller.json new file mode 100644 index 0000000000..50bc087a04 --- /dev/null +++ b/dashboards/openstack-controller/openstack-controller.json @@ -0,0 +1,1650 @@ +{ + "name": "Openstack Controller", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Openstack Controller](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/openstack-controller/logo.png)" + } + }, + { + "title": "Openstack events", + "layout": { + "column": 3, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select count(*) from OSBlockStorageSample, OSHypervisorSample, OSLimitSample, OSNetworkSample, OSServerSample facet eventType() LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Projects", + "layout": { + "column": 7, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.project.name`) from OSBlockStorageSample, OSHypervisorSample, OSLimitSample, OSNetworkSample, OSServerSample facet `openstack.project.name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Domains", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.domain.id`) from OSNetworkSample facet `openstack.domain.id`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=96ef40d3-95de-189c-b44b-845e5ed3663b).\n\nInstrument Openstack Controller with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/openstack-controller-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=OpenstackController) here and let us know how we can improve it for you." + } + }, + { + "title": "Networks", + "layout": { + "column": 3, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.neutron.network.name`) from OSNetworkSample facet `openstack.neutron.network.name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load average", + "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": "select average(loadAverageOneMinute), average(loadAverageFiveMinute), average(loadAverageFifteenMinute) from SystemSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total networks", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.neutron.network.id`) as 'Networks' from OSNetworkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Block Storage ", + "description": null, + "widgets": [ + { + "title": "Openstack projects", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM OSBlockStorageSample FACET openstack.project.name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Domains", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.domain.id`) as Domain from OSBlockStorageSample facet `openstack.domain.id`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Block storage backup", + "layout": { + "column": 7, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.cinder.limits.maxTotalBackups) AS 'Max total backups', latest(openstack.cinder.limits.totalBackupsUsed) AS 'Total backups used' FROM OSBlockStorageSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cinder volume", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.cinder.volumes.size) AS 'volume size',count(openstack.cinder.volumes.count) as 'volume count' FROM OSBlockStorageSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cinder snapshots", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.cinder.snapshots.size) AS 'Snapshots Size', latest(openstack.cinder.snapshots.count) AS 'Snapshots Count' FROM OSBlockStorageSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Volumes", + "layout": { + "column": 3, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.cinder.limits.maxTotalVolumes) AS 'Max', latest(openstack.cinder.limits.totalVolumesUsed) AS 'Used' FROM OSBlockStorageSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Snapshots", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.cinder.limits.maxTotalSnapshots) AS 'Total', latest(openstack.cinder.limits.totalSnapshotsUsed) AS 'Used' FROM OSBlockStorageSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Snapshot count", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select max(`openstack.cinder.snapshots.count`) as 'Snapshots' from OSBlockStorageSample facet `openstack.project.name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Image", + "description": null, + "widgets": [ + { + "title": "Image status", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.glance.image.status) AS '' FROM OSImageSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Protected", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.glance.image.protected) AS '' FROM OSImageSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Minimum RAM (MB)", + "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": "SELECT latest(openstack.glance.image.min_ram) FROM OSImageSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average image size(MB)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(openstack.glance.image.size) FROM OSImageSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + } + } + }, + { + "title": "Minimum disk size needed(GB)", + "layout": { + "column": 1, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.glance.image.min_disk) FROM OSImageSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Image details ", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniques(openstack.glance.image.file), uniques(openstack.glance.image.id), uniques(openstack.glance.image.name),uniques(openstack.glance.image.owner_specified.openstack.object), uniques(openstack.glance.image.schema) FROM OSImageSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk format", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM OSImageSample FACET openstack.glance.image.disk_format" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Keystone", + "description": null, + "widgets": [ + { + "title": "Project count", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.projects_count) FROM OSKeystoneSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Services", + "layout": { + "column": 4, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.services_count) FROM OSKeystoneSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Identity groups count", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.groups_count) from OSKeystoneSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Regions count", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.regions_count) FROM OSKeystoneSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Identity floating IP(s)", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.floatingips_count) FROM OSKeystoneSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Identity roles", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.roles_count) FROM OSKeystoneSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Security group ", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.security_groups_count) FROM OSKeystoneSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Routers", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.identity.routers_count) FROM OSKeystoneSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Subnets", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(openstack.identity.subnets_count) AS 'subnets' FROM OSKeystoneSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Limits", + "description": null, + "widgets": [ + { + "title": "Image meta", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(openstack.nova.limits.maxImageMeta) FROM OSLimitSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total RAM(GB)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.nova.limits.maxTotalRAMSize)/1000 AS 'RAM Size',latest(openstack.nova.limits.totalRAMUsed)/1000 AS 'RAM Used' FROM OSLimitSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Instance", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.nova.limits.maxTotalInstances) AS 'Total Instance', latest(openstack.nova.limits.totalInstancesUsed) AS 'Used Instance' FROM OSLimitSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Floating IP(s)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.nova.limits.maxTotalFloatingIps) AS 'Total', latest(openstack.nova.limits.totalFloatingIpsUsed) AS 'Used' FROM OSLimitSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cores", + "layout": { + "column": 5, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.nova.limits.maxTotalCores) AS 'Total', latest(openstack.nova.limits.totalCoresUsed) as 'Used' FROM OSLimitSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Key pairs", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(openstack.nova.limits.maxTotalKeypairs) FROM OSLimitSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Security groups", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.nova.limits.maxSecurityGroups) as 'Max', latest(openstack.nova.limits.totalSecurityGroupsUsed) as 'Used' from OSLimitSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Network", + "description": null, + "widgets": [ + { + "title": "Networks", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(`openstack.neutron.network.name`) from OSNetworkSample facet `openstack.neutron.network.name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network status", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select latest(`openstack.neutron.network.status`) from OSNetworkSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of networks", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.neutron.network.id`) as 'Network Count' from OSNetworkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network domains", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select uniqueCount(`openstack.domain.id`) as Domain from OSNetworkSample facet `openstack.domain.id`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network default", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.neutron.network.is_default) from OSNetworkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network creation and updated time", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`openstack.neutron.network.created_at`) as 'Created Date/Time', latest(openstack.neutron.network.updated_at) AS 'Updated Date/Time' from OSNetworkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network tenant ID", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.neutron.network.tenant_id) FROM OSNetworkSample FACET openstack.neutron.network.name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Admin state up", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`openstack.neutron.network.admin_state_up`) as 'Admin State Up' from OSNetworkSample facet `openstack.neutron.network.name`" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Segmentation ID", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`openstack.neutron.network.provider:segmentation_id`) AS 'Segmentation ID' from OSNetworkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Maximum transmission units (MTU's)", + "layout": { + "column": 3, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "select average(`openstack.neutron.network.mtu`) from OSNetworkSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Network revision number", + "layout": { + "column": 6, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`openstack.neutron.network.revision_number`) from OSNetworkSample FACET openstack.neutron.network.name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network description", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.neutron.network.description) from OSNetworkSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Nova", + "description": null, + "widgets": [ + { + "title": "Average services", + "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(openstack.compute.services_count) FROM OSNovaSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Key pairs", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(openstack.compute.keypairs_count) FROM OSNovaSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Flavors", + "layout": { + "column": 7, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(openstack.compute.flavors_count) FROM OSNovaSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Aggregates", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(openstack.compute.aggregates_count) FROM OSNovaSample " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + } + }, + { + "title": "Logs", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log WHERE logtype IN ({{log_type}})" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "log_type", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 1 month ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/openstack-controller/openstack-controller01.png b/dashboards/openstack-controller/openstack-controller01.png new file mode 100644 index 0000000000..bf35d68d03 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller01.png differ diff --git a/dashboards/openstack-controller/openstack-controller02.png b/dashboards/openstack-controller/openstack-controller02.png new file mode 100644 index 0000000000..45062c4cc0 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller02.png differ diff --git a/dashboards/openstack-controller/openstack-controller03.png b/dashboards/openstack-controller/openstack-controller03.png new file mode 100644 index 0000000000..77f4a100e0 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller03.png differ diff --git a/dashboards/openstack-controller/openstack-controller04.png b/dashboards/openstack-controller/openstack-controller04.png new file mode 100644 index 0000000000..ddd6477a05 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller04.png differ diff --git a/dashboards/openstack-controller/openstack-controller05.png b/dashboards/openstack-controller/openstack-controller05.png new file mode 100644 index 0000000000..5edc365c2f Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller05.png differ diff --git a/dashboards/openstack-controller/openstack-controller06.png b/dashboards/openstack-controller/openstack-controller06.png new file mode 100644 index 0000000000..72521f73fd Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller06.png differ diff --git a/dashboards/openstack-controller/openstack-controller07.png b/dashboards/openstack-controller/openstack-controller07.png new file mode 100644 index 0000000000..7237d52a43 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller07.png differ diff --git a/dashboards/openstack-controller/openstack-controller08.png b/dashboards/openstack-controller/openstack-controller08.png new file mode 100644 index 0000000000..ac7267e548 Binary files /dev/null and b/dashboards/openstack-controller/openstack-controller08.png differ diff --git a/dashboards/postfix/postfix.json b/dashboards/postfix/postfix.json new file mode 100644 index 0000000000..8dba40f06e --- /dev/null +++ b/dashboards/postfix/postfix.json @@ -0,0 +1,1553 @@ +{ + "name": "Postfix", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Postfix logo](https://github.com/newrelic/newrelic-quickstarts/blob/main/quickstarts/postfix/logo.png?raw=true)" + } + }, + { + "title": "", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(if(host='running','Up','Down')) as 'Server status' FROM (select latest(hostStatus) as 'host' FROM SystemSample WHERE entityName = {{ hostname }})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Postfix Service Status", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(if(status='1','Up','Down')) as 'Postfix Service Status' FROM (SELECT latest(value) as 'status' FROM PostfixUp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection Lost(%)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Connection Timed Out (%)", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(PostfixSMTPDconnectionLost.value) * 100) / (SELECT latest(value) as 'Total Connections' FROM PostfixSMTPDconnection) AS '(%) SMTPD connection lost' FROM PostfixSMTPDconnectionLost" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection Lost (%)", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Connection Lost (%)", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(PostfixSMTPDtimedOut.value) * 100) / (SELECT latest(value) as 'Total Connections' FROM PostfixSMTPDconnection) AS '(%) SMTPD connection timed out' FROM PostfixSMTPDtimedOut" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'bounced non-delivery notification' FROM PostfixBounceNondeliveryNotification" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Overview", + "layout": { + "column": 3, + "row": 2, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(metricValue) FROM PostfixGrandTotals FACET message" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) AS 'SASL authentication failed' FROM PostfixSASLauthFailed" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Removed from Mail Queue", + "layout": { + "column": 11, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Rvalue) as 'message(s) removed from mailq' FROM PostfixMessageRemovedFromMailQ" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=a0095d6c-1452-1081-3565-31bcf371c00f)\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Postfix documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/postfix-monitoring-integration) to instrument Postfix.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Postfix) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Bytes Received Vs Delivered", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(metricValue) FROM PostfixMessageBytes FACET messageBytes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recent Outages", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#58e30d", + "seriesName": "Postfix Up" + }, + { + "color": "#e70d0d", + "seriesName": "Postfix Down" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PostfixUp.value) as 'Postfix Up', latest(PostfixDown.value) as 'Postfix Down' FROM PostfixUp, PostfixDown TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SASL Authentication Failed", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#c93636", + "seriesName": "Smtp Authfailed Count" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM PostfixSASLauthFailed TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bounced Non-Delivery Notification", + "layout": { + "column": 7, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#cb2525", + "seriesName": "Value" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM PostfixBounceNondeliveryNotification TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Held", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) AS 'Held - Temporarily suspended messages from delivery.' FROM PostfixHeldMessage TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Message Traffic Report", + "description": null, + "widgets": [ + { + "title": "Message Per-Day Traffic Summary", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(received), latest(delivered),latest(deferred), latest(bounced), latest(rejected) from PostfixMessageTrafficPerDay FACET date" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message Per-Hour Report - (GMT-08:00) Pacific Time (US & Canada)", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(received.perhour) As 'Received', latest(delivered.perhour) As 'Delivered', latest(deferred.perhour) As 'Deferred', latest(bounced.perhour) As 'Bounced',latest(rejected.perhour) As 'Rejected' FROM PostfixMessagePerHourReport LIMIT 25 facet time AS 'Hours' order by average(timestamp)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Email Delivery Process", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Step 1 : \n#### Pick up Process" + } + }, + { + "title": "", + "layout": { + "column": 2, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 3, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Step 2 : \n#### Clean up Process" + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Step 3 : \n#### Message(s) Inserted into Mail Queue" + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 8, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Step 4 : \n#### Message(s) Handled by the SMTP Process" + } + }, + { + "title": "", + "layout": { + "column": 10, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Arrow](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "#### Step 5 : \n#### Message(s) Removed from Mail Queue" + } + }, + { + "title": "Step 1 : Pick up Process", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PICKUPvalue) AS 'Pickup process to ensure timely delivery of email messages.' FROM PostfixEmailDeliveryProcess TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Step 2 : Clean up Process", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(CLEANUPvalue) AS 'Emails are sanitized by analyzing the headers, content, and attachments before passing to the next level.' FROM PostfixEmailDeliveryProcess TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Queue Monitoring\nMonitoring the Postfix mail queue involves keeping a close check on it and scanning for any anomalies or deviations. There are several ways to track delivery, including looking at the queue size, mail delivery logs, the state of the delivery process, and the server's resources." + } + }, + { + "title": "Step 3 : Message(s) Inserted into Mail Queue", + "layout": { + "column": 1, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Ivalue) AS 'Temporary storage where emails are stored until they can be processed/delivered.' FROM PostfixMessageInsertedinMailQ TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Step 4 : Message(s) Handled by the SMTP Process", + "layout": { + "column": 6, + "row": 6, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(BOUNCEDmsg) AS 'Bounced',latest(SENTmsg) AS 'Sent', latest(DEFERREDmsg) AS 'Deferred' FROM PostfixMessageHandledBySMTP" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Step 5 : Message(s) Removed from Mail Queue", + "layout": { + "column": 8, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Rvalue) AS 'After the message(s) are processed or delivered, they can be removed from the queue.' FROM PostfixMessageRemovedFromMailQ TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Header Info", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Sender(s) and Recipient(s) with Host(s)/Domain(s)\nFind detailed insights about headers that convey important information about the email’s origin and destination." + } + }, + { + "title": "Message Delivery Host/Domain", + "layout": { + "column": 1, + "row": 2, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sentCount), latest(bytesDelivered), latest(defers), latest(avgDaily), latest(maxDaily) FROM PostfixHostSummary FACET host" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recipients by Message Count", + "layout": { + "column": 8, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(recipient.msgCount) FROM PostfixSenderRecipientMessageCount FACET recipients" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Messages Received Host/Domain", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(msgCount) as 'Messages Received', latest(bytesReceived) FROM PostfixHostSummary FACET hostDetail" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Senders by Message Count", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sender.msgCount) FROM PostfixSenderRecipientMessageCount FACET senders" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Logs - Errors & Warnings\n\nPostfix provides robust logging capabilities, allowing administrators to track and monitor email traffic, diagnose issues, and ensure smooth mail delivery." + } + }, + { + "title": "Logs (Select your appropriate log variable)", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT message FROM Log where logtype = {{logtype}} LIMIT MAX" + } + ] + } + }, + { + "title": "Top Errors (Overall)", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Fatal.msgCount) AS 'Message Count', latest(fatalMessage) AS 'Error Message(s)' FROM PostfixErrorMessage " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 5, + "width": 6, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "### Daemon Messages with Number of Occurrences\nA daemon is a background process that runs continuously to perform specific tasks & activities for Postfix service." + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(daemon.msgCount) as 'Daemon Messages' FROM PostfixDaemonMessage FACET daemonMessage" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message Bounce Details", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Bounce.msgCount), latest(bounceMessage) FROM PostfixBounceMessage" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Warnings (Overall)", + "layout": { + "column": 7, + "row": 8, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(Warning.msgCount) FROM PostfixWarningMessage FACET warningMessage" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message Deferral Details", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(deferral.msgCount) from PostfixDeferralMessage FACET deferralMessage" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Connections", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Connection(s) with Postfix Service\nConnection event are logged if other mail services connect to or disconnect from the Postfix service." + } + }, + { + "title": "SMTPD Connection(s)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Total Connections' FROM PostfixSMTPDconnection TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMTPD Disconnection(s)", + "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(value) as 'Total Disconnections' FROM PostfixSMTPDdisconnection TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection(s)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PostfixSMTPDtimedOut.value) AS 'Connection(s) Timed Out', latest(PostfixSMTPDconnectionLost.value) AS 'Connection(s) Lost' FROM PostfixSMTPDtimedOut, PostfixSMTPDconnectionLost TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMTP Connection(s)", + "layout": { + "column": 1, + "row": 5, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) AS 'Total connections' FROM PostfixSMTPconnection TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMTP Disconnection(s)", + "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": "SELECT latest(value) AS 'Total Disconnections' FROM PostfixSMTPdisconnection TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Infrastructure Monitoring", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Infrastructure Monitoring\n\nUse New Relic infrastructure agent to track host-related information in real time. Whether it is operating on dedicated servers, in the cloud, or in containers, the full infrastructure can be observed." + } + }, + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(host.cpuPercent) AS 'CPU Usage (%)', latest(host.cpuIdlePercent) AS 'CPU Idle (%)' WHERE host.hostname = {{hostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "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": "FROM Metric SELECT latest(host.memoryUsedPercent) AS 'Memory Used (%)', latest(host.memoryFreePercent) AS 'Memory Free (%)' WHERE host.hostname = {{hostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(host.disk.usedPercent) AS 'Storage Used (%)', latest(host.disk.freePercent) AS 'Storage Free (%)' WHERE host.hostname = {{hostname}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "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 WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Average", + "layout": { + "column": 4, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric WHERE host.hostname = {{hostname}} TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "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 WHERE host.hostname = {{hostname}} FACET processId, processDisplayName ORDER BY cpuPercent asc LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "hostname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entity.name) FROM Metric since 2 weeks ago" + }, + "title": "Select your host", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "logtype", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 3 months ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/postfix/postfix01.png b/dashboards/postfix/postfix01.png new file mode 100644 index 0000000000..f96a1121d4 Binary files /dev/null and b/dashboards/postfix/postfix01.png differ diff --git a/dashboards/postfix/postfix02.png b/dashboards/postfix/postfix02.png new file mode 100644 index 0000000000..99f2e227de Binary files /dev/null and b/dashboards/postfix/postfix02.png differ diff --git a/dashboards/postfix/postfix03.png b/dashboards/postfix/postfix03.png new file mode 100644 index 0000000000..ed28f7fb47 Binary files /dev/null and b/dashboards/postfix/postfix03.png differ diff --git a/dashboards/postfix/postfix04.png b/dashboards/postfix/postfix04.png new file mode 100644 index 0000000000..96b8902117 Binary files /dev/null and b/dashboards/postfix/postfix04.png differ diff --git a/dashboards/postfix/postfix05.png b/dashboards/postfix/postfix05.png new file mode 100644 index 0000000000..8c193dc7a2 Binary files /dev/null and b/dashboards/postfix/postfix05.png differ diff --git a/dashboards/postfix/postfix06.png b/dashboards/postfix/postfix06.png new file mode 100644 index 0000000000..cfc9bb1624 Binary files /dev/null and b/dashboards/postfix/postfix06.png differ diff --git a/dashboards/postfix/postfix07.png b/dashboards/postfix/postfix07.png new file mode 100644 index 0000000000..1aeec411cf Binary files /dev/null and b/dashboards/postfix/postfix07.png differ diff --git a/dashboards/postfix/postfix08.png b/dashboards/postfix/postfix08.png new file mode 100644 index 0000000000..da7a16c9e4 Binary files /dev/null and b/dashboards/postfix/postfix08.png differ diff --git a/dashboards/public-api-performance/public-api-performance.json b/dashboards/public-api-performance/public-api-performance.json deleted file mode 100644 index 695bb256ab..0000000000 --- a/dashboards/public-api-performance/public-api-performance.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "name": "Public Api Performance", - "description": "", - "pages": [ - { - "name": "Public Api Performance", - "description": null, - "widgets": [ - { - "title": "99th Percentile Response Time by Domain (sec)", - "layout": { - "column": 1, - "row": 1, - "width": 5, - "height": 11 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.bar" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT percentile(duration, 99) as 'response time' FACET api LIMIT 100" - } - ] - } - }, - { - "title": "Median Latency by Endpoint (sec)", - "layout": { - "column": 6, - "row": 1, - "width": 4, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT percentile(duration, 50) FACET http.url TIMESERIES " - } - ] - } - }, - { - "title": "", - "layout": { - "column": 10, - "row": 1, - "width": 3, - "height": 11 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "# Public API Calls\n---\nThis dashboard shows **real-world latencies** experienced by an anonymized sampling of New Relic customers when accessing popular public APIs. \n\nYou can filter the dasboard to a specific domain by selecting it in the bar chart on the left-hand side or by adding a filter using the filter bar at the top.\n\nTo view or customize the queries powering these charts, select \"*View query*\" or \"*Edit*\" from the chart actions drop-down menu. You can add additional charts to this dashboard by using the \"*+*\".\n\nYou can also explore this data further in the [data explorer](https://one.newrelic.com/launcher/dashboards.launcher?launcher=eyJ0aW1lUmFuZ2UiOnsiYmVnaW5fdGltZSI6bnVsbCwiZW5kX3RpbWUiOm51bGwsImR1cmF0aW9uIjpudWxsfSwiJGlzRmFsbGJhY2tUaW1lUmFuZ2UiOnRydWV9&pane=eyJuZXJkbGV0SWQiOiJkYXNoYm9hcmRzLmRhc2hib2FyZCIsImVudGl0eUlkIjoiTVh4V1NWcDhSRUZUU0VKUFFWSkVmR1JoT2pRd01qazQiLCJmZWF0dXJlRmxhZ3MiOnsiTlIxL2Rhc2hib2FyZHNfX2FkZF93aWRnZXRfc2xpZGVvdXRfZW5hYmxlZCI6dHJ1ZSwiTlIxL2Rhc2hib2FyZHNfX2Rhc2hjb3dfY3VkIjpmYWxzZSwiTlIxL2Rhc2hib2FyZHNfX2Rhc2hjb3dfcmVhZCI6dHJ1ZSwiTlIxL2Rhc2hib2FyZHNfX21xX2pzb25fZWRpdG9yIjpmYWxzZSwiTlIxL2Rhc2hib2FyZHNfX3BhZ2luYXRlZF9kYXNoYm9hcmRzX2N1ZCI6dHJ1ZSwiTlIxL3dhbmRhX2luc2lnaHRzX19tdWx0aV9xdWVyeSI6ZmFsc2V9LCJpc1RlbXBsYXRlRW1wdHkiOmZhbHNlLCJzZWxlY3RlZFBhZ2UiOiJNWHhXU1ZwOFJFRlRTRUpQUVZKRWZERXlOREF5TnpjIn0=&overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmVyLmV4cGxvcmVyIiwid29ya3NwYWNlIjp7ImRhdGFUeXBlIjoiZXZlbnQiLCJjaGFydFR5cGUiOiJMSU5FIiwiYWNjb3VudElkIjoxLCJxdWVyeSI6eyJzZWxlY3QiOnsiYXR0cmlidXRlIjoiZHVyYXRpb24iLCJhZ2dyZWdhdG9yIjoiYXZlcmFnZSJ9LCJmaWx0ZXJzIjpbXSwiZXZlbnRUeXBlIjoiUHVibGljX0FQSUNhbGwiLCJmYWNldCI6ImFwaSIsImxpbWl0IjpudWxsfSwidGltZVJhbmdlIjp7ImR1cmF0aW9uIjoxODAwMDAwfX19).\n\n\n\n### Useful Links and Documentation\n * Details on [New Relic Global Performance Datasets](https://docs.newrelic.com/)\n * Introduction to [New Relic One Dashboards](https://docs.newrelic.com/docs/dashboards/new-relic-one-dashboards/get-started/introduction-new-relic-one-dashboards)\n * Introduction to the [New Relic Query Language (NRQL)](https://docs.newrelic.com/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql)\n " - } - }, - { - "title": "50th & 99th Percentile Latencies by Domain (sec)", - "layout": { - "column": 6, - "row": 5, - "width": 4, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT percentile(duration, 50,99) as 'latency' FACET api TIMESERIES " - } - ] - } - }, - { - "title": "Latency by HTTP Request Method", - "layout": { - "column": 6, - "row": 9, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.heatmap" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT histogram(duration) FACET http.method" - } - ] - } - } - ] - }, - { - "name": "AWS APIs", - "description": null, - "widgets": [ - { - "title": "Number of Regions API is Called From", - "layout": { - "column": 1, - "row": 1, - "width": 3, - "height": 5 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT uniqueCount(awsRegion) AS 'AWS Regions' WHERE api='amazonaws.com' FACET awsAPI AS 'AWS API'" - } - ] - } - }, - { - "title": "99th Percentile Latency by AWS API (sec)", - "layout": { - "column": 4, - "row": 1, - "width": 6, - "height": 5 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT percentile(duration, 99) WHERE api='amazonaws.com' TIMESERIES FACET awsAPI " - } - ] - } - }, - { - "title": "", - "layout": { - "column": 10, - "row": 1, - "width": 3, - "height": 10 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "# AWS API Calls\n---\nThis dashboard shows **real-world latencies** experienced by an anonymized sampling of New Relic customers when accessing AWS APIs. \n\nYou can filter the dasboard to a specific API or Region by selecting it in one of the tables on the left or by adding a filter using the filter bar at the top.\n\nTo view or customize the queries powering these charts, select \"*View query*\" or \"*Edit*\" in the chart actions drop-down menu. You can add additional charts to this dashboard by using the \"*+*\".\n\nYou can also explore this data further in the [data explorer](https://one.newrelic.com/launcher/nr1-core.home?pane=eyJuZXJkbGV0SWQiOiJucjEtY29yZS5ob21lLXNjcmVlbiJ9&overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmVyLmV4cGxvcmVyIiwid29ya3NwYWNlIjp7ImRhdGFUeXBlIjoiZXZlbnQiLCJjaGFydFR5cGUiOiJMSU5FIiwiYWNjb3VudElkIjoyNzMwNzkxLCJxdWVyeSI6eyJzZWxlY3QiOnsiYXR0cmlidXRlIjoiZHVyYXRpb24iLCJhZ2dyZWdhdG9yIjoiYXZlcmFnZSJ9LCJmaWx0ZXJzIjpbeyJhdHRyaWJ1dGUiOiJhcGkiLCJ2YWx1ZSI6ImFtYXpvbmF3cy5jb20ifV0sImV2ZW50VHlwZSI6IlB1YmxpY19BUElDYWxsIiwiZmFjZXQiOiJhd3NBUEkiLCJsaW1pdCI6bnVsbH0sInRpbWVSYW5nZSI6eyJkdXJhdGlvbiI6MTgwMDAwMH19fQ==)." - } - }, - { - "title": "Number of APIs Used by Region", - "layout": { - "column": 1, - "row": 6, - "width": 3, - "height": 5 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT uniqueCount(awsAPI) AS 'API Count' WHERE api='amazonaws.com' FACET awsRegion" - } - ] - } - }, - { - "title": "99th Percentile Latency by Region (sec)", - "layout": { - "column": 4, - "row": 6, - "width": 6, - "height": 5 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "nrqlQueries": [ - { - "accountId": 0, - "query": "FROM Public_APICall SELECT percentile(duration, 99) WHERE api='amazonaws.com' TIMESERIES FACET awsRegion " - } - ] - } - } - ] - } - ] - } \ No newline at end of file diff --git a/dashboards/public-api-performance/public-api-performance1.png b/dashboards/public-api-performance/public-api-performance1.png deleted file mode 100644 index 6db457952b..0000000000 Binary files a/dashboards/public-api-performance/public-api-performance1.png and /dev/null differ diff --git a/dashboards/public-api-performance/public-api-performance2.png b/dashboards/public-api-performance/public-api-performance2.png deleted file mode 100644 index eb78f135b8..0000000000 Binary files a/dashboards/public-api-performance/public-api-performance2.png and /dev/null differ diff --git a/dashboards/redis-otel/redis-otel.json b/dashboards/redis-otel/redis-otel.json new file mode 100644 index 0000000000..49cca1369b --- /dev/null +++ b/dashboards/redis-otel/redis-otel.json @@ -0,0 +1,612 @@ +{ + "name": "Redis OTel", + "description": null, + "pages": [ + { + "name": "Redis OTel", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Redis logo](https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Logo-redis.svg/300px-Logo-redis.svg.png?20210820223643)\n\n### Overview\n[Redis](https://redis.io/) is an in-memory data structure store, used as a database, cache, and message broker. Redis allows you to achieve high performance by keeping your data in memory, but also offers durability options. Its support for a variety of data structures, such as strings, hashes, sets, and lists, has made Redis a versatile tool suitable for a vast number of use cases.\n\n- - -\n### About this Dashboard\n\n- For information on the prerequisites for this dashboard, please visit the documentation [here](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redis/redis-integration/).\n- For more information on how to send Redis telemetry data to New Relic using OTEL, visit the documentation [here](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-redis).\n" + } + }, + { + "title": "Commands per second", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(redis.commands.processed), 1 second) AS 'Commands with rate' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Clients connected", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.clients.connected) WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Clients blocked", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.clients.blocked) WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory used", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.memory.used) as 'Bytes' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Input bytes per second", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(redis.net.input), 1 second) AS 'Input bytes per second' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Output bytes per second", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(redis.net.output), 1 second) AS 'Output bytes per second' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Overview", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Max clients connected", + "type": null + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric \nSELECT\nrate(sum(redis.commands.processed), 1 second) AS 'Commands per second',\naverage(redis.clients.connected) AS 'Clients connected',\naverage(redis.clients.blocked) AS 'Clients blocked',\naverage(redis.memory.used) as 'Memory used', \naverage(redis.connections.received) AS 'Connections received',\naverage(redis.connections.rejected) AS 'Connections rejected'\nWHERE server.address IN ({{server.address}})\ncompare with 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU time by state per second", + "layout": { + "column": 4, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT rate(sum(redis.cpu.time), 1 second) AS 'CPU time' WHERE server.address IN ({{server.address}}) FACET server.address,state TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connections received", + "layout": { + "column": 7, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.connections.received) AS 'Received' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connections rejected", + "layout": { + "column": 10, + "row": 7, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.connections.rejected) AS 'Rejected' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Keyspaces hits", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT (average(redis.keyspace.misses) + average(redis.keyspace.hits))/average(redis.keyspace.hits) AS 'Rate', average(redis.keyspace.hits) AS 'Hits', average(redis.keyspace.misses) AS 'Misses' WHERE server.address IN ({{server.address}}) compare with 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Expired keys", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.keys.expired) AS 'Expired' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Evicted keys", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.key.evicted) AS 'Evicted' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Keys per DB", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.db.keys) AS 'Total', \naverage(redis.db.expires) AS 'With expiration',\naverage(redis.db.avg_ttl) AS 'Average TTL'\nWHERE server.address IN ({{server.address}})\nFACET server.address AS 'Instance', db AS 'Database'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Keyspace misses", + "layout": { + "column": 5, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.keyspace.misses) AS 'Misses' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Keys", + "layout": { + "column": 9, + "row": 13, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.db.keys) AS 'Keys' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Keyspace hits", + "layout": { + "column": 5, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.keyspace.hits) AS 'Hits' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Changes since last save", + "layout": { + "column": 9, + "row": 16, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(redis.rdb.changes_since_last_save) AS 'RDB changes' WHERE server.address IN ({{server.address}}) FACET server.address TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "server.address", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "7.0.12" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(server.address) LIMIT MAX" + }, + "title": "Server address", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/redis-otel/redis-otel.png b/dashboards/redis-otel/redis-otel.png new file mode 100644 index 0000000000..8aa8ab9f98 Binary files /dev/null and b/dashboards/redis-otel/redis-otel.png differ diff --git a/dashboards/sendmail/sendmail.json b/dashboards/sendmail/sendmail.json new file mode 100644 index 0000000000..fa5ef28136 --- /dev/null +++ b/dashboards/sendmail/sendmail.json @@ -0,0 +1,889 @@ +{ + "name": "Sendmail", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![logo](https://github.com/newrelic/newrelic-quickstarts/blob/main/quickstarts/sendmail/logo.png?raw=true)" + } + }, + { + "title": "", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(if(host = 'running', 'Up', 'Down')) as 'Server status' FROM (select latest(hostStatus) as 'host' FROM SystemSample WHERE entityName IN ({{hostname}}))" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0.9 + } + ] + } + }, + { + "title": "Sendmail Service Status", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Sendmail service status' FROM SendmailUp" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0.9 + } + ] + } + }, + { + "title": "Message Undelivered (%)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Message Not Accepted for Delivery (%)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT 100 - ((latest(SendmailMessageAcceptedForDelivery.value)) / latest(SendmailMessageStatus.sent)) * 100 as '(%) message undelivered' from SendmailMessageStatus, SendmailMessageAcceptedForDelivery" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 5 + }, + { + "alertSeverity": "WARNING", + "value": 3 + } + ] + } + }, + { + "title": "Select your host variable - High Memory (%)", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS '(%) high memory' FROM Metric WHERE host.hostname IN ({{hostname}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 95 + }, + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "Total Errors Logged", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'errors logged' FROM SendmailErrorCount" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "Recent Outages", + "layout": { + "column": 3, + "row": 2, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#46d214", + "seriesName": "Sendmail Up" + }, + { + "color": "#cd1b0e", + "seriesName": "Sendmail Down" + } + ] + }, + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(SendmailUp.value) as 'Sendmail Up', latest(SendmailDown.value) as 'Sendmail Down' FROM SendmailUp, SendmailDown TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connection Time out", + "layout": { + "column": 8, + "row": 2, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Connection Time out' FROM SendmailConnectionTimeOut TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=06d45c23-4742-51f3-49fe-d5d51e9f7174)\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Sendmail documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sendmail-monitoring-integration) to instrument Sendmail.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Sendmail) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Message(s) Sent", + "layout": { + "column": 1, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sent) as 'Sent' FROM SendmailMessageStatus TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Accepted for Delivery", + "layout": { + "column": 5, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Message Accepted' FROM SendmailMessageAcceptedForDelivery TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Failed", + "layout": { + "column": 9, + "row": 6, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Number of message held in user folder' FROM SendmailHeldMessage TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Errors\n\nSendmail log error messages help you understand why a message wasn't sent successfully." + } + }, + { + "title": "Error : Host Not Found", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) as 'Error : Host Not Found' FROM SendmailHostNotFound TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SMTP Service Unreachable", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM SendmailSMTPserviceUnreachable TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Message(s) Deferred", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(deferred) FROM SendmailMessageStatus TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Header Info", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Sender(s) and Recipient(s) with Host(s)/Domain(s)\nFind detailed insights about headers that convey important information about the email’s origin and destination." + } + }, + { + "title": "Recipient Host/Domain", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(hostCount.total) FROM SendmailRecipientsHostname facet hostname.total" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Recipients with Message Count", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(msgCount.total) FROM SendmailRecipientsbyMessageCount facet recipients.total" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sender Host/Domain", + "layout": { + "column": 7, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(hostCount.total) FROM SendmailSendersHostname FACET hostname.total" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Senders with Message Count", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(msg.total) FROM SendmailSendersbyMessageCount FACET senders.total" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Logs (Select your appropriate log variable)\n\nSendmail provides robust logging capabilities, allowing administrators to track and monitor email traffic, diagnose issues, and ensure smooth mail delivery." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT message FROM Log where logtype IN ({{logtype}}) LIMIT MAX" + } + ] + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Infrastructure Monitoring\n\nUse New Relic infrastructure agent to track host-related information in real time. Whether it is operating on dedicated servers, in the cloud, or in containers, the full infrastructure can be observed." + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.disk.usedPercent) AS 'Storage Used (%)', latest(host.disk.freePercent) AS 'Storage Free (%)' FROM Metric WHERE host.hostname IN ({{hostname}}) TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Usage (%)", + "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(host.cpuPercent) AS 'CPU Usage (%)', latest(host.cpuIdlePercent) AS 'CPU Idle (%)' FROM Metric WHERE host.hostname IN ({{hostname}}) TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.memoryUsedPercent) AS 'Memory Used (%)', latest(host.memoryFreePercent) AS 'Memory Free (%)' FROM Metric WHERE host.hostname IN ({{hostname}}) TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network traffic", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "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 WHERE host.hostname IN ({{hostname}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Average", + "layout": { + "column": 4, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric WHERE host.hostname IN ({{hostname}}) TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "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 WHERE host.hostname IN ({{hostname}}) FACET processId, processDisplayName ORDER BY cpuPercent asc LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [ + { + "name": "hostname", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entity.name) FROM Metric since 1 week ago" + }, + "title": "Select your host", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "logtype", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 2 months ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/sendmail/sendmail01.png b/dashboards/sendmail/sendmail01.png new file mode 100644 index 0000000000..019ca56f53 Binary files /dev/null and b/dashboards/sendmail/sendmail01.png differ diff --git a/dashboards/sendmail/sendmail02.png b/dashboards/sendmail/sendmail02.png new file mode 100644 index 0000000000..470c1675af Binary files /dev/null and b/dashboards/sendmail/sendmail02.png differ diff --git a/dashboards/sendmail/sendmail03.png b/dashboards/sendmail/sendmail03.png new file mode 100644 index 0000000000..d5e1b71b19 Binary files /dev/null and b/dashboards/sendmail/sendmail03.png differ diff --git a/dashboards/sendmail/sendmail04.png b/dashboards/sendmail/sendmail04.png new file mode 100644 index 0000000000..0cc88770d6 Binary files /dev/null and b/dashboards/sendmail/sendmail04.png differ diff --git a/dashboards/sendmail/sendmail05.png b/dashboards/sendmail/sendmail05.png new file mode 100644 index 0000000000..baf2e8d6cd Binary files /dev/null and b/dashboards/sendmail/sendmail05.png 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-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-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-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-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 new file mode 100644 index 0000000000..9b8103a82c --- /dev/null +++ b/dashboards/sonarqube/sonarqube.json @@ -0,0 +1,1592 @@ +{ + "name": "SonarQube", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![SonarQube logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/sonarqube/logo.png)" + } + }, + { + "title": "Percentage of Active Database Connections", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(db.connections)/latest(db.maxconnections))*100 AS '(%) active database connections' FROM PostgresqlDatabaseSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 90 + }, + { + "alertSeverity": "WARNING", + "value": 85 + } + ] + } + }, + { + "title": "Compute Engine", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT IF(latest(sonarqube_health_compute_engine_status)= 1, 'Up', 'Down') AS 'compute engine' FROM Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Elasticsearch Up", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT IF(latest(sonarqube_health_elasticsearch_status) = 1, 'Up', 'Down') AS 'elasticsearch' FROM Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SonarQube Up", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT IF(latest(sonarqube_health_web_status) = 1, 'Up', 'Down') AS 'sonarqube' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "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\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 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": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Elasticsearch Disk Space (%)", + "layout": { + "column": 8, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "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" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Elasticsearch Disk Space - (GB)" + } + }, + { + "title": "Elasticsearch Disk Space used", + "layout": { + "column": 4, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(sonarqube_elasticsearch_disk_space_total_bytes) - latest(sonarqube_elasticsearch_disk_space_free_bytes))/latest(sonarqube_elasticsearch_disk_space_total_bytes)*100 AS '(%) used disk space' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 95 + }, + { + "alertSeverity": "WARNING", + "value": 90 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 6, + "row": 5, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![plus](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "Elasticsearch Disk Space Free", + "layout": { + "column": 7, + "row": 5, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_elasticsearch_disk_space_free_bytes) / 1e+9 AS '(GB) free disk space' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 9, + "row": 5, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "\n![equal to](https://www.freeiconspng.com/uploads/blue-arrow-png-23.png)" + } + }, + { + "title": "Elasticsearch Disk Space Total", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_elasticsearch_disk_space_total_bytes) / 1e+9 AS '(GB) total disk space' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 1 + } + ] + } + }, + { + "title": "SonarQube License", + "layout": { + "column": 1, + "row": 6, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_license_number_of_lines_remaining_total) AS 'Lines remaining', latest(sonarqube_license_number_of_lines_analyzed_total) AS 'Lines analysed' FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Compute Engine Pending Tasks", + "layout": { + "column": 6, + "row": 6, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_compute_engine_pending_tasks_total) AS 'compute engine pending tasks' FROM Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SonarQube Web Uptime", + "layout": { + "column": 10, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_web_uptime_minutes)/60 AS 'hours' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Number of Connected SonarLint Clients", + "layout": { + "column": 6, + "row": 7, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_number_of_connected_sonarlint_clients) AS 'number of connected sonarLint clients' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Remaining Days until SonarQube License Expiration", + "layout": { + "column": 6, + "row": 8, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(sonarqube_license_days_before_expiration_total) AS 'sonarQube license expiry: days left' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "PostgreSQL", + "description": null, + "widgets": [ + { + "title": "Database Connections", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(db.connections) AS '' FROM PostgresqlDatabaseSample WHERE displayName = {{displayName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Database Conflicts", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(db.conflicts.deadlockPerSecond) AS 'Deadlock', latest(db.conflicts.bufferpinPerSecond) AS 'Bufferpin',latest(db.conflicts.locksPerSecond) AS 'Locks', latest(db.conflicts.snapshotPerSecond) AS 'Snapshot', latest(db.conflicts.tablespacePerSecond) AS 'Table space' FROM PostgresqlDatabaseSample WHERE displayName = {{displayName}} timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Database Rows Fetched & Returned per second", + "layout": { + "column": 6, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(db.rowsFetchedPerSecond) AS 'Rows Fetched', latest(db.rowsReturnedPerSecond) AS 'Rows returned' FROM PostgresqlDatabaseSample WHERE displayName = {{displayName}} TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Checkpoints Scheduled per second", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(bgwriter.checkpointsScheduledPerSecond) FROM PostgresqlInstanceSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Commits per second", + "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 latest(db.commitsPerSecond) AS 'Commits' FROM PostgresqlDatabaseSample WHERE displayName = {{displayName}} TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Buffers Written by Backend per second", + "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(bgwriter.buffersWrittenByBackendPerSecond) FROM PostgresqlInstanceSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Index Size", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(index.sizeInBytes) AS 'Bytes' FROM PostgresqlIndexSample WHERE database = 'sonarqube' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## PostgreSQL Table Bloat\nPostgreSQL Table Bloat is a critical issue that can impact the performance and efficiency of PostgreSQL databases. This section will provide a thorough knowledge of the notion of table bloat, including what it is, why it happens, and how it affects database operations." + } + }, + { + "title": "Table Bloat Average Ratio", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": " SELECT average(table.bloatRatio) AS 'Bytes' FROM PostgresqlTableSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Table Bloat Data Size (bytes)", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(table.dataSizeInBytes) AS 'Data size' FROM PostgresqlTableSample TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Table Bloat Size (bytes)", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(table.bloatSizeInBytes) AS 'Bloat size' FROM PostgresqlTableSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Sonar JMX", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "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": "Active Pool Connections", + "layout": { + "column": 1, + "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(PoolActiveConnections) AS 'active pool connections', latest(PoolMaxActiveConnections) AS 'maximum active pool connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "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 + } + } + }, + { + "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 + } + } + }, + { + "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/dashboards/squid-prometheus/squid.json b/dashboards/squid-prometheus/squid.json new file mode 100644 index 0000000000..47b8fe92fc --- /dev/null +++ b/dashboards/squid-prometheus/squid.json @@ -0,0 +1,448 @@ +{ + "name": "Squid Cache Manager", + "description": null, + "pages": [ + { + "name": "Squid", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Squid logo](https://upload.wikimedia.org/wikipedia/fr/b/b7/Squid-cache_logo.jpg)\n\n[Squid](http://www.squid-cache.org/) is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more.\n\nNew Relic requires the [Prometheus squid-exporter](https://github.com/boynux/squid-exporter) to be installed in order to get entites and metrics from your Squid infrastructure.\n\nRead more installation, configuration and usage in the [docs](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/)" + } + }, + { + "title": "Active cache managers", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(squid_up) WHERE squid_cachemgr IN ({{squid_cachemgr}}) compare with 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic ", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "HTTP Traffic Out", + "type": "humanized" + }, + { + "name": "Total squid_client_http_kbytes_in_kbytes_total", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_kbytes_in_kbytes_total) AS 'HTTP In (Kbs)', sum(squid_client_http_kbytes_out_kbytes_total) AS 'HTTP Out (Kbs)', sum(squid_client_http_requests_total) AS 'HTTP Requests' WHERE squid_cachemgr IN ({{squid_cachemgr}}) compare with 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hit Rate (%)", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg squid_client_http_hit_kbytes_out_bytes_total", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT (sum(squid_client_http_hit_kbytes_out_bytes_total) / sum(squid_client_http_kbytes_out_kbytes_total)) * 100 As 'Bytes %', sum(squid_client_http_hits_total) / sum(squid_client_http_requests_total) * 100 AS 'Cache %' WHERE squid_cachemgr IN ({{squid_cachemgr}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL" + } + ] + } + }, + { + "title": "Error Rate (%)", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Avg squid_client_http_errors_total", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_errors_total) / sum(squid_client_http_requests_total) * 100 AS 'Error rate' WHERE squid_cachemgr IN ({{squid_cachemgr}}) " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_kbytes_in_kbytes_total) AS 'HTTP In (Kbs)', sum(squid_client_http_kbytes_out_kbytes_total) AS 'HTTP Out (Kbs)', sum(squid_client_http_hit_kbytes_out_bytes_total) AS 'HTTP Out Hits (Kbs)' , sum(squid_client_http_requests_total) AS 'HTTP requests' WHERE squid_cachemgr IN ({{squid_cachemgr}}) facet squid_cachemgr AS 'Cache Manager'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic (Kbs)", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_kbytes_in_kbytes_total) AS 'HTTP In (Kbs)', sum(squid_client_http_kbytes_out_kbytes_total) AS 'HTTP Out (Kbs)' WHERE squid_cachemgr IN ({{squid_cachemgr}}) timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic requests", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_requests_total) AS 'HTTP Requests' WHERE squid_cachemgr IN ({{squid_cachemgr}}) facet squid_cachemgr timeseries auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hit Rate (%)", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Cache %", + "type": "humanized" + }, + { + "name": "Bytes %", + "type": "humanized" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT (sum(squid_client_http_hit_kbytes_out_bytes_total) / sum(squid_client_http_kbytes_out_kbytes_total)) * 100 As 'Bytes %', sum(squid_client_http_hits_total) / sum(squid_client_http_requests_total) * 100 AS 'Cache %' WHERE squid_cachemgr IN ({{squid_cachemgr}}) facet squid_cachemgr" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Bytes Hit Rate (%)", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_hit_kbytes_out_bytes_total) / sum(squid_client_http_kbytes_out_kbytes_total) WHERE squid_cachemgr IN ({{squid_cachemgr}}) TIMESERIES facet squid_cachemgr" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Cache Hit Rate (%)", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_hits_total) / sum(squid_client_http_requests_total) WHERE squid_cachemgr IN ({{squid_cachemgr}}) TIMESERIES facet squid_cachemgr" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Error Rate (%)", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_errors_total) / sum(squid_client_http_requests_total) * 100 AS 'Error rate %' WHERE squid_cachemgr IN ({{squid_cachemgr}}) facet squid_cachemgr" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Rate (%)", + "layout": { + "column": 5, + "row": 11, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT sum(squid_client_http_errors_total) / sum(squid_client_http_requests_total) WHERE squid_cachemgr IN ({{squid_cachemgr}}) TIMESERIES facet squid_cachemgr" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "squid_cachemgr", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + }, + { + "value": { + "string": "squid_cor3int" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(squid_cachemgr) FROM Metric" + }, + "title": "Cache manager", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/squid-prometheus/squid01.png b/dashboards/squid-prometheus/squid01.png new file mode 100644 index 0000000000..7035b4a0bd Binary files /dev/null and b/dashboards/squid-prometheus/squid01.png differ diff --git a/dashboards/squid-prometheus/squid02.png b/dashboards/squid-prometheus/squid02.png new file mode 100644 index 0000000000..542453df13 Binary files /dev/null and b/dashboards/squid-prometheus/squid02.png differ diff --git a/dashboards/stripe/stripe.json b/dashboards/stripe/stripe.json new file mode 100644 index 0000000000..254ff43fb4 --- /dev/null +++ b/dashboards/stripe/stripe.json @@ -0,0 +1,1104 @@ +{ + "name": "Stripe", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Stripe Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/stripe/logo.png)" + } + }, + { + "title": "Canceled transactions", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(traceId) as ''from Transaction where request.headers.referer like '%canceled%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Net revenue ($)", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(stripe.amount_total) as '' from Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average order value ($)", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(stripe.amount_total)/uniqueCount(stripe.session_id) as '' from Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction volume", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(stripe.session_id)as'' from Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Downtime (%) this month", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(result), where result = 'FAILED') as '' from SyntheticCheck since this month" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=ea065d39-62ee-d993-3661-a968b518a6d6).\n\nInstrument Stripe with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/stripe-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Stripe) here and let us know how we can improve it for you." + } + }, + { + "title": "Success transactions", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(stripe.session_id) as '' from Metric where stripe.status = 'complete'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 10000 + } + ] + } + }, + { + "title": "Transaction success rate (%)", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT FILTER (COUNT(stripe.session_id),WHERE stripe.status = 'complete') * 100.0 / COUNT(stripe.session_id) AS '' from Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 100000 + } + ] + } + }, + { + "title": "Payment processing fees ($)", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(stripe.tax_amount) as '' from Metric " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "4xx client errors", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' client errors') WHERE httpResponseCode LIKE '4%' " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "5xx server errors", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET concat(httpResponseCode, ' server errors') WHERE httpResponseCode LIKE '5%'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Net revenue ($)", + "layout": { + "column": 1, + "row": 5, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(stripe.amount_total) as 'Net revenue ($)' from Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average response time (seconds)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' from Transaction TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Browser Monitoring", + "description": null, + "widgets": [ + { + "title": "Load time by country", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentile(duration, 50) from PageView facet countryCode TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load time by device type", + "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": "SELECT percentile(duration, 50) from PageView FACET deviceType TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Load time by browser", + "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": "SELECT percentile(duration, 50) from PageView facet userAgentName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Browser breakdown", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView FACET userAgentName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top ISPs", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView FACET asnOrganization LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Traffic by device type", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM PageView FACET deviceType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Transaction", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction \nTransaction allows you to track transaction overview, top transactions, average application throughput and transaction duration." + } + }, + { + "title": "Transactions overview", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total Transactions', average(duration) as 'Average Duration (seconds)', percentage(count(*), WHERE error is false) AS 'Success Rate', percentage(count(*), WHERE error is true) AS 'Failed Rate'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 5 slowest transactions", + "layout": { + "column": 4, + "row": 2, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(duration) FROM Transaction SINCE today LIMIT 5 FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top transactions", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction SINCE today FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average transaction duration (seconds)", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' FROM Transaction TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average application throughput (seconds)", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.throughput) AS 'seconds' from Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Min, Max, average of transaction duration (seconds)", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(duration), max(duration), average(duration) FROM Transaction FACET name as 'Transaction'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction Errors\nTransaction Errors helps you proactively catch the error transactions, error class and message." + } + }, + { + "title": "Transaction errors - daily", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from TransactionError since 1 month ago until today facet dateOf(timestamp) TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error class", + "layout": { + "column": 5, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError facet `error.class` TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error message", + "layout": { + "column": 9, + "row": 10, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError facet `error.message` TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Infrastructure Monitoring\n\nUse New Relic infrastructure agent to track host-related information in real time. Whether it is operating on dedicated servers, in the cloud, or in containers, the full infrastructure can be observed." + } + }, + { + "title": "CPU usage (%)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(host.cpuPercent) AS 'CPU usage (%)', latest(host.cpuIdlePercent) AS 'CPU Idle (%)' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory usage (%)", + "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": "FROM Metric SELECT latest(host.memoryUsedPercent) AS 'Memory used (%)', latest(host.memoryFreePercent) AS 'Memory Free (%)' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Storage usage (%)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(host.disk.usedPercent) AS 'Storage used (%)', latest(host.disk.freePercent) AS 'Storage Free (%)' TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network traffic", + "layout": { + "column": 1, + "row": 5, + "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": "Load average", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.loadAverageOneMinute) as '1 minute', average(host.loadAverageFiveMinute) AS '5 minutes', average(host.loadAverageFifteenMinute) AS '15 minutes' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes running", + "layout": { + "column": 9, + "row": 5, + "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 + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/stripe/stripe01.png b/dashboards/stripe/stripe01.png new file mode 100644 index 0000000000..347e973e85 Binary files /dev/null and b/dashboards/stripe/stripe01.png differ diff --git a/dashboards/stripe/stripe02.png b/dashboards/stripe/stripe02.png new file mode 100644 index 0000000000..c6d87678eb Binary files /dev/null and b/dashboards/stripe/stripe02.png differ diff --git a/dashboards/stripe/stripe03.png b/dashboards/stripe/stripe03.png new file mode 100644 index 0000000000..5dc07bb2fa Binary files /dev/null and b/dashboards/stripe/stripe03.png differ diff --git a/dashboards/stripe/stripe04.png b/dashboards/stripe/stripe04.png new file mode 100644 index 0000000000..eb16fd754f Binary files /dev/null and b/dashboards/stripe/stripe04.png differ diff --git a/dashboards/stripe/stripe05.png b/dashboards/stripe/stripe05.png new file mode 100644 index 0000000000..e947e7d9e3 Binary files /dev/null and b/dashboards/stripe/stripe05.png differ diff --git a/dashboards/tidbcloud/dashboard.json b/dashboards/tidbcloud/dashboard.json new file mode 100644 index 0000000000..2034dd060a --- /dev/null +++ b/dashboards/tidbcloud/dashboard.json @@ -0,0 +1,1200 @@ +{ + "name": "TiDB Cloud Monitoring", + "description": null, + "pages": [ + { + "name": "SQL Statements", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "This dashboard provides a **high-level** overview of your TiDB clusters.\n\nFurther reading on TiDB monitoring: [Metrics available to New Relic](https://docs.pingcap.com/tidbcloud/monitor-new-relic-integration#metrics-available-to-newrelic)\n\nClone this template dashboard to make changes and add your own graph widgets." + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Cluster Performance" + } + }, + { + "title": "Database Time", + "layout": { + "column": 1, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_database_time`) * cardinality(`tidb_cloud.db_database_time`)) AS 'Total' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + }, + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_database_time`) * cardinality(`tidb_cloud.db_database_time`)) FROM Metric FACET sql_type SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries Per Second", + "layout": { + "column": 7, + "row": 3, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_query_per_second`) * cardinality(`tidb_cloud.db_query_per_second`)) AS 'Total' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + }, + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_query_per_second`) * cardinality(`tidb_cloud.db_query_per_second`)) FROM Metric FACET type SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Query Duration", + "layout": { + "column": 1, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`tidb_cloud.db_average_query_duration`) FROM Metric FACET sql_type SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Failed Queries Per Second", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_failed_queries`) * cardinality(`tidb_cloud.db_failed_queries`)) AS 'Failed Query' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 9, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Connections" + } + }, + { + "title": "Total Connection", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_total_connection`) * cardinality(`tidb_cloud.db_total_connection`)) AS 'Total Conncetion' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}}) AND component = 'tidb'" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active Connections", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_active_connections`) * cardinality(`tidb_cloud.db_active_connections`)) AS 'Active Connection' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disconnection Count", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_disconnections`) * cardinality(`tidb_cloud.db_disconnections`)) FROM Metric FACET tuple(result, instance) SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 16, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Command & Transaction" + } + }, + { + "title": "Command Per Second", + "layout": { + "column": 1, + "row": 17, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_command_per_second`) * cardinality(`tidb_cloud.db_command_per_second`)) AS 'Total' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + }, + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_command_per_second`) * cardinality(`tidb_cloud.db_command_per_second`)) FROM Metric FACET type SINCE 24 HOURS AGO TIMESERIES" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries Using Plan Cache OPS", + "layout": { + "column": 7, + "row": 17, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_queries_using_plan_cache_ops`) * cardinality(`tidb_cloud.db_queries_using_plan_cache_ops`)) AS 'Total' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Transaction Per Second", + "layout": { + "column": 1, + "row": 20, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_transaction_per_second`) * cardinality(`tidb_cloud.db_transaction_per_second`)) AS 'Total' FROM Metric SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + }, + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.db_transaction_per_second`) * cardinality(`tidb_cloud.db_transaction_per_second`)) FROM Metric FACET tuple(type, txn_mode) SINCE 24 HOURS AGO TIMESERIES" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 23, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Node Resource Utilization" + } + }, + { + "title": "TiDB CPU Capacity", + "layout": { + "column": 1, + "row": 24, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_cpu_capacity_cores`) * cardinality(`tidb_cloud.node_cpu_capacity_cores`)) FROM Metric FACET instance WHERE (component = 'tidb') SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiDB CPU Usage", + "layout": { + "column": 7, + "row": 24, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(sum(`tidb_cloud.node_cpu_seconds_total`), 1 SECONDS) FROM Metric WHERE (component = 'tidb') SINCE 60 MINUTES AGO UNTIL NOW FACET instance LIMIT 100 TIMESERIES 120000 SLIDE BY 60000 WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiDB Memory Capacity", + "layout": { + "column": 1, + "row": 27, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_capacity_bytes`) * cardinality(`tidb_cloud.node_memory_capacity_bytes`)) FROM Metric FACET instance WHERE component = 'tidb' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiDB Memory Usage", + "layout": { + "column": 7, + "row": 27, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_used_bytes`) * cardinality(`tidb_cloud.node_memory_used_bytes`)) FROM Metric FACET instance WHERE component = 'tidb' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV CPU Capacity", + "layout": { + "column": 1, + "row": 30, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_cpu_capacity_cores`) * cardinality(`tidb_cloud.node_cpu_capacity_cores`)) FROM Metric FACET instance WHERE (component = 'tikv') SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV CPU Usage", + "layout": { + "column": 7, + "row": 30, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(sum(`tidb_cloud.node_cpu_seconds_total`), 1 SECONDS) FROM Metric WHERE (component = 'tikv') SINCE 60 MINUTES AGO UNTIL NOW FACET instance LIMIT 100 TIMESERIES 120000 SLIDE BY 60000 WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV Memory Capacity", + "layout": { + "column": 1, + "row": 33, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_capacity_bytes`) * cardinality(`tidb_cloud.node_memory_capacity_bytes`)) FROM Metric FACET instance WHERE component = 'tikv' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV Memory Usage", + "layout": { + "column": 7, + "row": 33, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_used_bytes`) * cardinality(`tidb_cloud.node_memory_used_bytes`)) FROM Metric FACET instance WHERE component = 'tikv' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV Storage Capacity", + "layout": { + "column": 1, + "row": 36, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_storage_capacity_bytes`) * cardinality(`tidb_cloud.node_storage_capacity_bytes`)) FROM Metric FACET instance WHERE component = 'tikv' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiKV Storage Usage", + "layout": { + "column": 7, + "row": 36, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_storage_used_bytes`) * cardinality(`tidb_cloud.node_storage_used_bytes`)) FROM Metric FACET instance WHERE component = 'tikv' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash CPU Capacity", + "layout": { + "column": 1, + "row": 39, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_cpu_capacity_cores`) * cardinality(`tidb_cloud.node_cpu_capacity_cores`)) FROM Metric FACET instance WHERE (component = 'tiflash') SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash CPU Usage", + "layout": { + "column": 7, + "row": 39, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(sum(`tidb_cloud.node_cpu_seconds_total`), 1 SECONDS) FROM Metric WHERE (component = 'tiflash') SINCE 60 MINUTES AGO UNTIL NOW FACET instance LIMIT 100 TIMESERIES 120000 SLIDE BY 60000 WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash Memory Capacity", + "layout": { + "column": 1, + "row": 42, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_capacity_bytes`) * cardinality(`tidb_cloud.node_memory_capacity_bytes`)) FROM Metric FACET instance WHERE component = 'tiflash' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash Memory Usage", + "layout": { + "column": 7, + "row": 42, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_memory_used_bytes`) * cardinality(`tidb_cloud.node_memory_used_bytes`)) FROM Metric FACET instance WHERE component = 'tiflash' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash Storage Capacity", + "layout": { + "column": 1, + "row": 45, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_storage_capacity_bytes`) * cardinality(`tidb_cloud.node_storage_capacity_bytes`)) FROM Metric FACET instance WHERE component = 'tiflash' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "TiFlash Storage Usage", + "layout": { + "column": 7, + "row": 45, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`tidb_cloud.node_storage_used_bytes`) * cardinality(`tidb_cloud.node_storage_used_bytes`)) FROM Metric FACET instance WHERE component = 'tiflash' SINCE 24 HOURS AGO TIMESERIES WHERE project_name IN ({{project_name}}) AND cluster_id IN ({{cluster_id}}) AND cluster_name IN ({{cluster_name}}) AND instance IN ({{instance}})" + } + ], + "nullValues": { + "nullValue": "remove" + }, + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "project_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(project_name) FROM Metric WHERE metricName='tidb_cloud.db_database_time'" + }, + "title": "project_name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "cluster_id", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cluster_id) FROM Metric WHERE metricName='tidb_cloud.db_database_time'" + }, + "title": "cluster_id", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "cluster_name", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(cluster_name) FROM Metric WHERE metricName='tidb_cloud.db_database_time'" + }, + "title": "cluster_name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "instance", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(instance) FROM Metric WHERE metricName='tidb_cloud.node_storage_capacity_bytes'" + }, + "title": "instance", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/tidbcloud/tidbcloud.png b/dashboards/tidbcloud/tidbcloud.png new file mode 100644 index 0000000000..e315ae13fe Binary files /dev/null and b/dashboards/tidbcloud/tidbcloud.png differ diff --git a/dashboards/vertica/vertica.json b/dashboards/vertica/vertica.json new file mode 100644 index 0000000000..b37e72dab3 --- /dev/null +++ b/dashboards/vertica/vertica.json @@ -0,0 +1,712 @@ +{ + "name": "Vertica", + "description": null, + "pages": [ + { + "name": "Vertica", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/vertica/logo.png)" + } + }, + { + "title": "Number of Users", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(user_name) as 'users' FROM VerticaUserInformation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Number of Assigned Roles", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(assigned_roles) as 'roles' FROM VerticaUserRolesInformation where assigned_roles != ''" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 0 + } + ] + } + }, + { + "title": "Number of Queries by User", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(query) as 'queries' FROM VerticaQueriesByUser" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Long Running Queries", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(substr) as 'queries' FROM VerticaLongRunningQueries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 0 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=4d144562-d0a9-b132-88e5-f618eb07ab17).\n\nFollow [Vertica documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vertica-monitoring-integration/) to instrument Vertica\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Vertica) and let us know how we can improve it for you.\n" + } + }, + { + "title": "Disk Space Used by Tables", + "layout": { + "column": 3, + "row": 3, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(projection_schema), latest(disk_space_used_gb) as 'Disk Space Used GB' FROM VerticaDiskSpaceUsedByTables FACET anchor_table_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Space Free %", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(disk_space_free_percent) FROM VerticaDiskStorage facet node_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Space", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(disk_space_free_gb) as 'Free GB', latest(disk_space_used_gb) as 'Used GB' FROM VerticaFreeDiskSpace" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Storage Status", + "layout": { + "column": 1, + "row": 5, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(storage_path), latest(storage_status), latest(storage_usage) FROM VerticaDiskStorage FACET node_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Long Running Queries Duration", + "layout": { + "column": 8, + "row": 5, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(query_duration_mins), latest(rows_processed) FROM VerticaLongRunningQueries FACET user_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Queries by User", + "layout": { + "column": 1, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(query_duration_us) as 'Query Duration us', latest(query_type), latest(query_start_epoch) FROM VerticaQueriesByUser FACET query" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Queries Processed Row Count by User", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(processed_row_count) FROM VerticaQueriesByUser FACET query " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Queries Reserved Extra Memory (bytes)", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(reserved_extra_memory_b) FROM VerticaQueriesByUser FACET query" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Information", + "layout": { + "column": 1, + "row": 13, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(is_super_user), latest(resource_pool), latest(memory_cap_kb)as 'Memory Cap KB', latest(temp_space_cap_kb) as 'Temp Space Cap KB', latest(run_time_cap) FROM VerticaUserInformation FACET user_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Sessions", + "layout": { + "column": 1, + "row": 15, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(client_os_user_name) as 'Client OS User Name', latest(instanceType), latest(is_active), latest(node_name), latest(processorCount), latest(session_id) FROM VerticaUserDetails FACET user_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User Roles Information", + "layout": { + "column": 1, + "row": 17, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(role_id) FROM VerticaUserRolesInformation where assigned_roles != '' facet assigned_roles" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Address Info", + "layout": { + "column": 6, + "row": 17, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(city), latest(state), latest(zip) FROM VerticaDatabase facet population" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Resource Pool Assignments", + "layout": { + "column": 1, + "row": 19, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(resource_pool) FROM VerticaResourcePoolAssignments facet user_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Table Information", + "layout": { + "column": 6, + "row": 19, + "width": 7, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(is_flextable), latest(is_system_table), latest(is_temp_table) from VerticaTableInfo FACET table_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Vertica Active Events Code & Problem Descriptions", + "layout": { + "column": 1, + "row": 21, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(event_code), latest(event_code_description),latest(event_problem_description) FROM VerticaActiveEvents facet event_posted_timestamp" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Vertica Active Events Status", + "layout": { + "column": 1, + "row": 23, + "width": 12, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(event_expiration), latest(event_severity), latest(reporting_node), latest(event_sent_to_channels) FROM VerticaActiveEvents facet event_posted_timestamp" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "License Consumption", + "layout": { + "column": 1, + "row": 25, + "width": 10, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(GET_COMPLIANCE_STATUS), latest(systemMemoryBytes) FROM VerticaLicenseConsumption" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Audit", + "layout": { + "column": 11, + "row": 25, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(AUDIT) as '' FROM VerticaAudit" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Logs\n\nVertica provides robust logging capabilities, allowing administrators to track and monitor database, diagnose issues, and ensure smooth data maintenance." + } + }, + { + "title": "Logs (Select your appropriate log variable)", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT message FROM Log where logtype = {{logtype}} LIMIT MAX" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "logtype", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 3 months ago" + }, + "title": "Select your logtype", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/vertica/vertica01.png b/dashboards/vertica/vertica01.png new file mode 100644 index 0000000000..5a720449ae Binary files /dev/null and b/dashboards/vertica/vertica01.png differ diff --git a/dashboards/vertica/vertica02.png b/dashboards/vertica/vertica02.png new file mode 100644 index 0000000000..97ccbdec3f Binary files /dev/null and b/dashboards/vertica/vertica02.png differ diff --git a/dashboards/vertica/vertica03.png b/dashboards/vertica/vertica03.png new file mode 100644 index 0000000000..32f973d265 Binary files /dev/null and b/dashboards/vertica/vertica03.png differ diff --git a/dashboards/vertica/vertica04.png b/dashboards/vertica/vertica04.png new file mode 100644 index 0000000000..b8830beafe Binary files /dev/null and b/dashboards/vertica/vertica04.png differ diff --git a/dashboards/vertica/vertica05.png b/dashboards/vertica/vertica05.png new file mode 100644 index 0000000000..5233413933 Binary files /dev/null and b/dashboards/vertica/vertica05.png differ diff --git a/dashboards/vmware-vsphere/vmware-vsphere.json b/dashboards/vmware-vsphere/vmware-vsphere.json new file mode 100644 index 0000000000..11e60f8f23 --- /dev/null +++ b/dashboards/vmware-vsphere/vmware-vsphere.json @@ -0,0 +1,1742 @@ +{ + "name": "VMware vSphere Integration", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Overview\n[VMware vSphere](https://www.vmware.com/products/vsphere.html) is a suite of virtualization solutions that includes vCenter, ESXi, vRealized Operations, and more. The core ability of vSphere is the centralized management of your virtual machines and virtual environment.\n- - -\n### About this Dashboard\n- For more information on how to instrument your vSphere environment, visit the documentation [here](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vmware-vsphere-monitoring-integration/).\n- ***\"No chart data available\"*** indicates that there are no items found where `overallStatus != 'green'`" + } + }, + { + "title": "Datacenters with Health Issues", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n uniqueCount(entityGuid) AS 'Total Resources'\nFACET datacenterName AS 'Datacenter Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus!= 'green'\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Clusters with Health Issues", + "layout": { + "column": 7, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n uniqueCount(entityGuid) AS 'Total Resources'\nFACET concat(datacenterName, ' - ', capture(displayName, r'vsphere-cluster:.*:(?P.*)')) AS 'Cluster Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus != 'green'\nAND capture(displayName, r'vsphere-cluster:.*:(?P.*)') IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts with Health Issues", + "layout": { + "column": 10, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereHostSample SELECT\n uniqueCount(entityGuid) AS 'Total Resources'\nFACET\n concat(datacenterName, ' - ', clusterName, ' - ', hypervisorHostname) AS 'Host Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus != 'green'\nAND hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Datastores with Health Issues", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatastoreSample SELECT\n uniqueCount(entityGuid) AS 'Total Resources'\nFACET\n concat(datacenterName, ' - ', name) AS 'Datastore Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus != 'green'\nAND name IN ( {{datastore}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Resource Pools with Health Issues", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT \n uniqueCount(entityGuid) AS 'Total Resources'\nFACET\n concat(datacenterName, ' - ', clusterName , ' - ', resourcePoolName) AS 'Resource Pool Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus != 'green'\nAND resourcePoolName IN ( {{resourcepool}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Virtual Machines with Health Issues", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT \n uniqueCount(entityGuid) AS 'Total Resources'\nFACET\n concat(datacenterName, ' - ', clusterName , ' - ', vmConfigName) AS 'VM Config Name', upper(overallStatus) AS 'Current Status'\nWHERE overallStatus != 'green'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Datacenters", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Datacenters\nA [virtual data center](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is an aggregation of all the different types of objects used to work in virtual infrastructure. Within each data center, there are four separate hierarchies.\n * Virtual machines (and templates)\n * Hosts (and clusters)\n * Networks\n * Datastores" + } + }, + { + "title": "Datacenter Summary", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "CPU Cores", + "type": "decimal" + }, + { + "name": "VM Count", + "type": "decimal" + }, + { + "name": "Memory Bytes", + "type": "decimal" + }, + { + "name": "Datastore Size", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n latest(overallStatus) AS 'Overall Status',\n latest(clusters) AS 'Cluster Count',\n latest(hostCount) AS 'Host Count',\n latest(vmCount) AS 'VM Count',\n latest(cpu.cores) AS 'CPU Cores',\n latest(mem.size) AS 'Memory Bytes',\n latest(datastores) AS 'Datastore Count',\n latest(datastore.totalGiB) AS 'Datastore Size',\n latest(networks) AS 'Network Count',\n latest(resourcePools) AS 'Resource Pool Count'\nFACET datacenterName\nWHERE datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Current Utilization", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Disk %", + "precision": 2, + "type": "decimal" + }, + { + "name": "Memory %", + "precision": 2, + "type": "decimal" + }, + { + "name": "CPU %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n latest(cpu.overallUsagePercentage) AS 'CPU %',\n latest(mem.usagePercentage) AS 'Memory %',\n ( latest(datastore.totalUsedGiB) / latest(datastore.totalGiB) ) * 100 AS 'Disk %'\nFACET datacenterName\nWHERE datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU % Utilization", + "layout": { + "column": 4, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n average(cpu.overallUsagePercentage) AS 'CPU %'\nFACET datacenterName\nWHERE datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Memory % Utilization", + "layout": { + "column": 7, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n average(mem.usagePercentage) AS 'Memory %'\nFACET datacenterName\nWHERE datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Disk % Utilization", + "layout": { + "column": 10, + "row": 4, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT\n ( average(datastore.totalUsedGiB) / average(datastore.totalGiB) ) * 100 AS 'Disk %'\nFACET datacenterName\nWHERE datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + } + ] + }, + { + "name": "Clusters", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Clusters\nA [cluster](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is a collection of ESXi hosts and associated virtual machines intended to work together as a unit. When you add a host to a cluster, the host’s resources become part of the cluster’s resources. vCenter Server manages the resources of all hosts in a cluster as one unit." + } + }, + { + "title": "Cluster Summary", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "CPU Cores", + "type": "decimal" + }, + { + "name": "Memory Effective Bytes", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n latest(overallStatus) AS 'Overall Status',\n latest(hosts) AS 'Total Hosts',\n latest(effectiveHosts) AS 'Effective Hosts',\n latest(cpu.cores) AS 'CPU Cores',\n latest(mem.effectiveSize) AS 'Memory Effective Bytes'\nFACET\n datacenterName AS 'Datacenter',\n capture(displayName, r'vsphere-cluster:.*:(?P.*)') AS 'Cluster'\nWHERE capture(displayName, r'vsphere-cluster:.*:(?P.*)') IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts Available %", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n ( latest(effectiveHosts) / latest(hosts) ) * 100 AS 'Hosts Available %'\nFACET concat(datacenterName, ' - ', capture(displayName, r'vsphere-cluster:.*:(?P.*)')) AS Cluster\nWHERE capture(displayName, r'vsphere-cluster:.*:(?P.*)') IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + }, + { + "alertSeverity": "CRITICAL", + "value": 75 + } + ] + } + }, + { + "title": "Host Count", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n max(hosts)\nFACET concat(datacenterName, ' - ', capture(displayName, r'vsphere-cluster:.*:(?P.*)')) AS Cluster\nWHERE capture(displayName, r'vsphere-cluster:.*:(?P.*)') IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts in Maintenance", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n max(hosts) - max(effectiveHosts)\nFACET concat(datacenterName, ' - ', clusterName, ' - ', capture(displayName, r'vsphere-cluster:.*:(?P.*)')) AS Cluster\nWHERE clusterName IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "DRS Settings", + "layout": { + "column": 5, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n latest(drsConfig.enabled) OR ' ' AS 'Enabled',\n latest(drsConfig.defaultVmBehavior) AS 'Default VM Behavior',\n latest(drsConfig.vmotionRate) AS 'vMotion Rate',\n latest(drsConfig.enableVmBehaviorOverrides) AS 'Enable VM Behavior Overrides'\nFACET\n datacenterName AS 'Datacenter',\n clusterName AS 'Cluster',\n capture(displayName, r'vsphere-cluster:.*:(?P.*)') AS 'Display Name'\nWHERE clusterName IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "HA DAS Settings", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereClusterSample SELECT\n latest(dasConfig.enabled) OR ' ' AS 'Enabled',\n latest(dasConfig.hostMonitoring) AS 'Host Monitoring',\n latest(dasConfig.vmMonitoring) AS 'VM Monitoring',\n latest(dasConfig.admissionControlEnabled) AS 'Admission Control Enabled',\n latest(dasConfig.hbDatastoreCandidatePolicy) AS 'HB Datastore Candidate Policy',\n latest(dasConfig.isolationResponse) AS 'Isolation Response',\n latest(dasConfig.restartPriority) AS 'rRstart Priority',\n latest(dasConfig.restartPriorityTimeout) AS 'Restart Priority Timeout',\n latest(dasConfig.vmComponentProtecting) AS 'VM Component Protecting' //\nFACET\n datacenterName AS 'Datacenter',\n clusterName AS 'Cluster',\n capture(displayName, r'vsphere-cluster:.*:(?P.*)') AS 'Display Name'\nWHERE clusterName IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Hosts", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Hosts\nA [host](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is the physical computer on which ESXi is installed. All virtual machines run on hosts or clusters." + } + }, + { + "title": "Current Utilization %", + "layout": { + "column": 4, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory %", + "precision": 2, + "type": "decimal" + }, + { + "name": "CPU %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereHostSample SELECT\n latest(cpu.percent) AS 'CPU %',\n ( latest(mem.usage) / latest(mem.size) ) * 100 AS 'Memory %'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n hypervisorHostname AS 'Host'\nWHERE hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "VM Count", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereHostSample SELECT\n max(vmCount)\nFACET\n concat(datacenterName, ' - ', lower(clusterName), ' - ', hypervisorHostname) AS 'Host'\nWHERE hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Usage %", + "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 VSphereHostSample SELECT\n average(cpu.percent) AS 'CPU %'\nFACET\n concat(datacenterName, ' - ', lower(clusterName), ' - ', hypervisorHostname) AS 'Host'\nWHERE hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Memory Usage %", + "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 VSphereHostSample SELECT\n (average(mem.usage) / average(mem.size)) * 100 AS 'Memory %'\nFACET\n concat(datacenterName, ' - ', lower(clusterName), ' - ', hypervisorHostname) AS 'Host'\nWHERE hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Host Summary", + "layout": { + "column": 1, + "row": 7, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory Size", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereHostSample SELECT\n latest(overallStatus) AS 'Overall Status',\n latest(powerState) AS 'Power State',\n latest(connectionState) AS 'Connection State',\n latest(vmCount) AS 'VM Count',\n latest(cpu.cores) AS 'CPU Cores',\n latest(mem.size) AS 'Memory Size',\n latest(inMaintenanceMode) AS 'Maintenance Mode',\n latest(inQuarantineMode) AS 'Quarantine Mode',\n latest(standbyMode) AS 'Standby Mode',\n latest(bootTime) AS 'Boot Time'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n hypervisorHostname AS 'Host'\nWHERE hypervisorHostname IN ( {{host}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Datastores", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Datastores\nA [datastore](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is a virtual representation of physical storage resources in the data center. A datastore is the storage location for virtual machine files. In an on-premises SDDC, these physical storage resources can come from the local SCSI disk of the ESXi host, the Fibre Channel SAN disk arrays, the iSCSI SAN disk arrays, or Network Attached Storage (NAS) arrays. For both on-premises and cloud SDDCs, vSAN datastores hide the idiosyncrasies of the underlying physical storage and present a uniform model for the storage resources required by virtual machines. " + } + }, + { + "title": "Datastore Summary", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "VM Count", + "type": "decimal" + }, + { + "name": "Uncommitted (GiB)", + "type": "decimal" + }, + { + "name": "Free (GiB)", + "type": "decimal" + }, + { + "name": "Capacity (GiB)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatastoreSample SELECT\n latest(overallStatus) AS 'Overall Status',\n latest(accessible) AS 'Accessible',\n latest(capacity) AS 'Capacity (GiB)',\n latest(freeSpace) AS 'Free (GiB)',\n latest(uncommitted) AS 'Uncommitted (GiB)',\n latest(fileSystemType) AS 'File System Type',\n latest(vmCount) AS 'VM Count'\nFACET\n datacenterName AS 'Datacenter',\n name AS 'Datastore'\nWHERE name IN ( {{datastore}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Used Space %", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Used %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatastoreSample SELECT\n ((latest(capacity) - latest(freeSpace)) / latest(capacity)) * 100 AS 'Used %'\nFACET\n datacenterName AS 'Datacenter',\n name AS 'Datastore'\nWHERE name IN ( {{datastore}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Space Usage %", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereDatastoreSample SELECT\n ((latest(capacity) - latest(freeSpace)) / latest(capacity)) * 100 AS 'Used %'\nFACET\n concat(datacenterName, ' - ', name) AS 'Datastore'\nWHERE name IN ( {{datastore}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + } + ] + }, + { + "name": "Resource Pools", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Overview\nA [resource pool](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is used to compartmentalize the CPU and memory resources of a host or cluster. Virtual machines run in, and draw their resources from, resource pools." + } + }, + { + "title": "Resource Pool Summary", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "VM Count", + "type": "decimal" + }, + { + "name": "Memory Swapped", + "type": "decimal" + }, + { + "name": "Memory Ballooned", + "type": "decimal" + }, + { + "name": "Memory Usage %", + "precision": 2, + "type": "decimal" + }, + { + "name": "CPU Usage %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n latest(overallStatus) AS 'Overall Status',\n ( latest(cpu.overallUsage) / latest(cpu.totalMHz) * 100 ) AS 'CPU Usage %',\n ( latest(mem.usage) / latest(mem.size) ) * 100 AS 'Memory Usage %',\n latest(mem.ballooned) AS 'Memory Ballooned',\n latest(mem.swapped) AS 'Memory Swapped',\n latest(vmCount) AS 'VM Count'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool'\nWHERE resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Current CPU Used %", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "CPU %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n ( latest(cpu.overallUsage) / latest(cpu.totalMHz) * 100 ) AS 'CPU %'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool'\nWHERE resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool CPU Usage %", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n ( latest(cpu.overallUsage) / latest(cpu.totalMHz) * 100 ) AS 'CPU Usage %'\nFACET concat(datacenterName, ' - ', lower(clusterName), ' - ', resourcePoolName) AS 'Resource Pool Name'\nWHERE resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Current Memory Used %", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n ( latest(mem.usage) / latest(mem.size) ) * 100 AS 'Memory %'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool'\nWHERE resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool Memory Usage %", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n ( latest(mem.usage) / latest(mem.size) ) * 100 AS 'Memory %'\nFACET concat(datacenterName, ' - ', lower(clusterName), ' - ', resourcePoolName) AS 'Resource Pool Name'\nWHERE resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Current Memory Ballooned", + "layout": { + "column": 1, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n latest(mem.ballooned) AS 'Memory Ballooned'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool'\nWHERE mem.ballooned > 0\nAND resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool Memory Ballooned", + "layout": { + "column": 6, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n latest(mem.ballooned) AS 'Memory Ballooned'\nFACET concat(datacenterName, ' - ', lower(clusterName), ' - ', resourcePoolName) AS 'Resource Pool Name'\nWHERE mem.ballooned > 0\nAND resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Current Memory Swapped", + "layout": { + "column": 1, + "row": 13, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n latest(mem.swapped) AS 'Memory Swapped'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool'\nWHERE mem.swapped > 0\nAND resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Pool Memory Swapped", + "layout": { + "column": 6, + "row": 13, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT\n latest(mem.swapped) AS 'Memory Swapped'\nFACET concat(datacenterName, ' - ', lower(clusterName), ' - ', resourcePoolName) AS 'Resource Pool Name'\nWHERE mem.swapped > 0\nAND resourcePoolName IN ( {{resourcepool}} )\nAND datacenterName IN ( {{datacenter}} )\nAND lower(clusterName) IN ( {{cluster}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Virtual Machines", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": " ![VMware logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/320px-Vmware.svg.png)\n\n### Overview\nA [virtual machine](https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vcenter-esxi-management/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html) is a virtualized computer environment in which a guest operating system and associated application software can run. Multiple virtual machines can operate on the same managed host machine concurrently. " + } + }, + { + "title": "Virtual Machine Summary", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Disk Committed (GiB)", + "precision": 2, + "type": "decimal" + }, + { + "name": "Memory Size (GiB)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n latest(overallStatus) AS 'Overall Status',\n latest(powerState) AS 'Power State',\n latest(connectionState) AS 'Connection State',\n latest(cpu.cores) AS 'CPU Cores',\n latest(mem.size) AS 'Memory Size (GiB)',\n latest(disk.totalMiB) / 1024 AS 'Disk Committed (GiB)',\n latest(ipAddress) AS 'IP Address'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n resourcePoolName AS 'Resource Pool',\n vmConfigName AS 'VM Name'\nWHERE vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Current Host CPU Used %", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "CPU %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n latest(cpu.hostUsagePercent) AS 'CPU %'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n vmConfigName AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Host CPU Usage %", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n average(cpu.hostUsagePercent) AS 'CPU %'\nFACET\n concat(datacenterName, ' - ', lower(clusterName) , ' - ', vmConfigName) AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": false + } + } + }, + { + "title": "Host CPU Consumed MHZ", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n average(cpu.overallUsage)\nFACET\n concat(datacenterName, ' - ', lower(clusterName) , ' - ', vmConfigName) AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Current Memory Used %", + "layout": { + "column": 1, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Memory %", + "precision": 2, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n (latest(mem.usage)/latest(mem.size))*100 AS 'Memory %'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n vmConfigName AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Host Memory Usage %", + "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 VSphereVmSample SELECT\n (average(mem.usage)/average(mem.size))*100 AS 'Memory %'\nFACET\n concat(datacenterName, ' - ', lower(clusterName) , ' - ', vmConfigName) AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Current Memory Ballooned", + "layout": { + "column": 1, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n latest(mem.balloned OR mem.ballooned) AS 'Memory Ballooned'\nFACET\n datacenterName AS 'Datacenter',\n clusterName AS 'Cluster',\n vmConfigName AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND mem.balloned OR mem.ballooned > 0\nAND vmConfigName IN ( {{vm}} )\nAND clusterName IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Host Memory Ballooned", + "layout": { + "column": 7, + "row": 10, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n max(mem.balloned OR mem.ballooned) AS 'Memory Ballooned'\nFACET\n concat(datacenterName, ' - ', lower(clusterName) , ' - ', vmConfigName) AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND mem.balloned OR mem.ballooned > 0\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Current Memory Swapped", + "layout": { + "column": 1, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n latest(mem.swapped) AS 'Memory Swapped'\nFACET\n datacenterName AS 'Datacenter',\n lower(clusterName) AS 'Cluster',\n vmConfigName AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND mem.swapped > 0\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Host Memory Swapped", + "layout": { + "column": 7, + "row": 13, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT\n max(mem.swapped) AS 'Memory Swapped'\nFACET\n concat(datacenterName, ' - ', lower(clusterName) , ' - ', vmConfigName) AS 'VM Name'\nWHERE powerState = 'poweredOn'\nAND mem.swapped > 0\nAND vmConfigName IN ( {{vm}} )\nAND lower(clusterName) IN ( {{cluster}} )\nAND datacenterName IN ( {{datacenter}} )\nTIMESERIES\nLIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "datacenter", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereDatacenterSample SELECT uniques(datacenterName, 2000) SINCE 7 DAYS AGO" + }, + "title": "Datacenter", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "cluster", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereClusterSample, VSphereDatacenterSample, VSphereHostSample, VSphereResourcePoolSample, VSphereVmSample SELECT uniques(lower(clusterName) OR capture(displayName, r'vsphere-cluster:.*:(?P.*)'), 2000) SINCE 7 DAYS AGO" + }, + "title": "Cluster", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "host", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereHostSample SELECT uniques(hypervisorHostname, 2000) SINCE 7 DAYS AGO" + }, + "title": "Host", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "datastore", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereDatastoreSample SELECT uniques(name, 2000) SINCE 7 DAYS AGO" + }, + "title": "Datastore", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "resourcepool", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereResourcePoolSample SELECT uniques(resourcePoolName) SINCE 7 DAYS AGO LIMIT 2000" + }, + "title": "Resource Pool", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "vm", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM VSphereVmSample SELECT uniques(vmConfigName, 2000) SINCE 7 DAYS AGO" + }, + "title": "Virtual Machine", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} diff --git a/dashboards/vmware-vsphere/vmware-vsphere_01.png b/dashboards/vmware-vsphere/vmware-vsphere_01.png new file mode 100644 index 0000000000..4de0380cfc Binary files /dev/null and b/dashboards/vmware-vsphere/vmware-vsphere_01.png differ diff --git a/dashboards/vmware-vsphere/vmware-vsphere_02.png b/dashboards/vmware-vsphere/vmware-vsphere_02.png new file mode 100644 index 0000000000..cd930ec88f Binary files /dev/null and b/dashboards/vmware-vsphere/vmware-vsphere_02.png differ diff --git a/dashboards/websphere-liberty-profile/wlp.json b/dashboards/websphere-liberty-profile/wlp.json new file mode 100644 index 0000000000..fd398860f1 --- /dev/null +++ b/dashboards/websphere-liberty-profile/wlp.json @@ -0,0 +1,880 @@ +{ + "name": "IBM Websphere Liberty Profile", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Websphere Liberty Profile icon](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/java/websphere-liberty-profile/logo.png)" + } + }, + { + "title": "Applications Name (click on the application name to filter)", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) FACET appName " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Server Running ", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) from Transaction FACET process.instanceName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Threads", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(newrelic.timeslice.value) AS `Active Threads` FROM Metric WHERE metricTimesliceName like 'Threads/Count/Active%' TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://onenr.io/0Bj38a7qJQX).\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/apm/agents/java-agent/troubleshooting/no-data-appears-java/)\n\n\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=IBM-Websphere-Liberty-Profile) here and let us know how we can improve it for you." + } + }, + { + "title": "Port in use", + "layout": { + "column": 6, + "row": 3, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Port in use'from Transaction facet port" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average CPU Utilization", + "layout": { + "column": 1, + "row": 5, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.cpu.usertime.utilization) as 'Average CPU Utilization' FROM Metric TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Response Time (seconds)", + "layout": { + "column": 6, + "row": 5, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration)as 'Average Response Time (seconds)' from Transaction TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction Errors\nTransaction Errors helps you proactively catch the error transactions, error class and message." + } + }, + { + "title": "Transaction Errors - Daily", + "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 count(*) from TransactionError since 1 month ago until today facet dateOf(timestamp)TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Class", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError facet `error.class` TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Error Message", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM TransactionError facet `error.message` TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Transaction", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Transaction \nTransaction allows you to track transaction overview, top transactions, average application throughput, apdex score and transaction duration." + } + }, + { + "title": "Transactions Overview", + "layout": { + "column": 1, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) as 'Total Transactions', average(duration) as 'Average Duration (seconds)', percentage(count(*), WHERE error is false) AS 'Success Rate', percentage(count(*), WHERE error is true) AS 'Failed Rate'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Transactions", + "layout": { + "column": 6, + "row": 2, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction SINCE today FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Transaction Duration (seconds)", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) as 'seconds' FROM Transaction TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apdex Score ", + "layout": { + "column": 4, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT apdex(apm.service.apdex) as 'App Server', apdex(apm.service.apdex.user) as 'End User' FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Average Application Throughput (seconds)", + "layout": { + "column": 7, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.goldenmetrics.apm.application.throughput) AS 'seconds' from Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 5 Slowest Transactions", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(duration) FROM Transaction SINCE today LIMIT 5 FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Min, Max, Average of Transaction Duration (seconds)", + "layout": { + "column": 1, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(duration), max(duration), average(duration) FROM Transaction FACET name as 'Transaction'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Error Message", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as 'Error Message' FROM TransactionError facet `error.message` " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "JVMs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# JVM's\nWith the help of Java Agent, you can easily track your Application’s heap memory usage, heap memory pool usage, loaded and unloaded classes, non-heap memory pool usage and garbage collection." + } + }, + { + "title": "Heap Memory Usage (MB)", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.memory.heap.max) as 'Max Heap', average(apm.service.memory.heap.committed) as 'Committed Heap', average(apm.service.memory.heap.used) as 'Used Heap' FROM Metric TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heap MemoryPool Usage (MB)", + "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": "FROM Metric SELECT count(newrelic.timeslice.value) * 1000 where metricTimesliceName like 'MemoryPool/Heap%' FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Non-Heap MemoryPool Usage (MB) ", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(newrelic.timeslice.value) * 1000 where metricTimesliceName like 'MemoryPool/Non-Heap%' FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Garbage Collection", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) * 1000 FROM Metric WHERE metricTimesliceName LIKE 'GC%' FACET metricTimesliceName TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Loaded Classes", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) as 'Loaded Classes' FROM Metric where metricTimesliceName like 'JmxBuiltIn/Classes/Loaded' timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Unloaded Classes", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) as 'Unloaded Classes' FROM Metric where metricTimesliceName like 'JmxBuiltIn/Classes/Unloaded' timeseries" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Thread\nView details about thread counts, time consuming threads and thread state." + } + }, + { + "title": "Top 5 Time Consuming Threads", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(newrelic.timeslice.value) FROM Metric WITH METRIC_FORMAT 'Threads/TotalTime/{thread}/CpuTime' WHERE metricTimesliceName LIKE 'Threads/TotalTime/%/CpuTime' AND thread NOT LIKE '%New Relic%' FACET `thread` LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Thread Count", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(newrelic.timeslice.value) AS `Average Thread Count` FROM Metric WHERE metricTimesliceName = 'JmxBuiltIn/Threads/Thread Count' TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Thread State", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "SELECT sum(newrelic.timeslice.value) FROM Metric WITH METRIC_FORMAT 'Threads/SummaryState/{threadstate}/Count' WHERE metricTimesliceName LIKE 'Threads/SummaryState/%/Count' AND threadstate NOT LIKE '%New Relic%' FACET `threadstate` LIMIT 5 SINCE 604800 seconds AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/websphere-liberty-profile/wlp01.png b/dashboards/websphere-liberty-profile/wlp01.png new file mode 100644 index 0000000000..79ebaf272b Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp01.png differ diff --git a/dashboards/websphere-liberty-profile/wlp02.png b/dashboards/websphere-liberty-profile/wlp02.png new file mode 100644 index 0000000000..c85efbbe3e Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp02.png differ diff --git a/dashboards/websphere-liberty-profile/wlp03.png b/dashboards/websphere-liberty-profile/wlp03.png new file mode 100644 index 0000000000..108abbfd0b Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp03.png differ diff --git a/dashboards/websphere-liberty-profile/wlp04.png b/dashboards/websphere-liberty-profile/wlp04.png new file mode 100644 index 0000000000..b075f7c60f Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp04.png differ diff --git a/dashboards/websphere-liberty-profile/wlp05.png b/dashboards/websphere-liberty-profile/wlp05.png new file mode 100644 index 0000000000..584edd6b7a Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp05.png differ diff --git a/dashboards/websphere-liberty-profile/wlp06.png b/dashboards/websphere-liberty-profile/wlp06.png new file mode 100644 index 0000000000..06d7c42ca8 Binary files /dev/null and b/dashboards/websphere-liberty-profile/wlp06.png differ diff --git a/dashboards/windows-certs/Screenshot-1.png b/dashboards/windows-certs/Screenshot-1.png new file mode 100644 index 0000000000..12839b674c Binary files /dev/null and b/dashboards/windows-certs/Screenshot-1.png differ diff --git a/dashboards/windows-certs/windows-certs-expiration.json b/dashboards/windows-certs/windows-certs-expiration.json new file mode 100644 index 0000000000..8f8b236ff7 --- /dev/null +++ b/dashboards/windows-certs/windows-certs-expiration.json @@ -0,0 +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 + } + ] + } + }, + { + "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 + } + ] + } + }, + { + "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 + } + ] + } + }, + { + "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 + } + ] + } + }, + { + "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 + } + } + } + ] + }, + { + "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": "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 + } + ] + } + }, + { + "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 + } + } + } + ] + }, + { + "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": "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 + } + ] + } + }, + { + "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 + } + } + } + ] + }, + { + "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": "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 + } + ] + } + }, + { + "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 + } + } + } + ] + }, + { + "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 + } + ] + } + }, + { + "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 + } + ] + } + }, + { + "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 + } + } + } + ] + } + ], + "variables": [] + } \ No newline at end of file diff --git a/dashboards/wordpress-fullstack/dashboard.json b/dashboards/wordpress-fullstack/dashboard.json new file mode 100644 index 0000000000..a9b2d3e3ab --- /dev/null +++ b/dashboards/wordpress-fullstack/dashboard.json @@ -0,0 +1,1527 @@ +{ + "name": "WordPress Full Stack", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from \"PHP Application Name\" and \"Host Instance\" variables to display related metrics" + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/wordpress/logo.svg)" + } + }, + { + "title": "Unique Visitors", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) FROM PageView WHERE appName = {{appName}} SINCE 1 HOUR AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Device Category", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE deviceType = 'Desktop') AS 'Desktop', percentage(count(*), WHERE deviceType = 'Mobile') AS 'Mobile' FROM PageView WHERE appName = {{appName}} SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average FCP (seconds)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT average(firstContentfulPaint) WHERE appName = {{appName}} SINCE 1 DAY AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1.5 + }, + { + "alertSeverity": "CRITICAL", + "value": 2 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=ed1ef700-af59-df65-21e6-8f77ab492a6b).\n\nUnable to find data in your dashboard? - [Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/)\n\nFollow New Relic [Wordpress Full Stack documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/wordpress-fullstack-integration/) to instrument Wordpress.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=WordpressFullStack) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "Total Visitors", + "layout": { + "column": 3, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(session) FROM PageView WHERE appName = {{appName}} SINCE 1 hour ago TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Web Transaction Time (ms)", + "layout": { + "column": 6, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(apm.service.overview.web) * 1000 FROM Metric WHERE appName = {{appName}} FACET segmentName SINCE 1 hour ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Space Consuming Directories (MB)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM WPDirectories SELECT latest(dirSizeKB)/1000 AS 'Directory Size (MB)' FACET dirName LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Transactions", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Transaction WHERE appName = {{appName}} FACET request.uri LIMIT 10 SINCE 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top 10 Slowest Transactions", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT latest(duration) FACET name WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Duration Today Compared WIth 1 Week Ago (s)", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(duration) FROM Transaction WHERE appName = {{appName}} SINCE today COMPARE WITH 1 week ago TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top 5 User OS's", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) FROM PageView WHERE appName = {{appName}} SINCE 1 hour ago FACET userAgentName, userAgentOS LIMIT 5" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Database Query Time (seconds)", + "layout": { + "column": 3, + "row": 11, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(databaseDuration) FROM Transaction WHERE appName = {{appName}} SINCE 1 HOUR AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Database Call Counts", + "layout": { + "column": 8, + "row": 11, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(databaseCallCount) FROM Transaction SINCE 1 hour ago WHERE appName = {{appName}} FACET name TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU Consumption (%)", + "layout": { + "column": 1, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM SystemSample SELECT latest(cpuPercent) WHERE entityName = {{host_instance}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 5, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM SystemSample SELECT latest(memoryUsedPercent) WHERE entityName = {{host_instance}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Disk Usage (%)", + "layout": { + "column": 9, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM SystemSample SELECT latest(diskUsedPercent) WHERE entityName = {{host_instance}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Browser", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from the \"PHP Application Name\" variable to display related metrics" + } + }, + { + "title": "Page Durations (seconds)", + "layout": { + "column": 1, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT latest(backendDuration), latest(domProcessingDuration), latest(pageRenderingDuration), latest(duration) as 'Total Duration' SINCE 1 DAY AGO WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Active Sessions", + "layout": { + "column": 6, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(session) FROM PageView WHERE appName = {{appName}} until 10 seconds ago COMPARE WITH 1 hour ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Time To First Byte (TTFB)", + "layout": { + "column": 8, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT average(duration) + (SELECT rate(average(apm.service.datastore.operation.duration), 1 minute) FROM Metric WHERE appName = {{appName}} LIMIT 5 SINCE 1 WEEK AGO FACET concat(db.system)) AS 'seconds' WHERE appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0.8 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Page Views Comparision", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) AS '' FROM PageView WHERE appName = {{appName}} SINCE 1 week ago COMPARE WITH 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Response Time - Backend Duration (seconds)", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT latest(backendDuration) WHERE appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First Contentful Paint (seconds)", + "layout": { + "column": 4, + "row": 5, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageView SELECT latest(firstContentfulPaint) FACET pageUrl WHERE appName = {{appName}} SINCE 1 DAY AGO TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First Input Delay (%)", + "layout": { + "column": 8, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE firstInputDelay < 100) AS 'Good (<100ms)', percentage(count(*), WHERE firstInputDelay >= 100 and firstInputDelay < 300) AS 'Needs improvement (>=100 <300ms)', percentage(count(*), WHERE firstInputDelay >= 300) AS 'Poor (> 300ms)' FROM PageViewTiming WHERE firstInputDelay IS NOT NULL AND appName = {{appName}} TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Page Interaction Types", + "layout": { + "column": 11, + "row": 5, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM PageViewTiming SELECT count(*) WHERE appName = {{appName}} FACET interactionType " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Database", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from the \"MySQL Entity Name\" and \"PHP Application Name\" variables to display related metrics" + } + }, + { + "title": "Active Connections", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`mysql.node.net.threadsConnected`) as '' FROM Metric WHERE entity.name = {{entity_name}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connections per Second", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(mysql.node.net.connectionsPerSecond) AS '' WHERE entity.name = {{entity_name}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Operations Per Second", + "layout": { + "column": 5, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`mysql.node.query.insertPerSecond`) as 'Insert commands', average(`mysql.node.query.selectPerSecond`) as 'Select commands', average(`mysql.node.query.updatePerSecond`) as 'Update comands', average(`mysql.node.query.deletePerSecond`) as 'Delete commands' FROM Metric WHERE entity.name = {{entity_name}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "DB Operation and Table", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 9 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(apm.service.datastore.operation.duration * 1000) FROM Metric WHERE appName = {{appName}} FACET db.operation, db.sql.table LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received and Sent Bytes per Second", + "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 average(`mysql.node.net.bytesReceivedPerSecond`) as 'Bytes received', average(`mysql.node.net.bytesSentPerSecond`) as 'Bytes sent' FROM Metric WHERE entity.name = {{entity_name}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Read and Write InnoDB (bytes/s)", + "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 average(`mysql.node.innodb.dataReadBytesPerSecond`) as 'Read InnoDB data', average(`mysql.node.innodb.dataWrittenBytesPerSecond`) as 'Write InnoDB data' FROM Metric WHERE entity.name = {{entity_name}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Queries per Second", + "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 average(`mysql.node.query.queriesPerSecond`) * uniqueCount(entity.name) as 'Queries' FROM Metric WHERE `metricName` = 'mysql.node.query.queriesPerSecond' and entityName = {{entity_name}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "MySQL Error Messages", + "layout": { + "column": 1, + "row": 8, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT uniques(errorMessage) WHERE error = true AND errorMessage LIKE '%mysql%' AND appName = 'wordpress_php_agent'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Transactions", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from the \"PHP Application Name\" variable to display related metrics" + } + }, + { + "title": "Most Failed URLs", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT uniques(request.uri), uniqueCount(errorMessage) WHERE appName = {{appName}} AND http.statusCode > 200" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors By Request URL", + "layout": { + "column": 4, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) WHERE appName = {{appName}} AND response.statusCode > 200 FACET request.method, request.uri, errorMessage LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "MySQL Transaction Error Duration (seconds)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT latest(duration) WHERE error = true AND errorMessage LIKE '%mysql%' AND appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Status Codes (click on status code to filter)", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT count(*) FACET http.statusCode WHERE http.statusCode > 200 AND appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Transaction Error Messages", + "layout": { + "column": 4, + "row": 5, + "width": 9, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Transaction SELECT uniques(errorMessage) WHERE error = true AND appName = {{appName}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "3xx Redirects", + "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 Transaction SELECT count(*) WHERE http.statusCode >= 300 AND http.statusCode < 400 AND appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "4xx errors", + "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 Transaction SELECT count(*) WHERE http.statusCode >= 400 AND http.statusCode < 500 AND appName = {{appName}} TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "5xx errors", + "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 Transaction SELECT count(*) WHERE http.statusCode >= 500 AND http.statusCode < 600 AND appName = {{appName}} TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Plugins", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from the \"PHP Application Name\" variable to display related metrics" + } + }, + { + "title": "Most Time Consuming Plugins", + "layout": { + "column": 1, + "row": 2, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum((newrelic.timeslice.value) * 1000) / 1000 as 'Wordpress Plugins' FROM Metric WHERE appName = {{appName}} AND metricTimesliceName LIKE 'Framework/WordPress/Plugin/%' WITH METRIC_FORMAT 'Framework/WordPress/{plugin}/{name}' FACET name LIMIT 5 SINCE 2592000 seconds AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Most Time Consuming Plugins (seconds)", + "layout": { + "column": 4, + "row": 2, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum((newrelic.timeslice.value) * 1000) / 1000 as 'Wordpress Plugins' FROM Metric WHERE appName = {{appName}} AND metricTimesliceName LIKE 'Framework/WordPress/Plugin/%' WITH METRIC_FORMAT 'Framework/WordPress/{plugin}/{name}' FACET name LIMIT 5 SINCE 2592000 seconds AGO TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Active Plugins", + "layout": { + "column": 10, + "row": 2, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum((newrelic.timeslice.value) * 1000) as 'Wordpress Plugins' FROM Metric WHERE appName = {{appName}} AND metricTimesliceName LIKE 'Framework/WordPress/Plugin/%' WITH METRIC_FORMAT 'Framework/WordPress/{plugin}/{name}' FACET name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Choose variable\nSelect any value from the \"Log Type\" variable to display related metrics" + } + }, + { + "title": "Wordpress Debug Logs", + "layout": { + "column": 1, + "row": 2, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT * WHERE logtype = {{logtype}}" + } + ] + } + }, + { + "title": "Wordpress Debug Logs - Plugins", + "layout": { + "column": 7, + "row": 2, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT * WHERE logtype = {{logtype}} AND message LIKE '%plugin%'" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "appName", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(appName) SINCE 1 WEEK AGO" + }, + "title": "PHP Application Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "entity_name", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(entity.name) FROM Metric SINCE 1 WEEK AGO" + }, + "title": "MySQL Entity Name", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "host_instance", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM SystemSample SELECT uniques(entityName) SINCE 1 WEEK AGO" + }, + "title": "Host Instance", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + }, + { + "name": "logtype", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(logtype) SINCE 1 WEEK AGO" + }, + "title": "Log Type", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack01.png b/dashboards/wordpress-fullstack/wordpress-fullstack01.png new file mode 100644 index 0000000000..e942253d1b Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack01.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack02.png b/dashboards/wordpress-fullstack/wordpress-fullstack02.png new file mode 100644 index 0000000000..72897ed43f Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack02.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack03.png b/dashboards/wordpress-fullstack/wordpress-fullstack03.png new file mode 100644 index 0000000000..a9a1993533 Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack03.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack04.png b/dashboards/wordpress-fullstack/wordpress-fullstack04.png new file mode 100644 index 0000000000..2d55dbbcb8 Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack04.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack05.png b/dashboards/wordpress-fullstack/wordpress-fullstack05.png new file mode 100644 index 0000000000..80bce3a8db Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack05.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack06.png b/dashboards/wordpress-fullstack/wordpress-fullstack06.png new file mode 100644 index 0000000000..7f5a70fe88 Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack06.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack07.png b/dashboards/wordpress-fullstack/wordpress-fullstack07.png new file mode 100644 index 0000000000..7ca5e7cae5 Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack07.png differ diff --git a/dashboards/wordpress-fullstack/wordpress-fullstack08.png b/dashboards/wordpress-fullstack/wordpress-fullstack08.png new file mode 100644 index 0000000000..2649732d82 Binary files /dev/null and b/dashboards/wordpress-fullstack/wordpress-fullstack08.png differ diff --git a/data-sources/active-directory/config.yml b/data-sources/active-directory/config.yml new file mode 100644 index 0000000000..bc0dd1a526 --- /dev/null +++ b/data-sources/active-directory/config.yml @@ -0,0 +1,9 @@ +id: active-directory +displayName: Active Directory monitoring +description: | + Quickly monitor your Active Directory environment for a comprehensive view of health and availability. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/active-directory-integration/ +icon: logo.svg diff --git a/data-sources/active-directory/logo.svg b/data-sources/active-directory/logo.svg new file mode 100644 index 0000000000..31de7185d7 --- /dev/null +++ b/data-sources/active-directory/logo.svg @@ -0,0 +1 @@ +active-directory \ No newline at end of file diff --git a/data-sources/aerospike/config.yml b/data-sources/aerospike/config.yml new file mode 100644 index 0000000000..ae4f8f7eb6 --- /dev/null +++ b/data-sources/aerospike/config.yml @@ -0,0 +1,13 @@ +id: aerospike +displayName: Aerospike +description: | + Instrument and monitor your Aerospike with the New Relic infrastructure agent. Analyze your performance data using our pre-built dashboards and alert conditions. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/aerospike-integration/ +icon: logo.png + +keywords: + - aerospike + - real-time data platform \ No newline at end of file diff --git a/data-sources/aerospike/logo.png b/data-sources/aerospike/logo.png new file mode 100644 index 0000000000..ff8fa0605b Binary files /dev/null and b/data-sources/aerospike/logo.png differ diff --git a/data-sources/amazon-cloudwatch-metric-streams/config.yml b/data-sources/amazon-cloudwatch-metric-streams/config.yml index 1559d8a13d..9a122dd182 100644 --- a/data-sources/amazon-cloudwatch-metric-streams/config.yml +++ b/data-sources/amazon-cloudwatch-metric-streams/config.yml @@ -4,12 +4,16 @@ description: | AWS CloudWatch Metric Streams integration is the recommended solution to monitor all CloudWatch metrics from all AWS services, including custom namespaces install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/connect/aws-metric-stream/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: amazon-cloudwatch-metric-streams + requiresAccount: false keywords: - aws - cloudwatch - amazon web services - logs - security + - NR1_addData icon: logo.svg diff --git a/data-sources/amazon-eks-on-aws-fargate/config.yml b/data-sources/amazon-eks-on-aws-fargate/config.yml index 60d657c32b..9b86ced664 100644 --- a/data-sources/amazon-eks-on-aws-fargate/config.yml +++ b/data-sources/amazon-eks-on-aws-fargate/config.yml @@ -3,6 +3,9 @@ displayName: Amazon EKS on AWS Fargate description: Telemetry from Kube State Metrics, Kubelet, and cAdvisor for full observability of Kubernetes clusters running on EKS in Fargate. install: primary: - link: - url: https://docs.newrelic.com/docs/kubernetes-pixie/kubernetes-integration/installation/install-fargate-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: amazon-eks-on-aws-fargate + requiresAccount: false icon: logo.svg diff --git a/data-sources/amazon-security-lake/config.yml b/data-sources/amazon-security-lake/config.yml new file mode 100644 index 0000000000..13e0761683 --- /dev/null +++ b/data-sources/amazon-security-lake/config.yml @@ -0,0 +1,8 @@ +id: amazon-security-lake +displayName: Amazon Security Lake +description: Monitor Amazon Security Lake by sending logs to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-security-lake-monitoring-integration/ +icon: logo.svg diff --git a/data-sources/amazon-security-lake/logo.svg b/data-sources/amazon-security-lake/logo.svg new file mode 100644 index 0000000000..94db88def4 --- /dev/null +++ b/data-sources/amazon-security-lake/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data-sources/amazon-timestream/config.yml b/data-sources/amazon-timestream/config.yml new file mode 100644 index 0000000000..4cd7a414d2 --- /dev/null +++ b/data-sources/amazon-timestream/config.yml @@ -0,0 +1,8 @@ +id: amazon-timestream +displayName: Amazon Timestream +description: Monitor Amazon Timestream by sending metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-timestream-monitoring-integration/ +icon: logo.png \ No newline at end of file diff --git a/data-sources/amazon-timestream/logo.png b/data-sources/amazon-timestream/logo.png new file mode 100644 index 0000000000..5e2f9bee40 Binary files /dev/null and b/data-sources/amazon-timestream/logo.png differ diff --git a/data-sources/amazon-verified-access/config.yml b/data-sources/amazon-verified-access/config.yml new file mode 100644 index 0000000000..832a83e59c --- /dev/null +++ b/data-sources/amazon-verified-access/config.yml @@ -0,0 +1,8 @@ +id: amazon-verified-access +displayName: Amazon Verified Access +description: Monitor Amazon Verified Access by sending Access logs to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-verified-access-monitoring-integration/ +icon: logo.svg diff --git a/data-sources/amazon-verified-access/logo.svg b/data-sources/amazon-verified-access/logo.svg new file mode 100644 index 0000000000..94db88def4 --- /dev/null +++ b/data-sources/amazon-verified-access/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data-sources/amazon-vpc-lattice/config.yml b/data-sources/amazon-vpc-lattice/config.yml new file mode 100644 index 0000000000..6b948f2f84 --- /dev/null +++ b/data-sources/amazon-vpc-lattice/config.yml @@ -0,0 +1,8 @@ +id: amazon-vpc-lattice +displayName: Amazon VPC Lattice +description: Monitor Amazon VPC Lattice by sending Access logs or CloudWatch metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-vpc-lattice-monitoring-integration/ +icon: logo.jpeg diff --git a/data-sources/amazon-vpc-lattice/logo.jpeg b/data-sources/amazon-vpc-lattice/logo.jpeg new file mode 100644 index 0000000000..3ef360ee2f Binary files /dev/null and b/data-sources/amazon-vpc-lattice/logo.jpeg differ diff --git a/data-sources/ansible-automation-controller/config.yml b/data-sources/ansible-automation-controller/config.yml index bd40cee41a..dd37ba96d3 100644 --- a/data-sources/ansible-automation-controller/config.yml +++ b/data-sources/ansible-automation-controller/config.yml @@ -4,6 +4,9 @@ description: | The Ansible Automation Controller integration will enable you to monitor and analyze your Ansible Automation Controller infrastructure. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/ansible-controller-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: ansible-automation-controller + requiresAccount: false icon: logo.png diff --git a/data-sources/apache-flink/config.yml b/data-sources/apache-flink/config.yml index c8a871e8cc..897895a11a 100644 --- a/data-sources/apache-flink/config.yml +++ b/data-sources/apache-flink/config.yml @@ -1,9 +1,12 @@ id: apache-flink displayName: Apache Flink monitoring description: | - New Relic’s instant observability quickstart with Apache Flink monitoring helps to detect client, jobmanager and taskmanager logs and parses them into a JSON payload. + Our Apache Flink dashboard lets you track your logs, see your instrumentation sources, and track uptime and downtime for all your applications. You can view all your most important data in one place. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/install-configure-openmetrics/install-apache-flink/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: apache-flink + requiresAccount: false icon: logo.png diff --git a/data-sources/apache-hadoop/config.yml b/data-sources/apache-hadoop/config.yml new file mode 100644 index 0000000000..95b13224d3 --- /dev/null +++ b/data-sources/apache-hadoop/config.yml @@ -0,0 +1,12 @@ +id: apache-hadoop +displayName: Apache Hadoop +description: | + Optimize your Apache Hadoop performance using New Relic Apache Hadoop monitoring. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-hadoop-monitoring-integration/ +keywords: + - apache-hadoop + - apache \ No newline at end of file diff --git a/data-sources/apache-hadoop/logo.png b/data-sources/apache-hadoop/logo.png new file mode 100644 index 0000000000..9e260fbf53 Binary files /dev/null and b/data-sources/apache-hadoop/logo.png differ diff --git a/data-sources/apache-traffic-server/config.yml b/data-sources/apache-traffic-server/config.yml new file mode 100644 index 0000000000..7b25269a6c --- /dev/null +++ b/data-sources/apache-traffic-server/config.yml @@ -0,0 +1,13 @@ +id: apache-traffic-server +displayName: Apache Traffic Server +description: | + Optimize your Apache Traffic Server performance using New Relic Apache Traffic Server monitoring. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-traffic-server-monitoring-integration/ +keywords: + - apache-traffic-server + - apache + - ats \ No newline at end of file diff --git a/data-sources/apache-traffic-server/logo.png b/data-sources/apache-traffic-server/logo.png new file mode 100644 index 0000000000..3699d4a467 Binary files /dev/null and b/data-sources/apache-traffic-server/logo.png differ diff --git a/data-sources/apache-zooKeeper/config.yml b/data-sources/apache-zooKeeper/config.yml new file mode 100644 index 0000000000..7d4dca0e05 --- /dev/null +++ b/data-sources/apache-zooKeeper/config.yml @@ -0,0 +1,9 @@ +id: apache-zookeeper +displayName: Apache ZooKeeper +description: | + Unlock the power of Apache ZooKeeper monitoring with the seamless integration of New Relic infrastructure. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/zookeeper-monitoring-integration/ +icon: logo.png diff --git a/data-sources/apache-zooKeeper/logo.png b/data-sources/apache-zooKeeper/logo.png new file mode 100644 index 0000000000..f335e23333 Binary files /dev/null and b/data-sources/apache-zooKeeper/logo.png differ diff --git a/data-sources/apdex-optimizer/config.yml b/data-sources/apdex-optimizer/config.yml new file mode 100644 index 0000000000..9b13e98039 --- /dev/null +++ b/data-sources/apdex-optimizer/config.yml @@ -0,0 +1,9 @@ +id: apdex-optimizer +displayName: Apdex Optimizer +description: | + Comprehensive APM dashboard providing actionable insights, including Apdex scores over time, detailed breakdowns, transaction-level data, and threshold recommendations, empowering users to optimize application performance effectively +install: + primary: + link: + url: https://docs.newrelic.com/docs/apm/new-relic-apm/apdex/apdex-measure-user-satisfaction/ +icon: logo.svg diff --git a/data-sources/apdex-optimizer/logo.svg b/data-sources/apdex-optimizer/logo.svg new file mode 100644 index 0000000000..e0680f2866 --- /dev/null +++ b/data-sources/apdex-optimizer/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-sources/atlassian-jira/config.yml b/data-sources/atlassian-jira/config.yml index 610317628c..84276ed9b6 100644 --- a/data-sources/atlassian-jira/config.yml +++ b/data-sources/atlassian-jira/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.png install: primary: - link: - url: https://docs.newrelic.com/docs/alerts-applied-intelligence/notifications/notification-integrations/#jira + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: atlassian-jira + requiresAccount: false keywords: - JIRA - Atlassian diff --git a/data-sources/aws-chatbot/config.yml b/data-sources/aws-chatbot/config.yml new file mode 100644 index 0000000000..22e16c19a0 --- /dev/null +++ b/data-sources/aws-chatbot/config.yml @@ -0,0 +1,8 @@ +id: aws-chatbot +displayName: AWS Chatbot +description: Monitor AWS Chatbot by sending metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-chatbot-monitoring-integration/ +icon: logo.png \ No newline at end of file diff --git a/data-sources/aws-chatbot/logo.png b/data-sources/aws-chatbot/logo.png new file mode 100644 index 0000000000..22731fe7e5 Binary files /dev/null and b/data-sources/aws-chatbot/logo.png differ diff --git a/data-sources/aws-lex/config.yml b/data-sources/aws-lex/config.yml new file mode 100644 index 0000000000..36147d8d96 --- /dev/null +++ b/data-sources/aws-lex/config.yml @@ -0,0 +1,8 @@ +id: aws-lex +displayName: Amazon Lex +description: Monitor Amazon Lex by sending metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-lex-monitoring-integration +icon: logo.png diff --git a/data-sources/aws-lex/logo.png b/data-sources/aws-lex/logo.png new file mode 100644 index 0000000000..68ba7e3646 Binary files /dev/null and b/data-sources/aws-lex/logo.png differ diff --git a/data-sources/aws-polly/config.yml b/data-sources/aws-polly/config.yml new file mode 100644 index 0000000000..4cb6ffdc2c --- /dev/null +++ b/data-sources/aws-polly/config.yml @@ -0,0 +1,9 @@ +id: aws-polly +displayName: AWS Polly +description: |- + AWS Polly Machine Learning Services +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-translate-monitoring-integration +icon: logo.png diff --git a/data-sources/aws-polly/logo.png b/data-sources/aws-polly/logo.png new file mode 100644 index 0000000000..c6c41a44e4 Binary files /dev/null and b/data-sources/aws-polly/logo.png differ diff --git a/data-sources/aws-rekognition/config.yml b/data-sources/aws-rekognition/config.yml new file mode 100644 index 0000000000..3ffe40e80a --- /dev/null +++ b/data-sources/aws-rekognition/config.yml @@ -0,0 +1,8 @@ +id: aws-rekognition +displayName: Amazon Rekognition +description: Monitor Amazon Rekognition by sending metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-rekognition-monitoring-integration +icon: logo.png diff --git a/data-sources/aws-rekognition/logo.png b/data-sources/aws-rekognition/logo.png new file mode 100644 index 0000000000..7b238651ed Binary files /dev/null and b/data-sources/aws-rekognition/logo.png differ diff --git a/data-sources/aws-textract/config.yml b/data-sources/aws-textract/config.yml new file mode 100644 index 0000000000..e49d5d1787 --- /dev/null +++ b/data-sources/aws-textract/config.yml @@ -0,0 +1,9 @@ +id: aws-textract +displayName: AWS Textract +description: | + AWS Textract Machine Learning Services +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-textract +icon: logo.png diff --git a/data-sources/aws-textract/logo.png b/data-sources/aws-textract/logo.png new file mode 100644 index 0000000000..c4d7bccafb Binary files /dev/null and b/data-sources/aws-textract/logo.png differ diff --git a/data-sources/aws-transcribe/config.yml b/data-sources/aws-transcribe/config.yml new file mode 100644 index 0000000000..fbf9fa23fe --- /dev/null +++ b/data-sources/aws-transcribe/config.yml @@ -0,0 +1,8 @@ +id: aws-transcribe +displayName: AWS Transcribe +description: Monitor AWS Transcribe by sending metrics to New Relic +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-transcribe-monitoring-integration/ +icon: logo.png \ No newline at end of file diff --git a/data-sources/aws-transcribe/logo.png b/data-sources/aws-transcribe/logo.png new file mode 100644 index 0000000000..2afb751ff3 Binary files /dev/null and b/data-sources/aws-transcribe/logo.png differ diff --git a/data-sources/aws-translate/config.yml b/data-sources/aws-translate/config.yml new file mode 100644 index 0000000000..703f6bb800 --- /dev/null +++ b/data-sources/aws-translate/config.yml @@ -0,0 +1,9 @@ +id: aws-translate +displayName: AWS Translate +description: | + AWS Translate Machine Learning Services +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-translate +icon: logo.png diff --git a/data-sources/aws-translate/logo.png b/data-sources/aws-translate/logo.png new file mode 100644 index 0000000000..3b2074af3d Binary files /dev/null and b/data-sources/aws-translate/logo.png differ diff --git a/data-sources/azure-monitor/config.yml b/data-sources/azure-monitor/config.yml new file mode 100644 index 0000000000..6d7f9cc62e --- /dev/null +++ b/data-sources/azure-monitor/config.yml @@ -0,0 +1,9 @@ +id: azure-monitor +displayName: Azure Monitor +description: | + Set up Azure Monitor to monitor your Azure stack with New Relic's observability platform +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-monitor/ +icon: logo.svg diff --git a/data-sources/azure-monitor/logo.svg b/data-sources/azure-monitor/logo.svg new file mode 100644 index 0000000000..cd96a7d372 --- /dev/null +++ b/data-sources/azure-monitor/logo.svg @@ -0,0 +1,72 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data-sources/battlesnake/config.yml b/data-sources/battlesnake/config.yml index 33f434bbeb..d21dedc8be 100644 --- a/data-sources/battlesnake/config.yml +++ b/data-sources/battlesnake/config.yml @@ -3,6 +3,9 @@ displayName: Battlesnake custom events and attributes description: Observe your Battlesnake with New Relic custom attributes! install: primary: - link: - url: https://docs.newrelic.com/docs/data-apis/custom-data/custom-events/apm-report-custom-events-attributes/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: battlesnake + requiresAccount: false icon: logo.png diff --git a/data-sources/blazemeter/config.yml b/data-sources/blazemeter/config.yml new file mode 100644 index 0000000000..9787b68d60 --- /dev/null +++ b/data-sources/blazemeter/config.yml @@ -0,0 +1,19 @@ +id: blazemeter +displayName: BlazeMeter +description: | + The BlazeMeter New Relic integration allows you to collect metrics from API monitoring tests and transform them into actionable insights about your applications inside New Relic. +icon: logo.png +install: + primary: + link: + url: https://guide.blazemeter.com/hc/en-us/articles/13326704491153-New-Relic-Insights-Integration +keywords: + - blazemeter + - api + - performance + - load + - stress + - functional + - testing +categoryTerms: + - open source monitoring \ No newline at end of file diff --git a/data-sources/blazemeter/logo.png b/data-sources/blazemeter/logo.png new file mode 100644 index 0000000000..9ccbcfcb24 Binary files /dev/null and b/data-sources/blazemeter/logo.png differ diff --git a/data-sources/change-tracking/config.yml b/data-sources/change-tracking/config.yml deleted file mode 100644 index 32cde89d39..0000000000 --- a/data-sources/change-tracking/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -id: change-tracking -displayName: New Relic Change Tracking Markers -description: New Relic Change Tracking allows you to record important changes to any entity in your system. Users will be able to mark changes on time-series charts and analyze the impact of those changes on golden signals, errors, logs, anomalies and incidents, and more. -install: - primary: - link: - url: https://docs.newrelic.com/docs/change-tracking/change-tracking-introduction/ -icon: logo.svg diff --git a/data-sources/cloudflare/config.yml b/data-sources/cloudflare/config.yml index 0dffc1b2be..0e2a6ed0e4 100644 --- a/data-sources/cloudflare/config.yml +++ b/data-sources/cloudflare/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.png install: primary: - link: - url: https://docs.newrelic.com/docs/logs/forward-logs/cloudflare-logpush-forwarding + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: cloudflare + requiresAccount: false keywords: - cloudflare - logs diff --git a/data-sources/cloudfoundry/config.yml b/data-sources/cloudfoundry/config.yml deleted file mode 100644 index a4ca5bc4fe..0000000000 --- a/data-sources/cloudfoundry/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -id: cloudfoundry -displayName: CloudFoundry -description: | - Create, deploy, and manage microservice applications in Kubernetes containers. -install: - primary: - link: - url: https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/vmware-tanzu-pcf-integration -icon: logo.svg diff --git a/data-sources/cloudfoundry/logo.svg b/data-sources/cloudfoundry/logo.svg deleted file mode 100644 index d320c166d6..0000000000 --- a/data-sources/cloudfoundry/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/collectd/config.yml b/data-sources/collectd/config.yml index 26442f0aec..be2b3fe713 100644 --- a/data-sources/collectd/config.yml +++ b/data-sources/collectd/config.yml @@ -6,8 +6,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/collectd-open-source-integration + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: collectd + requiresAccount: false keywords: - infrastructure - open source monitoring diff --git a/data-sources/conviva/config.yml b/data-sources/conviva/config.yml new file mode 100644 index 0000000000..5c98bd992e --- /dev/null +++ b/data-sources/conviva/config.yml @@ -0,0 +1,11 @@ +id: conviva +displayName: Conviva +description: | + A New Relic Infrastructure on-host integration that uses the Conviva v3 + Metrics API to pull metrics from Conviva and push them into New Relic as + dimensional metrics. +install: + primary: + link: + url: https://github.com/newrelic/nri-conviva#installation +icon: logo.svg diff --git a/data-sources/conviva/logo.svg b/data-sources/conviva/logo.svg new file mode 100644 index 0000000000..911b6d572e --- /dev/null +++ b/data-sources/conviva/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data-sources/dapr/config.yml b/data-sources/dapr/config.yml new file mode 100644 index 0000000000..70c4cf033a --- /dev/null +++ b/data-sources/dapr/config.yml @@ -0,0 +1,19 @@ +id: dapr +displayName: Dapr Integration + +description: | + Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks. +icon: icon.png +install: + primary: + link: + url: https://docs.dapr.io/operations/monitoring/tracing/newrelic/ + +keywords: + - dapr + - open telemetry + - tracing + - community + - open source +categoryTerms: + - open source monitoring diff --git a/data-sources/dapr/icon.png b/data-sources/dapr/icon.png new file mode 100644 index 0000000000..7bdad7f19d Binary files /dev/null and b/data-sources/dapr/icon.png differ diff --git a/data-sources/deeper-network/config.yml b/data-sources/deeper-network/config.yml index f095b837f3..5133c17616 100644 --- a/data-sources/deeper-network/config.yml +++ b/data-sources/deeper-network/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.png install: primary: - link: - url: https://github.com/Kav91/deeper-connect-monitoring + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: deeper-network + requiresAccount: false keywords: - infrastructure - network diff --git a/data-sources/docker-otel/config.yml b/data-sources/docker-otel/config.yml new file mode 100644 index 0000000000..f4e07b246d --- /dev/null +++ b/data-sources/docker-otel/config.yml @@ -0,0 +1,20 @@ +id: docker-otel +displayName: Docker (OpenTelemetry) +description: | + The Open Telemetry Dockerstats receiver allows you to collect metrics related to the usage of CPU, memory, network, and more. +install: + primary: + link: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/ + + +icon: logo.svg + +keywords: + - infrastructure + - containers + - open telemetry + - docker + - featured +categoryTerms: + - containers diff --git a/data-sources/docker-otel/logo.svg b/data-sources/docker-otel/logo.svg new file mode 100644 index 0000000000..de97544316 --- /dev/null +++ b/data-sources/docker-otel/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data-sources/dojo/config.yml b/data-sources/dojo/config.yml index 16343a3af2..8beb898d7f 100644 --- a/data-sources/dojo/config.yml +++ b/data-sources/dojo/config.yml @@ -4,6 +4,9 @@ description: | With New Relic, monitor your Dojo solution to get full visibility into the core web vitals performance of your application or website. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/dojo-io-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: dojo + requiresAccount: false icon: logo.png diff --git a/data-sources/elixir/config.yml b/data-sources/elixir/config.yml index 1b9c07d3ca..cbe4c577d6 100644 --- a/data-sources/elixir/config.yml +++ b/data-sources/elixir/config.yml @@ -3,6 +3,9 @@ displayName: Elixir agent installation description: Start monitoring the performance of an Elixir application or service by installing the New Relic Elixir agent. install: primary: - link: - url: https://docs.newrelic.com/docs/integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: elixir + requiresAccount: false icon: logo.png diff --git a/data-sources/flutter-android/config.yml b/data-sources/flutter-android/config.yml new file mode 100644 index 0000000000..a4c5cb1364 --- /dev/null +++ b/data-sources/flutter-android/config.yml @@ -0,0 +1,15 @@ +id: flutter-android +displayName: Flutter Android +description: | + Identify and optimize Flutter Android app performance with New Relic Flutter Android monitoring. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/ + +keywords: + - flutter + - flutter android application + - android agent + - flutter agent \ No newline at end of file diff --git a/data-sources/flutter-android/logo.png b/data-sources/flutter-android/logo.png new file mode 100644 index 0000000000..cfc0ee42f3 Binary files /dev/null and b/data-sources/flutter-android/logo.png differ diff --git a/data-sources/flutter-ios/config.yml b/data-sources/flutter-ios/config.yml new file mode 100644 index 0000000000..552c568c10 --- /dev/null +++ b/data-sources/flutter-ios/config.yml @@ -0,0 +1,15 @@ +id: flutter-ios +displayName: Flutter iOS +description: | + Identify and optimize Flutter Android app performance with New Relic Flutter Android monitoring. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/ + +keywords: + - flutter + - flutter ios application + - ios agent + - flutter agent \ No newline at end of file diff --git a/data-sources/flutter-ios/logo.png b/data-sources/flutter-ios/logo.png new file mode 100644 index 0000000000..5ae499e057 Binary files /dev/null and b/data-sources/flutter-ios/logo.png differ diff --git a/data-sources/flutter-web/config.yml b/data-sources/flutter-web/config.yml new file mode 100644 index 0000000000..fef3f14640 --- /dev/null +++ b/data-sources/flutter-web/config.yml @@ -0,0 +1,16 @@ +id: flutter-web +displayName: Flutter Web +description: | + Monitor your Flutter applications, and analyze performance bottlenecks in the production environment. Visually monitor your web user experience across the world along with your application performance via the dashboard. +icon: logo.png +install: + primary: + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: flutter-web + requiresAccount: false +keywords: + - flutter + - flutter web application + - browser agent \ No newline at end of file diff --git a/data-sources/flutter-web/logo.png b/data-sources/flutter-web/logo.png new file mode 100644 index 0000000000..cfc0ee42f3 Binary files /dev/null and b/data-sources/flutter-web/logo.png differ diff --git a/data-sources/gigamon-appinsights/config.yml b/data-sources/gigamon-appinsights/config.yml new file mode 100644 index 0000000000..4de36d4c35 --- /dev/null +++ b/data-sources/gigamon-appinsights/config.yml @@ -0,0 +1,17 @@ +id: gigamon-appinsights +displayName: Gigamon Application Insights +description: | + Gigamon Application Intelligence unlocks full visibility into applications running in datacenters and public clouds, and get to the root causes of vulnerabilities and performance bottlenecks. +icon: logo.png +install: + primary: + link: + url: https://www.gigamon.com/partners/technology-partners.html#new-relic +keywords: + - Gigamon + - Gigamon Application Intelligence + - Gigamon Integration + - featured + - security + - packet capture + - network diff --git a/data-sources/gigamon-appinsights/logo.png b/data-sources/gigamon-appinsights/logo.png new file mode 100644 index 0000000000..8c33597841 Binary files /dev/null and b/data-sources/gigamon-appinsights/logo.png differ diff --git a/data-sources/gigamon/config.yml b/data-sources/gigamon/config.yml index b1ef825447..ff9504556f 100644 --- a/data-sources/gigamon/config.yml +++ b/data-sources/gigamon/config.yml @@ -8,10 +8,11 @@ icon: logo.png install: primary: link: - url: https://www.gigamon.com/lp/free-trial/request-live-cloud-demo.html + url: https://www.gigamon.com/content/dam/resource-library/english/deployment-guide/gigamon-new-relic-integration-quick-start-guide.pdf fallback: link: - url: https://www.gigamon.com/content/dam/resource-library/english/deployment-guide/gigamon-new-relic-integration-quick-start-guide.pdf + url: https://www.gigamon.com/lp/free-trial/request-live-cloud-demo.html + keywords: - Gigamon - Gigamon Cloud Suite diff --git a/data-sources/github-for-codestream/config.yml b/data-sources/github-for-codestream/config.yml deleted file mode 100644 index 43f83af96f..0000000000 --- a/data-sources/github-for-codestream/config.yml +++ /dev/null @@ -1,11 +0,0 @@ -id: github-for-codestream -displayName: GitHub for CodeStream -description: | - GitHub is a code hosting platform for version control and collaboration. It lets developers and others work together on projects from anywhere. - - With CodeStream you can create, review, and merge GitHub PRs without ever leaving your IDE. All with full source-tree and full file access, your favorite keybindings, and all the code intelligence embedded in your development environment. -install: - primary: - link: - url: https://docs.newrelic.com/docs/codestream/start-here/install-codestream/#connect-tools -icon: logo.png diff --git a/data-sources/github-for-codestream/logo.png b/data-sources/github-for-codestream/logo.png deleted file mode 100644 index 353bb4e581..0000000000 Binary files a/data-sources/github-for-codestream/logo.png and /dev/null differ diff --git a/data-sources/github-repo/config.yml b/data-sources/github-repo/config.yml new file mode 100644 index 0000000000..6f081a6155 --- /dev/null +++ b/data-sources/github-repo/config.yml @@ -0,0 +1,9 @@ +id: github-repo +displayName: GitHub Repository Monitoring +description: | + Monitor your GitHub or GitHub Enterprise repositories by adding your New Relic Log API endpoint as a webhook in GitHub. +install: + primary: + link: + url: https://docs.newrelic.com/docs/logs/log-api/introduction-log-api/ +icon: logo.png diff --git a/data-sources/github-repo/logo.png b/data-sources/github-repo/logo.png new file mode 100644 index 0000000000..f1f2899acd Binary files /dev/null and b/data-sources/github-repo/logo.png differ diff --git a/data-sources/grafana-prometheus-integration/config.yml b/data-sources/grafana-prometheus-integration/config.yml index 71b82821e7..6f122c6d6e 100644 --- a/data-sources/grafana-prometheus-integration/config.yml +++ b/data-sources/grafana-prometheus-integration/config.yml @@ -3,6 +3,9 @@ displayName: Grafana Prometheus Integration description: In Grafana, you can configure New Relic as a Prometheus data source. install: primary: - link: - url: https://docs.newrelic.com/docs/integrations/grafana-integrations/get-started/grafana-support-prometheus-promql/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: grafana-prometheus-integration + requiresAccount: false icon: logo.png diff --git a/data-sources/gridgain/config.yml b/data-sources/gridgain/config.yml new file mode 100644 index 0000000000..d7109f0926 --- /dev/null +++ b/data-sources/gridgain/config.yml @@ -0,0 +1,21 @@ +id: gridgain-data-source +displayName: GridGain +description: | + Collect the metrics and logs from your GridGain or Apache Ignite cluster using New Relic. +icon: gridgain.svg +install: + primary: + link: + url: https://www.gridgain.com/docs/tutorials/new-relic/new-relic-tutorial +keywords: + - database + - java + - cluster + - sql + - cache + - compute-grid + - apache-ignite + - ignite +categoryTerms: + - infrastructure + - logs diff --git a/data-sources/gridgain/gridgain.svg b/data-sources/gridgain/gridgain.svg new file mode 100644 index 0000000000..7376a3634a --- /dev/null +++ b/data-sources/gridgain/gridgain.svg @@ -0,0 +1,3 @@ + + + diff --git a/data-sources/hivemq-integration-docs/config.yml b/data-sources/hivemq-integration-docs/config.yml new file mode 100644 index 0000000000..adc637cfc5 --- /dev/null +++ b/data-sources/hivemq-integration-docs/config.yml @@ -0,0 +1,10 @@ +id: hivemq-integration-docs +displayName: HiveMQ integration +description: | + The New Relic HiveMQ integration allows you to monitor your HiveMQ objects like messages, caches and more. +install: + primary: + link: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/ + +icon: logo.svg diff --git a/data-sources/hivemq-integration-docs/logo.svg b/data-sources/hivemq-integration-docs/logo.svg new file mode 100644 index 0000000000..fe041eb022 --- /dev/null +++ b/data-sources/hivemq-integration-docs/logo.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-sources/ibmmq-integration-docs/config.yml b/data-sources/ibmmq-integration-docs/config.yml index 5290040de1..c782305ada 100644 --- a/data-sources/ibmmq-integration-docs/config.yml +++ b/data-sources/ibmmq-integration-docs/config.yml @@ -4,6 +4,9 @@ description: | The New Relic IBM MQ monitor allows you to monitor the performance of MQ Objects like channels and queues. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/ibmmq-monitoring-integration/#install + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: ibmmq-integration-docs + requiresAccount: false icon: logo.png diff --git a/data-sources/jenkins/config.yml b/data-sources/jenkins/config.yml index ea962ce778..9585773559 100644 --- a/data-sources/jenkins/config.yml +++ b/data-sources/jenkins/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/jenkins/monitoring-jenkins-ot/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: otel-jenkins-integration + requiresAccount: false keywords: - jenkins - opentelemetry diff --git a/data-sources/jfrog-platform/config.yml b/data-sources/jfrog-platform/config.yml index e408be9708..d3bffb1bd1 100644 --- a/data-sources/jfrog-platform/config.yml +++ b/data-sources/jfrog-platform/config.yml @@ -4,5 +4,5 @@ description: Observe JFrog Platform and gain insights using New Relic Observabil install: primary: link: - url: https://github.com/jfrog/log-analytics-newrelic + url: https://jfrog.com/help/r/jfrog-platform-administration-documentation/new-relic icon: icon.svg diff --git a/data-sources/jira-errors-inbox/config.yml b/data-sources/jira-errors-inbox/config.yml index 8fef35fa18..15bd34201d 100644 --- a/data-sources/jira-errors-inbox/config.yml +++ b/data-sources/jira-errors-inbox/config.yml @@ -3,6 +3,9 @@ displayName: Atlassian Jira for Errors Inbox description: Integrated errors inbox with Atlassian Jira (cloud) to easily create tickets for your errors. install: primary: - link: - url: https://docs.newrelic.com/docs/errors-inbox/errors-inbox/#jira + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: jira-errors-inbox + requiresAccount: false icon: logo.svg diff --git a/data-sources/jmeter/config.yml b/data-sources/jmeter/config.yml new file mode 100644 index 0000000000..0da165b1f3 --- /dev/null +++ b/data-sources/jmeter/config.yml @@ -0,0 +1,18 @@ +id: jmeter +displayName: JMeter +description: | + The Apache JMeter plug-in enables you to send test results as metrics to New Relic. This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. +icon: logo.png +install: + primary: + link: + url: https://github.com/darrensmithwtc/jmeter-backend-newrelic +keywords: + - jmeter + - performance + - load + - stress + - functional + - testing +categoryTerms: + - open source monitoring diff --git a/data-sources/jmeter/logo.png b/data-sources/jmeter/logo.png new file mode 100644 index 0000000000..d30a4a9ee6 Binary files /dev/null and b/data-sources/jmeter/logo.png differ diff --git a/data-sources/k6/config.yml b/data-sources/k6/config.yml new file mode 100644 index 0000000000..267a095a42 --- /dev/null +++ b/data-sources/k6/config.yml @@ -0,0 +1,9 @@ +id: k6 +displayName: k6 +description: | + New Relic can receive your k6 telemetry data via New Relic's StatsD 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/new-relic/ +icon: logo.svg diff --git a/data-sources/k6/logo.png b/data-sources/k6/logo.png new file mode 100644 index 0000000000..bf1913c376 Binary files /dev/null and b/data-sources/k6/logo.png differ diff --git a/data-sources/lacework/config.yml b/data-sources/lacework/config.yml index 67a16a96b1..4dd9b5c2b2 100644 --- a/data-sources/lacework/config.yml +++ b/data-sources/lacework/config.yml @@ -1,18 +1,12 @@ id: lacework displayName: Lacework description: | - Lacework is a comprehensive cloud security platform. We aim to turn security into a data problem and replace the frictionful processes for things like breach investigations or achieving compliance standards with simple, contextualized workflows. - - Technically, our approach is that we replace the traditional 'rules' based mentality that requires you to predict attacker patterns ahead of time with a fully ML based approach. We baseline what normal user, application and network behaviors look like across your workloads and cloud accounts automatically and then only alert you to deviations from the norm. This significantly reduces the amount of toil in setting up and maintaining our solution, but also drastically improves the efficacy and amount of security alerts you will receive. - - The following Quickstart brings the curated security alerts for misconfigurations and anomalous security behaviors into the New Relic platform so you can easily triage against your wealth of observability data or easily transition from monitoring to security investigations from a single interface! - - If you encounter any issues, have feedback or would like more details on how to get started, please head over to support.lacework.com or send an email to adam.larson@lacework.net! + Lacework is a comprehensive cloud security platform. We aim to turn security into a data problem and replace frictionful processes with simple, contextualized workflows. icon: logo.svg install: primary: link: - url: https://support.lacework.com/hc/en-us/articles/360005842354-New-Relic + url: https://docs.lacework.net/onboarding/new-relic keywords: - security - compliance diff --git a/data-sources/lambdatest/config.yml b/data-sources/lambdatest/config.yml new file mode 100644 index 0000000000..d7563d1edd --- /dev/null +++ b/data-sources/lambdatest/config.yml @@ -0,0 +1,9 @@ +id: lambdatest +displayName: LambdaTest +description: | + LambdaTest is an AI-powered test orchestration and execution platform to run manual and automated tests at scale. +install: + primary: + link: + url: https://www.lambdatest.com/support/docs/new-relic-integration/ +icon: logo.svg \ No newline at end of file diff --git a/data-sources/lambdatest/logo.svg b/data-sources/lambdatest/logo.svg new file mode 100644 index 0000000000..03d0f6a2a2 --- /dev/null +++ b/data-sources/lambdatest/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/data-sources/langchain-vectordb/config.yml b/data-sources/langchain-vectordb/config.yml new file mode 100644 index 0000000000..8ad1c143ed --- /dev/null +++ b/data-sources/langchain-vectordb/config.yml @@ -0,0 +1,23 @@ +id: langchain-vectordb +displayName: LangChain Vector Database +description: | + Implement monitoring and instrumentation for your LangChain Vector Database and ensure that your vector database is integrated into New Relic for effective performance analysis and insights. +install: + primary: + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: langchain-vectordb + requiresAccount: false +icon: logo.png +keywords: + - langchain vector database + - langchain ai + - lang + - chain + - ai + - lang chain + - large language model + - natural language processing + - machine learning + - artificial intelligence \ No newline at end of file diff --git a/data-sources/langchain-vectordb/logo.png b/data-sources/langchain-vectordb/logo.png new file mode 100644 index 0000000000..240e64b569 Binary files /dev/null and b/data-sources/langchain-vectordb/logo.png differ diff --git a/data-sources/langchain/config.yml b/data-sources/langchain/config.yml new file mode 100644 index 0000000000..26eb9ae622 --- /dev/null +++ b/data-sources/langchain/config.yml @@ -0,0 +1,23 @@ +id: langchain +displayName: LangChain +description: | + Implement monitoring and instrumentation for your LangChain, and ensure that your LangChain data is integrated into New Relic for effective performance analysis and insights. +install: + primary: + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: langchain + requiresAccount: false +icon: logo.png +keywords: + - langchain + - langchain ai + - lang + - chain + - ai + - lang chain + - large language model + - natural language processing + - machine learning + - artificial intelligence diff --git a/data-sources/langchain/logo.png b/data-sources/langchain/logo.png new file mode 100644 index 0000000000..240e64b569 Binary files /dev/null and b/data-sources/langchain/logo.png differ diff --git a/data-sources/lighttpd/config.yml b/data-sources/lighttpd/config.yml new file mode 100644 index 0000000000..f60971f19c --- /dev/null +++ b/data-sources/lighttpd/config.yml @@ -0,0 +1,12 @@ +id: lighttpd +displayName: Lighttpd +description: | + With our Lighttpd integration you can monitor the performance of your web server. See your uptime, network in bytes and packets, number of requests, and more. +install: + primary: + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: lighttpd + requiresAccount: false +icon: logo.png diff --git a/data-sources/lighttpd/logo.png b/data-sources/lighttpd/logo.png new file mode 100644 index 0000000000..4994b5278e Binary files /dev/null and b/data-sources/lighttpd/logo.png differ diff --git a/data-sources/logs-api/config.yml b/data-sources/logs-api/config.yml index 4f36a22bc1..8452eca735 100644 --- a/data-sources/logs-api/config.yml +++ b/data-sources/logs-api/config.yml @@ -3,6 +3,9 @@ displayName: Logs API description: If our logging solutions don't meet your needs, you can use our Log API to send log data directly to New Relic's Log management via an HTTP endpoint. install: primary: - link: - url: https://docs.newrelic.com/docs/logs/log-management/log-api/introduction-log-api/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: logs-api + requiresAccount: false icon: logo.png diff --git a/data-sources/mariadb/config.yml b/data-sources/mariadb/config.yml deleted file mode 100644 index 75cdb6ca8b..0000000000 --- a/data-sources/mariadb/config.yml +++ /dev/null @@ -1,21 +0,0 @@ -id: mariadb -displayName: MariaDB -description: | - MariaDB is a community-developed, commercially supported fork of the MySQL - relational database management system. -icon: logo.svg -install: - primary: - nerdlet: - nerdletId: nr1-install-newrelic.quickstart-installation-plan - nerdletState: - quickstartId: 0919c174-0ce5-4b34-a5c0-255986ff9706 - requiresAccount: true - fallback: - link: - url: https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/mysql-monitoring-integration -keywords: - - infrastructure - - database -categoryTerms: - - infrastructure diff --git a/data-sources/mariadb/logo.svg b/data-sources/mariadb/logo.svg deleted file mode 100644 index 1d223f8f57..0000000000 --- a/data-sources/mariadb/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/metric-api/config.yml b/data-sources/metric-api/config.yml index eb02d67f9d..15257def45 100644 --- a/data-sources/metric-api/config.yml +++ b/data-sources/metric-api/config.yml @@ -4,6 +4,9 @@ description: | New Relic's Metric API can be used to send metric data to New Relic from a variety of sources. This API is how metrics from some of our integrations and exporters get into New Relic. install: primary: - link: - url: https://docs.newrelic.com/docs/telemetry-data-platform/ingest-apis/metric-api/introduction-metric-api/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: metric-api + requiresAccount: false icon: logo.png diff --git a/data-sources/microsoft-teams-for-codestream/config.yml b/data-sources/microsoft-teams-for-codestream/config.yml deleted file mode 100644 index 29a356ce7a..0000000000 --- a/data-sources/microsoft-teams-for-codestream/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -id: microsoft-teams-for-codestream -displayName: Microsoft Teams for CodeStream -description: | - Guide to help you get set up using New Relic's Microsoft Teams for CodeStream. -install: - primary: - link: - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/msteams-integration/ -icon: logo.png diff --git a/data-sources/microsoft-teams-for-codestream/logo.png b/data-sources/microsoft-teams-for-codestream/logo.png deleted file mode 100644 index 1f4ba05f91..0000000000 Binary files a/data-sources/microsoft-teams-for-codestream/logo.png and /dev/null differ diff --git a/data-sources/mobile-network-performance/config.yml b/data-sources/mobile-network-performance/config.yml new file mode 100644 index 0000000000..1bb51cbd3b --- /dev/null +++ b/data-sources/mobile-network-performance/config.yml @@ -0,0 +1,23 @@ +id: mobile-network-performance-install + +displayName: Mobile Network Performance + +description: | + This guide details how to use and instrument mobile application and install dashboard to monitor your application on mobile devices with New Relic. + +icon: logo.png + +install: + primary: + link: + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ + +keywords: + - dashboard + - mobile-crash + - mobile network + - mobile agent + - HTTP data + - android + - ios + - apps \ No newline at end of file diff --git a/data-sources/mobile-network-performance/logo.png b/data-sources/mobile-network-performance/logo.png new file mode 100644 index 0000000000..06116828cd Binary files /dev/null and b/data-sources/mobile-network-performance/logo.png differ diff --git a/data-sources/mongodb-prometheus-integration-docs/config.yml b/data-sources/mongodb-prometheus-integration-docs/config.yml index 6f68059147..6a788c13f2 100644 --- a/data-sources/mongodb-prometheus-integration-docs/config.yml +++ b/data-sources/mongodb-prometheus-integration-docs/config.yml @@ -4,6 +4,9 @@ description: | Our MongoDB integration collects and sends inventory and metrics from your MongoDB cluster to our platform, where you can aggregate and visualize key performance metrics. We collect data on mongos, mongod, and config servers, as well as on databases and collections to help pinpoint performance bottlenecks. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/mongodb/mongodb-monitoring-integration-new/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: mongodb-prometheus-integration-docs + requiresAccount: false icon: logo.jpeg diff --git a/data-sources/mux/config.yml b/data-sources/mux/config.yml new file mode 100644 index 0000000000..58beaf8ef8 --- /dev/null +++ b/data-sources/mux/config.yml @@ -0,0 +1,21 @@ +id: mux-video +displayName: Mux +description: | + Mux allows users to launch video features in days, customize the player experience, and monitor video streaming performance, all while scaling seamlessly to the world’s largest audiences. +icon: logo.svg +install: + primary: + link: + url: https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/ +keywords: + - mux + - video quality + - video experience + - quality of experience + - video streaming + - video metrics + - featured + - newrelic partner + - NR1_addData +categoryTerms: + - newrelic partner diff --git a/data-sources/mux/logo.svg b/data-sources/mux/logo.svg new file mode 100644 index 0000000000..8ef574f0c4 --- /dev/null +++ b/data-sources/mux/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/data-sources/netlify-logs/config.yml b/data-sources/netlify-logs/config.yml index 11bba722f2..5fd9f2f3f2 100644 --- a/data-sources/netlify-logs/config.yml +++ b/data-sources/netlify-logs/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.png install: primary: - link: - url: https://docs.netlify.com/monitor-sites/log-drains/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: netlify-logs + requiresAccount: false keywords: - netlify - logs diff --git a/data-sources/network-data-ingest-and-cardinality/config.yml b/data-sources/network-data-ingest-and-cardinality/config.yml index f5960440c2..52ea98642b 100644 --- a/data-sources/network-data-ingest-and-cardinality/config.yml +++ b/data-sources/network-data-ingest-and-cardinality/config.yml @@ -16,7 +16,6 @@ keywords: - cardinality - ktranslate - kentik - - featured - infrastructure categoryTerms: - newrelic partner diff --git a/data-sources/newrelic-ingest-metric/config.yml b/data-sources/newrelic-ingest-metric/config.yml deleted file mode 100644 index 9ebc7344d7..0000000000 --- a/data-sources/newrelic-ingest-metric/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -id: newrelic-ingest-metric -displayName: New Relic Ingest Metric -description: | - Use this quickstart to set up a synthetic monitor that: Queries ingestion by data source, faceted by the attribute of your choice (e.g., APM Events by appName); Transforms the output into a metric that is pushed to the Metric API; Can be queried for consumption analysis / dashboards for 13 months -install: - primary: - link: - url: https://github.com/newrelic-experimental/nr1-ingest-metric-script -icon: logo.svg diff --git a/data-sources/nextcloud/config.yml b/data-sources/nextcloud/config.yml index 580eb62f3a..560be37e65 100644 --- a/data-sources/nextcloud/config.yml +++ b/data-sources/nextcloud/config.yml @@ -4,6 +4,9 @@ description: | Use our infrastructure agent and the Prometheus open metric integration to monitor the performance of the processes on your Nextcloud server. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nextcloud-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: nextcloud + requiresAccount: false icon: logo.png diff --git a/data-sources/nr-reports/config.yml b/data-sources/nr-reports/config.yml new file mode 100644 index 0000000000..0e2d7929b0 --- /dev/null +++ b/data-sources/nr-reports/config.yml @@ -0,0 +1,11 @@ +id: nr-reports +displayName: New Relic Reports +description: | + New Relic Reports is an engine for automating the generation of custom reports + built using telemetry in the New Relic Telemetry Data Platform and the delivery + of those reports via a variety of channels. +install: + primary: + link: + url: https://github.com/newrelic/nr-reports#installation +icon: logo.svg diff --git a/data-sources/change-tracking/logo.svg b/data-sources/nr-reports/logo.svg similarity index 100% rename from data-sources/change-tracking/logo.svg rename to data-sources/nr-reports/logo.svg diff --git a/data-sources/nuxtjs/config.yml b/data-sources/nuxtjs/config.yml index a67bca9b73..9be580196d 100644 --- a/data-sources/nuxtjs/config.yml +++ b/data-sources/nuxtjs/config.yml @@ -4,6 +4,9 @@ description: | Instrument and monitor your NuxtJS build apps with New Relic’s Vue browser monitoring agent. Analyze performance data right out of the box. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/browser-monitoring-integrations/nuxt-js-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: nuxtjs + requiresAccount: false icon: logo.png diff --git a/data-sources/nvidia-dcgm/config.yml b/data-sources/nvidia-dcgm/config.yml new file mode 100644 index 0000000000..19e71ce6ef --- /dev/null +++ b/data-sources/nvidia-dcgm/config.yml @@ -0,0 +1,21 @@ +id: nvidia-dcgm +displayName: NVIDIA DCGM +description: | + Monitor and analyze your NVIDIA DCGM infrastructure with New Relic. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-dcgm-integration/ +icon: logo.png +keywords: + - NVIDIA DCGM + - AI Acceleration + - Machine Learning Acceleration + - GPU Management + - AI Management + - Machine Learning Management + - Deep Learning Performance + - AI Performance + - GPU Optimization + - AI Optimization + - NR1_addData \ No newline at end of file diff --git a/data-sources/nvidia-dcgm/logo.png b/data-sources/nvidia-dcgm/logo.png new file mode 100644 index 0000000000..36d7822f35 Binary files /dev/null and b/data-sources/nvidia-dcgm/logo.png differ diff --git a/data-sources/nvidia-gpu/config.yml b/data-sources/nvidia-gpu/config.yml new file mode 100644 index 0000000000..c837e167f7 --- /dev/null +++ b/data-sources/nvidia-gpu/config.yml @@ -0,0 +1,19 @@ +id: nvidia-gpu +displayName: Nvidia GPUs +description: | + Monitor Nvidia GPUs based on the Nvidia SMI utility. + +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-gpu-integration/ + +icon: logo.png + +keywords: + - infrastructure + - nvidia + - gpu + +categoryTerms: + - infrastructure \ No newline at end of file diff --git a/data-sources/nvidia-gpu/logo.png b/data-sources/nvidia-gpu/logo.png new file mode 100644 index 0000000000..00e777df8c Binary files /dev/null and b/data-sources/nvidia-gpu/logo.png differ diff --git a/data-sources/okhttp/config.yml b/data-sources/okhttp/config.yml index 5596b87865..7d5d54c4a7 100644 --- a/data-sources/okhttp/config.yml +++ b/data-sources/okhttp/config.yml @@ -3,6 +3,9 @@ displayName: OKHTTP description: OkHttp is a third-party library developed by Square for sending and receive HTTP-based network requests. install: primary: - link: - url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/install-configure/configure-proguard-or-dexguard-android-apps + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: okhttp + requiresAccount: false icon: logo.png diff --git a/data-sources/openai/config.yaml b/data-sources/openai/config.yaml deleted file mode 100644 index f0c542e2c3..0000000000 --- a/data-sources/openai/config.yaml +++ /dev/null @@ -1,20 +0,0 @@ -id: openai -displayName: OpenAI -description: | - A lightweight tool to monitor your OpenAI workload. -icon: openai-logo.svg -install: - primary: - link: - url: https://github.com/newrelic/openai-api-monitoring - -keywords: - - NR1_addData - - NR1_sys - - openai - - gpt - - gpt3 - - mlops - -categoryTerms: - - mlops diff --git a/data-sources/openstack-controller/config.yml b/data-sources/openstack-controller/config.yml new file mode 100644 index 0000000000..77f8da0b02 --- /dev/null +++ b/data-sources/openstack-controller/config.yml @@ -0,0 +1,16 @@ +id: openstack-controller +displayName: Openstack Controller +description: | + Monitor and analyze your Openstack Controller infrastructure with New Relic. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/openstack-controller-integration/ +icon: logo.png +keywords: + - openstack controller + - openstack + - nova controller + - neutron controller + - cinder controller + - Keystone controller \ No newline at end of file diff --git a/data-sources/openstack-controller/logo.png b/data-sources/openstack-controller/logo.png new file mode 100644 index 0000000000..3f69a04377 Binary files /dev/null and b/data-sources/openstack-controller/logo.png differ diff --git a/data-sources/perfmon/config.yml b/data-sources/perfmon/config.yml index a2553747cf..c0105428c3 100644 --- a/data-sources/perfmon/config.yml +++ b/data-sources/perfmon/config.yml @@ -6,8 +6,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://docs.newrelic.com/docs/perfmon-open-source-integration + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: perfmon + requiresAccount: false keywords: - infrastructure - windows diff --git a/data-sources/port-monitoring/config.yml b/data-sources/port-monitoring/config.yml index 8328e0150e..1dafa5104e 100644 --- a/data-sources/port-monitoring/config.yml +++ b/data-sources/port-monitoring/config.yml @@ -4,6 +4,9 @@ description: | Efficient port monitoring is essential to understand context for status changes and respond quickly. Download the New Relic port monitoring quickstart to track your network port’s critical metrics and improve performance. install: primary: - link: - url: https://docs.newrelic.com/docs/port-monitoring-open-source-integration + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: port-monitoring + requiresAccount: false icon: logo.svg diff --git a/data-sources/postfix/config.yml b/data-sources/postfix/config.yml new file mode 100644 index 0000000000..20378c28f3 --- /dev/null +++ b/data-sources/postfix/config.yml @@ -0,0 +1,9 @@ +id: postfix +displayName: Postfix +description: | + Monitor the performance metrics of your Postfix mail server in real-time with New Relic APM. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/postfix-monitoring-integration +icon: logo.png diff --git a/data-sources/postfix/logo.png b/data-sources/postfix/logo.png new file mode 100644 index 0000000000..3a61c656a9 Binary files /dev/null and b/data-sources/postfix/logo.png differ diff --git a/data-sources/postman/config.yml b/data-sources/postman/config.yml index 277a03e44e..5758b4299f 100644 --- a/data-sources/postman/config.yml +++ b/data-sources/postman/config.yml @@ -5,8 +5,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://learning.postman.com/docs/integrations/available-integrations/new-relic/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: postman + requiresAccount: false keywords: - api - postman diff --git a/data-sources/public-api-performance/config.yml b/data-sources/public-api-performance/config.yml deleted file mode 100644 index ae7a051888..0000000000 --- a/data-sources/public-api-performance/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -id: public-api-performance -displayName: New Relic Public API Performance -description: The Public API Performance dashboard is a dashboard supported by New Relic’s Global Performance data sets. It’s an out-of-the-box dashboard included as part of your New Relic account. -install: - primary: - link: - url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/explore-public-api-performance-dashboard/ -icon: logo.svg diff --git a/data-sources/public-api-performance/logo.svg b/data-sources/public-api-performance/logo.svg deleted file mode 100644 index 8dab573e6e..0000000000 --- a/data-sources/public-api-performance/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/redis-enterprise/config.yml b/data-sources/redis-enterprise/config.yml index 00639b860d..e54df06fdd 100644 --- a/data-sources/redis-enterprise/config.yml +++ b/data-sources/redis-enterprise/config.yml @@ -1,12 +1,15 @@ id: redis-enterprise displayName: Redis Enterprise description: | - Provides deep insight into the Redis Enterprise Software offering detailed cluster, database and Active/Active metrics + With this integration, you can get deep insight into the Redis Enterprise Software. You can see detailed cluster, database, and Active-Active metrics. icon: logo.png install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redis/redis-enterprise-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: redis-enterprise + requiresAccount: false keywords: - newrelic partner - devops diff --git a/data-sources/redis-otel/config.yml b/data-sources/redis-otel/config.yml new file mode 100644 index 0000000000..8f39d0a327 --- /dev/null +++ b/data-sources/redis-otel/config.yml @@ -0,0 +1,19 @@ +id: redis-otel +displayName: Redis (OpenTelemetry) +description: | + The OpenTelemetry Redis receiver enables the collection of metrics related to clients, connections, memory usage, network, and more. +install: + primary: + link: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-redis + +icon: logo.svg + +keywords: + - infrastructure + - database + - open telemetry + - redis + +categoryTerms: + - infrastructure diff --git a/data-sources/redis-otel/logo.svg b/data-sources/redis-otel/logo.svg new file mode 100644 index 0000000000..ed312206b9 --- /dev/null +++ b/data-sources/redis-otel/logo.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/data-sources/redmine/config.yml b/data-sources/redmine/config.yml index 912e5fd570..35dcdd977e 100644 --- a/data-sources/redmine/config.yml +++ b/data-sources/redmine/config.yml @@ -1,9 +1,12 @@ id: redmine displayName: Redmine monitoring description: | - New Relic’s instant observability Redmine quickstart helps you get full visibility into the into the performance of your Redmine app. + New Relic Redmine quickstart helps you get full visibility into the performance of your Redmine app. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redmine-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: redmine + requiresAccount: false icon: logo.png diff --git a/data-sources/redpanda/config.yml b/data-sources/redpanda/config.yml index 7ac171addc..cdd7f6be3c 100644 --- a/data-sources/redpanda/config.yml +++ b/data-sources/redpanda/config.yml @@ -1,9 +1,12 @@ id: redpanda displayName: Redpanda description: | - Using New Relic’s instant observability quickstart with Redpanda monitoring, you can detect metrics for debugging and monitoring your system’s health. + With our infrastructure agent and Prometheus integration, you can track your Redpanda data. See your Redpanda scheduling groups, service errors, and uptime. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redpanda-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: redpanda + requiresAccount: false icon: logo.png diff --git a/data-sources/rmi/config.yml b/data-sources/rmi/config.yml new file mode 100644 index 0000000000..923ab8dc2c --- /dev/null +++ b/data-sources/rmi/config.yml @@ -0,0 +1,23 @@ +id: newrelic-java-rmi +displayName: RMI Java Agent Extension +description: | + Deploy RMI Java agent for linking client-server calls, enabling effective monitoring of interactions. Tie client and server transactions with Distributed Tracing (DT). +install: + primary: + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: newrelic-java-rmi + requiresAccount: false + fallback: + link: + url: https://github.com/newrelic/newrelic-java-rmi/tree/main#installation +icon: logo.svg +keywords: + - nrlabs + - nrlabs-data + - apm + - java + - rmi + - remote method invocation + - NR1_addData diff --git a/data-sources/rmi/logo.svg b/data-sources/rmi/logo.svg new file mode 100644 index 0000000000..44dad2a2ed --- /dev/null +++ b/data-sources/rmi/logo.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-sources/sendmail/config.yml b/data-sources/sendmail/config.yml new file mode 100644 index 0000000000..4195667977 --- /dev/null +++ b/data-sources/sendmail/config.yml @@ -0,0 +1,9 @@ +id: sendmail +displayName: Sendmail +description: | + Use our infrastructure agent and Flex configuration to export Sendmail data to New Relic. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sendmail-monitoring-integration +icon: logo.png diff --git a/data-sources/sendmail/logo.png b/data-sources/sendmail/logo.png new file mode 100644 index 0000000000..7ff8bb7eaa Binary files /dev/null and b/data-sources/sendmail/logo.png differ diff --git a/data-sources/shopify/config.yml b/data-sources/shopify/config.yml new file mode 100644 index 0000000000..05b6fabba1 --- /dev/null +++ b/data-sources/shopify/config.yml @@ -0,0 +1,17 @@ +id: shopify +displayName: Shopify +description: | + Shopify is a website building tool. You can use New Relic's browser agent to monitor your websites created in Shopify. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent/ +keywords: + - traffic + - browser + - agent + - web app + - newrelic partner +categoryTerms: + - newrelic partner diff --git a/data-sources/shopify/logo.png b/data-sources/shopify/logo.png new file mode 100644 index 0000000000..7cd4ecd1d1 Binary files /dev/null and b/data-sources/shopify/logo.png differ diff --git a/data-sources/slack-for-codestream/config.yml b/data-sources/slack-for-codestream/config.yml deleted file mode 100644 index 790aae7342..0000000000 --- a/data-sources/slack-for-codestream/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -id: slack-for-codestream -displayName: Slack for CodeStream -description: | - Connect New Relic CodeStream to your team's Slack channel. -install: - primary: - link: - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/slack-integration/ -icon: logo.png diff --git a/data-sources/slack-for-codestream/logo.png b/data-sources/slack-for-codestream/logo.png deleted file mode 100644 index c51a425f93..0000000000 Binary files a/data-sources/slack-for-codestream/logo.png and /dev/null differ diff --git a/data-sources/snowflake/config.yml b/data-sources/snowflake/config.yml index 053ce35d9c..1b29281dbe 100644 --- a/data-sources/snowflake/config.yml +++ b/data-sources/snowflake/config.yml @@ -4,6 +4,9 @@ description: | Quickly monitor your Snowflake application by tracking performance issues with a full end-to-end view of distributed traces. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/snowflake-integration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: snowflake + requiresAccount: false icon: logo.svg diff --git a/data-sources/sonarqube/config.yml b/data-sources/sonarqube/config.yml new file mode 100644 index 0000000000..e47597a881 --- /dev/null +++ b/data-sources/sonarqube/config.yml @@ -0,0 +1,11 @@ +id: sonarqube +displayName: SonarQube +description: | + Identify and optimize SonarQube performance with New Relic SonarQube monitoring. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/ +keywords: + - sonarqube diff --git a/data-sources/sonarqube/logo.png b/data-sources/sonarqube/logo.png new file mode 100644 index 0000000000..fdc2c5ed92 Binary files /dev/null and b/data-sources/sonarqube/logo.png differ diff --git a/data-sources/squid-prometheus-integration-docs/config.yml b/data-sources/squid-prometheus-integration-docs/config.yml new file mode 100644 index 0000000000..a4fa7c0cd6 --- /dev/null +++ b/data-sources/squid-prometheus-integration-docs/config.yml @@ -0,0 +1,9 @@ +id: squid-prometheus-integration-docs +displayName: Squid Prometheus Integration +description: | + The New Relic Squid prometheus integration allows you to monitor your Squid cache managers +install: + primary: + link: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/ +icon: logo.png diff --git a/data-sources/squid-prometheus-integration-docs/logo.png b/data-sources/squid-prometheus-integration-docs/logo.png new file mode 100644 index 0000000000..8e1bfda949 Binary files /dev/null and b/data-sources/squid-prometheus-integration-docs/logo.png differ diff --git a/data-sources/stripe/config.yml b/data-sources/stripe/config.yml new file mode 100644 index 0000000000..4f2f07a40c --- /dev/null +++ b/data-sources/stripe/config.yml @@ -0,0 +1,14 @@ +id: stripe +displayName: Stripe +description: | + Get insights into your Stripe observability data to improve your business. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/stripe-integration/ +icon: logo.png +keywords: + - stripe + - node.js + - stripe payment + - stripe checkout diff --git a/data-sources/stripe/logo.png b/data-sources/stripe/logo.png new file mode 100644 index 0000000000..26b7ce66fb Binary files /dev/null and b/data-sources/stripe/logo.png differ diff --git a/data-sources/tidbcloud/config.yml b/data-sources/tidbcloud/config.yml new file mode 100644 index 0000000000..63a871e8d9 --- /dev/null +++ b/data-sources/tidbcloud/config.yml @@ -0,0 +1,25 @@ +# A unique identifier for the data source +id: tidbcloud + +# Display name for the data source +displayName: TiDB Cloud Integration + +description: | + New Relic's TiDB Cloud quickstart provides performance insights including database time, queries per second, and resource utilization. Install the quickstart to better understand utilization of resources and monitor performance issues. + +install: + primary: + link: + url: https://docs.pingcap.com/tidbcloud/monitor-new-relic-integration + +# An icon for display within the catalog +icon: logo.svg + +# Searchable words or phrases +keywords: + - tidb + - tidb cloud + - cloud + - dbaas + - htap + - serverless diff --git a/data-sources/tidbcloud/logo.svg b/data-sources/tidbcloud/logo.svg new file mode 100644 index 0000000000..7010b35021 --- /dev/null +++ b/data-sources/tidbcloud/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-sources/tvos-mobile/config.yml b/data-sources/tvos-mobile/config.yml index 9e5ff0d452..30ff773a95 100644 --- a/data-sources/tvos-mobile/config.yml +++ b/data-sources/tvos-mobile/config.yml @@ -4,6 +4,9 @@ description: | New Relic's mobile monitoring for tvOS gives you a comprehensive view of your app's performance. install: primary: - link: - url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/tvos/tvos-installation-configuration/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: tvos-mobile + requiresAccount: false icon: logo.svg diff --git a/data-sources/unix/config.yml b/data-sources/unix/config.yml index a160861f31..69c12a4a83 100644 --- a/data-sources/unix/config.yml +++ b/data-sources/unix/config.yml @@ -6,8 +6,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/unix-monitoring-open-source-integration + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: unix + requiresAccount: false keywords: - os - operating system diff --git a/data-sources/vercel/config.yml b/data-sources/vercel/config.yml index df0208344f..b13c830511 100644 --- a/data-sources/vercel/config.yml +++ b/data-sources/vercel/config.yml @@ -5,11 +5,11 @@ description: | icon: logo.svg install: primary: - link: - url: https://vercel.com/integrations/newrelic - fallback: - link: - url: https://docs.newrelic.com/docs/logs/forward-logs/cloudflare-logpush-forwarding + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: vercel + requiresAccount: false keywords: - vercel - logs diff --git a/data-sources/vertica/config.yml b/data-sources/vertica/config.yml new file mode 100644 index 0000000000..c08c173613 --- /dev/null +++ b/data-sources/vertica/config.yml @@ -0,0 +1,9 @@ +id: vertica +displayName: Vertica +description: | + Monitor the performance metrics of your Vertica database in real-time with New Relic Vertica. +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vertica-monitoring-integration +icon: logo.png diff --git a/data-sources/vertica/logo.png b/data-sources/vertica/logo.png new file mode 100644 index 0000000000..0492545ffb Binary files /dev/null and b/data-sources/vertica/logo.png differ diff --git a/data-sources/victorops/config.yml b/data-sources/victorops/config.yml deleted file mode 100644 index 7fb6764f04..0000000000 --- a/data-sources/victorops/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -id: victorops -displayName: VictorOps -description: | - Get notified via VictorOps when incidents are opened, acknowledged, or closed. - Notifications can include charts about the incident. -install: - primary: - link: - url: https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts -icon: logo.svg diff --git a/data-sources/victorops/logo.svg b/data-sources/victorops/logo.svg deleted file mode 100644 index fad94d0fd4..0000000000 --- a/data-sources/victorops/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/vmware-esxi/config.yml b/data-sources/vmware-esxi/config.yml deleted file mode 100644 index 2c57001427..0000000000 --- a/data-sources/vmware-esxi/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -id: vmware-esxi -displayName: VMware ESXi -description: Hypervisor built for direct interaction with server hardware and resources. -install: - primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vmware-vsphere-monitoring-integration/ -icon: logo.svg diff --git a/data-sources/vmware-esxi/logo.svg b/data-sources/vmware-esxi/logo.svg deleted file mode 100644 index 0b2ee0e033..0000000000 --- a/data-sources/vmware-esxi/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/windows-certs/config.yml b/data-sources/windows-certs/config.yml new file mode 100644 index 0000000000..f02f63ed57 --- /dev/null +++ b/data-sources/windows-certs/config.yml @@ -0,0 +1,26 @@ +id: windows-certs +displayName: Flex Windows Cert Expiration Monitoring Install Plan +description: | + ## Windows Certs via Flex + Using the infrastructure agent and a flex integration you can pull certification expiration using powershell and send the information to new relic to be used in dashboards or alerts. + + Follow the regular flex installation process to add this flex integration to your agents, study the data to confirm if it matches your needs. + + ## What is Flex + New Relic Flex is an application-agnostic, all-in-one tool that allows you to collect metric data from a wide variety of services. It comes bundled with our infrastructure agent. You can instrument any app that exposes metrics over a standard protocol (HTTP, file, shell) in a standard format (for example, JSON or plain text): you create a YAML config file, start the Infrastructure agent, and your data is reported to New Relic. + +icon: logo.png +# Searchable words or phrases +keywords: + - os + - windows + - certs + - certificates + +install: + primary: + link: + url: https://github.com/newrelic/nri-flex/tree/master/examples/windows/WindowsExpCertSample + +categoryTerms: + - infrastructure \ No newline at end of file diff --git a/data-sources/windows-certs/logo.png b/data-sources/windows-certs/logo.png new file mode 100644 index 0000000000..675e89e22d Binary files /dev/null and b/data-sources/windows-certs/logo.png differ diff --git a/data-sources/winservices-integration-docs/config.yml b/data-sources/winservices-integration-docs/config.yml index 5fadc4062b..9c0540f21f 100644 --- a/data-sources/winservices-integration-docs/config.yml +++ b/data-sources/winservices-integration-docs/config.yml @@ -1,12 +1,12 @@ id: winservices-integration-docs -displayName: Windows Services +displayName: Windows services description: | - New Relic's Windows services integration collects data about the services running on your Microsoft Windows hosts and sends it to our platform. - You can check the state and start mode of each service, find out which hosts are running a service, set up alerts for services, and more. - - Our integration is bundled with the Windows infrastructure agent. If you're monitoring Windows hosts on New Relic, you only need to enable the integration to get Windows services data into our platform. + With our Windows services integration you can monitor service availability, performance and events. See your data from both native Windows services and third-party services. install: primary: - link: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/windows-services-integration/ -icon: logo.svg + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: winservices-integration-docs + requiresAccount: false +icon: logo.svg \ No newline at end of file diff --git a/data-sources/xamarin/config.yml b/data-sources/xamarin/config.yml deleted file mode 100644 index ccc8273c19..0000000000 --- a/data-sources/xamarin/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -id: xamarin -displayName: Xamarin bindings to New Relic's Mobile SDK -description: This project provides Xamarin bindings for New Relic's iOS and Android SDK's -install: - primary: - link: - url: https://github.com/newrelic-experimental/newrelic-xamarin-binding -icon: logo.png diff --git a/data-sources/xamarin/logo.png b/data-sources/xamarin/logo.png deleted file mode 100644 index e9cabfc70a..0000000000 Binary files a/data-sources/xamarin/logo.png and /dev/null differ diff --git a/data-sources/zipkin/config.yml b/data-sources/zipkin/config.yml index 3d291a26b8..43ff01b2f5 100644 --- a/data-sources/zipkin/config.yml +++ b/data-sources/zipkin/config.yml @@ -1,8 +1,11 @@ id: zipkin displayName: Zipkin -description: Send Zipkin-format traces to New Relic. +description: You can send your Zipkin-formatted traces to New Relic via the Trace API. Once your Zipkin data is in New Relic, you can use our UI tools to analyze your traces. install: primary: - link: - url: https://docs.newrelic.com/docs/distributed-tracing/trace-api/report-zipkin-format-traces-trace-api/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: zipkin + requiresAccount: false icon: logo.svg diff --git a/docs/graphql-schema-docs.md b/docs/graphql-schema-docs.md index 210ce84ded..16b5f1866e 100644 --- a/docs/graphql-schema-docs.md +++ b/docs/graphql-schema-docs.md @@ -50,7 +50,15 @@ ### Nr1CatalogInstallAlertPolicyTemplateResult -Information about the mutation result when installing an alert policy template +Information about the mutation result when installing an alert policy template * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + + @@ -67,7 +75,14 @@ Information about the mutation result when installing an alert policy template @@ -76,7 +91,14 @@ The template that was used for the installation @@ -85,7 +107,15 @@ An outline of the created alert policy ### Nr1CatalogInstallDashboardTemplateResult -Information about the mutation result when installing a dashboard template +Information about the mutation result when installing a dashboard template * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogAlertPolicyTemplate! -The template that was used for the installation +The template that was used for the installation * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogAlertPolicyOutline! -An outline of the created alert policy +An outline of the created alert policy * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -102,7 +132,14 @@ Information about the mutation result when installing a dashboard template @@ -111,7 +148,14 @@ An outline of the created dashboard @@ -120,7 +164,15 @@ The template that was used for the installation ### Nr1CatalogInstallPlan -An installer that uses install plan steps +An installer that uses install plan steps * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogDashboardOutline! -An outline of the created dashboard +An outline of the created dashboard * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogDashboardTemplate! -The template that was used for the installation +The template that was used for the installation * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -137,7 +189,14 @@ An installer that uses install plan steps @@ -146,7 +205,14 @@ The list of install plan steps necessary to execute the installation of the quic @@ -155,7 +221,15 @@ The type of installer ### Nr1CatalogInstallPlanStep -Information pertaining to a specific step in the installation plan +Information pertaining to a specific step in the installation plan * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
[Nr1CatalogInstallPlanStep!]! -The list of install plan steps necessary to execute the installation of the quickstart +The list of install plan steps necessary to execute the installation of the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogInstallerType! -The type of installer +The type of installer * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -172,7 +246,14 @@ Information pertaining to a specific step in the installation plan @@ -181,7 +262,14 @@ A short form description for the install plan step @@ -190,7 +278,14 @@ The human-readable name for the install plan step @@ -199,7 +294,14 @@ Provides context about how the fallback install plan step should proceed @@ -208,7 +310,14 @@ Used as a heading for the install plan step @@ -217,7 +326,14 @@ The unique identifier for the install plan step @@ -226,7 +342,14 @@ Provides context about how the primary install plan step should proceed @@ -235,7 +358,15 @@ Provides context about where the install will occur ### Nr1CatalogInstallPlanTarget -Represents the location of an install +Represents the location of an install * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
String -A short form description for the install plan step +A short form description for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String! -The human-readable name for the install plan step +The human-readable name for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogInstallPlanDirective -Provides context about how the fallback install plan step should proceed +Provides context about how the fallback install plan step should proceed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String! -Used as a heading for the install plan step +Used as a heading for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
ID! -The unique identifier for the install plan step +The unique identifier for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogInstallPlanDirective! -Provides context about how the primary install plan step should proceed +Provides context about how the primary install plan step should proceed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogInstallPlanTarget! -Provides context about where the install will occur +Provides context about where the install will occur * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -252,7 +383,14 @@ Represents the location of an install @@ -261,7 +399,14 @@ Provides context on the location the install will take place @@ -270,7 +415,14 @@ Provides context for the operating system that will be targeted @@ -279,7 +431,15 @@ Provides context for the type of installation that will take place ### Nr1CatalogQuickstart -Information about the quickstart +Information about the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogInstallPlanDestination! -Provides context on the location the install will take place +Provides context on the location the install will take place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogInstallPlanOperatingSystem!]! -Provides context for the operating system that will be targeted +Provides context for the operating system that will be targeted * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogInstallPlanTargetType! -Provides context for the type of installation that will take place +Provides context for the type of installation that will take place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -296,7 +456,14 @@ Information about the quickstart @@ -305,7 +472,14 @@ Determines if this is a featured quickstart @@ -314,7 +488,14 @@ The unique identifier for the quickstart @@ -323,7 +504,14 @@ Metadata associated with the quickstart @@ -332,7 +520,14 @@ Specifies the URL where the source definition for the quickstart can be found @@ -341,7 +536,15 @@ Level of support expected for the quickstart ### Nr1CatalogQuickstartAlert -Information about an alert in a quickstart +Information about an alert in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Boolean! -Determines if this is a featured quickstart +Determines if this is a featured quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
ID! -The unique identifier for the quickstart +The unique identifier for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogQuickstartMetadata -Metadata associated with the quickstart +Metadata associated with the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -Specifies the URL where the source definition for the quickstart can be found +Specifies the URL where the source definition for the quickstart can be found * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogSupportLevel! -Level of support expected for the quickstart +Level of support expected for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -358,7 +561,14 @@ Information about an alert in a quickstart
ID! -The unique identifier for the alert +The unique identifier for the alert * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -373,7 +583,14 @@ This field is no longer supported. Please use Nr1CatalogQuickstartAlertCondition
Nr1CatalogQuickstartAlertMetadata! -Metadata associated with the alert +Metadata associated with the alert * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -388,7 +605,15 @@ This field is no longer supported. Please use Nr1CatalogQuickstartAlertCondition ### Nr1CatalogQuickstartAlertCondition -Information about an alert condition in a quickstart +Information about an alert condition in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + + @@ -405,7 +630,14 @@ Information about an alert condition in a quickstart @@ -414,7 +646,14 @@ The unique identifier for the alert condition @@ -423,7 +662,15 @@ Metadata associated with the alert condition ### Nr1CatalogQuickstartAlertConditionMetadata -Metadata associated with the alert condition in a quickstart +Metadata associated with the alert condition in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
ID! -The unique identifier for the alert condition +The unique identifier for the alert condition * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogQuickstartAlertConditionMetadata! -Metadata associated with the alert condition +Metadata associated with the alert condition * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -440,7 +687,14 @@ Metadata associated with the alert condition in a quickstart @@ -449,7 +703,14 @@ A short form description for the alert condition @@ -458,7 +719,14 @@ The human-readable name for the alert condition @@ -467,7 +735,15 @@ Determines the type of alert condition that will be created ### Nr1CatalogQuickstartAlertMetadata -Metadata associated with the alert in a quickstart +Metadata associated with the alert in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
String -A short form description for the alert condition +A short form description for the alert condition * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -The human-readable name for the alert condition +The human-readable name for the alert condition * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogQuickstartAlertConditionType! -Determines the type of alert condition that will be created +Determines the type of alert condition that will be created * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -484,7 +760,14 @@ Metadata associated with the alert in a quickstart
String -A short form description for the alert. +A short form description for the alert. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -499,7 +782,14 @@ This field is no longer supported. Please use Nr1CatalogQuickstartAlertCondition
String -The human-readable name for the alert. +The human-readable name for the alert. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -514,7 +804,15 @@ This field is no longer supported. Please use Nr1CatalogQuickstartAlertCondition ### Nr1CatalogQuickstartDashboard -Information about a dashboard in a quickstart +Information about a dashboard in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + + @@ -531,7 +829,14 @@ Information about a dashboard in a quickstart @@ -540,7 +845,14 @@ The unique identifier for the dashboard @@ -549,7 +861,15 @@ Metadata associated with the dashboard ### Nr1CatalogQuickstartDashboardMetadata -Metadata associated with the dashboard in a quickstart +Metadata associated with the dashboard in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
ID! -The unique identifier for the dashboard +The unique identifier for the dashboard * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogQuickstartDashboardMetadata! -Metadata associated with the dashboard +Metadata associated with the dashboard * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -566,7 +886,14 @@ Metadata associated with the dashboard in a quickstart @@ -575,7 +902,14 @@ A short form description for the dashboard. @@ -584,7 +918,14 @@ The human-readable name for the dashboard. @@ -593,7 +934,15 @@ A list of previews for the dashboard, such as screenshots. ### Nr1CatalogQuickstartDocumentation -Information about a documentation component in a quickstart +Information about a documentation component in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
String -A short form description for the dashboard. +A short form description for the dashboard. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -The human-readable name for the dashboard. +The human-readable name for the dashboard. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogPreview!]! -A list of previews for the dashboard, such as screenshots. +A list of previews for the dashboard, such as screenshots. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -610,7 +959,14 @@ Information about a documentation component in a quickstart @@ -619,7 +975,15 @@ Metadata associated with the dashboard ### Nr1CatalogQuickstartDocumentationMetadata -Metadata associated with the documentation component in a quickstart +Metadata associated with the documentation component in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogQuickstartDocumentationMetadata! -Metadata associated with the dashboard +Metadata associated with the dashboard * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -636,7 +1000,14 @@ Metadata associated with the documentation component in a quickstart @@ -645,7 +1016,14 @@ A short form description for the documentation component. @@ -654,7 +1032,14 @@ The human-readable name for the documentation component. @@ -663,7 +1048,15 @@ The documentation URL ### Nr1CatalogQuickstartInstallPlan -Information about an install plan component in a quickstart +Information about an install plan component in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
String -A short form description for the documentation component. +A short form description for the documentation component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -The human-readable name for the documentation component. +The human-readable name for the documentation component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String! -The documentation URL +The documentation URL * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -680,7 +1073,14 @@ Information about an install plan component in a quickstart
Nr1CatalogQuickstartInstallPlanMetadata! -Metadata associated with the install plan +Metadata associated with the install plan * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -695,7 +1095,15 @@ This field is no longer supported. Please use installer instead. ### Nr1CatalogQuickstartInstallPlanMetadata -Metadata associated with the install plan in a quickstart +Metadata associated with the install plan in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + + @@ -712,7 +1120,14 @@ Metadata associated with the install plan in a quickstart
String -A short form description for the documentation component. +A short form description for the documentation component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -727,7 +1142,14 @@ This field is no longer supported. Please use installer instead.
String -The human-readable name for the install plan component. +The human-readable name for the install plan component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +

⚠️ DEPRECATED

@@ -742,7 +1164,15 @@ This field is no longer supported. Please use installer instead. ### Nr1CatalogQuickstartMetadata -Metadata associated with the quickstart that is available in New Relic I/O +Metadata associated with the quickstart that is available in New Relic I/O * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + + @@ -759,7 +1189,14 @@ Metadata associated with the quickstart that is available in New Relic I/O @@ -768,7 +1205,14 @@ Authors for the quickstart @@ -777,7 +1221,14 @@ The list of categories for filtering, searching, and grouping associated with th @@ -786,7 +1237,14 @@ The list of category terms associated with the quickstart @@ -795,7 +1253,14 @@ The list of data sources associated with the quickstart @@ -804,7 +1269,14 @@ A short form description for the quickstart. Used throughout the platform when d @@ -813,17 +1285,37 @@ The human-readable name for the quickstart. Used throughout the New Relic One pl - + @@ -831,7 +1323,14 @@ Information about how a quickstart is installed @@ -840,7 +1339,14 @@ A list of keywords for filtering and searching @@ -849,7 +1355,14 @@ List of components in a quickstart @@ -858,7 +1371,14 @@ The URL friendly name of the quickstart @@ -867,7 +1387,15 @@ A short summary detailing the functionality of the quickstart ### Nr1CatalogQuickstartsListing -Paginated information about Quickstarts +Paginated information about Quickstarts * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
[Nr1CatalogAuthor!]! -Authors for the quickstart +Authors for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogCategory!]! -The list of categories for filtering, searching, and grouping associated with the quickstart +The list of categories for filtering, searching, and grouping associated with the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[String!]! -The list of category terms associated with the quickstart +The list of category terms associated with the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogDataSource!]! -The list of data sources associated with the quickstart +The list of data sources associated with the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -A short form description for the quickstart. Used throughout the platform when displaying the quickstart. +A short form description for the quickstart. Used throughout the platform when displaying the quickstart. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -The human-readable name for the quickstart. Used throughout the New Relic One platform when displaying the quickstart. +The human-readable name for the quickstart. Used throughout the New Relic One platform when displaying the quickstart. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Nr1CatalogIcon -The corresponding icon for the quickstart +The corresponding icon for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
installerinstaller ⚠️ Nr1CatalogInstaller -Information about how a quickstart is installed +Information about how a quickstart is installed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +

⚠️ DEPRECATED

+
+ +This field is in a deprecation period. Please refer to `dataSources` for how a quickstart is installed. + +
[String!]! -A list of keywords for filtering and searching +A list of keywords for filtering and searching * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogQuickstartComponent!]! -List of components in a quickstart +List of components in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String! -The URL friendly name of the quickstart +The URL friendly name of the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -A short summary detailing the functionality of the quickstart +A short summary detailing the functionality of the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -884,7 +1412,14 @@ Paginated information about Quickstarts @@ -893,7 +1428,14 @@ Cursor used to fetch the next set of results @@ -902,7 +1444,14 @@ The list of quickstart results @@ -913,7 +1462,15 @@ The total number of quickstart results ### Nr1CatalogInstallDirectiveInput -Set of attributes which represent how an install takes place +Set of attributes which represent how an install takes place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String -Cursor used to fetch the next set of results +Cursor used to fetch the next set of results * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
[Nr1CatalogQuickstart!]! -The list of quickstart results +The list of quickstart results * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
Int! -The total number of quickstart results +The total number of quickstart results * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -929,7 +1486,14 @@ Set of attributes which represent how an install takes place @@ -938,7 +1502,14 @@ Link information for this directive. Cannot be used with a nerdlet directive. @@ -947,7 +1518,15 @@ Nerdlet information for this directive. Cannot be used with a link directive. ### Nr1CatalogInstallPlanDirectiveInput -Set of attributes which represent how an install takes place +Set of attributes which represent how an install takes place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
Nr1CatalogLinkInstallDirectiveInput -Link information for this directive. Cannot be used with a nerdlet directive. +Link information for this directive. Cannot be used with a nerdlet directive. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogNerdletInstallDirectiveInput -Nerdlet information for this directive. Cannot be used with a link directive. +Nerdlet information for this directive. Cannot be used with a link directive. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -963,7 +1542,14 @@ Set of attributes which represent how an install takes place @@ -972,7 +1558,14 @@ Value that pairs with the mode to enable the installation step. Supported values @@ -981,7 +1574,14 @@ Link information for this directive. Cannot be used with nerdlet or targeted dir @@ -990,7 +1590,14 @@ The type of installation that will take place @@ -999,7 +1606,14 @@ Nerdlet information for this directive. Cannot be used with link or targeted dir @@ -1008,7 +1622,15 @@ Targeted information for this directive. Cannot be used with link or nerdlet dir ### Nr1CatalogInstallPlanStepInput -Metadata associated with a specific step in the install plan +Metadata associated with a specific step in the install plan * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String -Value that pairs with the mode to enable the installation step. Supported values are a recipe_name, nerdlet_id, or a link +Value that pairs with the mode to enable the installation step. Supported values are a recipe_name, nerdlet_id, or a link * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogLinkDirectiveInput -Link information for this directive. Cannot be used with nerdlet or targeted directives. +Link information for this directive. Cannot be used with nerdlet or targeted directives. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogInstallPlanDirectiveMode -The type of installation that will take place +The type of installation that will take place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogNerdletDirectiveInput -Nerdlet information for this directive. Cannot be used with link or targeted directives. +Nerdlet information for this directive. Cannot be used with link or targeted directives. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogTargetedDirectiveInput -Targeted information for this directive. Cannot be used with link or nerdlet directives. +Targeted information for this directive. Cannot be used with link or nerdlet directives. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1024,7 +1646,14 @@ Metadata associated with a specific step in the install plan @@ -1033,7 +1662,14 @@ A short form description for the install plan step @@ -1042,7 +1678,14 @@ The human-readable name for the install plan step @@ -1051,7 +1694,14 @@ Provides context about how the fallback install plan step should proceed @@ -1060,7 +1710,14 @@ Used as a heading for the install plan step @@ -1069,7 +1726,14 @@ The unique identifier for the install plan step @@ -1078,7 +1742,14 @@ Provides context about how the primary install plan step should proceed @@ -1087,7 +1758,15 @@ Provides context about where the install will occur ### Nr1CatalogInstallPlanTargetInput -Represents the location of an install +Represents the location of an install * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String! -A short form description for the install plan step +A short form description for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The human-readable name for the install plan step +The human-readable name for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogInstallPlanDirectiveInput -Provides context about how the fallback install plan step should proceed +Provides context about how the fallback install plan step should proceed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -Used as a heading for the install plan step +Used as a heading for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
ID! -The unique identifier for the install plan step +The unique identifier for the install plan step * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogInstallPlanDirectiveInput! -Provides context about how the primary install plan step should proceed +Provides context about how the primary install plan step should proceed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogInstallPlanTargetInput! -Provides context about where the install will occur +Provides context about where the install will occur * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1103,7 +1782,14 @@ Represents the location of an install @@ -1112,7 +1798,14 @@ Provides context on the location the install will take place @@ -1121,7 +1814,14 @@ Operating system for the install @@ -1130,7 +1830,15 @@ Provides context for the type of installation that will take place ### Nr1CatalogQuickstartMetadataAlertConditionInput -Metadata associated with the alert condition in this quickstart +Metadata associated with the alert condition in this quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
Nr1CatalogInstallPlanDestination! -Provides context on the location the install will take place +Provides context on the location the install will take place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[Nr1CatalogInstallPlanOperatingSystem!] -Operating system for the install +Operating system for the install * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogInstallPlanTargetType! -Provides context for the type of installation that will take place +Provides context for the type of installation that will take place * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1146,7 +1854,14 @@ Metadata associated with the alert condition in this quickstart @@ -1155,7 +1870,14 @@ A short form description for the alert condition. @@ -1164,7 +1886,14 @@ The human-readable name for the alert condition. Used throughout the New Relic O @@ -1173,7 +1902,14 @@ The raw JSON configuration for the alert condition @@ -1182,7 +1918,14 @@ The source of the alert configuration @@ -1191,7 +1934,15 @@ Determines the type of alert condition that will be created ### Nr1CatalogQuickstartMetadataDashboardInput -Metadata associated with the dashboard in this quickstart +Metadata associated with the dashboard in this quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String -A short form description for the alert condition. +A short form description for the alert condition. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The human-readable name for the alert condition. Used throughout the New Relic One platform when displaying the alert condition. +The human-readable name for the alert condition. Used throughout the New Relic One platform when displaying the alert condition. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogRawConfiguration! -The raw JSON configuration for the alert condition +The raw JSON configuration for the alert condition * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String -The source of the alert configuration +The source of the alert configuration * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogQuickstartAlertConditionType! -Determines the type of alert condition that will be created +Determines the type of alert condition that will be created * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1207,7 +1958,14 @@ Metadata associated with the dashboard in this quickstart @@ -1216,7 +1974,14 @@ A short form description for the dashboard. @@ -1225,7 +1990,14 @@ The human-readable name for the dashboard. Used throughout the New Relic One pla @@ -1234,7 +2006,14 @@ The raw JSON configuration for the dashboard @@ -1243,7 +2022,14 @@ A list of previews for the dashboard, such as screenshots. @@ -1252,7 +2038,15 @@ The source of the dashboard configuration ### Nr1CatalogQuickstartMetadataDocumentationInput -Metadata associated with the documentation in this quickstart +Metadata associated with the documentation in this quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String -A short form description for the dashboard. +A short form description for the dashboard. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The human-readable name for the dashboard. Used throughout the New Relic One platform when displaying the dashboard. +The human-readable name for the dashboard. Used throughout the New Relic One platform when displaying the dashboard. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogRawConfiguration! -The raw JSON configuration for the dashboard +The raw JSON configuration for the dashboard * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[Nr1CatalogScreenshotInput!] -A list of previews for the dashboard, such as screenshots. +A list of previews for the dashboard, such as screenshots. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String -The source of the dashboard configuration +The source of the dashboard configuration * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1268,7 +2062,14 @@ Metadata associated with the documentation in this quickstart @@ -1277,7 +2078,14 @@ A short form description for the documentation component. @@ -1286,7 +2094,14 @@ The human-readable name for the documentation component. Used throughout the New @@ -1295,7 +2110,15 @@ The documentation URL ### Nr1CatalogQuickstartMetadataInput -Metadata associated with the quickstart that will be available in New Relic Instant Observability +Metadata associated with the quickstart that will be available in New Relic Instant Observability * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + + +
String! -A short form description for the documentation component. +A short form description for the documentation component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The human-readable name for the documentation component. Used throughout the New Relic One platform when displaying the documentation component. +The human-readable name for the documentation component. Used throughout the New Relic One platform when displaying the documentation component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The documentation URL +The documentation URL * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1311,7 +2134,14 @@ Metadata associated with the quickstart that will be available in New Relic Inst @@ -1320,7 +2150,14 @@ A list of alert condition components that are included in the quickstart @@ -1329,7 +2166,14 @@ Authors for the quickstart @@ -1338,7 +2182,14 @@ The list of category terms associated with the quickstart @@ -1347,7 +2198,14 @@ A list of dashboard components that are included in the quickstart @@ -1356,7 +2214,14 @@ A list of data source ids corresponding to the data sources associated with this @@ -1365,7 +2230,14 @@ A short form description for the quickstart. Used throughout the platform when d @@ -1374,7 +2246,14 @@ The human-readable name for the quickstart. Used throughout the New Relic One pl @@ -1383,7 +2262,14 @@ A list of documentation components that are included in the quickstart @@ -1392,7 +2278,14 @@ The public url of an icon for the quickstart @@ -1401,7 +2294,14 @@ A list of install plan step ids corresponding to the steps of the installation p @@ -1410,7 +2310,14 @@ A list of keywords for filtering and searching @@ -1419,7 +2326,14 @@ The URL friendly name for the quickstart @@ -1428,7 +2342,14 @@ Specifies the URL where the source definition for the quickstart can be found @@ -1437,7 +2358,14 @@ A short summary detailing the functionality of the quickstart @@ -1448,7 +2376,15 @@ Level of support for the quickstart ### Nr1CatalogInstallPlanDestination -Possible destinations for the install plan target +Possible destinations for the install plan target * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
[Nr1CatalogQuickstartMetadataAlertConditionInput!] -A list of alert condition components that are included in the quickstart +A list of alert condition components that are included in the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[Nr1CatalogAuthorInput!]! -Authors for the quickstart +Authors for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[String!] -The list of category terms associated with the quickstart +The list of category terms associated with the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[Nr1CatalogQuickstartMetadataDashboardInput!] -A list of dashboard components that are included in the quickstart +A list of dashboard components that are included in the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[ID!] -A list of data source ids corresponding to the data sources associated with this quickstart +A list of data source ids corresponding to the data sources associated with this quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -A short form description for the quickstart. Used throughout the platform when displaying the quickstart. +A short form description for the quickstart. Used throughout the platform when displaying the quickstart. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The human-readable name for the quickstart. Used throughout the New Relic One platform when displaying the quickstart. +The human-readable name for the quickstart. Used throughout the New Relic One platform when displaying the quickstart. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[Nr1CatalogQuickstartMetadataDocumentationInput!] -A list of documentation components that are included in the quickstart +A list of documentation components that are included in the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -The public url of an icon for the quickstart +The public url of an icon for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[ID!] -A list of install plan step ids corresponding to the steps of the installation plan +A list of install plan step ids corresponding to the steps of the installation plan * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
[String!] -A list of keywords for filtering and searching +A list of keywords for filtering and searching * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String -The URL friendly name for the quickstart +The URL friendly name for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String -Specifies the URL where the source definition for the quickstart can be found +Specifies the URL where the source definition for the quickstart can be found * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
String! -A short summary detailing the functionality of the quickstart +A short summary detailing the functionality of the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
Nr1CatalogSupportLevel -Level of support for the quickstart +Level of support for the quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(flag:`DevEx/nrio_mutations`) + +
@@ -1501,7 +2437,15 @@ Unknown install - special case when the target where the install takes place is ### Nr1CatalogInstallPlanDirectiveMode -Possible modes for an install plan directive +Possible modes for an install plan directive * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1538,7 +2482,15 @@ Directs the installation toward a specific target ### Nr1CatalogInstallPlanOperatingSystem -Possible types for the install plan operating system +Possible types for the install plan operating system * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1575,7 +2527,15 @@ Windows operating system ### Nr1CatalogInstallPlanTargetType -Possible types for the install plan target +Possible types for the install plan target * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1620,7 +2580,15 @@ Unknown install - special case when the target where the install takes place is ### Nr1CatalogInstallerType -Type of installer +Type of installer * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1641,7 +2609,15 @@ Install plan ### Nr1CatalogQuickstartAlertConditionType -Possible types of configured alert conditions +Possible types of configured alert conditions * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1687,7 +2663,15 @@ A static alert condition ### Nr1CatalogInstallPlanDirective -Information about an install plan directive +Information about an install plan directive * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
@@ -1704,7 +2688,14 @@ Information about an install plan directive @@ -1713,7 +2704,15 @@ The mode of the install plan directive ### Nr1CatalogInstaller -Information about how a quickstart is installed +Information about how a quickstart is installed * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogInstallPlanDirectiveMode! -The mode of the install plan directive +The mode of the install plan directive * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -1730,7 +2729,14 @@ Information about how a quickstart is installed @@ -1739,7 +2745,15 @@ The type of installer ### Nr1CatalogQuickstartComponent -Information about a component in a quickstart +Information about a component in a quickstart * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogInstallerType! -The type of installer +The type of installer * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -1756,7 +2770,14 @@ Information about a component in a quickstart @@ -1765,7 +2786,15 @@ Metadata associated with the quickstart component ### Nr1CatalogQuickstartComponentMetadata -Information related to the metadata attached to a quickstart component +Information related to the metadata attached to a quickstart component * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + + +
Nr1CatalogQuickstartComponentMetadata! -Metadata associated with the quickstart component +Metadata associated with the quickstart component * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
@@ -1782,7 +2811,14 @@ Information related to the metadata attached to a quickstart component @@ -1791,7 +2827,14 @@ A short form description for the quickstart component. diff --git a/install/activemq/install.yml b/install/activemq/install.yml deleted file mode 100644 index ab874f4bbe..0000000000 --- a/install/activemq/install.yml +++ /dev/null @@ -1,17 +0,0 @@ -id: activemq-integration -name: ActiveMQ -title: ActiveMQ monitoring -description: | - Monitor the performance metrics of your Apache ActiveMQ instances in real-time with New Relic APM. New Relic detects your ActiveMQ metrics like queues, brokers, producers, consumers, garbage collection rate, heap memory usage and more. - -target: - type: integration - destination: host - os: - - linux - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/jmx-monitoring-activemq - \ No newline at end of file diff --git a/install/ansible-automation-controller/install.yml b/install/ansible-automation-controller/install.yml deleted file mode 100644 index 3e6c0a425f..0000000000 --- a/install/ansible-automation-controller/install.yml +++ /dev/null @@ -1,15 +0,0 @@ -id: ansible-automation-controller -name: Ansible Automation Controller -title: Ansible Automation Controller monitoring -description: | - The Ansible Automation Controller integration will enable you to monitor and analyze your Ansible Automation Controller infrastructure. - -target: - type: integration - destination: host - os: - - linux -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/ansible-controller-integration/ diff --git a/install/apache-flink/install.yml b/install/apache-flink/install.yml deleted file mode 100644 index e85e552810..0000000000 --- a/install/apache-flink/install.yml +++ /dev/null @@ -1,15 +0,0 @@ -id: apache-flink -name: Apache Flink -title: Apache Flink monitoring -description: | - New Relic’s instant observability quickstart with Apache Flink monitoring helps to detect client, jobmanager and taskmanager logs and parses them into a JSON payload. - -target: - type: integration - destination: host - os: - - linux -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/install-configure-openmetrics/install-apache-flink/ diff --git a/install/aws/aws-security-lake/install.yml b/install/aws/aws-security-lake/install.yml new file mode 100644 index 0000000000..0993650acf --- /dev/null +++ b/install/aws/aws-security-lake/install.yml @@ -0,0 +1,13 @@ +id: aws-security-lake +name: Amazon-Security-Lake +title: Amazon Security Lake +description: | + Amazon Security Lake monitoring helps you reduce the friction of sending Security Lake logs to New Relic. With Security Lake logs, you can easily monitor your various security features accross multiple AWS accounts. +target: + type: integration + destination: cloud +install: + mode: link + destination: + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-security-lake-monitoring-integration/ diff --git a/install/aws/aws-verified-access/install.yml b/install/aws/aws-verified-access/install.yml new file mode 100644 index 0000000000..89c5ee0479 --- /dev/null +++ b/install/aws/aws-verified-access/install.yml @@ -0,0 +1,14 @@ +id: aws-verified-access +name: AWS-Verified-Access +title: Amazon Verified Access Flow Logs via Kinesis Data Firehose +description: | + Amazon Verified Access Log monitoring via Kinesis Data Firehose helps you reduce the friction of sending logs to New Relic. + +target: + type: integration + destination: cloud + +install: + mode: link + destination: + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-verified-access-monitoring-integration/ diff --git a/install/dojo/install.yml b/install/dojo/install.yml deleted file mode 100644 index a09d4c7774..0000000000 --- a/install/dojo/install.yml +++ /dev/null @@ -1,13 +0,0 @@ -id: dojo -name: Dojo -title: Dojo monitoring -description: | - With New Relic, monitor your Dojo solution to get full visibility into the core web vitals performance of your application or website. -target: - type: agent - destination: application - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/dojo-io-integration/ \ No newline at end of file diff --git a/install/mobile-network-performance/install.yml b/install/mobile-network-performance/install.yml new file mode 100644 index 0000000000..e9b6dc91d3 --- /dev/null +++ b/install/mobile-network-performance/install.yml @@ -0,0 +1,17 @@ +id: mobile-network-performance-install +name: Mobile Network Performance Install Plan +title: Mobile Network Performance Install Plan +description: | + Installs the Mobile Network Performance Dashboard. + +target: + type: unknown + destination: unknown + os: + - linux + - windows + +install: + mode: link + destination: + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ \ No newline at end of file diff --git a/install/nuxt-js/install.yml b/install/nuxt-js/install.yml deleted file mode 100644 index b5c9db1c0f..0000000000 --- a/install/nuxt-js/install.yml +++ /dev/null @@ -1,13 +0,0 @@ -id: nuxtjs -name: NuxtJS -title: NuxtJs -description: | - Instrument and monitor your NuxtJS build apps with New Relic’s Vue browser monitoring agent. Analyze performance data right out of the box. -target: - type: agent - destination: application - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/browser-monitoring-integrations/nuxt-js-integration/ diff --git a/install/on-host-integration/hivemq/install.yml b/install/on-host-integration/hivemq/install.yml new file mode 100644 index 0000000000..19d8876dc2 --- /dev/null +++ b/install/on-host-integration/hivemq/install.yml @@ -0,0 +1,16 @@ +id: hivemq-integration-docs +name: HiveMQ +title: HiveMQ monitoring integration +description: | + Our HiveMQ integration collects and metrics from your HiveMQ to our platform, where you can aggregate and visualize key metrics. We collect all the data from the HiveMQ metrics subsystem. + +level: New Relic + +target: + type: agent + destination: host + +install: + mode: link + destination: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/ diff --git a/install/on-host-integration/mongodb-prometheus/install.yml b/install/on-host-integration/mongodb-prometheus/install.yml deleted file mode 100644 index b441380a07..0000000000 --- a/install/on-host-integration/mongodb-prometheus/install.yml +++ /dev/null @@ -1,16 +0,0 @@ -id: mongodb-prometheus-integration-docs -name: MongoDB (Prometheus) -title: MongoDB monitoring integration -description: | - Our MongoDB integration collects and sends inventory and metrics from your MongoDB cluster to our platform, where you can aggregate and visualize key performance metrics. We collect data on mongos, mongod, and config servers, as well as on databases and collections to help pinpoint performance bottlenecks. - -level: New Relic - -target: - type: agent - destination: host - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/windows-services-integration-new/ diff --git a/install/on-host-integration/squid/install.yml b/install/on-host-integration/squid/install.yml new file mode 100644 index 0000000000..dff7cf7535 --- /dev/null +++ b/install/on-host-integration/squid/install.yml @@ -0,0 +1,16 @@ +id: squid-prometheus-integration-docs +name: Squid +title: Squid prometheus monitoring integration +description: | + Our Squid prometheus integration collects metrics from your Squid cache manager to our platform, where you can aggregate and visualize key metrics. All the data is collected using the [Prometheus squid-exporter](https://github.com/boynux/squid-exporter). + +level: New Relic + +target: + type: agent + destination: host + +install: + mode: link + destination: + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/ diff --git a/install/on-host-integration/vsphere/install.yml b/install/on-host-integration/vsphere/install.yml new file mode 100644 index 0000000000..a3031985c7 --- /dev/null +++ b/install/on-host-integration/vsphere/install.yml @@ -0,0 +1,14 @@ +id: vsphere-integration +name: VMware vSphere +title: VMware vSphere integration +description: | + The VMware vSphere on-host integration collects and sends inventory and metrics from your VMware vSphere environment to New Relic so you can monitor its health. We collect metrics at the datacenter, cluster, host, datastore, and virtual machine levels. + As part of this integration we will install the New Relic Infrastructure agent. +target: + type: on_host_integration + destination: host + +install: + mode: link + destination: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vmware-vsphere-monitoring-integration/#install diff --git a/install/openai/install.yaml b/install/openai/install.yaml deleted file mode 100644 index c2270551a3..0000000000 --- a/install/openai/install.yaml +++ /dev/null @@ -1,13 +0,0 @@ -id: setup-openai -name: OpenAI integration -title: OpenAI integration -description: A lightweight tool to monitor your OpenAI workload. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://github.com/newrelic/openai-api-monitoring diff --git a/install/public-api-performance/install.yml b/install/public-api-performance/install.yml deleted file mode 100644 index 8f04c26590..0000000000 --- a/install/public-api-performance/install.yml +++ /dev/null @@ -1,13 +0,0 @@ -id: public-api-performance -name: New Relic Public API Performance -title: New Relic Public API Performance -description: The Public API Performance dashboard is a dashboard supported by New Relic’s Global Performance data sets. It’s an out-of-the-box dashboard included as part of your New Relic account. - -target: - type: unknown - destination: unknown - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/explore-public-api-performance-dashboard/ diff --git a/install/redmine/install.yml b/install/redmine/install.yml deleted file mode 100644 index 9bda1a14d4..0000000000 --- a/install/redmine/install.yml +++ /dev/null @@ -1,15 +0,0 @@ -id: redmine -name: Redmine -title: Redmine monitoring -description: | - New Relic’s instant observability Redmine quickstart helps you get full visibility into the into the performance of your Redmine app. - -target: - type: integration - destination: host - os: - - linux -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redmine-integration/ \ No newline at end of file diff --git a/install/redpanda/install.yml b/install/redpanda/install.yml deleted file mode 100644 index ca654c696d..0000000000 --- a/install/redpanda/install.yml +++ /dev/null @@ -1,14 +0,0 @@ -id: redpanda -name: Redpanda -title: Redpanda -description: | - Using New Relic’s instant observability quickstart with Redpanda monitoring, you can detect metrics for debugging and monitoring your system’s health. - -target: - type: integration - destination: host - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redpanda-integration/ diff --git a/install/snowflake/install.yml b/install/snowflake/install.yml deleted file mode 100644 index c39f909693..0000000000 --- a/install/snowflake/install.yml +++ /dev/null @@ -1,16 +0,0 @@ -id: snowflake -name: Snowflake -title: Snowflake monitoring -description: | - Quickly monitor your Snowflake application by tracking performance issues with a full end-to-end view of distributed traces. -target: - type: integration - destination: host - os: - - linux - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/snowflake-integration/ - \ No newline at end of file diff --git a/install/third-party/cloudfoundry/install.yml b/install/third-party/cloudfoundry/install.yml deleted file mode 100644 index 647bb964a5..0000000000 --- a/install/third-party/cloudfoundry/install.yml +++ /dev/null @@ -1,14 +0,0 @@ -id: third-party-cloudfoundry -name: CloudFoundry -title: CloudFoundry -description: | - Create, deploy, and manage microservice applications in Kubernetes containers. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/vmware-tanzu-pcf-integration \ No newline at end of file diff --git a/install/third-party/codestream/github-cs/install.yml b/install/third-party/codestream/github-cs/install.yml deleted file mode 100644 index 3c0a459eca..0000000000 --- a/install/third-party/codestream/github-cs/install.yml +++ /dev/null @@ -1,16 +0,0 @@ -id: third-party-github-for-codestream -name: GitHub for CodeStream -title: GitHub for CodeStream -description: | - GitHub is a code hosting platform for version control and collaboration. It lets developers and others work together on projects from anywhere. - - With CodeStream you can create, review, and merge GitHub PRs without ever leaving your IDE. All with full source-tree and full file access, your favorite keybindings, and all the code intelligence embedded in your development environment. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/codestream/start-here/install-codestream/#connect-tools diff --git a/install/third-party/codestream/slack-cs/install.yml b/install/third-party/codestream/slack-cs/install.yml deleted file mode 100644 index 2d7522eb30..0000000000 --- a/install/third-party/codestream/slack-cs/install.yml +++ /dev/null @@ -1,14 +0,0 @@ -id: third-party-slack-for-codestream -name: Slack for CodeStream -title: Slack for CodeStream -description: | - Connect New Relic CodeStream to your team's Slack channel. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/slack-integration/ diff --git a/install/third-party/dapr/install.yml b/install/third-party/dapr/install.yml new file mode 100644 index 0000000000..3f9601cdb3 --- /dev/null +++ b/install/third-party/dapr/install.yml @@ -0,0 +1,13 @@ +id: third-party-dapr +name: Dapr +title: Dapr +description: | + Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks. +target: + type: integration + destination: cloud + +install: + mode: link + destination: + url: https://docs.dapr.io/operations/monitoring/tracing/newrelic/ diff --git a/install/third-party/gigamon-appinsights/install.yml b/install/third-party/gigamon-appinsights/install.yml new file mode 100644 index 0000000000..e9a157ebeb --- /dev/null +++ b/install/third-party/gigamon-appinsights/install.yml @@ -0,0 +1,18 @@ +id: third-party-gigamon-appinsights + +name: Gigamon Application Insights + +title: Gigamon Application Insights + +description: | + Application intelligence is the power to identify, filter, and enrich application data coming from your hybrid cloud. + It directs precise application and metadata flows to security and observability tools for insight into New Relic. + +target: + type: integration + destination: cloud + +install: + mode: link + destination: + url: https://www.gigamon.com/partners/technology-partners.html#new-relic diff --git a/install/third-party/github/install.yml b/install/third-party/github/install.yml index 3784646dc0..260f622aa4 100644 --- a/install/third-party/github/install.yml +++ b/install/third-party/github/install.yml @@ -2,10 +2,7 @@ id: github-dependabot-install name: GitHub Dependabot title: Automatically Import GitHub Dependabot Events description: | - Set up automatic ingestion of your GitHub Dependabot events using two steps: - - Webhook for ongoing ingestion - - Historical import for past data - + Set up automatic ingestion of your GitHub Dependabot events by using webhook for ongoing ingestion and historical import for past data. target: type: integration destination: cloud diff --git a/install/third-party/jfrog-platform/install.yml b/install/third-party/jfrog-platform/install.yml index 7a108195e6..44bda59007 100644 --- a/install/third-party/jfrog-platform/install.yml +++ b/install/third-party/jfrog-platform/install.yml @@ -11,4 +11,4 @@ target: install: mode: link destination: - url: https://github.com/jfrog/log-analytics-newrelic \ No newline at end of file + url: https://jfrog.com/help/r/jfrog-platform-administration-documentation/new-relic \ No newline at end of file diff --git a/install/third-party/lacework/install.yml b/install/third-party/lacework/install.yml index f4a6888b9d..ee94e5561e 100644 --- a/install/third-party/lacework/install.yml +++ b/install/third-party/lacework/install.yml @@ -11,4 +11,4 @@ target: install: mode: link destination: - url: https://support.lacework.com/hc/en-us/articles/360005842354-New-Relic \ No newline at end of file + url: https://docs.lacework.net/onboarding/new-relic \ No newline at end of file diff --git a/install/third-party/newrelic-ingest-metric/install.yml b/install/third-party/newrelic-ingest-metric/install.yml deleted file mode 100644 index bcf532e2fa..0000000000 --- a/install/third-party/newrelic-ingest-metric/install.yml +++ /dev/null @@ -1,18 +0,0 @@ -id: newrelic-ingest-metric -name: New Relic Ingest Metric -title: New Relic Ingest Metric -description: | - Use this quickstart to set up a synthetic monitor that: - 1. Queries ingestion by data source, faceted by the attribute of your choice (e.g., APM Events by appName) - 2. Transforms the output into a metric that is pushed to the Metric API - 3. Can be queried for consumption analysis / dashboards for 13 months - - -target: - type: unknown - destination: unknown - -install: - mode: link - destination: - url: https://github.com/newrelic-experimental/nr1-ingest-metric-script diff --git a/install/third-party/sagemaker/install.yml b/install/third-party/sagemaker/install.yml deleted file mode 100644 index e772502a38..0000000000 --- a/install/third-party/sagemaker/install.yml +++ /dev/null @@ -1,14 +0,0 @@ -id: third-party-amazon-sagemaker -name: Amazon SageMaker -title: Amazon SageMaker -description: | - Use this integration to quickly monitor your Amazon SageMaker metrics and objects (sent to AWS CloudWatch) and view them as entities and dashboards in New Relic One. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/mlops/integrations/aws-sagemaker-mlops-integration/ \ No newline at end of file diff --git a/install/third-party/teams-cs/install.yml b/install/third-party/teams-cs/install.yml deleted file mode 100644 index 61a338f184..0000000000 --- a/install/third-party/teams-cs/install.yml +++ /dev/null @@ -1,14 +0,0 @@ -id: third-party-microsoft-teams-for-codestream -name: Microsoft Teams for CodeStream -title: Microsoft Teams for CodeStream -description: | - Guide to help you get set up using New Relic's Microsoft Teams for CodeStream. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/msteams-integration/ diff --git a/install/third-party/victorops/install.yml b/install/third-party/victorops/install.yml deleted file mode 100644 index 7a821db41e..0000000000 --- a/install/third-party/victorops/install.yml +++ /dev/null @@ -1,15 +0,0 @@ -id: third-party-victorops -name: VictorOps -title: VictorOps -description: | - Get notified via VictorOps when incidents are opened, acknowledged, or closed. - Notifications can include charts about the incident. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts \ No newline at end of file diff --git a/install/third-party/vmware-esxi/install.yml b/install/third-party/vmware-esxi/install.yml deleted file mode 100644 index bdd4ef1c75..0000000000 --- a/install/third-party/vmware-esxi/install.yml +++ /dev/null @@ -1,13 +0,0 @@ -id: third-party-vmware-esxi -name: VMware ESXi -title: VMware ESXi -description: Hypervisor built for direct interaction with server hardware and resources. - -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vmware-vsphere-monitoring-integration/ \ No newline at end of file diff --git a/quickstarts/active-directory/config.yml b/quickstarts/active-directory/config.yml new file mode 100644 index 0000000000..e659842900 --- /dev/null +++ b/quickstarts/active-directory/config.yml @@ -0,0 +1,28 @@ +id: 85639904-b7cd-492f-854b-863e35b0f8cc +slug: active-directory +title: Active Directory +description: | + This quickstart provides you with the integration, dashboard, and alert policies necessary to proactively monitor the health and availability of your Active Directory domain controllers. +summary: | + Active Directory integration for the health and availability of domain controllers. +level: Verified +authors: + - Zack Mutchler +keywords: + - active directory + - microsoft + - domain controller + - ldap + - kerberos + - featured +dataSourceIds: + - active-directory +alertPolicies: + - active-directory +dashboards: + - active-directory +documentation: + - name: Active Directory integration documentation + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/active-directory-integration/ + description: Quickly monitor your Active Directory domain controllers. +icon: logo.svg diff --git a/quickstarts/active-directory/logo.svg b/quickstarts/active-directory/logo.svg new file mode 100644 index 0000000000..31de7185d7 --- /dev/null +++ b/quickstarts/active-directory/logo.svg @@ -0,0 +1 @@ +active-directory \ No newline at end of file diff --git a/quickstarts/activemq/config.yml b/quickstarts/activemq/config.yml index 5cddce6da9..d0ba21dbd9 100644 --- a/quickstarts/activemq/config.yml +++ b/quickstarts/activemq/config.yml @@ -40,8 +40,6 @@ keywords: - activemq - jmx monitoring - apache -installPlans: - - activemq-integration dataSourceIds: - activemq dashboards: diff --git a/quickstarts/adobe-commerce-business-insights/config.yml b/quickstarts/adobe-commerce-business-insights/config.yml new file mode 100644 index 0000000000..53fe5cfc31 --- /dev/null +++ b/quickstarts/adobe-commerce-business-insights/config.yml @@ -0,0 +1,79 @@ +id: 5b6f36ca-ce68-448a-94e4-a0e4a2be5d29 +slug: adobe-commerce-business-insights +description: | + ## Why monitor your Adobe Commerce website? + Monitoring your Adobe Commerce powered website is essential for ensuring that the system is running smoothly and providing accurate data insights. Here are some of the reasons why: + - Improved performance: Monitoring can help you identify and fix performance bottlenecks, which can lead to a faster and more responsive shopping experience for your customers. + - Increased uptime: By monitoring your application, you can detect and resolve issues before they cause downtime. This can help you avoid lost sales and damage to your brand reputation. + - Enhanced security: Monitoring can help you identify and mitigate security threats, such as hacking attempts and data breaches. This can help protect your customers' data and your business's reputation. + - Better decision-making: Monitoring data can help you make better decisions about your business, such as how to allocate resources, optimize marketing campaigns, and improve the customer experience. + - Compliance with regulations: In some industries, such as healthcare and finance, there are strict regulations that businesses must comply with. Monitoring can help you ensure that your application is meeting these regulations. + + Overall, monitoring your Adobe Commerce application can help you improve its performance, uptime, security, and decision-making capabilities. This can lead to a better shopping experience for your customers, increased sales, and a more secure and compliant business. + + ## Comprehensive monitoring quickstart for Adobe Commerce + The New Relic Adobe Commerce monitoring quickstart will help businesses and system users track key performance indicators (KPIs) and other metrics in real time. This ensures that the system is performing optimally and helps identify potential issues before they become major problems. + + Below are a few of the key features: + + ### Revenue monitoring: + Monitoring revenue performance in real time can help ensure the accuracy and timeliness of sales data. Tracking revenue over time can identify trends and patterns, providing valuable insights for making informed decisions about marketing strategies and inventory management. + + ### Downtime impact: + A business's revenue can be directly affected by downtime if customers are unable to purchase. Keeping track of downtime and lost revenue can help businesses quantify the impact of these issues. + + ### Order tracking: + Keep a close watch on order specifics, including total orders, average order value, and most recent orders, to gain valuable insights into your customers' purchasing patterns. + + ### Customer details: + Analyzing customer details, such as new vs. returning customers and assessing cart abandonment rates, can provide businesses with a deeper understanding of their specific target audience. + + ### Funnel monitoring: + By analyzing the bottom of the funnel, businesses can identify the points in the customer journey where they are losing potential customers and make changes to improve the user experience and drive conversions. + + ## What's included? + You'll have full-stack observability of your Adobe Commerce app out-of-the-box: + - Alerts (Downtime (%), HTTP Errors and Largest Contentful Paint (LCP)) + - Dashboards (Executive summary, Customers, Orders, Funnel and more) + - Keep an eye on the performance and reliability of your Adobe Commerce site + - Keep track of your transactions and bottom of the funnel on a desktop or mobile device + + +summary: | + Adobe Commerce quickstart offers a tailored business insights platform for Adobe Commerce store owners and ecommerce managers. It facilitates real-time data extraction for informed decision-making. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: Adobe Commerce Business Insights +documentation: + - name: Adobe Commerce Business Insights documentation + description: | + Adobe Commerce Quickstart provides pre-configured packages for businesses to gain real-time insights. + url: https://docs.newrelic.com/docs/apm/agents/php-agent/other-integrations/magento-business-insights/ +keywords: + - adobe commerce + - adobe commerce business insights + - adobe + - nri-flex + - adobe magento + - magento adobe + - adobe commerce magento + - adobe magento commerce + - adobe commerce monitoring + - adobe commerce business insights + - ecommerce + - magento ecommerce + - adobe ecommerce + - adobe commerce monitoring +dataSourceIds: + - new-relic-infrastructure-agent + - php + - mysql + - apache + - elasticsearch + - new-relic-synthetics +dashboards: + - adobe-commerce-business-insights +alertPolicies: + - adobe-commerce-business-insights diff --git a/quickstarts/adobe-commerce-business-insights/logo.svg b/quickstarts/adobe-commerce-business-insights/logo.svg new file mode 100644 index 0000000000..bc4e0a1019 --- /dev/null +++ b/quickstarts/adobe-commerce-business-insights/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/aerospike/config.yml b/quickstarts/aerospike/config.yml new file mode 100644 index 0000000000..724b8eebfe --- /dev/null +++ b/quickstarts/aerospike/config.yml @@ -0,0 +1,36 @@ +id: c676d398-14d3-4d32-a00d-56aab474f1f7 + +slug: aerospike +description: | + ## Comprehensive monitoring quickstart for Aerospike + New Relic detects your Aerospike metrics like uptime, info stats, memory, client connections, etc. Monitor the performance metrics of your Aerospike instances in real-time with New Relic APM. + + ## Why monitor Aerospike? + Using Aerospike database instrumentation, you can monitor cluster health, database performance, and alerts based on instantaneous and cumulative metrics. + + ## What’s included in this quickstart? + New Relic Aerospike monitoring quickstart boasts instant full-stack observability out-of-the-box: + - Alerts for Aerospike (failed generation, unavailable partitions, uptime and heap efficiency %) + - Dashboards (uptime, info stats, memory, client connections, etc) +summary: | + Instrument and monitor your Aerospike with the New Relic infrastructure agent. Analyze your performance data using our pre-built dashboards and alert conditions. +icon: logo.png +level: New Relic +authors: + - New Relic + - Ramana reddy +title: Aerospike +documentation: + - name: Aerospike integration documentation + description: | + Monitor the performance metrics of your Aerospike instances in real-time with New Relic APM. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/aerospike-integration/ +dataSourceIds: + - aerospike +keywords: + - aerospike + - real-time data platform +dashboards: + - aerospike +alertPolicies: + - aerospike diff --git a/quickstarts/aerospike/logo.png b/quickstarts/aerospike/logo.png new file mode 100644 index 0000000000..a34619094a Binary files /dev/null and b/quickstarts/aerospike/logo.png differ diff --git a/quickstarts/ajax/config.yml b/quickstarts/ajax/config.yml index 37c0675f87..fd0d6c04c6 100644 --- a/quickstarts/ajax/config.yml +++ b/quickstarts/ajax/config.yml @@ -53,6 +53,10 @@ keywords: dashboards: - ajax +alertPolicies: + - browser + # Authors of the quickstart (required) authors: - Darren Doyle + - Kinsey diff --git a/quickstarts/amazon-bedrock/config.yml b/quickstarts/amazon-bedrock/config.yml new file mode 100644 index 0000000000..69d7b2b6d8 --- /dev/null +++ b/quickstarts/amazon-bedrock/config.yml @@ -0,0 +1,49 @@ +id: d9996bfb-4ec6-4d59-bf1c-2721d8adb49d +slug: amazon-bedrock +description: | + ## Why should you monitor your usage of Amazon Bedrock? + Monitor your application powered by Amazon Bedrock language models to ensure, get visibility to what you send to Amazon Bedrock, responses received from Amazon Bedrock , latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Amazon Bedrock monitoring quickstart + Our Amazon Bedrock quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Amazon Bedrock quickstart? + New Relic Amazon Bedrock monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Amazon Bedrock usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Amazon Bedrock usage with New Relic Amazon Bedrock quickstart. +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Amazon Bedrock +documentation: + - name: Amazon Bedrock integration documentation + description: | + Implement monitoring and instrumentation for your Amazon Bedrock app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - amazon bedrock + - mlops + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - generative ai + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/amazon-bedrock/logo.png b/quickstarts/amazon-bedrock/logo.png new file mode 100644 index 0000000000..84a3179916 Binary files /dev/null and b/quickstarts/amazon-bedrock/logo.png differ diff --git a/quickstarts/annoy/config.yml b/quickstarts/annoy/config.yml new file mode 100644 index 0000000000..f705887961 --- /dev/null +++ b/quickstarts/annoy/config.yml @@ -0,0 +1,49 @@ +id: dfb19b44-2b0b-406d-9f17-7ec27af4a70f +slug: annoy +description: | + ## Why should you monitor your usage of Annoy? + + Monitor your vector searches on Annoy to get visibility on what you send to Annoy, responses retrieved from Annoy, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Annoy quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Annoy +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - annoy + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/annoy/logo.png b/quickstarts/annoy/logo.png new file mode 100644 index 0000000000..e80f575621 Binary files /dev/null and b/quickstarts/annoy/logo.png differ diff --git a/quickstarts/ansible-automation-controller/config.yml b/quickstarts/ansible-automation-controller/config.yml index 0422852bfd..b7d0c61e93 100644 --- a/quickstarts/ansible-automation-controller/config.yml +++ b/quickstarts/ansible-automation-controller/config.yml @@ -31,8 +31,6 @@ keywords: - ansible automation platform - ansible tower - ansiblr automation controller -installPlans: - - ansible-automation-controller dataSourceIds: - ansible-automation-controller dashboards: diff --git a/quickstarts/anyscale/config.yml b/quickstarts/anyscale/config.yml new file mode 100644 index 0000000000..91ceac9e9c --- /dev/null +++ b/quickstarts/anyscale/config.yml @@ -0,0 +1,56 @@ +id: cde180da-3f5d-4d90-a896-e5841cc2b356 +slug: anyscale +description: | + ## Why should you monitor your usage of Anyscale? + Monitor your application powered by Anyscale language models to ensure, get visibility to what you send to Anyscale, responses received from Anyscale, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Anyscale monitoring quickstart + Our Anyscale quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Anyscale quickstart? + New Relic Anyscale monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Anyscale usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Anyscale usage with New Relic Anyscale quickstart. +icon: logo.svg +level: + - New Relic +authors: + - New Relic +title: Anyscale +documentation: + - name: Anyscale integration documentation + description: | + Implement monitoring and instrumentation for your Anyscale app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - anyscale + - large language model + - natural language processing + - nlp + - machine learning + - artificial intelligence + - ai + - anyscale ai + - cloud native + - llm + - llm chains + - deep learning + - distributed computing + - kubernetes + - generative ai + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/anyscale/logo.svg b/quickstarts/anyscale/logo.svg new file mode 100644 index 0000000000..2dc2553cfe --- /dev/null +++ b/quickstarts/anyscale/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/apache-flink/config.yml b/quickstarts/apache-flink/config.yml index 904c014bd5..ff5fe58bab 100644 --- a/quickstarts/apache-flink/config.yml +++ b/quickstarts/apache-flink/config.yml @@ -42,8 +42,6 @@ keywords: - flink - apache flink - data stream -installPlans: - - apache-flink dataSourceIds: - apache-flink dashboards: diff --git a/quickstarts/apache-hadoop/config.yml b/quickstarts/apache-hadoop/config.yml new file mode 100644 index 0000000000..b1c941b2dc --- /dev/null +++ b/quickstarts/apache-hadoop/config.yml @@ -0,0 +1,44 @@ +id: d4cf59f5-d1b8-4b02-9261-60f955844e57 + +slug: apache-hadoop +description: | + ## Comprehensive monitoring quickstart for Apache Hadoop + Apache Hadoop metrics are statistical data that Hadoop daemons offer and are used for performance adjustment, debugging, and monitoring. By integrating Apache Hadoop with New Relic, you can get comprehensive information about the workflow by visualizing and gathering metrics and logs. + + ## Why monitor Apache Hadoop? + Apache Hadoop is an open-source software package which enables distributed storage and processing of massive data by leveraging a network of computers. It utilizes the MapReduce programming model-based distributed storage and processing of massive data. + + By leveraging New Relic, you can gain a more in-depth understanding of Apache Hadoop performance and health. Monitoring Apache Hadoop with New Relic will help you better understand the HDFS (Hadoop Distributed File System), blocks, system load, data nodes, NodeManager, and jobs. + + ## What’s included in this quickstart? + New Relic Apache Hadoop monitoring quickstart provides quality out-of-the-box reporting: + - JVM metrics + - NameNode metrics + - DataNode metrics + - Cluster metrics + - Queue metrics + - Node manager metrics + - Infrastructure metrics + +summary: | + Optimize your Apache Hadoop performance using New Relic Apache Hadoop monitoring. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Apache Hadoop +documentation: + - name: Apache Hadoop integration documentation + description: | + Monitor the performance metrics of your Apache Hadoop instances in real-time with New Relic Apache Hadoop. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-hadoop-monitoring-integration/ +keywords: + - apache-hadoop + - apache +dashboards: + - apache-hadoop +alertPolicies: + - apache-hadoop +dataSourceIds: + - apache-hadoop diff --git a/quickstarts/apache-hadoop/logo.png b/quickstarts/apache-hadoop/logo.png new file mode 100644 index 0000000000..9e260fbf53 Binary files /dev/null and b/quickstarts/apache-hadoop/logo.png differ diff --git a/quickstarts/apache-traffic-server/config.yml b/quickstarts/apache-traffic-server/config.yml new file mode 100644 index 0000000000..192093e882 --- /dev/null +++ b/quickstarts/apache-traffic-server/config.yml @@ -0,0 +1,57 @@ +id: 711821c8-fc66-4c25-9527-17407b805cc5 + + +slug: apache-traffic-server +description: | + ## Comprehensive monitoring quickstart for Apache Traffic Server + By integrating Apache Traffic Server (ATS) with New Relic, you can efficiently set up a monitoring infrastructure that captures, visualizes, and alerts you to important ATS metrics. Monitoring ATS performance and health ensures smooth operation, rapid issue identification, and proactive problem resolution, ultimately enhancing the reliability and efficiency of your web infrastructure. + + ## Why is it important to monitor Apache Traffic Server? + Monitor Apache Traffic Server to understand the functionality, performance, and general health of this potent web caching and proxying solution. You will obtain a thorough insight of ATS's behavior, spot any problems before they become serious, and make sure that your web infrastructure is working as efficiently as possible by closely monitoring it. + + By leveraging New Relic, you can gain a more in-depth understanding of Monitoring Apache Traffic Server is an essential procedure that provides priceless information about the functionality, performance, and general health of this potent web caching and proxying solution. You will get a comprehensive understanding of ATS behavior, spot any problems before they become serious, and make sure that your web infrastructure is working as efficiently as possible by closely monitoring it. + + Install this quickstart as part of your proactive observability strategy to guarantee outstanding web performance, exceptional user experiences, and dependable functioning of your web infrastructure. You can efficiently manage ATS and keep up a solid, high-performance web infrastructure. + + + ## What’s included in this quickstart? + The Apache Traffic Server quickstart provides out-of-the-box reporting that covers the following areas: + + - Real-time visibility: Get insights into the performance of your ATS deployment in real time. + - Optimized performance: Identify performance bottlenecks and optimize your ATS configuration to improve performance. + - Early issue detection: Get alerts when there are potential problems with your ATS deployment so you can take action quickly. + - Capacity planning: Plan for future growth by understanding how your ATS deployment is currently being used. + - Efficient troubleshooting: Troubleshoot problems with your ATS deployment quickly and easily by using New Relic's tools. + - User experience enhancement: Improve the user experience of your applications by understanding how they are being used and making changes to improve performance. + - Security insights: Get insights into the security of your ATS deployment and identify potential threats. + - Continuous improvement: Use New Relic's data to continuously improve the performance and security of your ATS deployment. + + Monitoring Apache Traffic Server (ATS) with New Relic can help you improve the performance of your online services, which can lead to increased user engagement, longer site visits, and higher revenue. + +summary: | + Optimize your Apache Traffic Server performance using New Relic Apache Traffic Server monitoring. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Apache Traffic Server +documentation: + - name: Documentation on how to integrate Apache Traffic Server + description: | + Monitor the performance metrics of your Apache Traffic Server instances in real-time with New Relic Apache Traffic Server. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/apache-traffic-server-monitoring-integration/ +keywords: + - ats + - apache traffic server + - web proxy + - web proxy cache + - HTTP caching + - reverse proxy + - content filtering +dashboards: + - apache-traffic-server +alertPolicies: + - apache-traffic-server +dataSourceIds: + - apache-traffic-server diff --git a/quickstarts/apache-traffic-server/logo.png b/quickstarts/apache-traffic-server/logo.png new file mode 100644 index 0000000000..3699d4a467 Binary files /dev/null and b/quickstarts/apache-traffic-server/logo.png differ diff --git a/quickstarts/apache-zooKeeper/config.yml b/quickstarts/apache-zooKeeper/config.yml new file mode 100644 index 0000000000..3e2bf6c728 --- /dev/null +++ b/quickstarts/apache-zooKeeper/config.yml @@ -0,0 +1,38 @@ +id: fe60d07b-4f1d-41d5-b6cc-2a6605baad20 + +slug: apache-zookeeper +description: | + ## Comprehensive monitoring quickstart for Apache ZooKeeper + New Relic detects your Apache ZooKeeper metrics like znode count, watch count, client connections, etc. Monitor your Apache ZooKeeper ensemble, ensuring optimal performance and troubleshooting issues in a timely manner. + + ## Why monitor Apache ZooKeeper? + By leveraging Apache ZooKeeper monitoring by New Relic, you gain invaluable visibility into the overall health and performance of your distributed system. This empowers you to swiftly identify and address any potential issues, ensuring optimal operational efficiency. + + ## What’s included in this quickstart? + New Relic Apache ZooKeeper monitoring quickstart provides quality out-of-the-box reporting: + - Dashboards (znode count, watch count, max latency, client connections, etc) + - Alerts for ZooKeeper (rejected connections, watch counts on ZooKeeper nodes) + +summary: | + Unlock the power of Apache ZooKeeper monitoring with the seamless integration of New Relic infrastructure. +icon: logo.png +level: New Relic +authors: + - New Relic + - Ramana Reddy +title: Apache ZooKeeper +documentation: + - name: Apache ZooKeeper integration documentation + description: | + Unlock the power of ZooKeeper monitoring with the seamless integration of New Relic infrastructure. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/zookeeper-monitoring-integration/ +keywords: + - apache-zooKeeper + - ZooKeeper + - apache zookeeper +dataSourceIds: + - apache-zookeeper +dashboards: + - apache-zooKeeper +alertPolicies: + - apache-zooKeeper diff --git a/quickstarts/apache-zooKeeper/logo.png b/quickstarts/apache-zooKeeper/logo.png new file mode 100644 index 0000000000..f335e23333 Binary files /dev/null and b/quickstarts/apache-zooKeeper/logo.png differ diff --git a/quickstarts/apache/config.yml b/quickstarts/apache/config.yml index 555cad6b1f..a4b1da0257 100644 --- a/quickstarts/apache/config.yml +++ b/quickstarts/apache/config.yml @@ -1,8 +1,8 @@ id: ad5affab-545a-4355-ad48-cfd66e2fbf00 slug: apache -title: Apache httpd +title: Apache HTTPD description: |+ - ## Understanding Apache httpd + ## Understanding Apache HTTPD The Apache HTTP Server is a free and open-source, secure, efficient, and extensible HTTP web server for the Windows and UNIX operating systems. @@ -45,3 +45,5 @@ keywords: - server dashboards: - apache +alertPolicies: + - apache diff --git a/quickstarts/apdex-optimizer/config.yml b/quickstarts/apdex-optimizer/config.yml new file mode 100644 index 0000000000..6eb550b66c --- /dev/null +++ b/quickstarts/apdex-optimizer/config.yml @@ -0,0 +1,79 @@ +id: e6d3f91e-8a83-4943-94ad-40b5a6281389 +# Sets the URL name of the quickstart on public I/O (required) +slug: apdex-optimizer + +# Displayed in the UI (required) +title: Apdex Optimizer + +# Long-form description of the quickstart (required) +description: | + **Summary of Apdex Optimizer Dashboard** + + ## 1. Apdex Score Overview: + - Timeseries chart displaying Apdex scores for each APM application. + - Highlights performance trends over time. + + ## 2. Apdex Breakdown: + - Detailed breakdown table showcasing Apdex scores for different aspects of your application. + - Identifies areas of improvement and potential bottlenecks. + + ## 3. Transaction-level Insights: + - In-depth Apdex information on individual transactions. + - Pinpoints specific transaction performance for focused optimization. + + ## 4. Threshold Recommendations: + - Application Apdex T Value Recommendation table guides optimal threshold settings. + - Helps fine-tune Apdex parameters for enhanced performance monitoring. + + ## 5. Transaction Apdex Values: + - Transaction Apdex Values table provides granular insights into transaction-level performance. + - Enables precise adjustments for optimal user satisfaction. + + ### Actionable Takeaways: + - Identify and address performance trends through Apdex score patterns. + - Optimize specific transactions based on detailed Apdex insights. + - Fine-tune Apdex thresholds for applications to improve overall monitoring effectiveness. + + ### Benefits: + - Enhanced visibility into application performance. + - Proactive identification of potential issues. + - Improved user satisfaction through targeted optimizations. + + This comprehensive Apdex Optimizer dashboard empowers you with actionable data to make informed decisions, ensuring your applications perform at their best. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + Comprehensive APM dashboard providing actionable insights, including Apdex scores over time, detailed breakdowns, transaction-level data, and threshold recommendations, empowering users to optimize application performance effectively + +# Support level: New Relic | Verified | Community (required) +level: New Relic + +# Authors of the quickstart (required) +authors: + - Darren Doyle + +# Keywords for filtering / searching criteria in the UI +keywords: + - apm + - transactions + - apdex + - errors + + + +# Reference to dashboards to be included in this quickstart +dashboards: + - apdex-optimizer + +# Documentation references +documentation: + - name: Apdex + url: https://docs.newrelic.com/docs/apm/new-relic-apm/apdex/apdex-measure-user-satisfaction/#change-apdex-settings + description: Apdex is an industry standard to measure users' satisfaction with the response time of web applications and services. + +# Content / Design +icon: logo.svg +website: https://www.newrelic.com + +dataSourceIds: + - apdex-optimizer diff --git a/data-sources/newrelic-ingest-metric/logo.svg b/quickstarts/apdex-optimizer/logo.svg similarity index 100% rename from data-sources/newrelic-ingest-metric/logo.svg rename to quickstarts/apdex-optimizer/logo.svg diff --git a/quickstarts/apm-change-tracking/config.yml b/quickstarts/apm-change-tracking/config.yml index 602196714c..65f1e6ecf7 100644 --- a/quickstarts/apm-change-tracking/config.yml +++ b/quickstarts/apm-change-tracking/config.yml @@ -25,3 +25,5 @@ documentation: icon: logo.svg dashboards: - change-tracking-apm + + \ No newline at end of file diff --git a/quickstarts/apm-transaction-analysis/config.yaml b/quickstarts/apm-transaction-analysis/config.yaml new file mode 100644 index 0000000000..e7ae61a8cd --- /dev/null +++ b/quickstarts/apm-transaction-analysis/config.yaml @@ -0,0 +1,25 @@ +id: 5337037a-7822-438e-a89f-395b8920bad0 +slug: apm-transaction-analysis +title: APM Transaction Analysis +description: | + ## Why use this dashboard? + Normally in the curated APM view you will see one application at a time. When you have hundreds of applications and wish to analyze the relative performance accross apps, this view excels. + Using the power of NRQL we present a unified drill down of performance that is very useful when setting up alert conditions and service levels. It is very good at helping explore performance outliers. +summary: | + A unified filterable view of transaction performance across an account. +level: New Relic +authors: + - Jim Hagan +keywords: + - APM + - Transaction +dataSourceIds: + - solutions-hub-dashboards +documentation: + - name: APM Transactions + url: https://docs.newrelic.com/docs/apm/transactions/intro-transactions/transactions-new-relic-apm/ + description: Transactions in New Relic's APM +icon: logo.svg +website: https://www.newrelic.com +dashboards: + - apm-transaction-analysis diff --git a/quickstarts/audit/newrelic-ingest-metric/logo.svg b/quickstarts/apm-transaction-analysis/logo.svg similarity index 100% rename from quickstarts/audit/newrelic-ingest-metric/logo.svg rename to quickstarts/apm-transaction-analysis/logo.svg diff --git a/quickstarts/apollo/apollo-server/config.yml b/quickstarts/apollo/apollo-server/config.yml index ba13e2235b..b5ec351c28 100644 --- a/quickstarts/apollo/apollo-server/config.yml +++ b/quickstarts/apollo/apollo-server/config.yml @@ -21,12 +21,24 @@ level: Community authors: - New Relic - John Vajda + - Dave Miyamasu keywords: - apollo server - apollo - graphql + - nodejs + - npm + - plugin + - typescript + - express + - hapi + - koa + - fastify + - lambda installPlans: - node-agent +dashboards: + - apollo-server dataSourceIds: - node-js documentation: diff --git a/quickstarts/argocd/config.yml b/quickstarts/argocd/config.yml index 30393b7f5f..c81ab04f03 100644 --- a/quickstarts/argocd/config.yml +++ b/quickstarts/argocd/config.yml @@ -50,6 +50,7 @@ keywords: - remote_write - promql - grafana + - featured installPlans: - setup-prometheus - setup-prometheus-agent-mode diff --git a/quickstarts/atlassian/atlassian-jira/config.yml b/quickstarts/atlassian/atlassian-jira/config.yml index c3eb023d93..70369e60f3 100644 --- a/quickstarts/atlassian/atlassian-jira/config.yml +++ b/quickstarts/atlassian/atlassian-jira/config.yml @@ -41,4 +41,5 @@ keywords: # Content / Design icon: logo.png website: https://www.atlassian.com/ - +dataSourceIds: + - atlassian-jira diff --git a/quickstarts/audit/account-data-ingestion-analysis/config.yml b/quickstarts/audit/account-data-ingestion-analysis/config.yml index 4849f268a7..a593f0ac4b 100644 --- a/quickstarts/audit/account-data-ingestion-analysis/config.yml +++ b/quickstarts/audit/account-data-ingestion-analysis/config.yml @@ -23,3 +23,4 @@ documentation: description: Manage data coming into New Relic dashboards: - data-ingestion-breakdown + diff --git a/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml b/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml index 24f45f2ad8..004d57f91b 100644 --- a/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml +++ b/quickstarts/audit/infrastructure-integrations-data-analysis/config.yml @@ -38,3 +38,4 @@ dashboards: - gcp-integrations-data-ingest-analysis - kubernetes-data-ingest-analysis - on-host-integrations-data-analysis + diff --git a/quickstarts/audit/k8s-log-ingestion-analysis/config.yaml b/quickstarts/audit/k8s-log-ingestion-analysis/config.yaml index f22f76019d..bf5fec2edd 100644 --- a/quickstarts/audit/k8s-log-ingestion-analysis/config.yaml +++ b/quickstarts/audit/k8s-log-ingestion-analysis/config.yaml @@ -43,5 +43,7 @@ documentation: installPlans: - kubernetes-install +dataSourceIds: + - kubernetes dashboards: - - k8s-log-ingest-breakdown \ No newline at end of file + - k8s-log-ingest-breakdown diff --git a/quickstarts/audit/log-ingestion-analysis/config.yml b/quickstarts/audit/log-ingestion-analysis/config.yml index bdc83ee3eb..2693ee729b 100644 --- a/quickstarts/audit/log-ingestion-analysis/config.yml +++ b/quickstarts/audit/log-ingestion-analysis/config.yml @@ -26,3 +26,4 @@ icon: logo.svg website: https://www.newrelic.com dashboards: - log-analysis + diff --git a/quickstarts/audit/newrelic-ingest-metric/config.yml b/quickstarts/audit/newrelic-ingest-metric/config.yml deleted file mode 100644 index eb19fef985..0000000000 --- a/quickstarts/audit/newrelic-ingest-metric/config.yml +++ /dev/null @@ -1,37 +0,0 @@ -id: c57f4c0b-824c-4b80-ac93-555763ee9549 -name: newrelic-ingest-metric -title: New Relic Ingest Metric -description: | - This quickstart provides a synthetic monitor (and associated dashboard) that will regularly query ingest for each data type (APM Events, Infrastructure Processes, etc.) and post it to the Metric API as a custom metric `newrelic-ingest-metric`. This means that you can query and analyze ingest across your account for 13 months by default, instead of 8 days for events, 30 days for Logs, etc. The custom metric also includes a facet for each data type, so that you can see, for example, ingest for Mobile Events by appName or Logging by labels.app. The following parameters have default values but are all configurable: - - ingest interval (hourly, daily, weekly) - - facet for each data type - - name of custom metric - - addition of custom events -summary: | - Use this script to set up a synthetic monitor that: - 1. Queries ingestion by data source, faceted by the attribute of your choice (e.g., APM Events by appName) - 2. Transforms the output into a metric that is pushed to the Metric API - 3. Can be queried for consumption analysis / dashboards for 13 months -level: Community -authors: - - Nora Shannon Johnson -keywords: - - ingest - - ingestion - - custom metric - - synthetic monitor - - consumption - - billing - - facet -installPlans: - - newrelic-ingest-metric -dataSourceIds: - - newrelic-ingest-metric -documentation: - - name: nr1-ingest-metric-script (github) - url: https://github.com/newrelic-experimental/nr1-ingest-metric-script - description: Instructions for updating and activating the synthetic monitor that generates the newrelic.ingest custom metric -icon: logo.svg -website: https://www.newrelic.com -dashboards: - - newrelic-ingest-metric diff --git a/quickstarts/audit/newrelic-ingest-metric/images/ingest-infrahosts.png b/quickstarts/audit/newrelic-ingest-metric/images/ingest-infrahosts.png deleted file mode 100644 index 20b8dee3f0..0000000000 Binary files a/quickstarts/audit/newrelic-ingest-metric/images/ingest-infrahosts.png and /dev/null differ diff --git a/quickstarts/audit/newrelic-ingest-metric/images/ingest-metrics.png b/quickstarts/audit/newrelic-ingest-metric/images/ingest-metrics.png deleted file mode 100644 index be99b35183..0000000000 Binary files a/quickstarts/audit/newrelic-ingest-metric/images/ingest-metrics.png and /dev/null differ diff --git a/quickstarts/audit/newrelic-ingest-metric/images/ingest-overview.png b/quickstarts/audit/newrelic-ingest-metric/images/ingest-overview.png deleted file mode 100644 index 803a61389b..0000000000 Binary files a/quickstarts/audit/newrelic-ingest-metric/images/ingest-overview.png and /dev/null differ diff --git a/quickstarts/awadb/config.yml b/quickstarts/awadb/config.yml new file mode 100644 index 0000000000..402c4e7715 --- /dev/null +++ b/quickstarts/awadb/config.yml @@ -0,0 +1,46 @@ +id: 3902c751-1d30-44ac-af9a-00969bd19f5a +slug: awadb +description: | + ## Why should you monitor your usage of AwaDB? + Monitor your vector searches on AwaDB to get visibility on what you send to AwaDB, responses retrieved from AwaDB, latency, usage and errors. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + ## Comprehensive monitoring quickstart for your AwaDB app + Our AwaDB quickstart provides insights like identifying popular queries, sources, and content. + ## What’s included in this quickstart? + New Relic AwaDB monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your AwaDB app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic AwaDB quickstart +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: AwaDB +documentation: + - name: AwaDB integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - AwaDB + - vector search + - machine learning + - artificial intelligence + - AI + - ML + - data science + - big data + - NR1_addData +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/awadb/logo.png b/quickstarts/awadb/logo.png new file mode 100644 index 0000000000..3a912f2ea0 Binary files /dev/null and b/quickstarts/awadb/logo.png differ diff --git a/quickstarts/aws/amazon-appstream/config.yml b/quickstarts/aws/amazon-appstream/config.yml new file mode 100644 index 0000000000..3aa0089cde --- /dev/null +++ b/quickstarts/aws/amazon-appstream/config.yml @@ -0,0 +1,35 @@ +id: 40ec6df0-73d5-41f0-a83e-35a2d92dcdd5 +slug: amazon-appstream +description: |- + ## What is Amazon AppStream? + Amazon AppStream 2.0 is a fully managed application streaming service that provides users with instant access to their desktop applications from anywhere. + ### Get started! + Start monitoring Amazon AppStream by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-appstream-monitoring-integration/) to learn more about New Relic monitoring for Amazon AppStream. +summary: |- + Monitor Amazon AppStream by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon AppStream +documentation: + - name: Amazon AppStream installation docs + description: | + Monitor Amazon AppStream by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-appstream-monitoring-integration/ +keywords: + - aws + - amazon web services + - AppStream + - amazon appstream + - app stream + - amazon app stream +alertPolicies: + - amazon-appstream +dashboards: + - amazon-appstream +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-appstream/logo.png b/quickstarts/aws/amazon-appstream/logo.png new file mode 100644 index 0000000000..2d9c5dc81d Binary files /dev/null and b/quickstarts/aws/amazon-appstream/logo.png differ diff --git a/quickstarts/aws/amazon-cloudsearch/config.yml b/quickstarts/aws/amazon-cloudsearch/config.yml new file mode 100644 index 0000000000..d182309fd2 --- /dev/null +++ b/quickstarts/aws/amazon-cloudsearch/config.yml @@ -0,0 +1,35 @@ +id: f7f88b90-ed4a-453e-a1ac-433292393905 +slug: amazon-cloudsearch +description: |- + ## What is Amazon CloudSearch? + Amazon CloudSearch is a managed service in the AWS Cloud that makes it simple and cost-effective to set up, manage, and scale a search solution for your website or application. + ### Get started! + Start monitoring Amazon CloudSearch by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-cloudsearch-monitoring-integration/) to learn more about New Relic monitoring for Amazon CloudSearch. +summary: |- + Monitor Amazon CloudSearch by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon CloudSearch +documentation: + - name: Amazon CloudSearch installation docs + description: | + Monitor Amazon CloudSearch by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-cloudsearch-monitoring-integration/ +keywords: + - aws + - amazon web services + - CloudSearch + - amazon cloudsearch + - cloud search + - amazon cloud search +alertPolicies: + - amazon-cloudsearch +dashboards: + - amazon-cloudsearch +dataSourceIds: + - amazon-cloudwatch-metric-streams diff --git a/quickstarts/aws/amazon-cloudsearch/logo.png b/quickstarts/aws/amazon-cloudsearch/logo.png new file mode 100644 index 0000000000..edda2ba90d Binary files /dev/null and b/quickstarts/aws/amazon-cloudsearch/logo.png differ diff --git a/quickstarts/aws/amazon-cloudwatch-internet-monitor/config.yml b/quickstarts/aws/amazon-cloudwatch-internet-monitor/config.yml new file mode 100644 index 0000000000..d3e7faa769 --- /dev/null +++ b/quickstarts/aws/amazon-cloudwatch-internet-monitor/config.yml @@ -0,0 +1,39 @@ +id: b6ae27cb-1cff-4447-ac3f-c570b80ec4b6 +slug: amazon-cloudwatch-internet-monitor +description: |- + ## What is Amazon CloudWatch Internet Monitor? + + Amazon CloudWatch Internet Monitor provides visibility into how internet issues impact the performance and availability between your applications hosted on AWS and your end users. + + ### Get started! + + Start monitoring Amazon CloudWatch Internet Monitor by sending your Amazon CloudWatch Internet Monitor Logs to New Relic. + + Check out our Amazon CloudWatch Internet Monitor documentation to instrument your cloud service and manage the stability, scalability, and reliability of your systems with New Relic's Log monitoring capabilities. + + ### More info + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-internet-monitor-integration/) to learn more about New Relic monitoring for Amazon CloudWatch Internet Monitor. +summary: Monitor Amazon CloudWatch Internet Monitor in New Relic +icon: logo.png +level: New Relic +authors: + - New Relic + - Aarushi Jain +title: Amazon CloudWatch Internet Monitor +documentation: + - name: Amazon CloudWatch Internet Monitor installation docs + description: Monitor Amazon CloudWatch Internet Monitor in New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-internet-monitor-integration/ +keywords: + - aws + - amazon web services + - cloudwatch + - monitor + - internet +dashboards: + - amazon-cloudwatch-internet-monitor +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-cloudwatch-internet-monitor diff --git a/quickstarts/aws/amazon-cloudwatch-internet-monitor/logo.png b/quickstarts/aws/amazon-cloudwatch-internet-monitor/logo.png new file mode 100644 index 0000000000..2bac187c8a Binary files /dev/null and b/quickstarts/aws/amazon-cloudwatch-internet-monitor/logo.png differ diff --git a/quickstarts/aws/amazon-codebuild/config.yml b/quickstarts/aws/amazon-codebuild/config.yml new file mode 100644 index 0000000000..a4867ac56a --- /dev/null +++ b/quickstarts/aws/amazon-codebuild/config.yml @@ -0,0 +1,32 @@ +id: e1dd597a-2768-4096-8fbd-b6f53874a16a +slug: amazon-codebuild +description: |- + ## What is Amazon CodeBuild? + AWS CodeBuild is a fully managed build service that compiles your source code, runs unit tests, and produces artifacts that are ready to deploy. CodeBuild eliminates the need to provision, manage, and scale your own build servers. + ### Get started! + Start monitoring Amazon CodeBuild by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-codebuild-monitoring-integration/) to learn more about New Relic monitoring for Amazon Codebuild. +summary: |- + Monitor Amazon CodeBuild by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon CodeBuild +documentation: + - name: Amazon CodeBuild installation docs + description: | + Monitor Amazon CodeBuild by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-codebuild-monitoring-integration/ +keywords: + - aws + - amazon web services + - CodeBuild +alertPolicies: + - amazon-codebuild +dashboards: + - amazon-codebuild +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-codebuild/logo.png b/quickstarts/aws/amazon-codebuild/logo.png new file mode 100644 index 0000000000..ee541b7785 Binary files /dev/null and b/quickstarts/aws/amazon-codebuild/logo.png differ diff --git a/quickstarts/aws/amazon-database-migration-service/config.yml b/quickstarts/aws/amazon-database-migration-service/config.yml new file mode 100644 index 0000000000..2230e137a7 --- /dev/null +++ b/quickstarts/aws/amazon-database-migration-service/config.yml @@ -0,0 +1,33 @@ +id: c93fbfb6-5dd7-47e8-a4e3-011356721998 +slug: amazon-database-migration-service +description: |- + ## What is Amazon Database Migration Service? + AWS Database Migration Service (AWS DMS) is a web service you can use to migrate data from your database that is on-premises, on an Amazon Relational Database Service (Amazon RDS) DB instance, or in a database on an Amazon Elastic Compute Cloud (Amazon EC2) instance to a database on an AWS service. + ### Get started! + Start monitoring Amazon Database Migration Service by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-database-migration-service-monitoring-integration/) to learn more about New Relic monitoring for Amazon Database Migration Service. +summary: |- + Monitor Amazon Database Migration Service by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Database Migration Service +documentation: + - name: Amazon Database Migration Service installation docs + description: | + Monitor Amazon Database Migration Service by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-database-migration-service-monitoring-integration/ +keywords: + - aws + - amazon web services + - dms + - database migration service +alertPolicies: + - amazon-database-migration-service +dashboards: + - amazon-database-migration-service +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-database-migration-service/logo.png b/quickstarts/aws/amazon-database-migration-service/logo.png new file mode 100644 index 0000000000..5cb1e87a7c Binary files /dev/null and b/quickstarts/aws/amazon-database-migration-service/logo.png differ diff --git a/quickstarts/aws/amazon-datasync/config.yml b/quickstarts/aws/amazon-datasync/config.yml new file mode 100644 index 0000000000..8491f5e5f4 --- /dev/null +++ b/quickstarts/aws/amazon-datasync/config.yml @@ -0,0 +1,30 @@ +id: 1d1342c3-bec7-4cb2-b600-1e768d976e43 +slug: amazon-datasync +description: |- + ## What is Amazon DataSync? + AWS DataSync is a secure, online service that automates and accelerates moving data between on premises and AWS Storage services. DataSync can copy data between Network File System (NFS) shares, Server Message Block (SMB) shares, Hadoop Distributed File Systems (HDFS), self-managed object storage, AWS Snowcone, Amazon Simple Storage Service (Amazon S3) buckets, Amazon Elastic File System (Amazon EFS) file systems, Amazon FSx for Windows File Server file systems, Amazon FSx for Lustre file systems, Amazon FSz for OpenZFS file systems, and Amazon FSx for NetApp ONTAP file systems. + ### Get started! + Start monitoring Amazon DataSync by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-datasync-monitoring-integration/) to learn more about New Relic monitoring for Amazon DataSync. +summary: |- + Monitor Amazon DataSync by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon DataSync +documentation: + - name: Amazon DataSync installation docs + description: | + Monitor Amazon DataSync by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-datasync-monitoring-integration/ +keywords: + - aws + - amazon web services + - DataSync +dashboards: + - amazon-datasync +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-datasync/logo.png b/quickstarts/aws/amazon-datasync/logo.png new file mode 100644 index 0000000000..a4c9660d8a Binary files /dev/null and b/quickstarts/aws/amazon-datasync/logo.png differ diff --git a/quickstarts/aws/amazon-elastictranscoder/config.yml b/quickstarts/aws/amazon-elastictranscoder/config.yml new file mode 100644 index 0000000000..4ab2bedbc6 --- /dev/null +++ b/quickstarts/aws/amazon-elastictranscoder/config.yml @@ -0,0 +1,32 @@ +id: 6753d1a3-c1d7-4b71-abc9-45e7e55df1a1 +slug: amazon-elastictranscoder +description: |- + ## What is Amazon Elastic Transcoder? + Amazon Elastic Transcoder is media transcoding in the cloud. It is designed to be a highly scalable, easy to use and a cost effective way for developers and businesses to convert (or “transcode”) media files from their source format into versions that will playback on devices like smartphones, tablets and PCs. + ### Get started! + Start monitoring Amazon Elastic Transcoder by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-elastictranscoder-monitoring-integration/) to learn more about New Relic monitoring for Amazon elastictranscoder. +summary: |- + Monitor Amazon Elastic Transcoder by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Elastic Transcoder +documentation: + - name: Amazon Elastic Transcoder installation docs + description: | + Monitor Amazon Elastic Transcoder by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-elastictranscoder-monitoring-integration/ +keywords: + - aws + - amazon web services + - elastictranscoder +alertPolicies: + - amazon-elastictranscoder +dashboards: + - amazon-elastictranscoder +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-elastictranscoder/logo.png b/quickstarts/aws/amazon-elastictranscoder/logo.png new file mode 100644 index 0000000000..13bd8180bf Binary files /dev/null and b/quickstarts/aws/amazon-elastictranscoder/logo.png differ diff --git a/quickstarts/aws/amazon-gamelift/config.yml b/quickstarts/aws/amazon-gamelift/config.yml new file mode 100644 index 0000000000..2e17c0d726 --- /dev/null +++ b/quickstarts/aws/amazon-gamelift/config.yml @@ -0,0 +1,30 @@ +id: cf8d67fe-fd29-4d75-bd62-415d704306b8 +slug: amazon-gamelift +description: |- + ## What is Amazon GameLift? + Amazon GameLift can deploy, operate, and scale dedicated, low-cost servers in the cloud for session-based multiplayer games. Built on AWS global computing infrastructure, Amazon GameLift helps deliver high-performance, high-reliability game servers while dynamically scaling your resource usage to meet worldwide player demand. + ### Get started! + Start monitoring Amazon GameLift by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-gamelift-monitoring-integration/) to learn more about New Relic monitoring for Amazon GameLift. +summary: |- + Monitor Amazon GameLift by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon GameLift +documentation: + - name: Amazon GameLift installation docs + description: | + Monitor Amazon GameLift by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-gamelift-monitoring-integration/ +keywords: + - aws + - amazon web services + - GameLift +dashboards: + - amazon-gamelift +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-gamelift/logo.png b/quickstarts/aws/amazon-gamelift/logo.png new file mode 100644 index 0000000000..a9631f7bf6 Binary files /dev/null and b/quickstarts/aws/amazon-gamelift/logo.png differ diff --git a/quickstarts/aws/amazon-inspector/config.yml b/quickstarts/aws/amazon-inspector/config.yml new file mode 100644 index 0000000000..4c6a47a5d7 --- /dev/null +++ b/quickstarts/aws/amazon-inspector/config.yml @@ -0,0 +1,32 @@ +id: 41e17e73-73b8-4351-a3fb-07314bddca48 +slug: amazon-inspector +description: |- + ## What is Amazon Inspector? + Amazon Inspector is a vulnerability management service that continuously scans your AWS workloads for software vulnerabilities and unintended network exposure. Amazon Inspector automatically discovers and scans running Amazon EC2 instances, container images in Amazon Elastic Container Registry (Amazon ECR), and AWS Lambda functions for known software vulnerabilities and unintended network exposure. + ### Get started! + Start monitoring Amazon Inspector by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-inspector-monitoring-integration/) to learn more about New Relic monitoring for Amazon Inspector. +summary: |- + Monitor Amazon Inspector by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Inspector +documentation: + - name: Amazon Inspector installation docs + description: | + Monitor Amazon Inspector by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-inspector-monitoring-integration/ +keywords: + - aws + - amazon web services + - inspector +dashboards: + - amazon-inspector +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-inspector \ No newline at end of file diff --git a/quickstarts/aws/amazon-inspector/logo.png b/quickstarts/aws/amazon-inspector/logo.png new file mode 100644 index 0000000000..7c78744188 Binary files /dev/null and b/quickstarts/aws/amazon-inspector/logo.png differ diff --git a/quickstarts/aws/amazon-keyspaces/config.yml b/quickstarts/aws/amazon-keyspaces/config.yml new file mode 100644 index 0000000000..3227c1d62e --- /dev/null +++ b/quickstarts/aws/amazon-keyspaces/config.yml @@ -0,0 +1,34 @@ +id: c42677b7-42b0-445a-9e25-5b684bc8652e +slug: amazon-keyspaces +description: |- + ## What is Amazon Keyspaces? + Amazon Keyspaces (for Apache Cassandra) is a scalable, highly available, and managed Apache Cassandra–compatible database service. With Amazon Keyspaces, you can run your Cassandra workloads on AWS using the same Cassandra application code and developer tools that you use today. + ### Get started! + Start monitoring Amazon Keyspaces by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-keyspaces-monitoring-integration/) to learn more about New Relic monitoring for Amazon Keyspaces. +summary: |- + Monitor Amazon Keyspaces by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Keyspaces +documentation: + - name: Amazon Keyspaces installation docs + description: | + Monitor Amazon Keyspaces by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-keyspaces-monitoring-integration/ +keywords: + - aws + - amazon web services + - Keyspaces + - amazon keyspaces + - cassandra +alertPolicies: + - amazon-keyspaces +dashboards: + - amazon-keyspaces +dataSourceIds: + - amazon-cloudwatch-metric-streams diff --git a/quickstarts/aws/amazon-keyspaces/logo.png b/quickstarts/aws/amazon-keyspaces/logo.png new file mode 100644 index 0000000000..816569da1a Binary files /dev/null and b/quickstarts/aws/amazon-keyspaces/logo.png differ diff --git a/quickstarts/aws/amazon-sagemaker/config.yml b/quickstarts/aws/amazon-sagemaker/config.yml new file mode 100644 index 0000000000..7e8c7fb2f7 --- /dev/null +++ b/quickstarts/aws/amazon-sagemaker/config.yml @@ -0,0 +1,32 @@ +id: 7ed6c23d-b8ee-4d2e-b983-f552c7820960 +slug: amazon-sagemaker +description: |- + ## What is Amazon Sagemaker? + Amazon SageMaker is a fully managed machine learning service. With SageMaker, data scientists and developers can quickly and easily build and train machine learning models, and then directly deploy them into a production-ready hosted environment. + ### Get started! + Start monitoring Amazon Sagemaker by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-sagemaker-monitoring-integration/) to learn more about New Relic monitoring for Amazon Sagemaker. +summary: |- + Monitor Amazon Sagemaker by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Sagemaker +documentation: + - name: Amazon Sagemaker installation docs + description: | + Monitor Amazon Sagemaker by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-sagemaker-monitoring-integration/ +keywords: + - aws + - amazon web services + - Sagemaker +alertPolicies: + - amazon-sagemaker +dashboards: + - amazon-sagemaker +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-sagemaker/logo.png b/quickstarts/aws/amazon-sagemaker/logo.png new file mode 100644 index 0000000000..9eacf9ab4e Binary files /dev/null and b/quickstarts/aws/amazon-sagemaker/logo.png differ diff --git a/quickstarts/aws/amazon-security-lake/config.yml b/quickstarts/aws/amazon-security-lake/config.yml new file mode 100644 index 0000000000..70b92ab21b --- /dev/null +++ b/quickstarts/aws/amazon-security-lake/config.yml @@ -0,0 +1,48 @@ +id: a9e632bf-9467-4e0d-92cd-e4b16eebef03 +slug: aws-security-lake +description: |- + ## What is Amazon Security Lake? + + Amazon Security Lake allow you to automatically centralize your security data in just a few steps. + + + ### Get started! + + Start monitoring Amazon Security Lake by forwarding logs to New Relic using a Lambda function. + + Check out our Amazon Security Lake documentation to instrument your cloud service and manage the stability, scalability, and reliability of your systems with New Relic's infrastructure monitoring capabilities. + + ### More info + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-security-lake-monitoring-integration/) to learn more about New Relic monitoring for Amazon Security Lake. +summary: |- + Monitor Amazon Security Lake by sending logs to New Relic +icon: logo.svg +level: New Relic +authors: + - New Relic +title: Amazon Security Lake +documentation: + - name: Amazon Security Lake integration guide + description: | + Monitor Amazon Security Lake by sending logs to New Relic via Lambda function + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-security-lake-monitoring-integration/ +keywords: + - aws + - amazon web services + - networking + - security lake + - vpc flow logs + - security hub + - route 53 query resolver + - cloudtrail +dashboards: + - amazon-security-lake-vpc-flowlogs + - amazon-security-lake-security-hub + - amazon-security-lake-route53-resolver-query-logs + - amazon-security-lake-cloudtrail-logs +installPlans: + - aws-security-lake +dataSourceIds: + - amazon-security-lake diff --git a/quickstarts/aws/amazon-security-lake/logo.svg b/quickstarts/aws/amazon-security-lake/logo.svg new file mode 100644 index 0000000000..94db88def4 --- /dev/null +++ b/quickstarts/aws/amazon-security-lake/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/aws/amazon-simpleworkflow/config.yml b/quickstarts/aws/amazon-simpleworkflow/config.yml new file mode 100644 index 0000000000..2a990d8cbb --- /dev/null +++ b/quickstarts/aws/amazon-simpleworkflow/config.yml @@ -0,0 +1,32 @@ +id: becf8b30-f2a9-4f0e-ab72-3f62fe1b80d9 +slug: amazon-simpleworkflow +description: |- + ## What is Amazon SimpleWorkFlow? + The Amazon Simple Workflow Service (Amazon SWF) makes it easy to build applications that coordinate work across distributed components. In Amazon SWF, a task represents a logical unit of work that is performed by a component of your application. Coordinating tasks across the application involves managing intertask dependencies, scheduling, and concurrency in accordance with the logical flow of the application. + ### Get started! + Start monitoring Amazon SimpleWorkFlow by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-simpleworkflow-monitoring-integration/) to learn more about New Relic monitoring for Amazon SimpleWorkFlow. +summary: |- + Monitor Amazon SimpleWorkFlow by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon SimpleWorkFlow +documentation: + - name: Amazon SimpleWorkFlow installation docs + description: | + Monitor Amazon SimpleWorkFlow by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-simpleworkflow-monitoring-integration/ +keywords: + - aws + - amazon web services + - SimpleWorkFlow +alertPolicies: + - amazon-simpleworkflow +dashboards: + - amazon-simpleworkflow +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/amazon-simpleworkflow/logo.png b/quickstarts/aws/amazon-simpleworkflow/logo.png new file mode 100644 index 0000000000..52fce622e2 Binary files /dev/null and b/quickstarts/aws/amazon-simpleworkflow/logo.png differ diff --git a/quickstarts/aws/amazon-timestream/config.yml b/quickstarts/aws/amazon-timestream/config.yml new file mode 100644 index 0000000000..3b9717e2d4 --- /dev/null +++ b/quickstarts/aws/amazon-timestream/config.yml @@ -0,0 +1,32 @@ +id: 2e7a2e20-71b6-43e2-bfa7-a2d09780e558 +slug: amazon-timestream +description: |- + ## What is Amazon Timestream? + Amazon Timestream is a serverless scalable time-series database service to store and analyze up to trillions of events per day. It automatically scales up or down to adjust capacity and performance. + ### Get started! + Start monitoring Amazon Timestream by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-timestream-monitoring-integration/) to learn more about New Relic monitoring for Amazon Timestream. +summary: |- + Monitor Amazon Timestream by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Timestream +documentation: + - name: Amazon Timestream installation docs + description: | + Monitor Amazon Timestream by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-timestream-monitoring-integration/ +keywords: + - aws + - amazon web services + - timestream +dashboards: + - amazon-timestream +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-timestream diff --git a/quickstarts/aws/amazon-timestream/logo.png b/quickstarts/aws/amazon-timestream/logo.png new file mode 100644 index 0000000000..5e2f9bee40 Binary files /dev/null and b/quickstarts/aws/amazon-timestream/logo.png differ diff --git a/quickstarts/aws/amazon-transfer-family/config.yml b/quickstarts/aws/amazon-transfer-family/config.yml new file mode 100644 index 0000000000..509c79f7ae --- /dev/null +++ b/quickstarts/aws/amazon-transfer-family/config.yml @@ -0,0 +1,34 @@ +id: 932165c7-b93a-42e7-8058-1b847cea522a +slug: amazon-transfer-family +description: |- + ## What is Amazon Transfer Family? + Amazon Transfer Family securely scales your recurring business-to-business file transfers to AWS Storage services using SFTP, FTPS, FTP, and AS2 protocols. + ### Get started! + Start monitoring Amazon Transfer Family by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-transfer-family-monitoring-integration/) to learn more about New Relic monitoring for Amazon Transfer Family. +summary: |- + Monitor Amazon Transfer Family by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Transfer Family +documentation: + - name: Amazon Transfer Family installation docs + description: | + Monitor Amazon Transfer Family by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-transfer-family-monitoring-integration/ +keywords: + - aws + - amazon web services + - amazon transfer Family + - amazon transfer + - transfer +dashboards: + - amazon-transfer-family +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-transfer-family \ No newline at end of file diff --git a/quickstarts/aws/amazon-transfer-family/logo.png b/quickstarts/aws/amazon-transfer-family/logo.png new file mode 100644 index 0000000000..742673e19c Binary files /dev/null and b/quickstarts/aws/amazon-transfer-family/logo.png differ diff --git a/quickstarts/aws/amazon-vpc-lattice/config.yml b/quickstarts/aws/amazon-vpc-lattice/config.yml new file mode 100644 index 0000000000..dd5ec92759 --- /dev/null +++ b/quickstarts/aws/amazon-vpc-lattice/config.yml @@ -0,0 +1,39 @@ +id: 47e7ef3d-d2e4-4556-bd06-8e93633f301e +slug: amazon-vpc-lattice +description: | + ## Monitor your VPC Lattice service in New Relic's observability platform + Our lattice integration reports data from your NAT Gateway service to your New Relic account using AWS CloudWatch Metric Streams and Amazon Firehose. + ## Get started! + This integration uses [AWS CloudWatch Metric streams](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/connect/aws-metric-stream/) to get VPC Lattice data into New Relic. + ## About this integration + With this integration you can monitor key information about your VPC Lattice service. + - Request count + - Byte traffic + - Success rate + - Request time +summary: | + Use the New Relic - Amazon VPC Lattice Integration to monitor your AWS service traffic. +icon: logo.jpeg +level: New Relic +authors: + - New Relic + - Joseph Counts +title: Amazon VPC Lattice +documentation: + - name: Amazon VPC Lattice integration docs + description: | + Monitor your NAT Gateway traffic using AWS CloudWatch Metric Streams + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-vpc-lattice-monitoring-integration/ +keywords: + - aws + - amazon + - lattice + - metrics + - vpc + - network +dataSourceIds: + - amazon-vpc-lattice + - amazon-cloudwatch-metric-streams +dashboards: + - amazon-vpc-lattice-access-logs + - amazon-vpc-lattice-metrics diff --git a/quickstarts/aws/amazon-vpc-lattice/logo.jpeg b/quickstarts/aws/amazon-vpc-lattice/logo.jpeg new file mode 100644 index 0000000000..3ef360ee2f Binary files /dev/null and b/quickstarts/aws/amazon-vpc-lattice/logo.jpeg differ diff --git a/quickstarts/aws/amazon-vpc-nat-gateway/config.yml b/quickstarts/aws/amazon-vpc-nat-gateway/config.yml new file mode 100644 index 0000000000..a35a0601f4 --- /dev/null +++ b/quickstarts/aws/amazon-vpc-nat-gateway/config.yml @@ -0,0 +1,38 @@ +id: 16e409db-33be-4cf2-9f21-363f09c43898 +slug: amazon-vpc-natgateway +description: | + ## Monitor your NAT Gateway in New Relic's observability platform + Our NAT Gateway integration reports data from your NAT Gateway service to your New Relic account using AWS CloudWatch Metric Streams. + ## Get started! + This integration uses [AWS CloudWatch Metric streams](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/connect/aws-metric-stream/) to get NAT Gateway traffic data into New Relic. + ## About this integration + With this integration you can monitor key traffic information about your NAT Gateway. + - Track your connection established rate + - View idle connection timeouts + - Track Byte traffic + - Monitor your active connections over time + - Check for packet drops or port allocation errors over time +summary: | + Use the New Relic - Amazon VPC NAT Gateway Integration to monitor traffic to and from your NAT Gateway. +icon: logo.svg +level: New Relic +authors: + - New Relic + - Joseph Counts +title: Amazon VPC NAT Gateway +documentation: + - name: Amazon VPC NAT Gateway integration docs + description: | + Monitor your NAT Gateway traffic using AWS CloudWatch Metric Streams + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-nat-gateway-monitoring-integration/ +keywords: + - aws + - amazon + - nat gateway + - metrics + - vpc + - network +dataSourceIds: + - amazon-cloudwatch-metric-streams +dashboards: + - amazon-vpc-natgateway diff --git a/quickstarts/aws/amazon-vpc-nat-gateway/logo.svg b/quickstarts/aws/amazon-vpc-nat-gateway/logo.svg new file mode 100644 index 0000000000..0568d19aba --- /dev/null +++ b/quickstarts/aws/amazon-vpc-nat-gateway/logo.svg @@ -0,0 +1,18 @@ + + + + Icon-Architecture/64/Arch_Amazon-Virtual-Private-Cloud_64 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/aws/amazon-workmail/config.yml b/quickstarts/aws/amazon-workmail/config.yml new file mode 100644 index 0000000000..5626638919 --- /dev/null +++ b/quickstarts/aws/amazon-workmail/config.yml @@ -0,0 +1,32 @@ +id: 9426b0ae-8888-4dac-af07-de931af992a0 +slug: amazon-workmail +description: |- + ## What is Amazon WorkMail? + Amazon WorkMail is a secure, managed business email and calendar service with support for existing desktop and mobile email client applications. Amazon WorkMail gives users the ability to seamlessly access their email, contacts, and calendars using the client application of their choice, including Microsoft Outlook, native iOS and Android email applications, any client application supporting the IMAP protocol, or directly through a web browser. + ### Get started! + Start monitoring Amazon WorkMail by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-workmail-monitoring-integration/) to learn more about New Relic monitoring for Amazon WorkMail. +summary: |- + Monitor Amazon WorkMail by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon WorkMail +documentation: + - name: Amazon WorkMail installation docs + description: | + Monitor Amazon WorkMail by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-workmail-monitoring-integration/ +keywords: + - aws + - amazon web services + - WorkMail +dashboards: + - amazon-workmail +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-workmail diff --git a/quickstarts/aws/amazon-workmail/logo.png b/quickstarts/aws/amazon-workmail/logo.png new file mode 100644 index 0000000000..c09ddb0302 Binary files /dev/null and b/quickstarts/aws/amazon-workmail/logo.png differ diff --git a/quickstarts/aws/amazon-workspaces/config.yml b/quickstarts/aws/amazon-workspaces/config.yml new file mode 100644 index 0000000000..db77ba4438 --- /dev/null +++ b/quickstarts/aws/amazon-workspaces/config.yml @@ -0,0 +1,32 @@ +id: 440596f8-d11f-4656-b21a-0b0bb02bc29d +slug: amazon-workspaces +description: |- + ## What is Amazon WorkSpaces? + Amazon WorkSpaces is a fully managed desktop virtualization service for Windows and Linux that enables you to access resources from any supported device. + ### Get started! + Start monitoring Amazon WorkSpaces by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-workspaces-monitoring-integration/) to learn more about New Relic monitoring for Amazon WorkSpaces. +summary: |- + Monitor Amazon WorkSpaces by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon WorkSpaces +documentation: + - name: Amazon WorkSpaces installation docs + description: | + Monitor Amazon WorkSpaces by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/amazon-workspaces-monitoring-integration/ +keywords: + - aws + - amazon web services + - WorkSpaces +dashboards: + - amazon-workspaces +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - amazon-workspaces \ No newline at end of file diff --git a/quickstarts/aws/amazon-workspaces/logo.png b/quickstarts/aws/amazon-workspaces/logo.png new file mode 100644 index 0000000000..867ba24f54 Binary files /dev/null and b/quickstarts/aws/amazon-workspaces/logo.png differ diff --git a/quickstarts/aws/aws-chatbot/config.yml b/quickstarts/aws/aws-chatbot/config.yml new file mode 100644 index 0000000000..4c3ab16d5b --- /dev/null +++ b/quickstarts/aws/aws-chatbot/config.yml @@ -0,0 +1,32 @@ +id: 94a5c325-ad12-4419-8c6b-9aee101a76d1 +slug: aws-chatbot +description: |- + ## What is AWS Chatbot? + AWS Chatbot is an AWS service that enables DevOps and software development teams to use messaging program chat rooms to monitor and respond to operational events in their AWS Cloud. AWS Chatbot processes AWS service notifications from Amazon Simple Notification Service (Amazon SNS), and forwards them to chat rooms so teams can analyze and act on them immediately, regardless of location. + ### Get started! + Start monitoring AWS Chatbot by using AWS Kinesis Firehose to send logs to New Relic! Take a look at our documentation for information on how to set this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-chatbot-monitoring-integration/) to learn more about New Relic monitoring for AWS Chatbot. +summary: |- + Monitor AWS Chatbot by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: AWS Chatbot +documentation: + - name: AWS Chatbot installation docs + description: | + Monitor AWS Chatbot by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-chatbot-monitoring-integration/ +keywords: + - aws + - amazon web services + - networking +dashboards: + - aws-chatbot +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - aws-chatbot \ No newline at end of file diff --git a/quickstarts/aws/aws-chatbot/logo.png b/quickstarts/aws/aws-chatbot/logo.png new file mode 100644 index 0000000000..22731fe7e5 Binary files /dev/null and b/quickstarts/aws/aws-chatbot/logo.png differ diff --git a/quickstarts/aws/aws-elemental-mediatailor/config.yml b/quickstarts/aws/aws-elemental-mediatailor/config.yml new file mode 100644 index 0000000000..d35f588a50 --- /dev/null +++ b/quickstarts/aws/aws-elemental-mediatailor/config.yml @@ -0,0 +1,35 @@ +id: 483a4d68-5838-4b7a-83b1-0abc7bc454c7 +slug: aws-elemental-mediatailor +description: |- + ## What is AWS Elemental MediaTailor? + AWS Elemental MediaTailor is a channel assembly and personalized ad-insertion service for video providers to create linear over-the-top (OTT) channels using existing video content. The service then lets you monetize those channels or other live streams with personalized advertising. + ### Get started! + Start monitoring AWS Elemental MediaTailor by connecting Amazon Web Services (AWS) to New Relic! Take a look at our documentation for information on how to set up this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-elemental-mediatailor-monitoring-integration/) to learn more about New Relic monitoring for Amazon MediaTailor. +summary: |- + Monitor AWS Elemental MediaTailor by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: AWS Elemental MediaTailor +documentation: + - name: AWS Elemental MediaTailor installation docs + description: | + Monitor AWS Elemental MediaTailor by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-elemental-mediatailor-monitoring-integration/ +keywords: + - aws + - amazon web services + - Elemental MediaTailor + - aws elemental media tailor + - elemental media tailor + - aws elemental mediatailor +alertPolicies: + - aws-elemental-mediatailor +dashboards: + - aws-elemental-mediatailor +dataSourceIds: + - amazon-cloudwatch-metric-streams \ No newline at end of file diff --git a/quickstarts/aws/aws-elemental-mediatailor/logo.png b/quickstarts/aws/aws-elemental-mediatailor/logo.png new file mode 100644 index 0000000000..94a7ac1abc Binary files /dev/null and b/quickstarts/aws/aws-elemental-mediatailor/logo.png differ diff --git a/quickstarts/aws/aws-lex/config.yml b/quickstarts/aws/aws-lex/config.yml new file mode 100644 index 0000000000..e79668b0ed --- /dev/null +++ b/quickstarts/aws/aws-lex/config.yml @@ -0,0 +1,31 @@ +id: 62698640-266d-4f4b-9894-f42f13de6b16 +slug: aws-lex +description: |- + ## Monitor your Amazon Lex Metrics + + With New Relic's Amazon Lex integration, you now can see all your Lex data on New Relic Instant Observability Platform. + + ### Get started! + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-lex-monitoring-integration/) to learn more about New + Relic monitoring and integration with Amazon Lex. + +summary: Use New Relic - Amazon Lex Integration to monitor your bots with New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Lex +documentation: + - name: Amazon Lex installation docs + description: | + Monitor Amazon Lex by connecting AWS to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-lex-monitoring-integration/ +keywords: + - aws + - amazon web services + - lex +dataSourceIds: + - aws-lex +dashboards: + - aws-lex \ No newline at end of file diff --git a/quickstarts/aws/aws-lex/logo.png b/quickstarts/aws/aws-lex/logo.png new file mode 100644 index 0000000000..68ba7e3646 Binary files /dev/null and b/quickstarts/aws/aws-lex/logo.png differ diff --git a/quickstarts/aws/aws-polly/config.yml b/quickstarts/aws/aws-polly/config.yml new file mode 100644 index 0000000000..03a6f6b5d7 --- /dev/null +++ b/quickstarts/aws/aws-polly/config.yml @@ -0,0 +1,31 @@ +id: a92448c6-19ab-4c6e-946d-22e4171e594f +slug: aws-polly +description: |- + ## Monitor your AWS PollyOperation and PollyLexicon Metrics + + With New Relic's Amazon Polly integration, you now can see all your Polly data on New Relic Instant Observability Platform. + + ### Get started! + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-polly-monitoring-integration/) to learn more about New + Relic monitoring and integration with Amazon Polly. + +summary: Use New Relic - Amazon Polly Integration to monitor your Polly utilizing Apps and Services with New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Polly +documentation: + - name: Amazon Polly installation docs + description: | + Monitor Amazon Polly by connecting AWS to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-polly-monitoring-integration/ +keywords: + - aws + - amazon web services + - polly +dataSourceIds: + - aws-polly +dashboards: + - aws-polly diff --git a/quickstarts/aws/aws-polly/logo.png b/quickstarts/aws/aws-polly/logo.png new file mode 100644 index 0000000000..c6c41a44e4 Binary files /dev/null and b/quickstarts/aws/aws-polly/logo.png differ diff --git a/quickstarts/aws/aws-rekognition/config.yml b/quickstarts/aws/aws-rekognition/config.yml new file mode 100644 index 0000000000..792e2e7536 --- /dev/null +++ b/quickstarts/aws/aws-rekognition/config.yml @@ -0,0 +1,31 @@ +id: b8259c45-0324-4cde-86a0-7c7df8dab9a3 +slug: aws-rekognition +description: |- + ## Monitor your AWS Rekognition and AWS Rekognition Operation Metrics + + With New Relic's Amazon Rekognition integration, you now can see all your Rekognition data on New Relic Instant Observability Platform. + + ### Get started! + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-rekognition-monitoring-integration/) to learn more about New + Relic monitoring and integration with Amazon Rekognition. + +summary: Use New Relic - Amazon Rekognition Integration to analyze your rekognition data with New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Rekognition +documentation: + - name: Amazon Rekognition installation docs + description: | + Monitor AWS Rekognition by connecting AWS to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-rekognition-monitoring-integration/ +keywords: + - aws + - amazon web services + - rekognition +dataSourceIds: + - aws-rekognition +dashboards: + - aws-rekognition diff --git a/quickstarts/aws/aws-rekognition/logo.png b/quickstarts/aws/aws-rekognition/logo.png new file mode 100644 index 0000000000..7b238651ed Binary files /dev/null and b/quickstarts/aws/aws-rekognition/logo.png differ diff --git a/quickstarts/aws/aws-textract/config.yml b/quickstarts/aws/aws-textract/config.yml new file mode 100644 index 0000000000..1668a7ee3e --- /dev/null +++ b/quickstarts/aws/aws-textract/config.yml @@ -0,0 +1,31 @@ +id: e519bc93-31fa-4375-9fa0-ac3e2620acc2 +slug: aws-textract +description: |- + ## Monitor your AWS Textract Metrics + + With New Relic's Amazon Textract integration, you now can see all your Textract data on New Relic Instant Observability Platform. + + ### Get started! + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-textract-monitoring-integration/) to learn more about New + Relic monitoring and integration with Amazon Textract. + +summary: Use New Relic - Amazon Textract Integration to monitor your Textract utilizing Apps and Services with New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Textract +documentation: + - name: Amazon Textract installation docs + description: | + Monitor Amazon Textract by connecting AWS to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-textract-monitoring-integration/ +keywords: + - aws + - amazon web services + - textract +dataSourceIds: + - aws-textract +dashboards: + - aws-textract diff --git a/quickstarts/aws/aws-textract/logo.png b/quickstarts/aws/aws-textract/logo.png new file mode 100644 index 0000000000..c4d7bccafb Binary files /dev/null and b/quickstarts/aws/aws-textract/logo.png differ diff --git a/quickstarts/aws/aws-transcribe/config.yml b/quickstarts/aws/aws-transcribe/config.yml new file mode 100644 index 0000000000..fafafd988b --- /dev/null +++ b/quickstarts/aws/aws-transcribe/config.yml @@ -0,0 +1,32 @@ +id: 101d9711-2c67-493a-86cb-e672a8ba43ef +slug: aws-transcribe +description: |- + ## What is AWS Transcribe? + Amazon Transcribe is an automatic speech recognition service that uses machine learning models to convert audio to text. You can use Amazon Transcribe as a standalone transcription service or to add speech-to-text capabilities to any application. + ### Get started! + Start monitoring AWS Transcribe by using AWS Kinesis Firehose to send logs to New Relic! Take a look at our documentation for information on how to set this integration. + ### More info + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-transcribe-monitoring-integration/) to learn more about New Relic monitoring for AWS Transcribe. +summary: |- + Monitor Amazon Transcribe by connecting AWS to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: AWS Transcribe +documentation: + - name: AWS Transcribe installation docs + description: | + Monitor AWS Transcribe by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-transcribe-monitoring-integration/ +keywords: + - aws + - amazon web services + - networking +dashboards: + - aws-transcribe +dataSourceIds: + - amazon-cloudwatch-metric-streams +alertPolicies: + - aws-transcribe \ No newline at end of file diff --git a/quickstarts/aws/aws-transcribe/logo.png b/quickstarts/aws/aws-transcribe/logo.png new file mode 100644 index 0000000000..2afb751ff3 Binary files /dev/null and b/quickstarts/aws/aws-transcribe/logo.png differ diff --git a/quickstarts/aws/aws-translate/config.yml b/quickstarts/aws/aws-translate/config.yml new file mode 100644 index 0000000000..2b074dd281 --- /dev/null +++ b/quickstarts/aws/aws-translate/config.yml @@ -0,0 +1,31 @@ +id: 97208883-0a4a-4c5b-9fc6-a06dee240c34 +slug: aws-translate +description: |- + ## Monitor your AWS Translate Metrics + + With New Relic's Amazon Translate integration, you now can see all your Transate data on New Relic Instant Observability Platform. + + ### Get started! + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-translate-monitoring-integration/) to learn more about New + Relic monitoring and integration with Amazon Translate. + +summary: Use New Relic - Amazon Translate Integration to monitor your Translate utilizing Apps and Services with New Relic +icon: logo.png +level: New Relic +authors: + - New Relic +title: Amazon Translate +documentation: + - name: Amazon Translate installation docs + description: | + Monitor Amazon Translate by connecting AWS to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-translate-monitoring-integration/ +keywords: + - aws + - amazon web services + - translate +dataSourceIds: + - aws-translate +dashboards: + - aws-translate diff --git a/quickstarts/aws/aws-translate/logo.png b/quickstarts/aws/aws-translate/logo.png new file mode 100644 index 0000000000..3b2074af3d Binary files /dev/null and b/quickstarts/aws/aws-translate/logo.png differ diff --git a/quickstarts/aws/aws-verified-access/config.yml b/quickstarts/aws/aws-verified-access/config.yml new file mode 100644 index 0000000000..7910ee0182 --- /dev/null +++ b/quickstarts/aws/aws-verified-access/config.yml @@ -0,0 +1,48 @@ +id: a474d202-84a7-4ca0-829c-e93b52027318 +slug: aws-verified-access +description: |- + ## What is Amazon Verified Access? + + AWS Verified Access allows you to provide secure network access without a VPN to corporate applications. Verified Access verifies each access request in real time and only connects users to the applications they are allowed to access, removing broad access to corporate applications, and reducing the associated risks. + + + ### Get started! + + Start monitoring Amazon Veried Access by using AWS Kenesis Firehose to send logs to New Relic! Take a look at our documentation for information on how to set this integration. + + ### About this integration + + With this integration, you can keep up with important information about your Verified Access logo.svg + + - Access attempt traffic + - Top denied attempts by IP Address + - Users attempting access from multiple IP Addresses + - Top accessed applications + - Real time logs on denied access attempts + + ### More info + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-verified-access-monitoring-integration/) to learn more about New Relic monitoring for Amazon Verified Access. +summary: |- + Monitor Amazon Verified Access by streaming Firehose logs into New Relic +icon: logo.svg +level: New Relic +authors: + - New Relic +title: Amazon Verified Access +documentation: + - name: Amazon Verified Access installation docs + description: | + Monitor Amazon Verified by connecting AWS to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/amazon-integrations/aws-integrations-list/aws-verified-access-monitoring-integration/ +keywords: + - aws + - amazon web services + - networking +dashboards: + - aws-verified-access +installPlans: + - aws-verified-access +dataSourceIds: + - amazon-verified-access diff --git a/quickstarts/aws/aws-verified-access/logo.svg b/quickstarts/aws/aws-verified-access/logo.svg new file mode 100644 index 0000000000..0568d19aba --- /dev/null +++ b/quickstarts/aws/aws-verified-access/logo.svg @@ -0,0 +1,18 @@ + + + + Icon-Architecture/64/Arch_Amazon-Virtual-Private-Cloud_64 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/azure-openai/config.yml b/quickstarts/azure-openai/config.yml new file mode 100644 index 0000000000..47c6d541b8 --- /dev/null +++ b/quickstarts/azure-openai/config.yml @@ -0,0 +1,46 @@ +id: 8c8be34e-2f80-4666-b599-29965477e9da +slug: azure-openai +title: Azure OpenAI + +description: | + ## Monitor your Azure OpenAI LLM Usage in New Relic + + With the GPT integration, you'll have the ability to seamlessly monitor Azure OpenAI completion queries and simultaneously log useful statistics in a New Relic customizable dashboard about your requests. + + By adding just two lines of code, users can gain access to key performance metrics such as cost, response time, and sample inputs/outputs. The dashboard also allows users to track total requests, average token/requests, and model names. + + With New Relic fully customizable dashboard, users can add additional metrics based on their specific business requirements and needs. + + Overall, New Relic Azure OpenAI integration provides real-time metrics around GPT applications to help businesses optimize usage, reduce costs, and achieve better results. + +summary: | + Seamlessly monitor your usage of Azure OpenAI’s GPT Series APIs using New Relic’s dashboard. You'll get access to real-time metrics that can help you optimize usage, reduce costs, and achieve better results. + +icon: logo.svg + +level: New Relic + +authors: + - New Relic + - Yogev Kriger + +documentation: + - name: Monitor Azure OpenAI + description: | + A lightweight tool to monitor your Azure OpenAI workload. + url: >- + https://github.com/newrelic/openai-api-monitoring + +keywords: + - featured + - azure openai + - openai + - ai + - gpt + - mlops + - llm + +dataSourceIds: + - llm-application +alertPolicies: + - llm-application diff --git a/data-sources/openai/openai-logo.svg b/quickstarts/azure-openai/logo.svg similarity index 100% rename from data-sources/openai/openai-logo.svg rename to quickstarts/azure-openai/logo.svg diff --git a/quickstarts/azure/azure-anomaly-detector/config.yml b/quickstarts/azure/azure-anomaly-detector/config.yml new file mode 100644 index 0000000000..e0862f4182 --- /dev/null +++ b/quickstarts/azure/azure-anomaly-detector/config.yml @@ -0,0 +1,41 @@ +id: 5e73aab7-1186-4aa9-a321-089690d47f1f +slug: azure-anomaly-detector +description: |- + ## What is Azure Anomaly Detector? + + Azure Anomaly Detector is an AI service with a set of APIs, which enables you to monitor and detect anomalies in your time series data with little machine learning (ML) knowledge, either batch validation or real-time inference. + + ### New Relic Azure Anomaly Detector quickstart features + + A standard dashboard that tracks key indicators like total calls, successful calls, success rate and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Anomaly Detector with New Relic? + + [New Relic Azure Anomaly Detector](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Anomaly Detector via different metrics including total calls, successful calls, success rate and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Anomaly Detector is critical to track the performance through key metrics. Download New Relic Azure Anomaly Detector monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Anomaly Detector. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Anomaly Detector +documentation: + - name: Azure Anomaly Detector installation docs. + description: | + Monitor Azure Anomaly Detector by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - anomaly detector + - product partnerships +dashboards: + - azure-anomaly-detector +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-anomaly-detector/logo.png b/quickstarts/azure/azure-anomaly-detector/logo.png new file mode 100644 index 0000000000..b7c0ca1498 Binary files /dev/null and b/quickstarts/azure/azure-anomaly-detector/logo.png differ diff --git a/quickstarts/azure/azure-app-configuration/config.yml b/quickstarts/azure/azure-app-configuration/config.yml new file mode 100644 index 0000000000..ff10d09177 --- /dev/null +++ b/quickstarts/azure/azure-app-configuration/config.yml @@ -0,0 +1,40 @@ +id: 936ad19f-b447-4d17-a7f6-9fee6df5d94a +slug: azure-app-configuration +description: |- + ## What is Azure App Configuration? + + Azure App Configuration provides a service to centrally manage application settings and feature flags. + + ### New Relic Azure AppConfiguration quickstart features + + A standard dashboard that tracks key indicators like daily storage usage, http incoming request count, http incoming request duration and throttled http request count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure AppConfiguration with New Relic? + + [New Relic Azure App Configuration](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-configuration-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure App Configuration via different metrics including daily storage usage, http incoming request count, http incoming request duration and throttled http request count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure App Configuration is critical to track the performance through key metrics. Download New Relic Azure App Configuration monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure App Configuration Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure App Configuration +documentation: + - name: Azure App Configuration installation docs. + description: | + Monitor Azure App Configuration by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-configuration-monitoring-integration/ +keywords: + - azure + - app configuration + - product partnerships +dashboards: + - azure-app-configuration +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-app-configuration/logo.png b/quickstarts/azure/azure-app-configuration/logo.png new file mode 100644 index 0000000000..9e3e40996e Binary files /dev/null and b/quickstarts/azure/azure-app-configuration/logo.png differ diff --git a/quickstarts/azure/azure-app-service-environment/config.yml b/quickstarts/azure/azure-app-service-environment/config.yml new file mode 100644 index 0000000000..721a404c36 --- /dev/null +++ b/quickstarts/azure/azure-app-service-environment/config.yml @@ -0,0 +1,40 @@ +id: 35b73600-922b-49f9-9702-836771340372 +slug: azure-app-service-environment +title: Azure App Service Environment +description: |- + ## What is Azure App Service Environment? + + App Service Environment represents the collection of physical resources for the App service. An App Service Environment can have multiple web apps. In other words, we can have multiple web apps in an App Service Environment. + + ### New Relic Azure App Service Environment quickstart features + + A standard dashboard that tracks key indicators like bytes received, bytes sent, cpu percentage, disk queue length, memory percentage. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure App Service Environment with New Relic? + + [New Relic Azure App Service Environment](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-service-environment-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure App Service Environment via different metrics including account bytes received, bytes sent, cpu percentage, disk queue length, memory percentage. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure App Service Environment is critical to tracking the performance through key metrics. Install the New Relic Azure App Service Environment monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure App Service Environment. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure App Service Environment installation docs + description: | + Monitor Azure App Service Environment by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-service-environment-monitoring-integration/ +keywords: + - azure + - app service environment + - product partnerships +dashboards: + - azure-app-service-environment +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-app-service-environment/logo.png b/quickstarts/azure/azure-app-service-environment/logo.png new file mode 100644 index 0000000000..3413fa5208 Binary files /dev/null and b/quickstarts/azure/azure-app-service-environment/logo.png differ diff --git a/quickstarts/azure/azure-app-service-plan/config.yml b/quickstarts/azure/azure-app-service-plan/config.yml new file mode 100644 index 0000000000..e6bc13dff4 --- /dev/null +++ b/quickstarts/azure/azure-app-service-plan/config.yml @@ -0,0 +1,40 @@ +id: 9dc69e3b-c6c6-4b3e-b832-0f1ceab6c17b +slug: azure-app-service-plan +title: Azure App Service Plan +description: |- + ## What is Azure App Service Plan? + + Azure App Service Plan represents the collection of physical resources for the App Service. An App Service Plan can have multiple web apps. In other words, we can have multiple web apps in an app service plan. + + ### New Relic Azure App Service Plan quickstart features + + A standard dashboard that tracks key indicators like bytes received, bytes sent, CPU percentage, disk queue length, memory percentage. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure App Service Plan with New Relic? + + [New Relic Azure App Service Plan](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-service-plan/) monitoring quickstart empowers you to track the performance of Azure App Service Plan via different metrics including bytes received, bytes sent, CPU percentage, disk queue length, memory percentage. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure App Service Plan is critical to track the performance through via key metrics. Download New Relic Azure App Service Plan monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure App Service Plan Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure App Service Plan installation docs + description: | + Monitor Azure App Service Plan by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-app-service-plan/ +keywords: + - azure + - app service plan + - product partnerships +dashboards: + - azure-app-service-plan +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-app-service-plan/logo.png b/quickstarts/azure/azure-app-service-plan/logo.png new file mode 100644 index 0000000000..79e4169adb Binary files /dev/null and b/quickstarts/azure/azure-app-service-plan/logo.png differ diff --git a/quickstarts/azure/azure-application-insights/config.yml b/quickstarts/azure/azure-application-insights/config.yml new file mode 100644 index 0000000000..8f332fc46b --- /dev/null +++ b/quickstarts/azure/azure-application-insights/config.yml @@ -0,0 +1,41 @@ +id: 53d48c5a-1f30-4793-b742-a04929bf1d4b +slug: azure-application-insights +title: Azure Application Insights +description: |- + ## What is Azure Application Insights? + + Azure Application Insights is a service that monitors the performance of live web applications and detects anomalies. It is an extension of Azure Monitor and supports multiple platforms, such as .NET, Java, Python, and Node.js. It helps developers to understand how their applications are used and user interaction. + + ### New Relic Azure Application Insights quickstart features + + A standard dashboard that tracks key indicators like receiving response time, availability, dependency call failures and browser exceptions. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Application Insights with New Relic? + + [New Relic Azure Application Insights](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-application-insights-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Application Insights via different metrics including receiving response time, availability, dependency call failures and browser exceptions. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Application Insights is critical to tracking the performance through key metrics. Install the New Relic Azure Application Insights monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Application Insights service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Application Insights installation docs. + description: | + Monitor Azure Application Insights by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-application-insights-monitoring-integration/ +keywords: + - azure + - application insight + - application insights + - product partnerships +dashboards: + - azure-application-insights +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-application-insights/logo.png b/quickstarts/azure/azure-application-insights/logo.png new file mode 100644 index 0000000000..6807838aa1 Binary files /dev/null and b/quickstarts/azure/azure-application-insights/logo.png differ diff --git a/quickstarts/azure/azure-automation-account/config.yml b/quickstarts/azure/azure-automation-account/config.yml new file mode 100644 index 0000000000..89daefe58d --- /dev/null +++ b/quickstarts/azure/azure-automation-account/config.yml @@ -0,0 +1,40 @@ +id: b299cfaa-f5a4-4aea-9f0f-a7f3289b3d13 +slug: azure-automation-account +title: Azure Automation Account +description: |- + ## What is Azure Automation Account? + + Azure Automation delivers cloud-based automation, operating system updates, and a configuration service that supports consistent management across your Azure and non-Azure environments. + + ### New Relic Azure Automation Account quickstart features + + A standard dashboard that tracks key indicators like hybrid worker ping, total jobs, total update deployment machine runs and total update deployment runs. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Automation Account with New Relic? + + [New Relic Azure Automation Account](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-automation-account-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Automation Account via different metrics including hybrid worker ping, total jobs, total update deployment machine runs and total update deployment runs. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Automation Account is critical to tracking the performance through key metrics. Install the New Relic Azure Automation Account monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Automation Account Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Automation Account installation docs + description: | + Monitor Azure Automation Account by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-automation-account-monitoring-integration/ +keywords: + - azure + - automation account + - product partnerships +dashboards: + - azure-automation-account +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-automation-account/logo.png b/quickstarts/azure/azure-automation-account/logo.png new file mode 100644 index 0000000000..782208efef Binary files /dev/null and b/quickstarts/azure/azure-automation-account/logo.png differ diff --git a/quickstarts/azure/azure-batch/config.yml b/quickstarts/azure/azure-batch/config.yml new file mode 100644 index 0000000000..46eed3ffa3 --- /dev/null +++ b/quickstarts/azure/azure-batch/config.yml @@ -0,0 +1,40 @@ +id: e31643a4-a7a8-4fb9-b4fc-e8b15f93dabf +slug: azure-batch +description: |- + ## What is Azure Batch? + + Azure Batch is a managed service that enables you to run high-performance parallel computing jobs in the cloud. You can run compute-intensive work in a collection of virtual machines. + + ### New Relic Azure Batch quickstart features + + A standard dashboard that tracks key indicators like vCPU minutes, node states, job status and task status. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Batch with New Relic? + + [New Relic Azure Batch](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-batch-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Batch via different metrics including vCPU minutes, node states, task states and job states. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Batch is critical to track the performance of the jobs via key metrics. Download New Relic Azure Batch monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Batch Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Batch +documentation: + - name: Azure Batch installation docs + description: | + Monitor Azure Batch by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-batchaccount-monitoring-integration/ +keywords: + - azure + - batch + - product partnerships +dashboards: + - azure-batch +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-batch/logo.png b/quickstarts/azure/azure-batch/logo.png new file mode 100644 index 0000000000..7b21c6a40a Binary files /dev/null and b/quickstarts/azure/azure-batch/logo.png differ diff --git a/quickstarts/azure/azure-bing-autosuggest/config.yml b/quickstarts/azure/azure-bing-autosuggest/config.yml new file mode 100644 index 0000000000..f48c7cd8d1 --- /dev/null +++ b/quickstarts/azure/azure-bing-autosuggest/config.yml @@ -0,0 +1,41 @@ +id: 6082a44b-888c-4524-b282-78c61fdf8432 +slug: azure-bing-autosuggest +description: |- + ## What is Azure Bing Autosuggest? + + The Bing Autosuggest enables developers to incorporate intelligent search suggestions into their applications. It leverages the power of Bing's search engine to provide real-time query suggestions as users type in a search box or interact with an application. + + ### New Relic Azure Bing Autosuggest quickstart features + + A standard dashboard that tracks key indicators like successful calls, data out, latency and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Bing Autosuggest with New Relic? + + [New Relic Azure Bing Autosuggest](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Bing Autosuggest via different metrics including successful calls, data out, latency and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Bing Autosuggest is critical to track the performance through key metrics. Download New Relic Azure Bing Autosuggest monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Bing Autosuggest service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Bing Autosuggest +documentation: + - name: Azure Bing Autosuggest installation docs + description: | + Monitor Azure Bing Autosuggest by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/ +keywords: + - azure + - bing search + - bing autosuggest + - product partnerships +dashboards: + - azure-bing-autosuggest +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-bing-autosuggest/logo.png b/quickstarts/azure/azure-bing-autosuggest/logo.png new file mode 100644 index 0000000000..233f3c0d0c Binary files /dev/null and b/quickstarts/azure/azure-bing-autosuggest/logo.png differ diff --git a/quickstarts/azure/azure-bing-custom-search/config.yml b/quickstarts/azure/azure-bing-custom-search/config.yml new file mode 100644 index 0000000000..c3aafdc277 --- /dev/null +++ b/quickstarts/azure/azure-bing-custom-search/config.yml @@ -0,0 +1,41 @@ +id: b123f385-7c01-4a5e-af21-3746ee571cb3 +slug: azure-bing-custom-search +description: |- + ## What is Azure Bing Custom Search? + + Azure Bing Custom Search lets you create a tailored, ad-free search experiences for topics that your users care about. You specify the domains and webpages that Bing searches. You can also pin, boost, and demote specific content to create a custom view of the web that helps your users quickly find relevant content. + + ### New Relic Azure Bing Custom Search quickstart features + + A standard dashboard that tracks key indicators like successful calls, data out, latency and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Bing Custom Search with New Relic? + + [New Relic Azure Bing Custom Search](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Bing Custom Search via different metrics including successful calls, data out, latency and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Bing Custom Search is critical to track the performance through key metrics. Download New Relic Azure Bing Custom Search monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Bing Custom Search service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Bing Custom Search +documentation: + - name: Azure Bing Custom Search installation docs + description: | + Monitor Azure Custom Search by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/ +keywords: + - azure + - bing search + - bing custom search + - product partnerships +dashboards: + - azure-bing-custom-search +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-bing-custom-search/logo.png b/quickstarts/azure/azure-bing-custom-search/logo.png new file mode 100644 index 0000000000..05a1db3f42 Binary files /dev/null and b/quickstarts/azure/azure-bing-custom-search/logo.png differ diff --git a/quickstarts/azure/azure-bing-search/config.yml b/quickstarts/azure/azure-bing-search/config.yml new file mode 100644 index 0000000000..4c055c21a6 --- /dev/null +++ b/quickstarts/azure/azure-bing-search/config.yml @@ -0,0 +1,41 @@ +id: 86fff965-b8b5-41a0-874c-7bfb713c4e3f +slug: azure-bing-search +description: |- + ## What is Azure Bing Search? + + The Bing Search let you build web-connected apps and services that find webpages, images, news, locations and more without advertisements. + + ### New Relic Azure Bing Search quickstart features + + A standard dashboard that tracks key indicators like successful calls, total calls by api, data in, data out, latency and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Bing Search with New Relic? + + [New Relic Azure Bing Search](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Bing Search via different metrics including successful calls, total calls by api, data in, data out, latency and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Bing Search is critical to track the performance through key metrics. Download New Relic Azure Bing Search monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Bing Search service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Bing Search +documentation: + - name: Azure Bing Search installation docs + description: | + Monitor Azure Bing Search by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/ +keywords: + - azure + - bing + - bing search + - product partnerships +dashboards: + - azure-bing-search +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-bing-search/logo.png b/quickstarts/azure/azure-bing-search/logo.png new file mode 100644 index 0000000000..6b04ff80eb Binary files /dev/null and b/quickstarts/azure/azure-bing-search/logo.png differ diff --git a/quickstarts/azure/azure-bing-spell-check/config.yml b/quickstarts/azure/azure-bing-spell-check/config.yml new file mode 100644 index 0000000000..15e108438f --- /dev/null +++ b/quickstarts/azure/azure-bing-spell-check/config.yml @@ -0,0 +1,41 @@ +id: 1f8eedad-bdf6-44d1-b776-c10a4de9d071 +slug: azure-bing-spell-check +description: |- + ## What is Azure Bing Spell Check? + + The Bing Spell Check enables you to perform contextual grammar and spell checking on text. While most spell-checkers rely on dictionary-based rule sets, the Bing spell-checker leverages machine learning and statistical machine translation to provide accurate and contextual corrections. + + ### New Relic Azure Bing Spell Check quickstart features + + A standard dashboard that tracks key indicators like successful calls, data out, latency and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Bing Spell Check with New Relic? + + [New Relic Azure Bing Spell Check](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Bing Spell Check via different metrics including successful calls, data out, latency and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Bing Spell Check is critical to track the performance through key metrics. Download New Relic Azure Bing Spell Check monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Bing Spell Check service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Bing Spell Check +documentation: + - name: Azure Bing Spell Check installation docs + description: | + Monitor Azure Bing Spell Check by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/ +keywords: + - azure + - bing search + - bing spell check + - product partnerships +dashboards: + - azure-bing-spell-check +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-bing-spell-check/logo.png b/quickstarts/azure/azure-bing-spell-check/logo.png new file mode 100644 index 0000000000..2bab537ce6 Binary files /dev/null and b/quickstarts/azure/azure-bing-spell-check/logo.png differ diff --git a/quickstarts/azure/azure-bing-web-search/config.yml b/quickstarts/azure/azure-bing-web-search/config.yml new file mode 100644 index 0000000000..2469695887 --- /dev/null +++ b/quickstarts/azure/azure-bing-web-search/config.yml @@ -0,0 +1,41 @@ +id: 1c1b42bf-6e69-4467-8375-8ed91dac960f +slug: azure-bing-web-search +description: |- + ## What is Azure Bing Web Search? + + Azure Bing Web Search enables safe, ad-free, location-aware search results, surfacing relevant information from billions of web documents. Help your users find what they're looking for from the world-wide-web by harnessing Bing's ability to comb billions of webpages, images, videos, and news with a single API call. + + ### New Relic Azure Bing Web Search quickstart features + + A standard dashboard that tracks key indicators like successful calls, data out, latency and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Bing Web Search with New Relic? + + [New Relic Azure Bing Web Search](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Bing Web Search via different metrics including successful calls, data out, latency and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Bing Web Search is critical to track the performance through key metrics. Download New Relic Azure Bing Web Search monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Bing Web Search service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Bing Web Search +documentation: + - name: Azure Bing Web Search installation docs + description: | + Monitor Azure Bing Web Search by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-bing-search-monitoring-integration/ +keywords: + - azure + - bing search + - bing web search + - product partnerships +dashboards: + - azure-bing-web-search +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-bing-web-search/logo.png b/quickstarts/azure/azure-bing-web-search/logo.png new file mode 100644 index 0000000000..d547e37dc7 Binary files /dev/null and b/quickstarts/azure/azure-bing-web-search/logo.png differ diff --git a/quickstarts/azure/azure-cdn-profile/config.yml b/quickstarts/azure/azure-cdn-profile/config.yml new file mode 100644 index 0000000000..33a7ced2be --- /dev/null +++ b/quickstarts/azure/azure-cdn-profile/config.yml @@ -0,0 +1,41 @@ +id: 1eddac86-3ee3-42b9-aae3-ceebb4b42401 +slug: azure-cdn-profile +title: Azure CDN profile +description: |- + ## What is Azure CDN profile? + + Azure Content Delivery Network is a globally distributed network of servers that can efficiently deliver web content to consumers. A CDN minimizes latency by storing cached content on edge servers in point-of-presence (POP) locations that are close to end users. + + ### New Relic Azure CDN profile quickstart features + + A standard dashboard that tracks key indicators like total latency, request count, byte hit ratio and response size. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure CDN profile with New Relic? + + [New Relic Azure CDN profile](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cdn-profile-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure CDN profile via different metrics including total latency, request count, byte hit ratio and response size. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure CDN profile is critical to tracking the performance of the content via key metrics. Install the New Relic Azure CDN profile monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure CDN profile service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure CDN profile installation docs + description: | + Monitor Azure CDN profile by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cdn-profile-monitoring-integration/ +keywords: + - azure + - cdn profile + - cdn profiles +dashboards: + - azure-cdn-profile +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-cdn-profile/logo.png b/quickstarts/azure/azure-cdn-profile/logo.png new file mode 100644 index 0000000000..184f0151c8 Binary files /dev/null and b/quickstarts/azure/azure-cdn-profile/logo.png differ diff --git a/quickstarts/azure/azure-cloud-services/config.yml b/quickstarts/azure/azure-cloud-services/config.yml new file mode 100644 index 0000000000..f9038a5aa9 --- /dev/null +++ b/quickstarts/azure/azure-cloud-services/config.yml @@ -0,0 +1,41 @@ +id: 9c966ae6-12e8-4147-9350-5b95efae8e30 +slug: azure-cloud-services +title: Azure Cloud Services +description: |- + ## What is Azure Cloud Services? + + Azure Cloud Services is an example of a platform as a service (PaaS). Like Azure App Service, this technology is designed to support applications that are scalable, reliable and inexpensive to operate. + + ### New Relic Azure Cloud Services quickstart features + + A standard dashboard that tracks key indicators like available memory bytes, disk read bytes, disk write bytes and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Cloud Services with New Relic? + + [New Relic Azure Cloud Services](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cloud-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Cloud Services via different metrics including available memory bytes, disk read bytes, disk write bytes and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Cloud Services is critical to tracking the performance through key metrics. Install the New Relic Azure Cloud Services monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Cloud Services. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Cloud Services installation docs + description: | + Monitor Azure Cloud Services by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cloud-services-monitoring-integration/ +keywords: + - azure + - cloud service + - cloud services + - product partnerships +dashboards: + - azure-cloud-services +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-cloud-services/logo.png b/quickstarts/azure/azure-cloud-services/logo.png new file mode 100644 index 0000000000..f9bffabbda Binary files /dev/null and b/quickstarts/azure/azure-cloud-services/logo.png differ diff --git a/quickstarts/azure/azure-cognitive-search/config.yml b/quickstarts/azure/azure-cognitive-search/config.yml new file mode 100644 index 0000000000..5ae1324ade --- /dev/null +++ b/quickstarts/azure/azure-cognitive-search/config.yml @@ -0,0 +1,41 @@ +id: 535361fa-6fe6-4283-a0fc-d7522bcb3d06 +slug: azure-cognitive-search +title: Azure Cognitive Search +description: |- + ## What is Azure Cognitive Search? + + Azure Cognitive Search (formerly known as "Azure Search") is a cloud search service that gives developers infrastructure, APIs, and tools for building a rich search experience over private, heterogeneous content in web, mobile, and enterprise applications. + + ### New Relic Azure Cognitive Search quickstart features + + A standard dashboard that tracks key indicators like search latency, search queries per second, documents processed count, skill execution count and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Cognitive Search with New Relic? + + [New Relic Azure Cognitive Search](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-search-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Cognitive Search via different metrics including search latency, search queries per second, documents processed count, skill execution count and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Cognitive Search is critical to tracking the performance through key metrics. Install the New Relic Azure Cognitive Search monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Cognitive Search service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Cognitive Search installation docs + description: | + Monitor Azure Cognitive Search by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-search-monitoring-integration/ +keywords: + - azure + - search + - cognitive search + - product partnerships +dashboards: + - azure-cognitive-search +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-cognitive-search/logo.png b/quickstarts/azure/azure-cognitive-search/logo.png new file mode 100644 index 0000000000..599f375baf Binary files /dev/null and b/quickstarts/azure/azure-cognitive-search/logo.png differ diff --git a/quickstarts/azure/azure-cognitive-service/config.yml b/quickstarts/azure/azure-cognitive-service/config.yml new file mode 100644 index 0000000000..b1666d72d1 --- /dev/null +++ b/quickstarts/azure/azure-cognitive-service/config.yml @@ -0,0 +1,41 @@ +id: 96f44c71-4827-4e69-b56a-efb9195f35b3 +slug: azure-cognitive-service +description: |- + ## What is Azure Cognitive Services? + + Azure Cognitive Services are cloud-based artificial intelligence (AI) services that help developers build cognitive intelligence into applications without having direct AI or data science skills or knowledge. + + ### New Relic Azure Cognitive Services quickstart features + + A standard dashboard that tracks key indicators like total calls, successful calls, success rate, latency, ratelimit and total errors. It indicates total calls by api and operations, ratelimit by ratelimitkey and total data by operations. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Cognitive Services with New Relic? + + [New Relic Azure Cognitive Services](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Cognitive Services via different metrics including total calls, successful calls, success rate, latency, ratelimit and total errors. It indicates total calls by api and operations, ratelimit by ratelimitkey and total data by operations. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Cognitive Services is critical to track the performance through key metrics. Download New Relic Azure Cognitive Services monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Cognitive Services. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Cognitive Service +documentation: + - name: Azure Cognitive Service installation docs. + description: | + Monitor Azure Cognitive Services by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive service + - cognitive services + - product partnerships +dashboards: + - azure-cognitive-service +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-cognitive-service/logo.png b/quickstarts/azure/azure-cognitive-service/logo.png new file mode 100644 index 0000000000..baf43911f2 Binary files /dev/null and b/quickstarts/azure/azure-cognitive-service/logo.png differ diff --git a/quickstarts/azure/azure-computer-vision/config.yml b/quickstarts/azure/azure-computer-vision/config.yml new file mode 100644 index 0000000000..9cc7f3c3e8 --- /dev/null +++ b/quickstarts/azure/azure-computer-vision/config.yml @@ -0,0 +1,41 @@ +id: 5583457b-8689-4a7c-892e-8c565312216a +slug: azure-computer-vision +description: |- + ## What is Azure Computer Vision? + + Azure Computer vision applications use input from sensing devices, artificial intelligence, machine learning and deep learning to replicate the way the human vision system works. Computer vision applications run on algorithms that are trained on massive amounts of visual data or images in the cloud. + + ### New Relic Azure Computer Vision quickstart features + + A standard dashboard that tracks key indicators like total calls, total data, computer vision transactions and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Computer Vision with New Relic? + + [New Relic Azure Computer Vision](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Computer Vision via different metrics including total calls, total data, computer vision transactions and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Computer Vision is critical to track the performance through key metrics. Download New Relic Azure Computer Vision monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Computer Vision. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Computer Vision +documentation: + - name: Azure Computer Vision installation docs. + description: | + Monitor Azure Computer Vision by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - computer vision + - product partnerships +dashboards: + - azure-computer-vision +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-computer-vision/logo.png b/quickstarts/azure/azure-computer-vision/logo.png new file mode 100644 index 0000000000..bd59b3799a Binary files /dev/null and b/quickstarts/azure/azure-computer-vision/logo.png differ diff --git a/quickstarts/azure/azure-container-registry/config.yml b/quickstarts/azure/azure-container-registry/config.yml new file mode 100644 index 0000000000..1510264684 --- /dev/null +++ b/quickstarts/azure/azure-container-registry/config.yml @@ -0,0 +1,40 @@ +id: f0d9ae29-607c-40e1-b471-043cd56c8ec0 +slug: azure-container-registry +description: |- + ## What is Azure Container Registry? + + Azure Container Registry is a private registry service for building, storing and managing container images and related artifacts. + + ### New Relic Azure Container Registry quickstart features + + A standard dashboard that tracks key indicators like agent pool CPU time, run duration, storage used, successful pull count, successful push count, total pull count and total push count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Container Registry with New Relic? + + [New Relic Azure Container Registry](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-containers-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Container Registry via different metrics including agent pool CPU time, run duration, storage used, successful pull count, successful push count, total pull count and total push count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Container Registry is critical to track the performance through key metrics. Download New Relic Azure Container Registry monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Container Registry service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Container Registry +documentation: + - name: Azure Container Registry installation docs + description: | + Monitor Azure Container Registry by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-containers-monitoring-integration/ +keywords: + - azure + - container registry + - product partnerships +dashboards: + - azure-container-registry +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-container-registry/logo.png b/quickstarts/azure/azure-container-registry/logo.png new file mode 100644 index 0000000000..b7c0ff4adc Binary files /dev/null and b/quickstarts/azure/azure-container-registry/logo.png differ diff --git a/quickstarts/azure/azure-content-moderator/config.yml b/quickstarts/azure/azure-content-moderator/config.yml new file mode 100644 index 0000000000..5a5cab8c4b --- /dev/null +++ b/quickstarts/azure/azure-content-moderator/config.yml @@ -0,0 +1,41 @@ +id: 64bb7af0-b5d3-4cfd-8a9a-fe98af2f3aff +slug: azure-content-moderator +description: |- + ## What is Azure Content Moderator? + + Azure Content Moderator is an AI service that lets you handle content that is potentially offensive, risky, or otherwise undesirable. It includes the AI-powered content moderation service which scans text, image, and videos and applies content flags automatically. + + ### New Relic Azure Content Moderator quickstart features + + A standard dashboard that tracks key indicators like total calls, total data in, success rate and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Content Moderator with New Relic? + + [New Relic Azure Content Moderator](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Content Moderator via different metrics including total calls, total data in, success rate and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Content Moderator is critical to track the performance through key metrics. Download New Relic Azure Content Moderator monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Content Moderator. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Content Moderator +documentation: + - name: Azure Content Moderator installation docs. + description: | + Monitor Azure Content Moderator by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - content moderator + - product partnerships +dashboards: + - azure-content-moderator +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-content-moderator/logo.png b/quickstarts/azure/azure-content-moderator/logo.png new file mode 100644 index 0000000000..a625e78dcc Binary files /dev/null and b/quickstarts/azure/azure-content-moderator/logo.png differ diff --git a/quickstarts/azure/azure-content-safety/config.yml b/quickstarts/azure/azure-content-safety/config.yml new file mode 100644 index 0000000000..96148f94dd --- /dev/null +++ b/quickstarts/azure/azure-content-safety/config.yml @@ -0,0 +1,41 @@ +id: 5037b361-edec-4516-9b25-2e9ea5ab0bf1 +slug: azure-content-safety +description: |- + ## What is Azure Content Safety? + + Azure AI Content Safety detects harmful user-generated and AI-generated content in applications and services. Content Safety includes text and image APIs that allow you to detect material that is harmful. + + ### New Relic Azure Content Safety quickstart features + + A standard dashboard that tracks key indicators like total calls, data in, success rate, total call count for text moderation and total call count for image moderation. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Content Safety with New Relic? + + [New Relic Azure Content Safety](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Content Safety via different metrics including total calls, data in, success rate, total errors, total call count for text moderation and total call count for image moderation. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Content Safety is critical to track the performance through key metrics. Download New Relic Azure Content Safety monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Content Safety. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Content Safety +documentation: + - name: Azure Content Safety installation docs. + description: | + Monitor Azure Content Safety by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - content safety + - product partnerships +dashboards: + - azure-content-safety +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-content-safety/logo.png b/quickstarts/azure/azure-content-safety/logo.png new file mode 100644 index 0000000000..ba68d40360 Binary files /dev/null and b/quickstarts/azure/azure-content-safety/logo.png differ diff --git a/quickstarts/azure/azure-custom-vision-prediction/config.yml b/quickstarts/azure/azure-custom-vision-prediction/config.yml new file mode 100644 index 0000000000..06e89f56ad --- /dev/null +++ b/quickstarts/azure/azure-custom-vision-prediction/config.yml @@ -0,0 +1,41 @@ +id: fd3f5479-1c35-458c-8b48-ae6fc27e37d5 +slug: azure-custom-vision-prediction +description: |- + ## What is Azure Custom Vision Prediction? + + Azure Custom Vision Prediction is a service offered by Microsoft Azure that allows developers to build and deploy custom image classification and object detection models. It leverages deep learning algorithms to recognize and classify images according to user-defined categories. + + ### New Relic Azure Custom Vision Prediction quickstart features + + A standard dashboard that tracks key indicators like total calls, success rate ,data in, data out and custom vision transactions. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Custom Vision Prediction with New Relic? + + [New Relic Azure Custom Vision Prediction](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Custom Vision Prediction via different metrics including total calls, success rate, data in, data out and custom vision transactions. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Custom Vision Prediction is critical to track the performance through key metrics. Download New Relic Azure Custom Vision Prediction monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Custom Vision Prediction. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Custom Vision Prediction +documentation: + - name: Azure Custom Vision Prediction installation docs. + description: | + Monitor Azure Custom Vision Prediction by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - custom vision prediction + - product partnerships +dashboards: + - azure-custom-vision-prediction +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-custom-vision-prediction/logo.png b/quickstarts/azure/azure-custom-vision-prediction/logo.png new file mode 100644 index 0000000000..86d1a8bc56 Binary files /dev/null and b/quickstarts/azure/azure-custom-vision-prediction/logo.png differ diff --git a/quickstarts/azure/azure-custom-vision-training/config.yml b/quickstarts/azure/azure-custom-vision-training/config.yml new file mode 100644 index 0000000000..fe418b3f51 --- /dev/null +++ b/quickstarts/azure/azure-custom-vision-training/config.yml @@ -0,0 +1,41 @@ +id: 03ae9fcb-3de1-40e4-92f0-1b6415fb3f03 +slug: azure-custom-vision-training +description: |- + ## What is Azure Custom Vision Training? + + Azure Custom Vision Training is an image recognition service that lets you build, deploy, and improve your own image identifier models. An image identifier applies labels to images, according to their visual characteristics. + + ### New Relic Azure Custom Vision Training quickstart features + + A standard dashboard that tracks key indicators like total calls, success rate, images stored and custom vision training time. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Custom Vision Training with New Relic? + + [New Relic Azure Custom Vision Training](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Custom Vision Training via different metrics including total calls, success rate, images stored and custom vision training time. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Custom Vision Training is critical to track the performance through key metrics. Download New Relic Azure Custom Vision Training monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Custom Vision Training. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Custom Vision Training +documentation: + - name: Azure Custom Vision Training installation docs. + description: | + Monitor Azure Custom Vision Training by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - custom vision training + - product partnerships +dashboards: + - azure-custom-vision-training +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-custom-vision-training/logo.png b/quickstarts/azure/azure-custom-vision-training/logo.png new file mode 100644 index 0000000000..86d1a8bc56 Binary files /dev/null and b/quickstarts/azure/azure-custom-vision-training/logo.png differ diff --git a/quickstarts/azure/azure-data-box-edge/config.yml b/quickstarts/azure/azure-data-box-edge/config.yml new file mode 100644 index 0000000000..9285e7df12 --- /dev/null +++ b/quickstarts/azure/azure-data-box-edge/config.yml @@ -0,0 +1,40 @@ +id: c852cbc9-bb73-4e6c-ac36-07e7b35c266d +slug: azure-data-box-edge +title: Azure Data Box Edge +description: |- + ## What is Azure Data Box Edge? + + Azure Data Box Edge is a physical network appliance, shipped by Microsoft, that sends data in and out of Azure. Data Box Edge is additionally equipped with AI-enabled edge computing capabilities that help you analyze, process and transform the on-premises data before uploading it to the cloud. + + ### New Relic Azure Data Box Edge quickstart features + + A standard dashboard that tracks key indicators like total capacity, bytes uploaded to cloud, cloud read throughput, hyperV memory utilization and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Data Box Edge with New Relic? + + [New Relic Azure Data Box Edge](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-box-edge-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Data Box Edge via different metrics including total capacity, bytes uploaded to cloud, cloud read throughput, hyperV memory utilization and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Data Box Edge is critical to tracking the performance through key metrics. Install the New Relic Azure Data Box Edge monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Data Box Edge service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Data Box Edge installation docs + description: | + Monitor Azure Data Box Edge by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-box-edge-monitoring-integration/ +keywords: + - azure + - data box edge + - product partnerships +dashboards: + - azure-data-box-edge +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-data-box-edge/logo.png b/quickstarts/azure/azure-data-box-edge/logo.png new file mode 100644 index 0000000000..3bb3d57c07 Binary files /dev/null and b/quickstarts/azure/azure-data-box-edge/logo.png differ diff --git a/quickstarts/azure/azure-data-explorer/config.yml b/quickstarts/azure/azure-data-explorer/config.yml new file mode 100644 index 0000000000..6e67737c27 --- /dev/null +++ b/quickstarts/azure/azure-data-explorer/config.yml @@ -0,0 +1,40 @@ +id: 3953ee6f-6e6c-42f8-8d17-bcda79c08d15 +slug: azure-data-explorer +title: Azure Data Explorer +description: |- + ## What is Azure Data Explorer? + + Azure Data Explorer is a fast, fully managed data analytics service for real-time analysis on large volumes of data streaming from applications, websites, IoT devices and more. + + ### New Relic Azure Data Explorer quickstart features + + A standard dashboard that tracks key indicators like CPU utilization level, ingestion latency, ingestion result and query duration. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Data Explorer with New Relic? + + [New Relic Azure Data Explorer](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-explorer-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Data Explorer via different metrics including CPU utilization level, ingestion latency, ingestion result and query duration. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Data Explorer toolbox gives you an end-to-end solution for data ingestion, query, visualization and management. Install the New Relic Azure Data Explorer monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Data Explorer service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Data Explorer installation docs + description: | + Monitor Azure Data Explorer by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-explorer-monitoring-integration/ +keywords: + - azure + - data explorer + - product partnerships +dashboards: + - azure-data-explorer +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-data-explorer/logo.png b/quickstarts/azure/azure-data-explorer/logo.png new file mode 100644 index 0000000000..18ccf33a5e Binary files /dev/null and b/quickstarts/azure/azure-data-explorer/logo.png differ diff --git a/quickstarts/azure/azure-data-lake-analytics/config.yml b/quickstarts/azure/azure-data-lake-analytics/config.yml new file mode 100644 index 0000000000..ca17131d6f --- /dev/null +++ b/quickstarts/azure/azure-data-lake-analytics/config.yml @@ -0,0 +1,40 @@ +id: 4ed0aedb-2f24-4189-b28f-8d498d89edbf +slug: azure-data-lake-analytics +title: Azure Data Lake Analytics +description: |- + ## What is Azure Data Lake Analytics? + + Azure Data Lake Analytics is an on-demand analytics job service that simplifies big data. Instead of deploying, configuring, and tuning hardware, you write queries to transform your data and extract valuable insights. The analytics service can handle jobs of any scale instantly by setting the dial for how much power you need. You only pay for your job when it's running, making it cost-effective. + + ### New Relic Azure Data Lake Analytics quickstart features + + A standard dashboard that tracks key indicators like number of jobs stage, AU time for jobs ended in success, failure and cancelled. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Data Lake Analytics with New Relic? + + [New Relic Azure Data Lake Analytics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-lake-analytic-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Data Lake Analytics via different metrics including A standard dashboard that tracks key indicators like number of jobs stage, AU time for jobs ended in success, failure and cancelled. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Data Lake Analytics is critical to tracking the performance through key metrics. Install the New Relic Azure Data Lake Analytics Service monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Data Lake Analytics service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Data Lake Analytics installation docs + description: | + Monitor Azure Data Lake Analytics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-lake-analytic-monitoring-integration/ +keywords: + - azure + - data lake analytics + - product partnerships +dashboards: + - azure-data-lake-analytics +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-data-lake-analytics/logo.png b/quickstarts/azure/azure-data-lake-analytics/logo.png new file mode 100644 index 0000000000..092738e70b Binary files /dev/null and b/quickstarts/azure/azure-data-lake-analytics/logo.png differ diff --git a/quickstarts/azure/azure-data-lake-storage/config.yml b/quickstarts/azure/azure-data-lake-storage/config.yml new file mode 100644 index 0000000000..95f9bf3fe9 --- /dev/null +++ b/quickstarts/azure/azure-data-lake-storage/config.yml @@ -0,0 +1,40 @@ +id: 1e1c1ed6-12b5-46a0-89f0-7231edd0aed5 +slug: azure-data-lake-storage +title: Azure Data Lake Storage +description: |- + ## What is Azure Data Lake Storage? + + Azure Data Lake enables you to capture data of any size, type, and ingestion speed in one single place for operational and exploratory analytics. + + ### New Relic Azure Data Lake Storage quickstart features + + A standard dashboard that tracks key indicators like data read, data written, read requests, total storage and written requests. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Data Lake Storage with New Relic? + + [New Relic Azure Data Lake Storage](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-lake-storage-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Data Lake Storage via different metrics including data read, data written, read requests, total storage and written requests. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Data Lake Storage is critical to tracking the performance through key metrics. Install the New Relic Azure Data Lake Storage monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Data Lake Storage service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Data Lake Storage installation docs + description: | + Monitor Azure Data Lake Storage by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-lake-storage-monitoring-integration/ +keywords: + - azure + - data lake storage + - product partnerships +dashboards: + - azure-data-lake-storage +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-data-lake-storage/logo.png b/quickstarts/azure/azure-data-lake-storage/logo.png new file mode 100644 index 0000000000..d8b0f5798d Binary files /dev/null and b/quickstarts/azure/azure-data-lake-storage/logo.png differ diff --git a/quickstarts/azure/azure-data-share/config.yml b/quickstarts/azure/azure-data-share/config.yml new file mode 100644 index 0000000000..81693691cd --- /dev/null +++ b/quickstarts/azure/azure-data-share/config.yml @@ -0,0 +1,41 @@ +id: f965234e-4904-463b-935b-ff95da841abc +slug: azure-data-share +title: Azure Data Share +description: |- + ## What is Azure Data Share? + + Azure Data Share enables organizations to securely share data with multiple customers and partners. Data providers are always in control of the data that they've shared and Azure Data Share makes it simple to manage and monitor what data was shared, when and by whom. + + ### New Relic Azure Data Share quickstart features + + A standard dashboard that tracks key indicators like share count, failed share subscription synchronizations, share subscription count and succeeded share synchronizations.It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Data Share with New Relic? + + [New Relic Azure Data Share](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-share-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Data Share via different metrics including share count, failed share subscription synchronizations, share subscription count and succeeded share synchronizations. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Using Data Share a data provider can share data and manage their shares all in one place. They can stay in control of how their data is handled by specifying terms of use for their data share. Azure Data Share helps enhance insights by making it easy to combine data from third parties to enrich analytics and AI scenarios. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Data Share installation docs + description: | + Monitor Azure Data Share by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-share-monitoring-integration/ +keywords: + - azure + - data share + - product partnerships +dashboards: + - azure-data-share +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-data-share/logo.png b/quickstarts/azure/azure-data-share/logo.png new file mode 100644 index 0000000000..8d80d69fc8 Binary files /dev/null and b/quickstarts/azure/azure-data-share/logo.png differ diff --git a/quickstarts/azure/azure-datafactories/config.yml b/quickstarts/azure/azure-datafactories/config.yml index e353f946b6..f2c2d8a99b 100644 --- a/quickstarts/azure/azure-datafactories/config.yml +++ b/quickstarts/azure/azure-datafactories/config.yml @@ -21,6 +21,7 @@ icon: logo.svg level: New Relic authors: - New Relic + - Dave Miyamasu title: Azure DataFactories documentation: - name: Azure DataFactories installation docs @@ -29,6 +30,11 @@ documentation: url: https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-data-factory-integration/ keywords: - azure + - etl + - data factory + - pipeline +dashboards: + - azure-datafactories installPlans: - azure-infrastructure-monitoring dataSourceIds: diff --git a/quickstarts/azure/azure-device-provisioning-service/config.yml b/quickstarts/azure/azure-device-provisioning-service/config.yml new file mode 100644 index 0000000000..c3a3fb4c37 --- /dev/null +++ b/quickstarts/azure/azure-device-provisioning-service/config.yml @@ -0,0 +1,40 @@ +id: 10ecef52-8600-42f4-9587-ac8f5054a015 +slug: azure-device-provisioning-service +title: Azure Device Provisioning Service +description: |- + ## What is Azure Device Provisioning Service? + + The IoT Hub Device Provisioning Service (DPS) is a helper service for IoT Hub that enables zero-touch, just-in-time provisioning to the right IoT hub without requiring human intervention, allowing customers to provision millions of devices in a secure and scalable manner. + + ### New Relic Azure Device Provisioning Service quickstart features + + A standard dashboard that tracks key indicators like attestation attempts, device assignments and registration attempts. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Device Provisioning Service with New Relic? + + [New Relic Azure Device Provisioning Service](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-device-provisioning-service-integration/) monitoring quickstart empowers you to track the performance of Azure Device Provisioning Service via different metrics including account attestation attempts, device assignments and registration attempts. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Device Provisioning Service is critical to tracking the performance through key metrics. Install the New Relic Azure Device Provisioning Service monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Device Provisioning Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Device Provisioning Service installation docs + description: | + Monitor Azure Device Provisioning Service by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-device-provisioning-service-integration/ +keywords: + - azure + - device provisioning service + - product partnerships +dashboards: + - azure-device-provisioning-service +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-device-provisioning-service/logo.png b/quickstarts/azure/azure-device-provisioning-service/logo.png new file mode 100644 index 0000000000..957a0862b2 Binary files /dev/null and b/quickstarts/azure/azure-device-provisioning-service/logo.png differ diff --git a/quickstarts/azure/azure-disk-storage/config.yml b/quickstarts/azure/azure-disk-storage/config.yml new file mode 100644 index 0000000000..9d6b7a4794 --- /dev/null +++ b/quickstarts/azure/azure-disk-storage/config.yml @@ -0,0 +1,40 @@ +id: 8a6fd1c3-6022-4533-8c5e-f5f6753372bb +slug: azure-disk-storage +description: |- + ## What is Azure Disk Storage? + + Azure managed disks are block-level storage volumes that are managed by Azure and used with Azure Virtual Machines. + + ### New Relic Azure Disk Storage quickstart features + + A standard dashboard that tracks key indicators like disk read bytes, disk read operations, disk write bytes, disk write operations and disk on-demand burst operations. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Disk Storage with New Relic? + + [New Relic Azure Disk Storage](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-disk-storage-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Disk Storage via different metrics including disk read bytes, disk read operations, disk write bytes, disk write operations and disk on-demand burst operations. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Disk Storage is critical to track the performance through key metrics. Download New Relic Azure Disk Storage monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Disk Storage. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Disk Storage +documentation: + - name: Azure Disk Storage installation docs + description: | + Monitor Azure Disk Storage by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-disk-storage-monitoring-integration/ +keywords: + - azure + - disk storage + - product partnerships +dashboards: + - azure-disk-storage +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-disk-storage/logo.png b/quickstarts/azure/azure-disk-storage/logo.png new file mode 100644 index 0000000000..9569816f7b Binary files /dev/null and b/quickstarts/azure/azure-disk-storage/logo.png differ diff --git a/quickstarts/azure/azure-dns-zones/config.yml b/quickstarts/azure/azure-dns-zones/config.yml new file mode 100644 index 0000000000..ce9de9abcf --- /dev/null +++ b/quickstarts/azure/azure-dns-zones/config.yml @@ -0,0 +1,40 @@ +id: 98803980-ab2e-4018-8103-ff9a9847dfa8 +slug: azure-dns-zones +description: |- + ## What is Azure DNS zones? + + Azure DNS is a hosting service for DNS domains that provides name resolution by using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records by using the same credentials, APIs, tools and billing as your other Azure services. + + ### New Relic Azure DNS Zones quickstart features + + A standard dashboard that tracks key indicators like query volume, record set capacity utilization and record set count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure DNS Zones with New Relic? + + [New Relic Azure DNS Zones](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-dns-zones-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure DNS Zones via different metrics including query volume, record set capacity utilization and record set count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure DNS Zones is critical to track the performance through key metrics. Download New Relic Azure Dns Zones monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure DNS Zones Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure DNS Zones +documentation: + - name: Azure DNS Zones installation docs + description: | + Monitor Azure DNS Zones by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-dns-zones-monitoring-integration/ +keywords: + - azure + - dns zones + - product partnerships +dashboards: + - azure-dns-zones +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-dns-zones/logo.png b/quickstarts/azure/azure-dns-zones/logo.png new file mode 100644 index 0000000000..7182ce07a7 Binary files /dev/null and b/quickstarts/azure/azure-dns-zones/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-domains/config.yml b/quickstarts/azure/azure-event-grid-domains/config.yml new file mode 100644 index 0000000000..ca53accdb6 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-domains/config.yml @@ -0,0 +1,40 @@ +id: b7ada61a-95c7-48af-8260-27734c0d72af +slug: azure-event-grid-domains +description: |- + ## What is Azure Event Grid Domains? + + Event Grid Domains within the Event Grid service is a management capability to manage a large number of events. + + ### New Relic Azure Event Grid Domains quickstart features + + A standard dashboard that tracks key indicators like dead lettered count, delivered events, dropped events and matched events. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Event Grid Domains with New Relic? + + [New Relic Azure Event Grid domains](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-domains-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Event Grid Domains via different metrics including dead lettered count, delivered events, dropped events and matched events. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid Domains is critical to track the performance through key metrics. Download New Relic Azure Event Grid Domains monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Domains Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid Domains +documentation: + - name: Azure Event Grid Domains installation docs + description: | + Monitor Azure Event Grid Domains by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-domains-monitoring-integration/ +keywords: + - azure + - event grid domains + - product partnerships +dashboards: + - azure-event-grid-domains +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-domains/logo.png b/quickstarts/azure/azure-event-grid-domains/logo.png new file mode 100644 index 0000000000..895ceca5ff Binary files /dev/null and b/quickstarts/azure/azure-event-grid-domains/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-partner-namespaces/config.yml b/quickstarts/azure/azure-event-grid-partner-namespaces/config.yml new file mode 100644 index 0000000000..f7dd0f7fc6 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-partner-namespaces/config.yml @@ -0,0 +1,41 @@ +id: 3f899a50-6bb4-4a2a-9238-f1865636172a +slug: azure-event-grid-partner-namespaces +description: |- + ## What is Azure Event Grid Partner Namespaces? + + A partner namespace is a regional resource that has an endpoint to publish events to Azure Event Grid. Partner namespaces contain either channels or event channels (legacy resource). + + ### New Relic Azure Event Grid Partner Namespaces quickstart features + + A standard dashboard that tracks key indicators like publish fail count, publish success count, publish success latency and unmatched event count. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Event Grid Partner Namespaces with New Relic? + + [New Relic Azure Event Grid Partner Namespaces](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-partner-namespaces-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Event Grid Partner Namespaces via different metrics including publish fail count, publish success count, publish success latency and unmatched event count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid Partner Namespaces is critical to track the performance through key metrics. Download New Relic Azure Event Grid Partner Namespaces monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Partner Namespaces. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid Partner Namespaces +documentation: + - name: Azure Event Grid Partner Namespaces installation docs + description: | + Monitor Azure Event Grid Partner Namespaces by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-partner-namespaces-monitoring-integration/ +keywords: + - azure + - event grid + - product partnerships +dashboards: + - azure-event-grid-partner-namespaces +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-partner-namespaces/logo.png b/quickstarts/azure/azure-event-grid-partner-namespaces/logo.png new file mode 100644 index 0000000000..1a0aa000de Binary files /dev/null and b/quickstarts/azure/azure-event-grid-partner-namespaces/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-partner-topics/config.yml b/quickstarts/azure/azure-event-grid-partner-topics/config.yml new file mode 100644 index 0000000000..b7c96d3148 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-partner-topics/config.yml @@ -0,0 +1,40 @@ +id: de0c7325-e684-4e6e-8156-c02651f64104 +slug: azure-event-grid-partner-topics +description: |- + ## What is Azure Event Grid Partner Topics? + + Event Grid's Partner Events allows customers to subscribe to events that originate in a registered system using the same mechanism they would use for any other event source on Azure, such as an Azure service. + + ### New Relic Azure Event Grid Partner Topics quickstart features + + A standard dashboard that tracks key indicators like delivery success count, matched event count, publish success count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Event Grid Partner Topics with New Relic? + + [New Relic Azure Event Grid Partner Topics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-partner-topics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure partner topics via different metrics including delivery success count, matched event count, publish success count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid Partner Topics is critical to track the performance through key metrics. Download New Relic Azure Event Grid Partner Topics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Partner Topics Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid Partner Topics +documentation: + - name: Azure Event Grid Partner Topics installation docs + description: | + Monitor Azure Event Grid Partner Topics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-partner-topics-monitoring-integration/ +keywords: + - azure + - event grid + - product partnerships +dashboards: + - azure-event-grid-partner-topics +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-partner-topics/logo.png b/quickstarts/azure/azure-event-grid-partner-topics/logo.png new file mode 100644 index 0000000000..907343a55e Binary files /dev/null and b/quickstarts/azure/azure-event-grid-partner-topics/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-subscriptions/config.yml b/quickstarts/azure/azure-event-grid-subscriptions/config.yml new file mode 100644 index 0000000000..eecdaad098 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-subscriptions/config.yml @@ -0,0 +1,42 @@ +id: c5ab28e0-e920-4d36-8c29-2fe7d5ce48f1 +slug: azure-event-grid-subscriptions +description: |- + ## What is Azure Event Grid Subscriptions? + + Azure Event Grid Subscriptions tells Event Grid which events on a topic you're interested in receiving. The endpoint or built-in mechanism to route events, sometimes to more than one handler. Subscriptions are also used by handlers to intelligently filter incoming events. + + ### New Relic Azure Event Grid Subscriptions quickstart features + + A standard dashboard that tracks key indicators like delivery failed events, delivered events, dropped events and matched events. It runs custom queries and visualizes the data immediately + + + ### Why monitor Azure Event Grid Subscriptions with New Relic? + + [New Relic Azure Event Grid Subscriptions](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-subscriptions-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure event grid subscriptions via different metrics including delivery failed events, delivered events, dropped events and matched events. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid Subscriptions is critical to track the performance through key metrics. Download New Relic Azure Event Grid Subscriptions monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Subscriptions Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid Subscriptions +documentation: + - name: Azure Event Grid Subscriptions installation docs + description: | + Monitor Azure Event Grid Subscriptions by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-subscriptions-monitoring-integration/ +keywords: + - azure + - event grid + - event grid subscriptions + - product partnerships +dashboards: + - azure-event-grid-subscriptions +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-subscriptions/logo.png b/quickstarts/azure/azure-event-grid-subscriptions/logo.png new file mode 100644 index 0000000000..228b1b8dea Binary files /dev/null and b/quickstarts/azure/azure-event-grid-subscriptions/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-system-topics/config.yml b/quickstarts/azure/azure-event-grid-system-topics/config.yml new file mode 100644 index 0000000000..09d6b322b1 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-system-topics/config.yml @@ -0,0 +1,40 @@ +id: d55a0980-e633-4ae0-9ea2-a6025f270c02 +slug: azure-event-grid-system-topics +description: |- + ## What is Azure Event Grid System Topics? + + A system topic in Event Grid represents one or more events published by Azure services such as Azure storage and Azure event hubs. For example, a system topic may represent all blob events or only blob created and blob deleted events published for a specific storage account. + + ### New Relic Azure Event Grid System Topics quickstart features + + A standard dashboard that tracks key indicators like delivery success count, matched event count, publish success count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Event Grid System Topics with New Relic? + + [New Relic Azure Event Grid System Topics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-system-topics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure system topics via different metrics including delivery success count, matched event count, publish success count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid System Topics is critical to track the performance through key metrics. Download New Relic Azure Event Grid System Topics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid System Topics Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid System Topics +documentation: + - name: Azure Event Grid System Topics installation docs + description: | + Monitor Azure Event Grid System Topics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-system-topics-monitoring-integration/ +keywords: + - azure + - event grid + - product partnerships +dashboards: + - azure-event-grid-system-topics +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-system-topics/logo.png b/quickstarts/azure/azure-event-grid-system-topics/logo.png new file mode 100644 index 0000000000..142ee540a9 Binary files /dev/null and b/quickstarts/azure/azure-event-grid-system-topics/logo.png differ diff --git a/quickstarts/azure/azure-event-grid-topics/config.yml b/quickstarts/azure/azure-event-grid-topics/config.yml new file mode 100644 index 0000000000..1c413c8b49 --- /dev/null +++ b/quickstarts/azure/azure-event-grid-topics/config.yml @@ -0,0 +1,42 @@ +id: 0c301dd2-2eef-458a-9e1f-9d4fd4f9e944 +slug: azure-event-grid-topics +description: |- + ## What is Azure Event Grid Topics? + + Event Grid is a highly scalable, serverless event broker that you can use to integrate applications using events. Event Grid topic provides an endpoint where the source sends events. A topic is used for a collection of related events. To respond to certain types of events, subscribers decide which topics to subscribe to. + + ### New Relic Azure Event Grid Topics quickstart features + + A standard dashboard that tracks key indicators like delivery success count, matched event count, publish success count. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Event Grid Topics with New Relic? + + [New Relic Azure Event Grid Topics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-topics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Batch via different metrics including delivery success count, matched event count, publish success count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Event Grid Topics is critical to track the performance through key metrics. Download New Relic Azure Event Grid Topics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Event Grid Topics Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Event Grid Topics +documentation: + - name: Azure Event Grid Topics installation docs + description: | + Monitor Azure Event Grid Topics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-event-grid-topics-monitoring-integration/ +keywords: + - azure + - event grid + - event grid topics + - product partnerships +dashboards: + - azure-event-grid-topics +dataSourceIDs: + - azure-monitor diff --git a/quickstarts/azure/azure-event-grid-topics/logo.png b/quickstarts/azure/azure-event-grid-topics/logo.png new file mode 100644 index 0000000000..3da3634fa4 Binary files /dev/null and b/quickstarts/azure/azure-event-grid-topics/logo.png differ diff --git a/quickstarts/azure/azure-face-api/config.yml b/quickstarts/azure/azure-face-api/config.yml new file mode 100644 index 0000000000..2bb39fcb0c --- /dev/null +++ b/quickstarts/azure/azure-face-api/config.yml @@ -0,0 +1,41 @@ +id: 028c9f7f-77e7-4470-b7e2-c7512f8a292b +slug: azure-face-api +description: |- + ## What is Azure Face API? + + Azure Face service provides AI algorithms that detect, recognize and analyze human faces in images. Facial recognition software is important in many different scenarios, such as identity verification, touchless access control and face blurring for privacy. + + ### New Relic Azure Face API quickstart features + + A standard dashboard that tracks key indicators like face transactions, total calls, face images trained and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Face API with New Relic? + + [New Relic Azure Face API](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Face API via different metrics including face transactions, total calls, face images trained and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Face API is critical to track the performance through key metrics. Download New Relic Azure Face API monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Face API. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Face API +documentation: + - name: Azure Face API installation docs. + description: | + Monitor Azure Face API by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - face api + - product partnerships +dashboards: + - azure-face-api +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-face-api/logo.png b/quickstarts/azure/azure-face-api/logo.png new file mode 100644 index 0000000000..d94d727f15 Binary files /dev/null and b/quickstarts/azure/azure-face-api/logo.png differ diff --git a/quickstarts/azure/azure-form-recognizer/config.yml b/quickstarts/azure/azure-form-recognizer/config.yml new file mode 100644 index 0000000000..514744eebd --- /dev/null +++ b/quickstarts/azure/azure-form-recognizer/config.yml @@ -0,0 +1,41 @@ +id: d3f5e348-55d8-455a-8afd-53c23d4cc00b +slug: azure-form-recognizer +description: |- + ## What is Azure Form Recognizer? + + Azure Form Recognizer is a cloud-based Azure Applied AI Service that enables you to build intelligent document processing solutions. Massive amounts of data, spanning a wide variety of data types, are stored in forms and documents. + + ### New Relic Azure Form Recognizer quickstart features + + A standard dashboard that tracks key indicators like total calls, successful calls, success rate, Proccessed Pages and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Form Recognizer with New Relic? + + [New Relic Azure Form Recognizer](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Form Recognizer via different metrics including total calls, successful calls, success rate, Proccessed Pages and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Form Recognizer is critical to track the performance through key metrics. Download New Relic Azure Form Recognizer monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Form Recognizer. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Form Recognizer +documentation: + - name: Azure Form Recognizer installation docs. + description: | + Monitor Azure Form Recognizer by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - form recognizer + - product partnerships +dashboards: + - azure-form-recognizer +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-form-recognizer/logo.png b/quickstarts/azure/azure-form-recognizer/logo.png new file mode 100644 index 0000000000..2aed5573b6 Binary files /dev/null and b/quickstarts/azure/azure-form-recognizer/logo.png differ diff --git a/quickstarts/azure/azure-functions-workflow/config.yml b/quickstarts/azure/azure-functions-workflow/config.yml new file mode 100644 index 0000000000..6b5ee062dd --- /dev/null +++ b/quickstarts/azure/azure-functions-workflow/config.yml @@ -0,0 +1,43 @@ +id: 099258cc-d981-40d4-907c-3b2881595735 +slug: azure-functions-workflow +description: |- + ## What is Azure Functions Workflow? + + Azure Functions Workflow refers to Azure Logic Apps under standard plan type. Azure Logic Apps is a cloud platform where you can create and run automated workflows with little to no code. By using the visual designer and selecting from prebuilt operations, you can quickly build a workflow that integrates and manages your apps, data, services and systems. + + ### New Relic Azure Functions Workflow quickstart features + + A standard dashboard that tracks key indicators like app connections, workflow runs, HTTP response time, bytes sent and bytes received. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Functions Workflow with New Relic? + + [New Relic Azure Functions Workflow](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-functions-workflow-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Functions Workflow via different metrics including app connections, workflow runs, HTTP response time, bytes sent and bytes received. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Functions Workflow is critical to track the performance through key metrics. Download New Relic Azure Functions Workflow monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Functions Workflow service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Functions Workflow +documentation: + - name: Azure Functions Workflow installation docs + description: | + Monitor Azure Functions Workflow by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-functions-workflow-monitoring-integration/ +keywords: + - azure + - logic apps + - workflow apps + - functions workflow + - product partnerships +dashboards: + - azure-functions-workflow +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-functions-workflow/logo.png b/quickstarts/azure/azure-functions-workflow/logo.png new file mode 100644 index 0000000000..1bb4e7528c Binary files /dev/null and b/quickstarts/azure/azure-functions-workflow/logo.png differ diff --git a/quickstarts/azure/azure-hdinsight/config.yml b/quickstarts/azure/azure-hdinsight/config.yml new file mode 100644 index 0000000000..0cda18e086 --- /dev/null +++ b/quickstarts/azure/azure-hdinsight/config.yml @@ -0,0 +1,40 @@ +id: 035f4083-0e3c-43f0-aca3-cc4b71730457 +slug: azure-hdinsight +title: Azure HDInsight +description: |- + ## What is Azure HDInsight? + + Azure HDInsight is a managed, full-spectrum, open-source analytics service in the cloud for enterprises. With HDInsight, you can use open-source frameworks such as, Apache Spark, Apache Hive, LLAP, Apache Kafka, Hadoop and more, in your Azure environment. + + ### New Relic Azure HDInsight quickstart features + + A standard dashboard that tracks key indicators like categorized gateway requests, pending memory, pending CPU. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure HDInsight with New Relic? + + [New Relic Azure HDInsight](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-hdinsight-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure HDInsight via different metrics including categorized gateway requests, pending memory and pending CPU. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure HDInsight is critical to tracking the performance through key metrics. Install the New Relic Azure HDInsight monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure HDInsight service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure HDInsight installation docs + description: | + Monitor Azure HDInsight by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-hdinsight-monitoring-integration/ +keywords: + - azure + - hdinsight + - product partnerships +dashboards: + - azure-hdinsight +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-hdinsight/logo.png b/quickstarts/azure/azure-hdinsight/logo.png new file mode 100644 index 0000000000..34c6046436 Binary files /dev/null and b/quickstarts/azure/azure-hdinsight/logo.png differ diff --git a/quickstarts/azure/azure-immersive-reader/config.yml b/quickstarts/azure/azure-immersive-reader/config.yml new file mode 100644 index 0000000000..56793e6e30 --- /dev/null +++ b/quickstarts/azure/azure-immersive-reader/config.yml @@ -0,0 +1,41 @@ +id: 47ef32ba-fd2c-4ff1-9866-0c5847d5c6ca +slug: azure-immersive-reader +description: |- + ## What is Azure Immersive Reader? + + Azure Immersive Reader is part of Azure Applied AI Services and is an inclusively designed tool that implements proven techniques to improve reading comprehension for new readers, language learners and people with learning differences such as dyslexia. + + ### New Relic Azure Immersive Reader quickstart features + + A standard dashboard that tracks key indicators like total calls, successful calls, processed characters and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Immersive Reader with New Relic? + + [New Relic Azure Immersive Reader](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Immersive Reader via different metrics including total calls, successful calls, processed characters and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Immersive Reader is critical to track the performance through key metrics. Download New Relic Azure Immersive Reader monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Immersive Reader. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Immersive Reader +documentation: + - name: Azure Immersive Reader installation docs. + description: | + Monitor Azure Immersive Reader by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - immersive reader + - product partnerships +dashboards: + - azure-immersive-reader +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-immersive-reader/logo.png b/quickstarts/azure/azure-immersive-reader/logo.png new file mode 100644 index 0000000000..66e188b568 Binary files /dev/null and b/quickstarts/azure/azure-immersive-reader/logo.png differ diff --git a/quickstarts/azure/azure-integration-service-environment/config.yml b/quickstarts/azure/azure-integration-service-environment/config.yml new file mode 100644 index 0000000000..1d556dcd34 --- /dev/null +++ b/quickstarts/azure/azure-integration-service-environment/config.yml @@ -0,0 +1,41 @@ +id: 6d356923-129b-4fbd-89cf-3df5fe75fa62 +slug: azure-integration-service-environment +title: Azure Integration Service Environment +description: |- + ## What is Azure Integration Service Environment? + + An integration service environment is a fully isolated and dedicated environment for all enterprise-scale integration needs. When you create a new integration service environment, it's injected into your Azure Virtual Network allowing you to deploy Logic Apps as a service in your VNET. + + ### New Relic Azure Integration Service Environment quickstart features + + A standard dashboard that tracks key indicators like actions completed, action latency, actions failed and connector memory usage. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Integration Service Environment with New Relic? + + [New Relic Azure Integration Service Environment](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-integration-service-environment-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Integration Service Environment via different metrics including actions completed, action latency, actions failed and connector memory usage. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Integration Service Environment is critical to tracking the performance through key metrics. Install the New Relic Azure Integration Service Environment monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Integration Service Environment. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Integration Service Environment installation docs + description: | + Monitor Azure Integration Service Environment by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-integration-service-environment-monitoring-integration/ +keywords: + - azure + - integration service environment + - integration service environments + - product partnerships +dashboards: + - azure-integration-service-environment +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-integration-service-environment/logo.png b/quickstarts/azure/azure-integration-service-environment/logo.png new file mode 100644 index 0000000000..16d8f7cd3f Binary files /dev/null and b/quickstarts/azure/azure-integration-service-environment/logo.png differ diff --git a/quickstarts/azure/azure-iot-central-applications/config.yml b/quickstarts/azure/azure-iot-central-applications/config.yml new file mode 100644 index 0000000000..acf187b0ec --- /dev/null +++ b/quickstarts/azure/azure-iot-central-applications/config.yml @@ -0,0 +1,40 @@ +id: 911a0700-8e41-4bc7-b976-e662268792b5 +slug: azure-iot-central-applications +description: |- + ## What is Azure IoT Central Applications? + + IoT Central is an IoT application platform as a service (aPaaS) that reduces the burden and cost of developing, managing and maintaining IoT solutions. IoT Central streamlines the development of a complex and continually evolving IoT infrastructure by letting you to focus your efforts on determining the business impact you can create with the IoT data stream. + + ### New Relic Azure IoT Central Applications quickstart features + + A standard dashboard that tracks key indicators like c2d commands success, connected device count, data export error and device data usage. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure IoT Central Applications with New Relic? + + [New Relic Azure IoT Central Applications](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-iot-central-application-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure IoT Central Applications via different metrics including c2d commands success, connected device count, data export error and device data usage. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure IoT Central Applications is critical to track the performance through key metrics. Download New Relic Azure IoT Central Applications monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure IoT Central Applications Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure IoT Central Applications +documentation: + - name: Azure IoT Central Applications installation docs + description: | + Monitor Azure IoT Central Applications by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-iot-central-application-monitoring-integration/ +keywords: + - azure + - iot central applications + - product partnerships +dashboards: + - azure-iot-central-applications +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-iot-central-applications/logo.png b/quickstarts/azure/azure-iot-central-applications/logo.png new file mode 100644 index 0000000000..a49ae3614c Binary files /dev/null and b/quickstarts/azure/azure-iot-central-applications/logo.png differ diff --git a/quickstarts/azure/azure-iot-hub/config.yml b/quickstarts/azure/azure-iot-hub/config.yml new file mode 100644 index 0000000000..6dd7a39c6b --- /dev/null +++ b/quickstarts/azure/azure-iot-hub/config.yml @@ -0,0 +1,40 @@ +id: 258b1e34-bc62-4692-b788-e652a884d916 +slug: azure-iot-hub +title: Azure IoT Hub +description: |- + ## What is Azure IoT Hub? + + Azure IoT Hub is a managed service hosted in the cloud that acts as a central message hub for communication between an IoT application and its attached devices. + + ### New Relic Azure IoT Hub quickstart features + + A standard dashboard that tracks key indicators like jobs completed, jobs failed, D2C endpoints latency and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure IoT Hub with New Relic? + + [New Relic Azure Iothub](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-iot-hub-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure IoT Hub via different metrics including jobs completed, jobs failed, D2C endpoints latency and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure IoT Hub is critical to tracking the performance through key metrics. Install the New Relic Azure IoT Hub monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure IoT Hub service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure IoT Hub installation docs + description: | + Monitor Azure IoT Hub by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-iot-hub-monitoring-integration/ +keywords: + - azure + - iot hub + - product partnerships +dashboards: + - azure-iot-hub +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-iot-hub/logo.png b/quickstarts/azure/azure-iot-hub/logo.png new file mode 100644 index 0000000000..f16a356f43 Binary files /dev/null and b/quickstarts/azure/azure-iot-hub/logo.png differ diff --git a/quickstarts/azure/azure-language-service/config.yml b/quickstarts/azure/azure-language-service/config.yml new file mode 100644 index 0000000000..2f6e1b7ecb --- /dev/null +++ b/quickstarts/azure/azure-language-service/config.yml @@ -0,0 +1,41 @@ +id: 20964ca2-a00c-4f70-9d25-59ce5208f845 +slug: azure-language-service +description: |- + ## What is Azure Language Service? + + Azure Cognitive Service for Language is a cloud-based service that provides Natural Language Processing (NLP) features for understanding and analyzing text. Use this service to help build intelligent applications using the web-based Language Studio, REST APIs and client libraries. + + ### New Relic Azure Language Service quickstart features + + A standard dashboard that tracks key indicators like total calls, successful calls, success rate, processed text records, processed health text records and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Language Service with New Relic? + + [New Relic Azure Language Service](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Language Service via different metrics including total calls, successful calls, processed text records, processed health text records and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Language Service is critical to track the performance through key metrics. Download New Relic Azure Language Service monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Language Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Language Service +documentation: + - name: Azure Language Service installation docs. + description: | + Monitor Azure Language Service by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - language + - product partnerships +dashboards: + - azure-language-service +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-language-service/logo.png b/quickstarts/azure/azure-language-service/logo.png new file mode 100644 index 0000000000..1973e90168 Binary files /dev/null and b/quickstarts/azure/azure-language-service/logo.png differ diff --git a/quickstarts/azure/azure-machine-learning/config.yml b/quickstarts/azure/azure-machine-learning/config.yml new file mode 100644 index 0000000000..ec1eff9ebb --- /dev/null +++ b/quickstarts/azure/azure-machine-learning/config.yml @@ -0,0 +1,43 @@ +id: 7b419a4e-f2e7-4e2d-b0fc-130cd8e942c4 +slug: azure-machine-learning +title: Azure Machine Learning Through Azure Monitor Integration +description: |- + ## What is Azure Machine Learning? + + Azure Machine Learning empowers data scientists and developers to build, deploy, and manage high-quality models faster and with confidence. + + ### New Relic Azure Machine Learning quickstart features + + A standard dashboard that tracks key indicators like Job Execution, ActiveCores, CpuUtilization, FinalizingRuns, Model Deployment and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Machine Learning with New Relic? + + [New Relic Azure Machine Learning](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-machine-learning-monitor-integration/) monitoring quickstart empowers you to track the performance of Azure Machine Learning via different metrics including Job Execution, ActiveCores, CpuUtilization, FinalizingRuns, Model Deployment and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitor Azure Machine Learning Through Azure Monitor Integration by connecting Azure to New Relic +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Machine Learning installation docs + description: | + Monitor Azure Machine Learning by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-machine-learning-monitor-integration/ +keywords: + - azure + - azure machine learning + - machine learning + - azure ml +dashboards: + - azure-machine-learning +dataSourceIds: + - azure-monitor +alertPolicies: + - azure-machine-learning \ No newline at end of file diff --git a/quickstarts/azure/azure-machine-learning/logo.png b/quickstarts/azure/azure-machine-learning/logo.png new file mode 100644 index 0000000000..020f948ca9 Binary files /dev/null and b/quickstarts/azure/azure-machine-learning/logo.png differ diff --git a/quickstarts/azure/azure-maps/config.yml b/quickstarts/azure/azure-maps/config.yml new file mode 100644 index 0000000000..d32cbf700c --- /dev/null +++ b/quickstarts/azure/azure-maps/config.yml @@ -0,0 +1,40 @@ +id: 263cc05f-d01d-4313-a4aa-62df965c33f6 +slug: azure-maps +description: |- + ## What is Azure Maps? + + Azure Maps is a collection of geospatial services and SDKs that use fresh mapping data to provide geographic context to web and mobile applications. + + ### New Relic Azure Maps quickstart features + + A standard dashboard that tracks key indicators like availability, creator usage and usage. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Maps with New Relic? + + [New Relic Azure Maps](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-maps-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Maps via different metrics including availability, creator usage and usage. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Azure Maps is a collection of geospatial services and SDKs that use fresh mapping data to provide geographic context to web and mobile applications. +icon: logo.svg +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Maps +documentation: + - name: Azure Maps installation docs + description: | + Monitor Azure Maps by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-maps-monitoring-integration/ +keywords: + - azure + - maps + - product partnerships +dashboards: + - azure-maps +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-maps/logo.svg b/quickstarts/azure/azure-maps/logo.svg new file mode 100644 index 0000000000..cd35afe7a4 --- /dev/null +++ b/quickstarts/azure/azure-maps/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/azure/azure-media-services-live-events/config.yml b/quickstarts/azure/azure-media-services-live-events/config.yml new file mode 100644 index 0000000000..5053055a03 --- /dev/null +++ b/quickstarts/azure/azure-media-services-live-events/config.yml @@ -0,0 +1,41 @@ +id: 50da112b-302d-4c4c-8672-d347aff1c36a +slug: azure-media-services-live-events +description: |- + ## What is Azure Media Services Live Events? + + Azure Media Services Live Events is a service provided by Microsoft Azure that enables live video and audio streaming for various events such as conferences, webinars, concerts and sports events. It allows users to capture, encode, package and deliver live video content to audiences worldwide via the internet. + + ### New Relic Azure Media Services Live Events quickstart features + + A standard dashboard that tracks key indicators like ingest bitrate, ingest drift value, ingest last timestamp and live output last timestamp. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Media Services Live Events with New Relic? + + [New Relic Azure Media Services Live Events](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-live-events-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Media Services Live Events via different metrics including ingest bitrate, ingest drift value, ingest last timestamp and live output last timestamp. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Media Services Live Events is critical to track the performance of the live events via key metrics. Download New Relic Azure Media Services Live Events monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure SignalR Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Media Services Live Events +documentation: + - name: Azure Media Services Live Events installation docs + description: | + Monitor Azure Media Services Live Events by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-live-events-monitoring-integration/ +keywords: + - azure + - media services + - live events + - product partnerships +dashboards: + - azure-media-services-live-events +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-media-services-live-events/logo.png b/quickstarts/azure/azure-media-services-live-events/logo.png new file mode 100644 index 0000000000..338aee6adc Binary files /dev/null and b/quickstarts/azure/azure-media-services-live-events/logo.png differ diff --git a/quickstarts/azure/azure-media-services-streaming-endpoints/config.yml b/quickstarts/azure/azure-media-services-streaming-endpoints/config.yml new file mode 100644 index 0000000000..b163cdbc94 --- /dev/null +++ b/quickstarts/azure/azure-media-services-streaming-endpoints/config.yml @@ -0,0 +1,41 @@ +id: 19935340-6dd8-45ae-b5a8-79432e5c4f3a +slug: azure-media-services-streaming-endpoints +description: |- + ## What is Azure Media Services Streaming Endpoints? + + A Streaming Endpoint represents a dynamic (just-in-time) packaging and origin service that can deliver your live and on-demand content directly to a client player app, using one of the common streaming media protocols (HLS or DASH). + + ### New Relic Azure MediaServices StreamingEndpoints quickstart features + + A standard dashboard that tracks key indicators like CPU usage, egress, egress bandwidth, requests and success E2E latency. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Media Services Streaming Endpoints with New Relic? + + [New Relic Azure Media Services Streaming Endpoints](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-streaming-endpoints-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Media Services Streaming Endpoints via different metrics including CPU usage, egress, egress bandwidth, requests and success E2E latency. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Media Services Streaming Endpoints is critical to track the performance of the streaming endpoints via key metrics. Download New Relic Azure Media Services Streaming Endpoints monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Media Services Streaming Endpoints Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Media Services Streaming Endpoints +documentation: + - name: Azure Media Services Streaming Endpoints installation docs + description: | + Monitor Azure Media Services Streaming Endpoints by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-streaming-endpoints-monitoring-integration/ +keywords: + - azure + - media services streaming endpoints + - product partnerships +dashboards: + - azure-media-services-streaming-endpoints +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-media-services-streaming-endpoints/logo.png b/quickstarts/azure/azure-media-services-streaming-endpoints/logo.png new file mode 100644 index 0000000000..9664106f55 Binary files /dev/null and b/quickstarts/azure/azure-media-services-streaming-endpoints/logo.png differ diff --git a/quickstarts/azure/azure-media-services-video-analyzer/config.yml b/quickstarts/azure/azure-media-services-video-analyzer/config.yml new file mode 100644 index 0000000000..68a9807f98 --- /dev/null +++ b/quickstarts/azure/azure-media-services-video-analyzer/config.yml @@ -0,0 +1,41 @@ +id: 70512fed-b33b-48d6-95ae-60ad9415baa4 +slug: azure-media-services-video-analyzer +description: |- + ## What is Azure Media Services Video Analyzer? + + Azure Video Analyzer for Media Azure Video Analyzer for Media, previously known as Azure Video Indexer, is available under AMS and also as a separate Azure service. + + ### New Relic Azure Media Services Video Analyzer quickstart features + + A standard dashboard that tracks key indicators like ingress bytes and pipelines. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Media Services Video Analyzer with New Relic? + + [New Relic Azure Media Services Video Analyzer](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-video-analyzer-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Media Services Video Analyzer via different metrics including ingress bytes and pipelines. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Media Services Video Analyzer is critical to track the performance of the video analyzer via key metrics. Download New Relic Azure Media Services Video Analyzer monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Media Services Video Analyzer Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Media Services Video Analyzer +documentation: + - name: Azure Media Services Video Analyzer installation docs + description: | + Monitor Azure Media Services Video Analyzer by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-video-analyzer-monitoring-integration/ +keywords: + - azure + - media services video analyzer + - product partnerships +dashboards: + - azure-media-services-video-analyzer +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-media-services-video-analyzer/logo.png b/quickstarts/azure/azure-media-services-video-analyzer/logo.png new file mode 100644 index 0000000000..32b7fb26ba Binary files /dev/null and b/quickstarts/azure/azure-media-services-video-analyzer/logo.png differ diff --git a/quickstarts/azure/azure-media-services/config.yml b/quickstarts/azure/azure-media-services/config.yml new file mode 100644 index 0000000000..6629c0bd32 --- /dev/null +++ b/quickstarts/azure/azure-media-services/config.yml @@ -0,0 +1,40 @@ +id: e90a5553-e84c-409c-aef1-5ac05cc90b80 +slug: azure-media-services +description: |- + ## What is Azure Media Services? + + Azure Media Services is a cloud-based platform that enables you to build solutions that achieve broadcast-quality video streaming, enhance accessibility and distribution, analyze content and much more. + + ### New Relic Azure Media Services quickstart features + + A standard dashboard that tracks key indicators like content key policy count, job quota, max running channels and live events count, streaming policy quota used percentage and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Media Services with New Relic? + + [New Relic Azure Media Services](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Media Services via different metrics including content key policy count, job quota, max running channels and live events count, streaming policy quota used percentage and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Media Services is critical to track the performance of media services via key metrics. Download New Relic Azure Media Services monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Media Services. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Media Services +documentation: + - name: Azure Media Services installation docs + description: | + Monitor Azure Media Services by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-media-services-monitoring-integration/ +keywords: + - azure + - media services + - product partnerships +dashboards: + - azure-media-services +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-media-services/logo.png b/quickstarts/azure/azure-media-services/logo.png new file mode 100644 index 0000000000..9664106f55 Binary files /dev/null and b/quickstarts/azure/azure-media-services/logo.png differ diff --git a/quickstarts/azure/azure-netapp-capacity-pools/config.yml b/quickstarts/azure/azure-netapp-capacity-pools/config.yml new file mode 100644 index 0000000000..5377c1018e --- /dev/null +++ b/quickstarts/azure/azure-netapp-capacity-pools/config.yml @@ -0,0 +1,41 @@ +id: 38dab6c5-98dd-4fbb-aeb8-3d73fc3c2234 +slug: azure-netapp-capacity-pools +title: Azure NetApp Capacity Pools +description: |- + ## What is Azure NetApp Capacity Pools? + + Azure NetApp Capacity Pools are a way to organize and manage storage capacity in Azure NetApp Files. A capacity pool is a logical container for volumes that share the same performance characteristics and service level. You can create multiple capacity pools within a NetApp account. Azure NetApp Capacity Pool is measured by its provisioned capacity. + + ### New Relic Azure NetApp Capacity Pools quickstart features + + A standard dashboard that tracks key indicators like pool allocated size, pool allocated throughput, pool consumed size and Provisioned throughput for the pool. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure NetApp Capacity Pools with New Relic? + + [New Relic Azure NetApp Capacity Pools](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-netapp-capacity-pools-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure NetApp Capacity Pools via different metrics including pool allocated size, pool allocated throughput, pool consumed size and Provisioned throughput for the pool. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure NetApp Capacity Pools is critical to track the performance through key metrics. Download New Relic Azure NetApp Capacity Pools monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure NetApp Capacity Pools service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure NetApp Capacity Pools installation docs + description: | + Monitor Azure NetApp Capacity Pools by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-netapp-capacity-pools-monitoring-integration/ +keywords: + - azure + - netapp capacity pool + - netapp capacity pools + - product partnerships +dashboards: + - azure-netapp-capacity-pools +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-netapp-capacity-pools/logo.png b/quickstarts/azure/azure-netapp-capacity-pools/logo.png new file mode 100644 index 0000000000..6308414cbb Binary files /dev/null and b/quickstarts/azure/azure-netapp-capacity-pools/logo.png differ diff --git a/quickstarts/azure/azure-netapp-files/config.yml b/quickstarts/azure/azure-netapp-files/config.yml new file mode 100644 index 0000000000..ee6c7a22ce --- /dev/null +++ b/quickstarts/azure/azure-netapp-files/config.yml @@ -0,0 +1,41 @@ +id: 118491de-58f3-488c-aacf-bb11960495ec +slug: azure-netapp-files +title: Azure NetApp Files +description: |- + ## What is Azure NetApp Files? + + Azure NetApp Files is an Azure native, first-party, enterprise-class, high-performance file storage service. It provides NAS volumes as a service for which you can create NetApp accounts, capacity pools, select service and performance levels, create volumes and manage data protection. Azure NetApp Files supports SMB and NFS protocols and can be used for various use cases such as file sharing, home directories, databases, high-performance computing and more. + + ### New Relic Azure NetApp Files quickstart features + + A standard dashboard that tracks key indicators like average write latency, total throughput, volume consumed size percentage, xregion replication lag time and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure NetApp Files with New Relic? + + [New Relic Azure NetApp Files](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-netapp-files-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure NetApp Files via different metrics including average write latency, total throughput, volume consumed size percentage, xregion replication lag time and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure NetApp Files is designed to provide high-performance file storage for enterprise workloads, provide high availability for your file storage needs, provides built-in data protection to help ensure the safe storage, availability and recoverability of your data. Download New Relic Azure NetApp Files monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure NetApp Files service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure NetApp Files installation docs + description: | + Monitor Azure NetApp Files by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-netapp-files-monitoring-integration/ +keywords: + - azure + - netapp file + - netapp files + - product partnerships +dashboards: + - azure-netapp-files +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-netapp-files/logo.png b/quickstarts/azure/azure-netapp-files/logo.png new file mode 100644 index 0000000000..674cabf84a Binary files /dev/null and b/quickstarts/azure/azure-netapp-files/logo.png differ diff --git a/quickstarts/azure/azure-network-interface/config.yml b/quickstarts/azure/azure-network-interface/config.yml new file mode 100644 index 0000000000..c9050bcdc4 --- /dev/null +++ b/quickstarts/azure/azure-network-interface/config.yml @@ -0,0 +1,40 @@ +id: 997912ec-fb55-4fb0-8fae-7b717bf3c02d +slug: azure-network-interface +description: |- + ## What is Azure Network Interface? + + A network interface enables an Azure VM to communicate with internet, Azure and on-premises resources. A VM has one or more network interfaces. + + ### New Relic Azure Network Interface quickstart features + + A standard dashboard solely focused on Azure Network Interface and tracks key indicators like bytes received rate, bytes sent rate, packet received rate and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Network Interface with New Relic? + + [New Relic Azure Network Interface](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-network-interface-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Network Interface via different metrics including bytes received rate, bytes sent rate, packet received rate and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Network Interface is critical to track the performance of the networks via key metrics. Download New Relic Azure Network Interface monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Network Interface service. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Azure Network Interface +documentation: + - name: Azure Network Interface installation docs + description: | + Monitor Azure Network Interface by first connecting Azure to New Relic and selecting Azure Networking. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-network-interface-monitoring-integration/ +keywords: + - azure + - networking + - network interface + - product partnerships +dashboards: + - azure-network-interface +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-network-interface/logo.png b/quickstarts/azure/azure-network-interface/logo.png new file mode 100644 index 0000000000..02b7dc8202 Binary files /dev/null and b/quickstarts/azure/azure-network-interface/logo.png differ diff --git a/quickstarts/azure/azure-network-watcher/config.yml b/quickstarts/azure/azure-network-watcher/config.yml new file mode 100644 index 0000000000..643df53493 --- /dev/null +++ b/quickstarts/azure/azure-network-watcher/config.yml @@ -0,0 +1,40 @@ +id: 95d69068-dbba-495f-9312-5e6e42708d5e +slug: azure-network-watcher +description: |- + ## What is Azure Network Watcher? + + Azure Network Watcher provides tools to monitor, diagnose, view metrics and enable or disable logs for resources in an Azure virtual network. + + ### New Relic Azure Network Watcher quickstart features + + A standard dashboard that tracks key indicators like checks failed percent, round trip time, probes failed percent and test result. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Network Watcher with New Relic? + + [New Relic Azure Network Watcher](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-network-watcher-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Network Watcher via different metrics including checks failed percent, round trip time, probes failed percent and test result. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Azure Network Watcher is designed to monitor and repair the network health of IaaS (Infrastructure-as-a-Service) products including virtual machines (VMs), virtual networks (VNets), application gateways, load balancers, etc. Download New Relic Azure Network Watcher monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Network Watcher service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Network Watcher +documentation: + - name: Azure Network Watcher installation docs + description: | + Monitor Azure Network Watcher by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-network-watcher-monitoring-integration/ +keywords: + - azure + - network watcher + - product partnerships +dashboards: + - azure-network-watcher +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-network-watcher/logo.png b/quickstarts/azure/azure-network-watcher/logo.png new file mode 100644 index 0000000000..06f78f970b Binary files /dev/null and b/quickstarts/azure/azure-network-watcher/logo.png differ diff --git a/quickstarts/azure/azure-notification-hubs/config.yml b/quickstarts/azure/azure-notification-hubs/config.yml new file mode 100644 index 0000000000..7972b94313 --- /dev/null +++ b/quickstarts/azure/azure-notification-hubs/config.yml @@ -0,0 +1,41 @@ +id: 7bfdc187-36b5-4f4a-a2fc-76052ed4531c +slug: azure-notification-hubs +title: Azure Notification Hubs +description: |- + ## What is Azure Notification Hubs? + + Azure Notification Hubs provide an easy-to-use and scaled-out push engine that enables you to send notifications to any platform(iOS, Android, Windows, etc.) from any back-end (cloud or on-premises). + + ### New Relic Azure Notification Hubs quickstart features + + A standard dashboard that tracks key indicators like all incoming requests, successful notifications, payload errors, authorization errors and registration operations. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Notification Hubs with New Relic? + + [New Relic Azure Notification Hubs](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-notification-hubs-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Notification Hubs via different metrics including all incoming requests, successful notifications, payload errors, authorization errors and registration operations. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Notification Hubs is critical to track the performance through key metrics. Download New Relic Azure Notification Hubs monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Notification Hubs service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Notification Hubs installation docs + description: | + Monitor Azure Notification Hubs by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-notification-hubs-monitoring-integration/ +keywords: + - azure + - notification hub + - notification hubs + - product partnerships +dashboards: + - azure-notification-hubs +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-notification-hubs/logo.png b/quickstarts/azure/azure-notification-hubs/logo.png new file mode 100644 index 0000000000..4761c0e833 Binary files /dev/null and b/quickstarts/azure/azure-notification-hubs/logo.png differ diff --git a/quickstarts/azure/azure-peering-service/config.yml b/quickstarts/azure/azure-peering-service/config.yml new file mode 100644 index 0000000000..7f0943daf3 --- /dev/null +++ b/quickstarts/azure/azure-peering-service/config.yml @@ -0,0 +1,40 @@ +id: 97f13ea2-f247-47d2-adef-bb9b8cd0f4cd +slug: azure-peering-service +title: Azure Peering Service +description: |- + ## What is Azure Peering Service? + + Azure Peering Service is a networking service that enhances the connectivity to Microsoft cloud services such as Microsoft 365, Dynamics 365, software as a service (SaaS) services, Azure, or any Microsoft services accessible via the public internet. + + ### New Relic Azure Peering Service quickstart features + + A standard dashboard that tracks key indicators like round trip time. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Peering Service with New Relic? + + [New Relic Azure Peering Service](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-peering-service-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Peering Service via round trip time. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Peering Service is critical to tracking the performance through key metrics. Install the New Relic Azure Peering Service monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Peering Service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Peering Service installation docs + description: | + Monitor Azure Peering Service by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-peering-service-monitoring-integration/ +keywords: + - azure + - peering service + - product partnerships +dashboards: + - azure-peering-service +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-peering-service/logo.png b/quickstarts/azure/azure-peering-service/logo.png new file mode 100644 index 0000000000..97de56120b Binary files /dev/null and b/quickstarts/azure/azure-peering-service/logo.png differ diff --git a/quickstarts/azure/azure-peering/config.yml b/quickstarts/azure/azure-peering/config.yml new file mode 100644 index 0000000000..32e1deb5ce --- /dev/null +++ b/quickstarts/azure/azure-peering/config.yml @@ -0,0 +1,41 @@ +id: 88267c0e-1067-4abe-b053-6ee210474e4f +slug: azure-peering +title: Azure Peering +description: |- + ## What is Azure Peering? + + Peering is the interconnection between Microsoft's global network (ASN AS8075) and your network for the purpose of exchanging internet traffic between Microsoft online services and Microsoft Azure Services. Carriers or Service Providers can request to connect at any of Microsoft's edge locations. + + ### New Relic Azure Peering quickstart features + + A standard dashboard that tracks key indicators like egress traffic rate, flap counts, packet drop rate, session availability and more. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Peering with New Relic? + + [New Relic Azure Peering](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-peering-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Peering via different metrics including egress traffic rate, flap counts, packet drop rate, session availability and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Peering is critical to tracking the performance through key metrics. Install the New Relic Azure Peering monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Peering. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Peering installation docs + description: | + Monitor Azure Peering by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-peering-monitoring-integration/ +keywords: + - azure + - peering + - product partnerships +dashboards: + - azure-peering +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-peering/logo.png b/quickstarts/azure/azure-peering/logo.png new file mode 100644 index 0000000000..f6d58d41b6 Binary files /dev/null and b/quickstarts/azure/azure-peering/logo.png differ diff --git a/quickstarts/azure/azure-personalizer/config.yml b/quickstarts/azure/azure-personalizer/config.yml new file mode 100644 index 0000000000..5293ec53c4 --- /dev/null +++ b/quickstarts/azure/azure-personalizer/config.yml @@ -0,0 +1,41 @@ +id: 626ba87e-7915-4223-9d59-ee68f5cc7e0d +slug: azure-personalizer +description: |- + ## What is Azure Personalizer? + + Azure Personalizer is an AI service that your applications make smarter decisions at scale using reinforcement learning. Personalizer processes information about the state of your application, scenario, and/or users (contexts), and a set of possible decisions and related attributes (actions) to determine the best decision to make. Feedback from your application (rewards) is sent to Personalizer to learn how to improve its decision-making ability in near-real time. + + ### New Relic Azure Personalizer quickstart features + + A standard dashboard that tracks key indicators like Actions per event, successful calls, Action featureId occurrences and Action features per event. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Personalizer with New Relic? + + [New Relic Azure Personalizer](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Personalizer via different metrics including Actions per event, successful calls, Action featureId occurrences and Action features per event. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Personalizer is critical to track the performance through key metrics. Download New Relic Azure Personalizer monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Personalizer. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Personalizer +documentation: + - name: Azure Personalizer installation docs. + description: | + Monitor Azure Personalizer by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - personalizer + - product partnerships +dashboards: + - azure-personalizer +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-personalizer/logo.png b/quickstarts/azure/azure-personalizer/logo.png new file mode 100644 index 0000000000..4e525cfd30 Binary files /dev/null and b/quickstarts/azure/azure-personalizer/logo.png differ diff --git a/quickstarts/azure/azure-private-dns-zones/config.yml b/quickstarts/azure/azure-private-dns-zones/config.yml new file mode 100644 index 0000000000..85fba9c102 --- /dev/null +++ b/quickstarts/azure/azure-private-dns-zones/config.yml @@ -0,0 +1,41 @@ +id: cbd1434b-02ae-44a2-a761-862e346776d1 +slug: azure-private-dns-zones +title: Azure Private DNS Zones +description: |- + ## What is Azure Private DNS Zones? + + Azure Private DNS Zones provide a reliable and secure DNS service for your virtual network. It manages and resolves domain names in the virtual network without the need to configure a custom DNS solution. + + ### New Relic Azure Private DNS Zones quickstart features + + A standard dashboard that tracks key indicators like query volume, record set count, virtual network link count and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Private DNS Zones with New Relic? + + [New Relic Azure Private DNS Zones](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-private-dns-zones-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Private DNS Zones via different metrics including query volume, record set capacity utilization, record set count and virtual network link count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Private DNS Zones is critical to track the performance through key metrics. Download New Relic Azure Private DNS Zones monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Private DNS Zones service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Private DNS Zones installation docs + description: | + Monitor Azure Private DNS Zones by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-private-dns-zones-monitoring-integration/ +keywords: + - azure + - private dns zone + - private dns zones + - product partnerships +dashboards: + - azure-private-dns-zones +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-private-dns-zones/logo.png b/quickstarts/azure/azure-private-dns-zones/logo.png new file mode 100644 index 0000000000..eceae32c11 Binary files /dev/null and b/quickstarts/azure/azure-private-dns-zones/logo.png differ diff --git a/quickstarts/azure/azure-public-ip-addresses/config.yml b/quickstarts/azure/azure-public-ip-addresses/config.yml new file mode 100644 index 0000000000..4b63917c7b --- /dev/null +++ b/quickstarts/azure/azure-public-ip-addresses/config.yml @@ -0,0 +1,41 @@ +id: 8877fdff-5304-40a0-b3fd-fd5f6fa41572 +slug: azure-public-ip-addresses +description: |- + ## What is Azure Public IP Addresses? + + Public IP addresses allow Internet resources to communicate inbound to Azure resources. Public IP addresses enable Azure resources to communicate to Internet and public-facing Azure services. + + ### New Relic Azure Public IP Addresses quickstart features + + A standard dashboard that tracks key indicators like DDoS attack, packets by type, bytes by protocol. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Public IP Addresses with New Relic? + + [New Relic Azure Public IP Addresses](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-public-ip-address-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Public IP Addresses via different metrics including DDoS attack, packets by type, bytes by protocol. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Public IP Addresses is critical to track the communication with resources running in Azure over the internet via key metrics. Download New Relic Azure Public IP Addresses monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Public IP Addresses service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Public IP Addresses +documentation: + - name: Azure Public IP Addresses installation docs + description: | + Monitor Azure Public IP Addresses by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-public-ip-address-monitoring-integration/ +keywords: + - azure + - public ip addresses + - ip address + - product partnerships +dashboards: + - azure-public-ip-address +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-public-ip-addresses/logo.png b/quickstarts/azure/azure-public-ip-addresses/logo.png new file mode 100644 index 0000000000..8437f18de0 Binary files /dev/null and b/quickstarts/azure/azure-public-ip-addresses/logo.png differ diff --git a/quickstarts/azure/azure-purview/config.yml b/quickstarts/azure/azure-purview/config.yml new file mode 100644 index 0000000000..63e16b285d --- /dev/null +++ b/quickstarts/azure/azure-purview/config.yml @@ -0,0 +1,42 @@ +id: 5337f5a2-5359-4547-837f-60c0759decf8 +slug: azure-purview +title: Microsoft Purview +description: |- + ## What is Microsoft Purview? + + Microsoft Purview provides a unified data governance solution to help manage and govern your on-premises, multicloud, and software as a service (SaaS) data. Easily create a holistic, up-to-date map of your data landscape with automated data discovery, sensitive data classification, and end-to-end data lineage. Enable data consumers to access valuable, trustworthy data management. + + ### New Relic Microsoft Purview quickstart features + + A standard dashboard that tracks key indicators like scan cancelled count, scan completed count, scan failed count, data map capacity units count. It runs custom queries and visualizes the data immediately. + + ### Why monitor Microsoft Purview with New Relic? + + [New Relic Microsoft Purview](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-purview-monitoring-integration/) monitoring quickstart empowers you to track the performance of Microsoft Purview via different metrics including scan failed count, scan cancelled count, scan completed count, data map capacity units count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Microsoft Purview is critical to tracking the performance through key metrics. Install the New Relic Microsoft Purview monitoring quickstart to get a pre-built dashboard tailored to monitor your Microsoft Purview service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Microsoft Purview installation docs + description: | + Monitor Microsoft Purview by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-purview-monitoring-integration/ +keywords: + - azure + - purview + - azure purview + - microsoft purview + - product partnerships +dashboards: + - azure-purview +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-purview/logo.png b/quickstarts/azure/azure-purview/logo.png new file mode 100644 index 0000000000..f7eaad50e4 Binary files /dev/null and b/quickstarts/azure/azure-purview/logo.png differ diff --git a/quickstarts/azure/azure-question-answering/config.yml b/quickstarts/azure/azure-question-answering/config.yml new file mode 100644 index 0000000000..89e81558f5 --- /dev/null +++ b/quickstarts/azure/azure-question-answering/config.yml @@ -0,0 +1,41 @@ +id: 9dabdaa2-c5bf-42a2-bf3c-fdf82b6f08b7 +slug: azure-question-answering +description: |- + ## What is Azure Question answering? + + Question answering provides cloud-based Natural Language Processing (NLP) that allows you to create a natural conversational layer over your data. It is used to find appropriate answers from customer input or from a project. + + ### New Relic Azure Question answering quickstart features + + A standard dashboard that tracks key indicators like total calls, question answering text records, success rate and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Question answering with New Relic? + + [New Relic Azure Question answering](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Question answering via different metrics including total calls, question answering text records, success rate and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Question answering is critical to track the performance through key metrics. Download New Relic Azure Question answering monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Question answering. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Question answering +documentation: + - name: Azure Question answering installation docs. + description: | + Monitor Azure Question answering by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - Question answering + - product partnerships +dashboards: + - azure-question-answering +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-question-answering/logo.png b/quickstarts/azure/azure-question-answering/logo.png new file mode 100644 index 0000000000..287fae7ee4 Binary files /dev/null and b/quickstarts/azure/azure-question-answering/logo.png differ diff --git a/quickstarts/azure/azure-relay/config.yml b/quickstarts/azure/azure-relay/config.yml new file mode 100644 index 0000000000..1588748c5b --- /dev/null +++ b/quickstarts/azure/azure-relay/config.yml @@ -0,0 +1,41 @@ +id: c1211981-229a-4f96-ac32-53e4e8a945bc +slug: azure-relay +description: |- + ## What is Azure Relay? + + Azure Relay service securely exposes services that run in corporate network to the public cloud. Services can be exposed without opening a port on corporate firewall, or making intrusive changes to corporate network infrastructure. + + ### New Relic Azure Relay quickstart features + + A standard dashboard that tracks key indicators like active connections, active listeners, bytes transferred, success, server error and client error. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Relay with New Relic? + + [New Relic Azure Relay](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-relay-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Relay via different metrics including active connections, active listeners, bytes transferred, success, server error and client error. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Relay is critical to track the performance through key metrics. Download New Relic Azure Relay monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Relay service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Relay +documentation: + - name: Azure Relay installation docs + description: | + Monitor Azure Relay by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-relay-monitoring-integration/ +keywords: + - azure + - relay + - product partnerships +dashboards: + - azure-relay +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-relay/logo.png b/quickstarts/azure/azure-relay/logo.png new file mode 100644 index 0000000000..7dbcd8c14d Binary files /dev/null and b/quickstarts/azure/azure-relay/logo.png differ diff --git a/quickstarts/azure/azure-signalr/config.yml b/quickstarts/azure/azure-signalr/config.yml new file mode 100644 index 0000000000..bbbd1f39f1 --- /dev/null +++ b/quickstarts/azure/azure-signalr/config.yml @@ -0,0 +1,41 @@ +id: a422b946-443f-4071-8d61-d250a13b3be7 +slug: azure-signalr +description: |- + ## What is Azure SignalR? + + Azure SignalR Service simplifies the process of adding real-time web functionality to applications over HTTP. This real-time functionality allows the service to push content updates to connected clients, such as a single page web or mobile application. + + ### New Relic Azure SignalR quickstart features + + A standard dashboard that tracks key indicators like connection quota utilization, inbound traffic, user errors and message count. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure SignalR with New Relic? + + [New Relic Azure SignalR](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-signalr-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure SignalR via different metrics including connection quota utilization, inbound traffic, user errors and message count. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure SignalR is critical to track the performance through key metrics. Download New Relic Azure SignalR monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure SignalR service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure SignalR +documentation: + - name: Azure SignalR installation docs + description: | + Monitor Azure SignalR by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-signalr-monitoring-integration/ +keywords: + - azure + - signalr + - product partnerships +dashboards: + - azure-signalr +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-signalr/logo.png b/quickstarts/azure/azure-signalr/logo.png new file mode 100644 index 0000000000..a0defe0ab7 Binary files /dev/null and b/quickstarts/azure/azure-signalr/logo.png differ diff --git a/quickstarts/azure/azure-speech/config.yml b/quickstarts/azure/azure-speech/config.yml new file mode 100644 index 0000000000..633c9382d6 --- /dev/null +++ b/quickstarts/azure/azure-speech/config.yml @@ -0,0 +1,41 @@ +id: 113d1823-ecd1-4db9-ae24-9758e5c3e75b +slug: azure-speech +description: |- + ## What is Azure Speech? + + The Speech service provides speech to text and text to speech capabilities with an Azure Speech resource. You can transcribe speech to text with high accuracy, produce natural sounding text to speech voices, translate spoken audio, and use speaker recognition during conversations. + + ### New Relic Azure Speech quickstart features + + A standard dashboard that tracks key indicators like audio seconds translated, synthesized characters, speaker profiles, total calls, successful calls, success rate and total errors. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Speech with New Relic? + + [New Relic Speech](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Speech via different metrics including audio seconds translated, synthesized characters, speaker profiles, total calls, successful calls, success rate and total errors. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Speech is critical to track the performance through key metrics. Download New Relic Azure Speech monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Speech. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Speech +documentation: + - name: Azure Speech installation docs. + description: | + Monitor Azure Speech by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - Speech + - product partnerships +dashboards: + - azure-speech +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-speech/logo.png b/quickstarts/azure/azure-speech/logo.png new file mode 100644 index 0000000000..8e501a1fe6 Binary files /dev/null and b/quickstarts/azure/azure-speech/logo.png differ diff --git a/quickstarts/azure/azure-spring-apps/config.yml b/quickstarts/azure/azure-spring-apps/config.yml new file mode 100644 index 0000000000..42d6493132 --- /dev/null +++ b/quickstarts/azure/azure-spring-apps/config.yml @@ -0,0 +1,41 @@ +id: 9402af65-890c-49d7-aa00-d450d80b1505 +slug: azure-spring-apps +title: Azure Spring Apps +description: |- + ## What is Azure Spring Apps? + + Spring Cloud Azure is an open source project that helps make it easier to use Azure services in Spring applications. + + ### New Relic Azure Spring Apps quickstart features + + A standard dashboard that tracks key indicators like memory usage, CPU usage, global request total count and global request average time. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Spring Apps with New Relic? + + [New Relic Azure Spring Apps](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-spring-apps-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Spring Apps via different metrics including memory usage, CPU usage, global request total count and global request average time. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Spring Apps is critical to track the performance through key metrics. Download New Relic Azure Spring Apps monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Spring Apps service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Spring Apps installation docs + description: | + Monitor Azure Spring Apps by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-spring-apps-monitoring-integration/ +keywords: + - azure + - spring app + - spring apps + - product partnerships +dashboards: + - azure-spring-apps +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-spring-apps/logo.png b/quickstarts/azure/azure-spring-apps/logo.png new file mode 100644 index 0000000000..d75c489aa3 Binary files /dev/null and b/quickstarts/azure/azure-spring-apps/logo.png differ diff --git a/quickstarts/azure/azure-sql-elastic-pools/config.yml b/quickstarts/azure/azure-sql-elastic-pools/config.yml new file mode 100644 index 0000000000..8d063c2e52 --- /dev/null +++ b/quickstarts/azure/azure-sql-elastic-pools/config.yml @@ -0,0 +1,41 @@ +id: 621022e3-cbc9-40d1-a89a-3cf076e5a98a +slug: azure-sql-elastic-pools +description: |- + ## What is Azure SQL Elastic pools? + + Azure SQL Elastic pools are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. The databases in an elastic pool are on a single server and share a set number of resources at a set price. Elastic pools in SQL Database enable software as a service (SaaS) developers to optimize the price performance for a group of databases within a prescribed budget while delivering performance elasticity for each database. + + ### New Relic Azure SQL Elastic pools quickstart features + + A standard dashboard that tracks key indicators like CPU used, workers usage, physical data read percent, sessions count and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure SQL Elastic pools with New Relic? + + [New Relic Azure SQL Elastic pools](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-sql-database-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure SQL Elastic pools via different metrics including CPU used, workers usage, physical data read percent and sessions count and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure SQL Elastic pools is to track the price performance for a group of databases via key metrics. Download New Relic Azure SQL Elastic pools monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure SQL Elastic pools service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure SQL Elastic pools +documentation: + - name: Azure SQL Elastic pools installation docs + description: | + Monitor Azure SQL Elastic pools by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-sql-database-monitoring-integration/ +keywords: + - azure + - sql elastic pool + - sql elastic pools + - product partnerships +dashboards: + - azure-sql-elastic-pool +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-sql-elastic-pools/logo.png b/quickstarts/azure/azure-sql-elastic-pools/logo.png new file mode 100644 index 0000000000..e0a2c04ca3 Binary files /dev/null and b/quickstarts/azure/azure-sql-elastic-pools/logo.png differ diff --git a/quickstarts/azure/azure-storage-sync/config.yml b/quickstarts/azure/azure-storage-sync/config.yml new file mode 100644 index 0000000000..18ddf6fc75 --- /dev/null +++ b/quickstarts/azure/azure-storage-sync/config.yml @@ -0,0 +1,35 @@ +id: 73e3df54-2252-4f95-9e67-450d93b91953 +slug: azure-storage-sync +description: |- + ## What is Azure Storage Sync? + + Azure Storage Sync enables centralizing your organization's file shares in Azure Files, while keeping the flexibility, performance and compatibility of a Windows file server. + + ### Why monitor Azure Storage Sync with New Relic? + + [New Relic Azure Storage Sync](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-storage-sync-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Storage Sync via different metrics including files synced, sync session result, bytes synced, server online status and files not syncing. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Storage Sync is critical to track the performance through key metrics. Download New Relic Azure Storage Sync monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Storage Sync service. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Azure Storage Sync +documentation: + - name: Azure Storage Sync installation docs + description: | + Monitor Azure Storage Sync by first connecting Azure to New Relic and selecting Azure Storage Sync. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-storage-sync-monitoring-integration/ +keywords: + - azure + - storage sync + - product partnerships +dashboards: + - azure-storage-sync +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-storage-sync/logo.png b/quickstarts/azure/azure-storage-sync/logo.png new file mode 100644 index 0000000000..589402c5f8 Binary files /dev/null and b/quickstarts/azure/azure-storage-sync/logo.png differ diff --git a/quickstarts/azure/azure-stream-analytics/config.yml b/quickstarts/azure/azure-stream-analytics/config.yml new file mode 100644 index 0000000000..41142267ba --- /dev/null +++ b/quickstarts/azure/azure-stream-analytics/config.yml @@ -0,0 +1,40 @@ +id: eae1779f-9d4c-4996-ac13-a6c7d7f73d15 +slug: azure-stream-analytics +title: Azure Stream Analytics +description: |- + ## What is Azure Stream Analytics? + + Azure Stream Analytics is a fully managed stream processing engine that is designed to analyze and process large volumes of streaming data with sub-millisecond latencies. Patterns and relationships can be identified in data that originates from a variety of input sources including applications, devices, sensors, clickstreams, and social media feeds. + + ### New Relic Azure Stream Analytics quickstart features + + A standard dashboard that tracks key indicators like failed requests, deserialization errors, late input events, resource utilization and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Stream Analytics with New Relic? + + [New Relic Azure Stream Analytics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-stream-analytics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Stream Analytics via different metrics including failed requests, deserialization errors, late input events, resource utilization and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Stream Analytics is critical to tracking the performance through key metrics. Install the New Relic Azure Stream Analytics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Stream Analytics service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Stream Analytics installation docs + description: | + Monitor Azure Stream Analytics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-stream-analytics-monitoring-integration/ +keywords: + - azure + - stream Analytics + - product partnerships +dashboards: + - azure-stream-analytics +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-stream-analytics/logo.png b/quickstarts/azure/azure-stream-analytics/logo.png new file mode 100644 index 0000000000..750d0deb1d Binary files /dev/null and b/quickstarts/azure/azure-stream-analytics/logo.png differ diff --git a/quickstarts/azure/azure-synapse-analytics/config.yml b/quickstarts/azure/azure-synapse-analytics/config.yml new file mode 100644 index 0000000000..b284e4eb93 --- /dev/null +++ b/quickstarts/azure/azure-synapse-analytics/config.yml @@ -0,0 +1,40 @@ +id: 05729ec9-a69b-4ffa-91ee-3a34c1a2b10c +slug: azure-synapse-analytics +title: Azure Synapse Analytics +description: |- + ## What is Azure Synapse Analytics? + + Azure Synapse Analytics is an enterprise analytics service that accelerates time to insight across data warehouses and big data systems. + + ### New Relic Azure Synapse Analytics quickstart features + + A standard dashboard that tracks key indicators like builtin sql pool data processed bytes, total sql streaming conversion errors, integration link processing latency in seconds, sql streaming resource utilization and more. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Synapse Analytics with New Relic? + + [New Relic Azure Synapse Analytics](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-synapse-analytics-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Synapse Analytics via different metrics including account builtin sql pool data processed bytes, total sql streaming conversion errors, integration link processing latency in seconds, sql streaming resource utilization and more. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Synapse Analytics is critical to tracking the performance through key metrics. Install the New Relic Azure Synapse Analytics monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Synapse Analytics service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Synapse Analytics installation docs. + description: | + Monitor Azure Synapse Analytics by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-synapse-analytics-monitoring-integration/ +keywords: + - azure + - synapse analytics + - product partnerships +dashboards: + - azure-synapse-analytics +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-synapse-analytics/logo.png b/quickstarts/azure/azure-synapse-analytics/logo.png new file mode 100644 index 0000000000..6814266ea3 Binary files /dev/null and b/quickstarts/azure/azure-synapse-analytics/logo.png differ diff --git a/quickstarts/azure/azure-time-series-insights/config.yml b/quickstarts/azure/azure-time-series-insights/config.yml new file mode 100644 index 0000000000..d989d54fa7 --- /dev/null +++ b/quickstarts/azure/azure-time-series-insights/config.yml @@ -0,0 +1,41 @@ +id: 65fd54e5-d724-4834-878b-8e0ea9c9cd8a +slug: azure-time-series-insights +title: Azure Time Series Insights +description: |- + ## What is Azure Time Series Insights? + + Azure Time Series Insights are the containers that hold the data ingested by the service. Each environment has a unique set of Time Series Insight features, such as retention policies, data access policies and query APIs. + + ### New Relic Azure Time Series Insights quickstart features + + A standard dashboard that tracks key indicators like ingress storage, ingress received bytes, ingress received messages and warm storage used properties. It runs custom queries and visualizes the data immediately. + + ### Why monitor Time Series Insights with New Relic? + + [New Relic Azure Time Series Insights](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-time-series-insights-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Time Series Insights via different metrics including ingress storage, ingress received bytes, ingress received messages and warm storage used properties. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insight. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Time Series Insights Cloud is a fully visualization service that makes it easy to explore and analyze via key metrics. Install the New Relic Azure Time Series Insight monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Time Series Insights service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Time Series insights installation docs + description: | + Monitor Azure Time Series Insights by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-time-series-insights-monitoring-integration/ +keywords: + - azure + - time series insight + - time series insights + - product partnerships +dashboards: + - azure-time-series-insights +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-time-series-insights/logo.png b/quickstarts/azure/azure-time-series-insights/logo.png new file mode 100644 index 0000000000..b1a066d4d9 Binary files /dev/null and b/quickstarts/azure/azure-time-series-insights/logo.png differ diff --git a/quickstarts/azure/azure-traffic-manager/config.yml b/quickstarts/azure/azure-traffic-manager/config.yml new file mode 100644 index 0000000000..4f4e3f1304 --- /dev/null +++ b/quickstarts/azure/azure-traffic-manager/config.yml @@ -0,0 +1,40 @@ +id: 867d591f-5401-4f59-9901-b206747fcc9b +slug: azure-traffic-manager +description: |- + ## What is Azure Traffic Manager? + + Azure Traffic Manager is a DNS-based traffic load balancer. This service allows you to distribute traffic to your public facing applications across the global Azure regions. Traffic Manager also provides your public endpoints with high availability and quick responsiveness. + + ### New Relic Azure Traffic Manager quickstart features + + A standard dashboard that tracks key indicators like probe agent current endpoint state by profile resourceId and Qps by endpoint. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Traffic Manager with New Relic? + + [New Relic Azure Traffic Manager](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-traffic-manager-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Traffic Manager via different metrics including probe agent current endpoint state by profile resourceId and Qps by endpoint. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Traffic Manager is critical to track the performance through key metrics. Download New Relic Azure Traffic Manager monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Traffic Manager service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Traffic Manager +documentation: + - name: Azure Traffic Manager installation docs + description: | + Monitor Azure Traffic Manager by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-traffic-manager-monitoring-integration/ +keywords: + - azure + - traffic manager + - product partnerships +dashboards: + - azure-traffic-manager +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-traffic-manager/logo.png b/quickstarts/azure/azure-traffic-manager/logo.png new file mode 100644 index 0000000000..d7f1e4daa9 Binary files /dev/null and b/quickstarts/azure/azure-traffic-manager/logo.png differ diff --git a/quickstarts/azure/azure-translator/config.yml b/quickstarts/azure/azure-translator/config.yml new file mode 100644 index 0000000000..a53f71abd4 --- /dev/null +++ b/quickstarts/azure/azure-translator/config.yml @@ -0,0 +1,41 @@ +id: 5a0108de-2235-4d26-a6d6-a61e99cb1adf +slug: azure-translator +description: |- + ## What is Azure Translator? + + Azure Translator is a cloud-based machine translation service you can use to translate text and documents with a simple REST API call. + + ### New Relic Azure Translator quickstart features + + A standard dashboard that tracks key indicators like total calls, total errors, Text trained characters, Successful calls and sucess rate. It runs custom queries and visualizes the data immediately. + + ### Why monitor Azure Translator with New Relic? + + [New Relic Azure Translator](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Translator via different metrics including total calls, total errors, Text trained characters, Successful calls and sucess rate. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Translator is critical to track the performance through key metrics. Download New Relic Azure Translator monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Translator. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +title: Azure Translator +documentation: + - name: Azure Translator installation docs. + description: | + Monitor Azure Translator by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-cognitive-services-monitoring-integration/ +keywords: + - azure + - cognitive services + - translator + - product partnerships +dashboards: + - azure-translator +dataSourceIds: + - azure-monitor \ No newline at end of file diff --git a/quickstarts/azure/azure-translator/logo.png b/quickstarts/azure/azure-translator/logo.png new file mode 100644 index 0000000000..cc06b080dc Binary files /dev/null and b/quickstarts/azure/azure-translator/logo.png differ diff --git a/quickstarts/azure/azure-vms/config.yml b/quickstarts/azure/azure-vms/config.yml index 4277897575..81a138ad10 100644 --- a/quickstarts/azure/azure-vms/config.yml +++ b/quickstarts/azure/azure-vms/config.yml @@ -33,3 +33,5 @@ installPlans: - azure-infrastructure-monitoring dataSourceIds: - microsoft-azure +dashboards: + - azure-virtual-machines diff --git a/quickstarts/azure/azure-web-apps/config.yml b/quickstarts/azure/azure-web-apps/config.yml new file mode 100644 index 0000000000..0aefa1ed7c --- /dev/null +++ b/quickstarts/azure/azure-web-apps/config.yml @@ -0,0 +1,42 @@ +id: 3f712d95-7823-4ce1-9bae-a3d82b615136 +slug: azure-web-apps +title: Azure Web Apps +description: |- + ## What is Azure Web Apps? + + Azure Web Apps is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favorite language, be it .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python. Applications run and scale with ease on both Windows and Linux-based environments. + + ### New Relic Azure Web Apps quickstart features + + A standard dashboard that tracks key indicators like app connections, HTTP response time, bytes sent and bytes received. It runs custom queries and visualizes the data immediately. + + + ### Why monitor Azure Web Apps with New Relic? + + [New Relic Azure Web Apps](https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-web-apps-monitoring-integration/) monitoring quickstart empowers you to track the performance of Azure Web Apps via different metrics including app connections, HTTP response time, bytes sent and bytes received. + + Our integration features a standard dashboard that provides interactive visualizations to explore your data, understand context, and get valuable insights. + + Start ingesting your Azure data today and get immediate access to our visualization dashboards so you can optimize your Azure service. +summary: |- + Monitoring Azure Web Apps is critical to track the performance of the application through key metrics. Download New Relic Azure Web Apps monitoring quickstart to get a pre-built dashboard tailored to monitor your Azure Web Apps service. +icon: logo.png +level: New Relic +authors: + - New Relic + - New Relic Partner +documentation: + - name: Azure Web Apps installation docs + description: | + Monitor Azure Web Apps by connecting Azure to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-web-apps-monitoring-integration/ +keywords: + - azure + - web app + - web apps + - product partnerships +dashboards: + - azure-web-apps +dataSourceIds: + - azure-monitor diff --git a/quickstarts/azure/azure-web-apps/logo.png b/quickstarts/azure/azure-web-apps/logo.png new file mode 100644 index 0000000000..4c7913454b Binary files /dev/null and b/quickstarts/azure/azure-web-apps/logo.png differ diff --git a/quickstarts/battlesnake/config.yml b/quickstarts/battlesnake/config.yml index 77a936ad61..087f8cb7de 100644 --- a/quickstarts/battlesnake/config.yml +++ b/quickstarts/battlesnake/config.yml @@ -34,3 +34,4 @@ dashboards: - battlesnake-game-tracking - battlesnake-performance - battlesnake-server-status + diff --git a/quickstarts/blazemeter/config.yml b/quickstarts/blazemeter/config.yml new file mode 100644 index 0000000000..8a7f407430 --- /dev/null +++ b/quickstarts/blazemeter/config.yml @@ -0,0 +1,71 @@ +id: 0f6e2b85-ea73-4780-84eb-34e1e3675b33 +# Sets the URL name of the quickstart on public I/O (required) +slug: blazemeter + +# Displayed in the UI (required) +title: BlazeMeter + +# Long-form description of the quickstart (required) +description: | + ## Quickstart for BlazeMeter API Test Monitoring + The BlazeMeter Continuous Testing Platform is a unified, end-to-end, next-generation software test automation platform built for both Agile and COE teams. + By connecting New Relic with BlazeMeter API Monitoring, you can collect metrics from your API tests and transform them into actionable insights about your applications in New Relic + + This quickstart allows users to monitor BlazeMeter API tests inside New Relic and observe test results in the context of instrumented applications. + The BlazeMeter quickstart includes: + ## a dashboard + where users can easily monitor: + - Test Result Counts for Past Week + - Assertion Pass/Fail Counts by Day for Past Week + - Response Times Histogram Over Past Week + - Average/90th/95th/99th Percentile Response Times Over Past Day + - Response Status Codes for Past Day + - Test Run Summary + ## alert conditions + where users are notified on: + - Test Error Rate + - 90th Percentile Latency + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + This quickstart allows users to monitor BlazeMeter tests inside New Relic and observe API test results in the context of instrumented applications. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Munwar Mohammed + +# Keywords for filtering / searching criteria in the UI +keywords: + - blazemeter + - api + - performance + - load + - stress + - functional + - testing web application + +# Reference to dashboards to be included in this quickstart +dashboards: + - blazemeter + +alertPolicies: + - blazemeter + +dataSourceIds: + - blazemeter + +# Documentation references +documentation: + - name: BlazeMeter New Relic Integration + url: https://guide.blazemeter.com/hc/en-us/articles/13326704491153-New-Relic-Insights-Integration + description: Information on how to connect New Relic with BlazeMeter API Monitoring and send metrics from API tests to New Relic + - name: Learn more about the BlazeMeter Continuous Testing Platform + url: https://www.blazemeter.com/ + description: Information on how BlazeMeter can be utilized to shift testing left or right with enterprise-level GUI performance testing, API functional testing, API monitoring, and reporting + +# Content / Design +icon: logo.png +website: https://www.blazemeter.com/ \ No newline at end of file diff --git a/quickstarts/blazemeter/logo.png b/quickstarts/blazemeter/logo.png new file mode 100644 index 0000000000..9ccbcfcb24 Binary files /dev/null and b/quickstarts/blazemeter/logo.png differ diff --git a/quickstarts/botolytics/config.yml b/quickstarts/botolytics/config.yml new file mode 100644 index 0000000000..ed3970a51a --- /dev/null +++ b/quickstarts/botolytics/config.yml @@ -0,0 +1,33 @@ +id: 28b3ade7-a395-4cdd-952a-0e260d6a2494 + +slug: botolytics +title: Botolytics +description: | + ## Botolytics + On every well used website there are not only real users, but also many many bots. Those can be legitimate bots, like search bots, synthetic checks or other automated calls to your service. But even legitimate bots can distort your service's vitals in a way that they no longer represent your real customer's experience. + Being able to distinguish real traffic from bot traffic is crucial in various cases, for example when examining a marketing campaign or when analyzing your services vitals or service levels. + ### How to use Botolytics + This Quickstart works on top of your APM data. We have included the most common bots, but you can and should customize the dashboard with bots specific to your service. +summary: | + Popular websites have real users and various bots. Legitimate bots, like search or checks, can distort data. Distinguishing real traffic from bots matters. It's crucial for marketing analysis and service insights. The Botolytic Dashboard helps analyze bot traffic. +icon: logo.png +level: Verified +authors: + - Heiko Specht (New Relic) + - Linda Weimannn (New Relic) +keywords: + - marketing + - bot + - traffic analysis + - apm + +documentation: + - name: Installation docs + url: https://docs.newrelic.com/introduction-apm + description: Add APM data to use this Quickstart + +dashboards: + - botolytics + +dataSourceIds: + - guided-install \ No newline at end of file diff --git a/quickstarts/botolytics/logo.png b/quickstarts/botolytics/logo.png new file mode 100644 index 0000000000..dce9174686 Binary files /dev/null and b/quickstarts/botolytics/logo.png differ diff --git a/quickstarts/browser/config.yml b/quickstarts/browser/config.yml index 9dbf08cf88..aa13aed363 100644 --- a/quickstarts/browser/config.yml +++ b/quickstarts/browser/config.yml @@ -22,6 +22,7 @@ authors: - New Relic - Darren Doyle - Alex York + - Kinsey icon: logo.svg documentation: - name: Browser @@ -43,3 +44,5 @@ dashboards: - browser-pages-dashboard - javascript-errors - traffic-analysis +alertPolicies: + - browser \ No newline at end of file diff --git a/quickstarts/chromadb/config.yml b/quickstarts/chromadb/config.yml new file mode 100644 index 0000000000..dff93c8611 --- /dev/null +++ b/quickstarts/chromadb/config.yml @@ -0,0 +1,43 @@ +id: 3d4077eb-83ed-4ba5-9ee5-5f002c880e6d +slug: chromadb +description: | + ## Why should you monitor your usage of ChromaDB? + Monitor your vector searches on ChromaDB to get visibility on what you send to ChromaDB, responses retrieved from ChromaDB, latency, usage and errors. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ### What’s included in this quickstart? + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic ChromaDB quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: ChromaDB +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - chromadb + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/chromadb/logo.png b/quickstarts/chromadb/logo.png new file mode 100644 index 0000000000..ae25df89d6 Binary files /dev/null and b/quickstarts/chromadb/logo.png differ diff --git a/quickstarts/circleci/config.yml b/quickstarts/circleci/config.yml index 95b0dc1741..f390d97878 100644 --- a/quickstarts/circleci/config.yml +++ b/quickstarts/circleci/config.yml @@ -38,7 +38,6 @@ keywords: - circleci - circle - cicd - - featured - logs - NR1_addData - NR1_sys diff --git a/quickstarts/clickhouse/config.yml b/quickstarts/clickhouse/config.yml new file mode 100644 index 0000000000..2476023346 --- /dev/null +++ b/quickstarts/clickhouse/config.yml @@ -0,0 +1,49 @@ +id: d85eeb08-8012-4d08-adba-84aace2f4688 +slug: clickhouse +description: | + ## Why should you monitor your usage of ClickHouse? + + Monitor your vector searches on ClickHouse to get visibility on what you send to ClickHouse, responses retrieved from ClickHouse, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic ClickHouse quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: ClickHouse +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - clickhouse + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/clickhouse/logo.png b/quickstarts/clickhouse/logo.png new file mode 100644 index 0000000000..ba034c89fc Binary files /dev/null and b/quickstarts/clickhouse/logo.png differ diff --git a/quickstarts/cloudfoundry/config.yml b/quickstarts/cloudfoundry/config.yml index 08e1812adb..d481aaba94 100644 --- a/quickstarts/cloudfoundry/config.yml +++ b/quickstarts/cloudfoundry/config.yml @@ -17,7 +17,5 @@ keywords: - containers - kubernetes - k8s -installPlans: - - third-party-cloudfoundry dataSourceIds: - - cloudfoundry + - vmware-tanzu diff --git a/quickstarts/codestream/codestream/config.yml b/quickstarts/codestream/codestream/config.yml deleted file mode 100644 index fe7df0e9d5..0000000000 --- a/quickstarts/codestream/codestream/config.yml +++ /dev/null @@ -1,43 +0,0 @@ -id: 29bd9a4a-1c19-4219-9694-0942f6411ce7 -slug: codestream - -description: | - ## What is New Relic CodeStream? - - New Relic CodeStream helps dev teams discuss, review, and understand code. - - ### Get started! - - New Relic CodeStream supercharges development workflows by putting collaboration tools in your IDE. It supports pull requests from GitHub, BitBucket and GitLab, issue management from Jira, Trello, Asana and 9 others, observability from New Relic One and Pixie, and provides code discussion that ties it all together, integrated with Slack, MS Teams, email, and in-editor notifications. - - With the New Relic One integration: - - Click from Errors Inbox right to the code that caused it in your IDE - - Step through stack-traces and method calls, navigating to specific lines of code - - Add production logging on the fly, and see the results, without leaving your editor - - Discover recent errors assigned to you, assign errors, and update their status - - View telemetry such as error rate, throughput and executions/sec for a given method - - Install the extension for [VS Code](https://marketplace.visualstudio.com/items?itemName=CodeStream.codestream), [Visual Studio](https://marketplace.visualstudio.com/items?itemName=CodeStream.codestream-vs), and all [JetBrains](https://plugins.jetbrains.com/plugin/12206-codestream-github-gitlab-bitbucket-prs-and-code-review) editors. - - ### More info - - Check out the [documentation](https://docs.newrelic.com/docs/codestream/) -summary: | - View production telemetry and troubleshoot errors from your IDE -icon: logo.svg -level: New Relic -authors: - - New Relic -title: CodeStream -documentation: - - name: Installation Docs - description: View production telemetry and troubleshoot errors from your IDE - url: >- - https://docs.newrelic.com/docs/codestream/start-here/new-relic-codestream-quick-start/ - - name: New Relic CodeStream Demo - description: See New Relic CodeStream in action - url: https://codestream.com/demo -website: https://codestream.com -# Keywords for filtering / searching criteria in the UI -keywords: - - featured diff --git a/quickstarts/codestream/codestream/logo.svg b/quickstarts/codestream/codestream/logo.svg deleted file mode 100644 index 2de2b10dc1..0000000000 --- a/quickstarts/codestream/codestream/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/codestream/github-cs/config.yml b/quickstarts/codestream/github-cs/config.yml deleted file mode 100644 index 87ac5df371..0000000000 --- a/quickstarts/codestream/github-cs/config.yml +++ /dev/null @@ -1,29 +0,0 @@ -id: 364b0de9-f9b3-4ce2-a084-e01ccc328c43 -slug: github-for-codestream -title: GitHub for CodeStream -description: | - GitHub is a code hosting platform for version control and collaboration. It lets developers and others work together on projects from anywhere. - - With CodeStream you can create, review, and merge GitHub PRs without ever leaving your IDE. All with full source-tree and full file access, your favorite keybindings, and all the code intelligence embedded in your development environment. - - [Check out our documentation](https://docs.newrelic.com/docs/codestream/start-here/install-codestream/#connect-tools) to learn how to connect New Relic CodeStream to GitHub. -summary: | - Connect New Relic CodeStream to GitHub. -level: New Relic -authors: - - New Relic -keywords: - - codestream - - github - - pull request - - errors inbox -installPlans: - - third-party-github-for-codestream -dataSourceIds: - - github-for-codestream -documentation: - - name: Installation Docs - url: https://docs.newrelic.com/docs/codestream/start-here/install-codestream/#connect-tools - description: How to set up GitHub with Codestream -icon: logo.png -website: https://www.newrelic.com diff --git a/quickstarts/codestream/github-cs/logo.png b/quickstarts/codestream/github-cs/logo.png deleted file mode 100644 index 353bb4e581..0000000000 Binary files a/quickstarts/codestream/github-cs/logo.png and /dev/null differ diff --git a/quickstarts/codestream/slack-cs/config.yml b/quickstarts/codestream/slack-cs/config.yml deleted file mode 100644 index b9fcb28950..0000000000 --- a/quickstarts/codestream/slack-cs/config.yml +++ /dev/null @@ -1,29 +0,0 @@ -id: 5837b456-5f5b-4539-8b71-77193298d253 -slug: slack-for-codestream -title: Slack for CodeStream -description: | - Slack is a messaging app for business that connects people to the information they need. - - When you post a comment, issue, or feedback request, your teammates are notified via the activity feed, and potentially via email. Sometimes, though, you might want to share to Slack as well. This allows you to reach people who haven’t yet joined CodeStream, or maybe don’t spend a lot of time in their IDE. - - [Check out our documentation](https://docs.newrelic.com/docs/codestream/codestream-integrations/slack-integration) to connect New Relic CodeStream to your team's Slack channel. -summary: | - Connect New Relic CodeStream to your team's Slack channel. -level: New Relic -authors: - - New Relic -keywords: - - slack - - codestream - - ide - - errors inbox -installPlans: - - third-party-slack-for-codestream -dataSourceIds: - - slack-for-codestream -documentation: - - name: Slack Integration Docs - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/slack-integration - description: Documentation about the New Relic - Slack CodeStream integration -icon: logo.png -website: https://www.newrelic.com diff --git a/quickstarts/codestream/slack-cs/logo.png b/quickstarts/codestream/slack-cs/logo.png deleted file mode 100644 index c51a425f93..0000000000 Binary files a/quickstarts/codestream/slack-cs/logo.png and /dev/null differ diff --git a/quickstarts/codestream/teams-cs/config.yml b/quickstarts/codestream/teams-cs/config.yml deleted file mode 100644 index 7a48899a20..0000000000 --- a/quickstarts/codestream/teams-cs/config.yml +++ /dev/null @@ -1,28 +0,0 @@ -id: c1a50e3c-f81a-4af2-b2ab-878076c9cc82 -slug: microsoft-teams-for-codestream -title: Microsoft Teams for CodeStream -description: | - Microsoft Teams helps bring people together so that they can get things done. - - When you post a codemark your teammates will get notified via the activity feed, and potentially via email. Sometimes, though, you might want to share to Microsoft Teams as well. This would allow you to reach people who haven’t yet joined CodeStream, or maybe don’t spend a lot of time in their IDE. - - [Check out our documentation](https://docs.newrelic.com/docs/codestream/codestream-integrations/msteams-integration/) to learn how to connect New Relic CodeStream to your Microsoft Teams channel. -summary: | - Connect New Relic CodeStream to your Microsoft Teams channel. -level: Community -authors: - - New Relic -keywords: - - codestream - - microsoft - - teams -installPlans: - - third-party-microsoft-teams-for-codestream -dataSourceIds: - - microsoft-teams-for-codestream -documentation: - - name: Teams for CodeStream integration docs - url: https://docs.newrelic.com/docs/codestream/codestream-integrations/msteams-integration/ - description: Guide to help you get set up using New Relic's Microsoft Teams for CodeStream. -icon: logo.png -website: https://www.newrelic.com diff --git a/quickstarts/codestream/teams-cs/logo.png b/quickstarts/codestream/teams-cs/logo.png deleted file mode 100644 index 1f4ba05f91..0000000000 Binary files a/quickstarts/codestream/teams-cs/logo.png and /dev/null differ diff --git a/quickstarts/contentsquare/config.yml b/quickstarts/contentsquare/config.yml index 50c51a6eee..7de985aec3 100644 --- a/quickstarts/contentsquare/config.yml +++ b/quickstarts/contentsquare/config.yml @@ -6,12 +6,17 @@ summary: | platform that collects and quantifies user behavior across all your digital properties showing you what users like, what they don’t like, where they struggle, and why they leave. +description: | + ## Contentsquare performance monitoring + Contentsquare surfaces opportunities to improve your customer experience automatically and easily so you can increase your conversion rates, improve customer loyalty, reduce costs and drive revenue. -description: | + Get more value from your investments in Contentsquare and New Relic by seeing how performance issues truly affect your customers’ digital experience. + + ### What's included? Through this integration, access Contentsquare Session Replay links directly within New Relic. With this, Contentsquare shows you exactly what a user was diff --git a/quickstarts/conviva/config.yml b/quickstarts/conviva/config.yml new file mode 100644 index 0000000000..371389eee3 --- /dev/null +++ b/quickstarts/conviva/config.yml @@ -0,0 +1,79 @@ +id: 5fd7561f-2128-4270-9d51-f731819c7d50 +# Sets the URL name of the quickstart on public I/O (required) +slug: conviva + +# Displayed in the UI (required) +title: Conviva + +# Long-form description of the quickstart (required) +description: | + ## What is Conviva? + + [Conviva](https://www.conviva.com/) is a real-time analytics platform that + makes streaming data actionable. + + ## What is the Conviva Integration? + + The Conviva integration is a New Relic Infrastructure + [on-host integration](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations/) + that uses the [Conviva v3 Metrics API](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta) + to pull metrics from Conviva and push them into New Relic as dimensional + metrics. + + The Conviva integration supports the following Conviva v3 Metrics API + concepts. + + * [Single metrics and metric groups](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#single-metrics-and-metric-groups) + * [Multiple singular metrics](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#retrieving-multiple-singular-metrics-in-a-request) + * [Dimensions](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#dimensions) + * [Time ranges](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#time-range) + * [Interval granularity](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#interval-granularity) + * [Filtering](https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta#filtering-by-dimensions) + + ## Getting Started + + This quickstart is designed to help customers install and use the Conviva + integration to collect and work with Conviva metrics. + + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + A New Relic quickstart designed to help customers install and use the Conviva + integration to collect and work with Conviva metrics. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Scott DeWitt + - Chris McCarthy + +# Keywords for filtering / searching criteria in the UI +keywords: + - conviva + - video + - streaming + - NRI + - integration + - newrelic + +# Reference to dashboards to be included in this quickstart +dashboards: + - conviva + +# Documentation references +documentation: + - name: Installation + url: https://github.com/newrelic/nri-conviva#installation + description: Installing the Conviva integration + - name: Github Repository + url: https://github.com/newrelic/nri-conviva + description: The Conviva integration repository + - name: Conviva Metrics V3 API User Guide + url: https://developer.conviva.com/docs/metrics-api-v3/3e38d9ead39fc-metrics-v3-api-user-guide-beta + description: The Conviva Metrics V3 API documentation + +# Content / Design +icon: logo.svg +website: https://www.conviva.com diff --git a/quickstarts/conviva/logo.svg b/quickstarts/conviva/logo.svg new file mode 100644 index 0000000000..911b6d572e --- /dev/null +++ b/quickstarts/conviva/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/dapr/config.yml b/quickstarts/dapr/config.yml new file mode 100644 index 0000000000..14282550be --- /dev/null +++ b/quickstarts/dapr/config.yml @@ -0,0 +1,28 @@ +id: 33129991-fb5d-4251-bca2-d0b63176b7c2 +slug: dapr +title: Dapr +description: | + The Dapr quickstart allows you to add meaningful dashboards to New Relic that highlight key aspects of the Dapr platform. + + A guide on how to set-up New Relic for distributed tracing with Dapr can be found [here](https://docs.dapr.io/operations/monitoring/tracing/newrelic/). +summary: | + Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks. +level: Community +authors: + - Harry Kimpel +keywords: + - apm + - dapr +dashboards: + - dapr-metrics + - dapr-system-services +installPlans: + - third-party-dapr +dataSourceIds: + - dapr +documentation: + - name: Installation docs + url: https://docs.dapr.io/operations/monitoring/tracing/newrelic/ + description: How-To Set-up New Relic for distributed tracing. +icon: logo.svg +website: https://www.dapr.io diff --git a/quickstarts/dapr/logo.svg b/quickstarts/dapr/logo.svg new file mode 100644 index 0000000000..716c3e4fe4 --- /dev/null +++ b/quickstarts/dapr/logo.svg @@ -0,0 +1,15 @@ + + + + Artboard + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/datazoom/logo.png b/quickstarts/datazoom/logo.png index eb5dd69d83..7e620d36d5 100644 Binary files a/quickstarts/datazoom/logo.png and b/quickstarts/datazoom/logo.png differ diff --git a/quickstarts/deeplake/config.yml b/quickstarts/deeplake/config.yml new file mode 100644 index 0000000000..1dadb568d0 --- /dev/null +++ b/quickstarts/deeplake/config.yml @@ -0,0 +1,50 @@ +id: 094e1a4b-4798-45a2-95d6-1b61fee9b088 +slug: deeplake +description: | + ## Why should you monitor your usage of Deep Lake? + + Monitor your vector searches on Deep Lake to get visibility on what you send to Deep Lake, responses retrieved from Deep Lake, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Deep Lake quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Deep Lake +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - deep lake + - vector search + - vectordb + - vector db + - ai + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/deeplake/logo.png b/quickstarts/deeplake/logo.png new file mode 100644 index 0000000000..e43b65ffcb Binary files /dev/null and b/quickstarts/deeplake/logo.png differ diff --git a/quickstarts/delphix/config.yml b/quickstarts/delphix/config.yml index f7f9bad471..d7b9b391a1 100644 --- a/quickstarts/delphix/config.yml +++ b/quickstarts/delphix/config.yml @@ -18,7 +18,7 @@ description: | The quickstart contains a sample Delphix Platform Dashboard and Storage Utilization Alert to help users get started. - Populating data for dashboards, alerts, and workflows requires the [Delphix Integration](https://github.com/delphix/dct-newrelic-integration) and [Delphix Data Control Tower](https://docs.delphix.com/dct). + Populating data for dashboards, alerts, and workflows requires the [Delphix Integration](https://github.com/delphix/dct-newrelic-integration) and [Delphix Data Control Tower](https://dct.delphix.com/docs/latest). icon: logo.svg website: https://www.delphix.com summary: | diff --git a/quickstarts/docarray-hnswsearch/config.yml b/quickstarts/docarray-hnswsearch/config.yml new file mode 100644 index 0000000000..77facdc52a --- /dev/null +++ b/quickstarts/docarray-hnswsearch/config.yml @@ -0,0 +1,54 @@ +id: 9127f544-8f32-4250-9d2f-2b4be09e281d +slug: docarray-hnswsearch +description: | + ## Why should you monitor your usage of DocArray HnswSearch? + Monitor your vector searches with DocArray HnswSearch to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of DocArray HnswSearch + Track the behavior of DocArray HnswSearch. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of DocArray HnswSearch: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into DocArray HnswSearch's performance and identify areas of improvement. + + ## Comprehensive monitoring quickstart for DocArray HnswSearch + DocArray HnswSearch quickstart provides metrics including Identify popular queries, sources, and content. + + ## What’s included in this quickstart? + New Relic DocArray HnswSearch monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your DocArray HnswSearch. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic DocArray HnswSearch quickstart +icon: logo.svg +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: DocArray HnswSearch +documentation: + - name: DocArray HnswSearch integration documentation + description: | + Implement monitoring and instrumentation for DocArray HnswSearch, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - DocArray + - HnswSearch + - text search + - image search + - video search + - AI + - machine learning + - open source + - Hnsw Search + - Doc Array + - vector search + - mlops + - NR1_addData +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb diff --git a/quickstarts/docarray-hnswsearch/logo.svg b/quickstarts/docarray-hnswsearch/logo.svg new file mode 100644 index 0000000000..db2420c667 --- /dev/null +++ b/quickstarts/docarray-hnswsearch/logo.svg @@ -0,0 +1,20 @@ + + + docarray-logo_text-light + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/docarray-inmemorysearch/config.yml b/quickstarts/docarray-inmemorysearch/config.yml new file mode 100644 index 0000000000..1c4d20dfac --- /dev/null +++ b/quickstarts/docarray-inmemorysearch/config.yml @@ -0,0 +1,57 @@ +id: c264449d-e7a1-4497-9b73-df1bdfe79f82 + +slug: docarray-inmemorysearch +description: | + ## Why should you monitor your usage of DocArray InMemorySearch? + Monitor your vector searches with DocArray InMemorySearch to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of DocArray InMemorySearch + Track the behavior of DocArray InMemorySearch. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of DocArray InMemorySearch + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into DocArray InMemorySearch's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + New Relic DocArray InMemorySearch monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of DocArray InMemorySearch. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your DocArray InMemorySearch performance and quality with New Relic DocArray InMemorySearch quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: DocArray InMemorySearch +documentation: + - name: DocArray InMemorySearch integration documentation + description: | + Implement monitoring and instrumentation for your DocArray InMemorySearch, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - docarray inmemorysearch + - doc array + - vector search + - in memory search + - in-memory search + - in memory + - document search + - multimodal search + - open source + - python + - machine learning + - artificial intelligence + - AI + - ML + - NLP + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/docarray-inmemorysearch/logo.svg b/quickstarts/docarray-inmemorysearch/logo.svg new file mode 100644 index 0000000000..a3a5c8ae39 --- /dev/null +++ b/quickstarts/docarray-inmemorysearch/logo.svg @@ -0,0 +1,20 @@ + + + docarray-logo_text-light + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/docker-otel/config.yml b/quickstarts/docker-otel/config.yml new file mode 100644 index 0000000000..60138e63a4 --- /dev/null +++ b/quickstarts/docker-otel/config.yml @@ -0,0 +1,40 @@ +id: 67298fce-4bbe-40d0-8cda-b80aad183794 +slug: docker-otel +title: Docker (OpenTelemetry) +summary: | + Monitoring docker is essential to enable your team deliver high-quality software that yields a positive customer experience. Install New Relic Docker for Open Telemetry quickstart to proactively instrument Docker with the Dockerstats receiver. +description: | + ## How to monitor Docker with New Relic? + + Dockerstats OpenTelemetry receiver collects metrics from your running Docker containers on the host where OpenTelemetry Collector is installed. + The collected metrics allow you to observe the usage of CPU, memory, network, and more. + + A New Relic container entity will be created for each container, making it easy to explore, configure alerts and compare metrics for all of your containers in one place. + + Our monitoring quickstart includes a pre-built dashboard that displays aggregated metrics from all of your containers, with the ability to filter the data to focus on specific workloads. + + ### Why monitor Docker with New Relic? + + New Relic's Docker for Open Telemetry quickstart empowers you to get 360° visibility for your apps, server infrastructure, and Dockerized containers all in one place. Monitoring Docker is critical to get instant performance metrics for containerized applications across your entire environment. It enables you to provide a consistent customer experience, regardless of changes to the underlying platforms, tools, languages, or frameworks. + +icon: logo.svg +level: New Relic +authors: + - New Relic +dataSourceIds: + - docker-otel +alertPolicies: + - docker-otel +documentation: + - name: Docker (OpenTelemetry) installation docs + description: | + Docker is a set of Platform-as-a-Service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/ +dashboards: + - docker-otel +keywords: + - containers + - open telemetry + - docker + - infrastructure + - featured diff --git a/quickstarts/docker-otel/logo.svg b/quickstarts/docker-otel/logo.svg new file mode 100644 index 0000000000..de97544316 --- /dev/null +++ b/quickstarts/docker-otel/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/dojo/config.yml b/quickstarts/dojo/config.yml index 31c07c0d5b..2667a0cd37 100644 --- a/quickstarts/dojo/config.yml +++ b/quickstarts/dojo/config.yml @@ -33,8 +33,6 @@ documentation: keywords: - dojo - browser monitoring -installPlans: - - dojo dataSourceIds: - dojo dashboards: diff --git a/quickstarts/dotnet/csharp/config.yml b/quickstarts/dotnet/csharp/config.yml index 4209c87c40..7b9de6f9c2 100644 --- a/quickstarts/dotnet/csharp/config.yml +++ b/quickstarts/dotnet/csharp/config.yml @@ -3,29 +3,40 @@ slug: c-sharp description: | ## C# performance monitoring With our C# integration, you can find and address performance bottlenecks while operating in a live development environment. Monitor your app via our dashboard quickstarts and ensure you're delivering the best user experience. - - ### Common C# performance errors + + ## Common C# performance errors Here are the common C# performance errors that you can handle with New Relic integration: - - Memory management: C# uses automatic memory management, which takes the burden of manual allocation from developers. However, C# can sometimes run into memory error thereby inhibiting its memory management performance. Our integration offers the best solution to fix that. - - CPU usage: New Relic’s high CPU utilization alert is the key to monitoring CPU usage to prevent any potential error. - - Garbage collection: Garbage Collector (GC) manages the allocation and release of memory for your application. When the memory is under distress, our C# integration will easily notify you via the memory usage alert. - - High volume of requests: Getting a high volume of requests can affect your app’s response time and reduce user satisfaction. With Apdex score, you can track requests and measure user satisfaction. - - JIT compiler: If JIT compiler fails to load, it may be due to an out-of-memory exception or internal limitation error. The pathway towards getting the insights you need is the New Relic C# integration. + + **Memory management**: C# uses automatic memory management, which takes the burden of manual allocation from developers. However, C# can sometimes run into memory error thereby inhibiting its memory management performance. Our integration offers the best solution to fix that. + + **CPU usage**: New Relic’s high CPU utilization alert is the key to monitoring CPU usage to prevent any potential error. + + **Garbage collection**: Garbage Collector (GC) manages the allocation and release of memory for your application. When the memory is under distress, our C# integration will easily notify you via the memory usage alert. + + **High volume of requests**: Getting a high volume of requests can affect your app’s response time and reduce user satisfaction. With Apdex score, you can track requests and measure user satisfaction. + + **JIT compiler**: If JIT compiler fails to load, it may be due to an out-of-memory exception or internal limitation error. The pathway towards getting the insights you need is the New Relic C# integration. + ### C# monitoring use cases + - Focus on the issues that affect your critical business transactions. - - Gain knowledge on your system's behavior in advance and learn the whole story of performance errors, from beginning to end. + - Resolve problems quickly. + - Gain knowledge on your system's behavior in advance. + - Learn the whole story of performance errors, from beginning to end. - Use traces to connect latency issues to errors, getting you to the root cause as quickly as possible. - See the filename and line number from the C# stack trace so you never have to guess. To reduce noise, logically filter and aggregate C# exceptions. - Scalable error monitoring without affecting production flow. - Maintain low latency with fast throughput. - - Get meaningful data about C# errors from your dashboard. + - Get meaningful data about C# errors from your dashboard. + + ### End-to-end visibility into your C# operations - ## End-to-end visibility into your C# operations Our C# dashboard translates your ingested data into a map that lets you trace business transactions across your C# stack. See your performance errors in context and prioritize your most critical operations. ## What’s included in this quickstart? + New Relic's C# monitoring quickstart boasts instant full-stack observability out-of-the-box: - Dashboards (Throughput, Error rate, Logs, Web transaction time, Apdex Score and more). diff --git a/quickstarts/elastic-knn-search/config.yml b/quickstarts/elastic-knn-search/config.yml new file mode 100644 index 0000000000..c2f8cf35d1 --- /dev/null +++ b/quickstarts/elastic-knn-search/config.yml @@ -0,0 +1,55 @@ +id: 9c5273f1-ddc0-4db4-8a31-41fe1ea320e3 + +slug: elastic-knn-search +description: | + ## Why should you monitor your usage of Elastic KNN Search? + Monitor your vector searches with Elastic KNN Search to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of Elastic KNN Search + Track the behavior of Elastic KNN Search. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of Elastic KNN Search + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into Elastic KNN Search's performance and identify areas of improvement. + + + ## What’s included in this quickstart? + New Relic Elastic KNN Search monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of Elastic KNN Search. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Elastic KNN Search's performance and quality with New Relic Elastic KNN Search quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Elastic KNN Search +documentation: + - name: Elastic KNN Search integration documentation + description: | + Implement monitoring and instrumentation for your Elastic KNN Search, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - elastic knn search + - k-nearest neighbors + - KNN + - vector search + - nearest neighbor search + - machine learning + - artificial intelligence + - AI + - ML + - data science + - big data + - elasticsearch + - elastic search + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/elastic-knn-search/logo.png b/quickstarts/elastic-knn-search/logo.png new file mode 100644 index 0000000000..8980878308 Binary files /dev/null and b/quickstarts/elastic-knn-search/logo.png differ diff --git a/quickstarts/elastic-vector-search/config.yml b/quickstarts/elastic-vector-search/config.yml new file mode 100644 index 0000000000..a3b0a70a72 --- /dev/null +++ b/quickstarts/elastic-vector-search/config.yml @@ -0,0 +1,55 @@ +id: 3619a864-7d96-4a6a-9900-758c7e380ec7 + +slug: elastic-vector-search +description: | + ## Why should you monitor your usage of Elastic Vector Search? + Monitor your vector searches with Elastic Vector Search to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of Elastic Vector Search + Track the behavior of your Elastic Vector Search. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of Elastic Vector Search + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into Elastic Vector Search's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + New Relic Elastic Vector Search monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Elastic Vector Search. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Elastic Vector Search's performance and quality with New Relic Elastic Vector Search quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Elastic Vector Search +documentation: + - name: Elastic Vector Search integration documentation + description: | + Implement monitoring and instrumentation for your Elastic Vector Search, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - elastic search + - elastic vector search + - vector search + - dense vector search + - sparse vector search + - distributed vector search + - real-time vector search + - elasticsearch + - machine learning + - artificial intelligence + - mlops + - NR1_addData + - AI + - ML + - NLP +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/elastic-vector-search/logo.png b/quickstarts/elastic-vector-search/logo.png new file mode 100644 index 0000000000..04dcd53fea Binary files /dev/null and b/quickstarts/elastic-vector-search/logo.png differ diff --git a/quickstarts/elixir/config.yml b/quickstarts/elixir/config.yml index 2a64ea6a2a..93c1769e9c 100644 --- a/quickstarts/elixir/config.yml +++ b/quickstarts/elixir/config.yml @@ -22,10 +22,13 @@ keywords: - apm - elixir - language agent + installPlans: - setup-elixir-agent + dataSourceIds: - elixir + documentation: - name: Elixir installation docs description: Popular open source programming language with automated features. diff --git a/quickstarts/example-dashboard/example-dashboard.json b/quickstarts/example-dashboard/example-dashboard.json index 019aca7119..56217a9f95 100644 --- a/quickstarts/example-dashboard/example-dashboard.json +++ b/quickstarts/example-dashboard/example-dashboard.json @@ -18,7 +18,7 @@ }, "title": " ", "rawConfiguration": { - "text": "![Image](https://s3.amazonaws.com/nr-cloud-adoption/CloudAdoption-Plan.png)\n" + "text": "![Image](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/bb8038eb251fb37c0e15f1f2ea930569f0eb1cb5/_template/quickstarts/example-quickstart/logo.svg)\n" } }, { diff --git a/quickstarts/f5/config.yml b/quickstarts/f5/config.yml index 1f1ec4e09c..3b91987a4e 100644 --- a/quickstarts/f5/config.yml +++ b/quickstarts/f5/config.yml @@ -1,34 +1,42 @@ id: 0da402d7-e8ef-4a97-8e3f-fc476a86a3c0 slug: f5 +title: F5 description: | ## What is F5? - F5 is a family of software and hardware products designed around application availability, access control, and security. + F5 is a set of application delivery products that work together to ensure high availability, improved performance, application security, and access control. ## Get started! Use New Relic's F5 BIG-IP integration to collect and send inventory and metrics from your F5 BIG-IP instance, where you can aggregate and visualize key performance metrics. - We collect data at the system, application, pool, pool member, virtual server, and node levels. + We collect data at the system, node, pool, pool member, and virtual server levels. Follow the [F5 monitoring integration documentation](https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/f5-monitoring-integration) to get started. summary: | - Monitor your F5 BIG-IP with New Relic. -icon: logo.svg + Monitor your F5 BIG-IP system with New Relic. level: New Relic authors: - New Relic -title: F5 -documentation: - - name: F5 installation docs - description: | - Family of software and hardware products designed around application - availability, access control, and security. - url: https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/f5-monitoring-integration + - Zack Mutchler keywords: - infrastructure + - f5 + - big-ip + - big ip - load balancer installPlans: - third-party-f5 dataSourceIds: - f5 +alertPolicies: + - f5 +dashboards: + - f5 +documentation: + - name: F5 installation docs + description: | + Set of application delivery products that work together to ensure + high availability, improved performance, application security, and access control. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/f5-monitoring-integration/#install +icon: logo.svg diff --git a/quickstarts/faiss/config.yml b/quickstarts/faiss/config.yml new file mode 100644 index 0000000000..bee9eeefad --- /dev/null +++ b/quickstarts/faiss/config.yml @@ -0,0 +1,49 @@ +id: 351b326f-a2c5-4994-80c0-437f74d5398a +slug: faiss +description: | + ## Why should you monitor your usage of FAISS? + + Monitor your vector searches on FAISS to get visibility on what you send to FAISS, responses retrieved from FAISS, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic FAISS quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: FAISS +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - FAISS + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/faiss/logo.png b/quickstarts/faiss/logo.png new file mode 100644 index 0000000000..caff5572de Binary files /dev/null and b/quickstarts/faiss/logo.png differ diff --git a/quickstarts/flutter-android/config.yml b/quickstarts/flutter-android/config.yml new file mode 100644 index 0000000000..7c493267aa --- /dev/null +++ b/quickstarts/flutter-android/config.yml @@ -0,0 +1,44 @@ +id: 4dbabbe7-1e32-47fc-b80b-a792aaa38ba7 +slug: flutter-android +description: | + ## Comprehensive monitoring quickstart for Flutter Android + + Monitor your Flutter applications and analyze performance bottlenecks while operating in a live development environment. You can use this dashboard to visualize your web user experience with your application rendition. + + ## Why monitor Flutter Android? + Monitoring app performance allows you to avoid crashes, bugs, or user complaints by taking a preventative approach rather than waiting until an issue arises. With New Relic Android and Flutter agents, you can track important metrics such as network failures, HTTP response times, slow launches, and custom traces. + + You can optimize the process once you have a comprehensive picture of all releases by prioritizing active issues and marking errors as corrected. Identify the release in which the problem first appeared, merge duplicates, and assess whether the issue may worsen. Send deploy emails instantly with commit information, and suggest an owner for each application error. + + ## What’s included in this quickstart? + New Relic Android and Flutter monitoring agents capture the following metrics: + + - Get alerted when critical issues affect your Flutter application + - Dashboards (error rate, app launches, app installations, app crashes and more) + - Monitor Flutter Dart exceptions and errors + - Monitor HTTP responses & errors, and mobile events + +summary: | + Identify and optimize Flutter Android app performance with New Relic Flutter Android monitoring. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Flutter Android +documentation: + - name: Flutter Android integration documentation + description: | + Monitor the performance metrics of your Flutter Android application instances in real-time with New Relic Android and Flutter agents. + url: >- + https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/ +keywords: + - flutter + - flutter android application + - android agent + - flutter agent +dashboards: + - flutter-android +alertPolicies: + - flutter-android +dataSourceIds: + - flutter-android \ No newline at end of file diff --git a/quickstarts/flutter-android/logo.png b/quickstarts/flutter-android/logo.png new file mode 100644 index 0000000000..cfc0ee42f3 Binary files /dev/null and b/quickstarts/flutter-android/logo.png differ diff --git a/quickstarts/flutter-ios/config.yml b/quickstarts/flutter-ios/config.yml new file mode 100644 index 0000000000..0e0aabb3aa --- /dev/null +++ b/quickstarts/flutter-ios/config.yml @@ -0,0 +1,46 @@ +id: e39b2930-856a-4023-90b6-1275ab889ba5 +slug: flutter-ios +description: | + ## Comprehensive monitoring quickstart for Flutter iOS + + Monitor your Flutter applications and analyze performance bottlenecks while operating in a live development environment. You can use this dashboard to visualize your web user experience with your application rendition. + + ## Why monitor Flutter iOS? + Monitoring app performance allows you to avoid crashes, bugs, or user complaints by taking a preventative approach rather than waiting until an issue arises. With New Relic iOS and Flutter agents, you can track important metrics such as network failures, HTTP response times, slow launches, and custom traces. + + You can optimize the process once you have a comprehensive picture of all releases by prioritizing active issues and marking errors as corrected. Identify the release in which the problem first appeared, merge duplicates, and assess whether the issue may worsen. Send deploy emails instantly with commit information, and suggest an owner for each application error. + + + + ## What’s included in this quickstart? + New Relic iOS and Flutter monitoring agents capture the following metrics: + + - Get alerted when critical issues affect your Flutter application + - Dashboards (error rate, app launches, app installations, app crashes and more) + - Monitor Flutter Dart exceptions and errors + - Monitor HTTP responses & errors, and mobile events + +summary: | + Identify and optimize Flutter iOS app performance with New Relic Flutter iOS monitoring. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Flutter iOS +documentation: + - name: Flutter iOS integration documentation + description: | + Monitor the performance metrics of your Flutter iOS application instances in real-time with New Relic iOS and Flutter agents. + url: >- + https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-flutter/monitor-your-flutter-application/ +keywords: + - flutter + - flutter ios application + - ios agent + - flutter agent +dashboards: + - flutter-ios +alertPolicies: + - flutter-ios +dataSourceIds: + - flutter-ios diff --git a/quickstarts/flutter-ios/logo.png b/quickstarts/flutter-ios/logo.png new file mode 100644 index 0000000000..5ae499e057 Binary files /dev/null and b/quickstarts/flutter-ios/logo.png differ diff --git a/quickstarts/flutter-web/config.yml b/quickstarts/flutter-web/config.yml new file mode 100644 index 0000000000..5aefae2eca --- /dev/null +++ b/quickstarts/flutter-web/config.yml @@ -0,0 +1,42 @@ +id: 03dec978-0ea3-4126-a722-7423ee3deaf4 +slug: flutter-web +description: | + ## Why monitor Flutter Web? + Monitoring application performance helps you to take a preventative approach to enhance quality rather than waiting for a crash, issue, or user complaint to occur. The New Relic Flutter web monitoring quickstart allows you to track important metrics including Apdex ratings, UI hangs, network timeouts and issues, slow launches, tracking custom traces, and more. + By prioritizing active issues and marking errors as corrected, you may optimize the process once you have a comprehensive picture of all releases. Find out which version the problem first appeared in, merge duplicates, and assess whether anything may get worse in a later release. Add commit information to send deploy emails instantly and suggest an owner for each application error. + + ## Comprehensive monitoring quickstart for Flutter Web. + + Monitor your Flutter applications, and analyze performance bottlenecks in the production environment. Visually monitor your web user experience across the world along with your application performance via the dashboard. + Install and start monitoring your data today! + + ## What’s included in this quickstart? + New Relic's Browser monitoring agent captured the metrics out of the box: + - Get alerts when your application suffers critical failures and errors.. + - Dashboards (Throughput, Error rate, Web transaction Time, Apdex Score, Page views, and more). + - Monitor scripts and functions. + - Monitor web transactions. + +summary: | + Instrument and monitor your Flutter Web application with the New Relic Browser Monitoring agent. Analyze your performance data (Errors, Page load time, User traffic, and Page views) in view for the best code diagnosis, improvement, and optimization. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Flutter Web +documentation: + - name: Flutter Web integration documentation + description: | + Monitor the performance metrics of your Flutter Web application instances in real-time with New Relic Browser agent. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/browser-monitoring-integrations/flutter-web-integration/ +keywords: + - flutter + - flutter web application + - browser agent +dataSourceIds: + - flutter-web +dashboards: + - flutter-web +alertPolicies: + - flutter-web \ No newline at end of file diff --git a/quickstarts/flutter-web/logo.png b/quickstarts/flutter-web/logo.png new file mode 100644 index 0000000000..cfc0ee42f3 Binary files /dev/null and b/quickstarts/flutter-web/logo.png differ diff --git a/quickstarts/gatsby-build/config.yml b/quickstarts/gatsby-build/config.yml index 10f0a84906..00e00d47a3 100644 --- a/quickstarts/gatsby-build/config.yml +++ b/quickstarts/gatsby-build/config.yml @@ -22,7 +22,5 @@ documentation: description: | Ship performance data from Gatsby builds using OpenTelemetry url: https://newrelic.com/blog/best-practices/optimize-gatsby-build-opentelemetry -keywords: - - featured dashboards: - gatsby-build diff --git a/quickstarts/gcp/gcp-alloydb/config.yml b/quickstarts/gcp/gcp-alloydb/config.yml new file mode 100644 index 0000000000..f8736026bd --- /dev/null +++ b/quickstarts/gcp/gcp-alloydb/config.yml @@ -0,0 +1,35 @@ +id: 27c65f9b-b15d-4894-ab44-e8a45e045fb8 +slug: gcp-alloydb +description: |- + ## What is AlloyDB? + + A fully managed PostgreSQL-compatible database service for your most demanding enterprise database workloads. AlloyDB combines the best of Google + with one of the most popular open-source database engines, PostgreSQL, for superior performance, scale, and availability. + + ### Get started! + + Start monitoring AlloyDB by connecting Google Cloud Platform (GCP) to New Relic! + Check out our AlloyDB documentation to instrument your cloud service and manage the stability, scalability, and reliability of your systems with + New Relic's infrastructure monitoring capabilities. + + ### More info + + Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/google-cloud-platform-integrations/gcp-integrations-list/google-alloydb-monitoring-integration/) to learn more about New Relic monitoring for AlloyDB. +summary: Monitor AlloyDB by connecting GCP to New Relic +icon: icon.png +level: New Relic +authors: + - New Relic +title: AlloyDB +documentation: + - name: AlloyDB integration docs + description: Monitor AlloyDB by connecting GCP to New Relic. + url: https://docs.newrelic.com/docs/infrastructure/google-cloud-platform-integrations/gcp-integrations-list/google-alloydb-monitoring-integration/ +keywords: + - gcp + - google cloud platform + - alloydb +dataSourceIds: + - gcp-infrastructure-monitoring +dashboards: + - gcp-alloydb diff --git a/quickstarts/gcp/gcp-alloydb/icon.png b/quickstarts/gcp/gcp-alloydb/icon.png new file mode 100644 index 0000000000..54e8591d5c Binary files /dev/null and b/quickstarts/gcp/gcp-alloydb/icon.png differ diff --git a/quickstarts/gcp/google-cloud-spanner-otel/config.yml b/quickstarts/gcp/google-cloud-spanner-otel/config.yml index 2bdcff171a..d9f39d7fa8 100644 --- a/quickstarts/gcp/google-cloud-spanner-otel/config.yml +++ b/quickstarts/gcp/google-cloud-spanner-otel/config.yml @@ -24,7 +24,7 @@ description: |- - The dashboard included in this quickstart works by using finding `instrumentation.source = gcpspanner.` If you want to use this without changing the queries, be sure to use this as the name to identify the data source from the prometheus link. - You can add key identifying variables like project, instance, and database to your dashboard by selecting the `Add variable` option at the top of the dashboard summary: Leverage OTel to monitor GCP Cloud Spanner -icon: logo.svg +icon: gcpspanner.png level: verified authors: - New Relic diff --git a/quickstarts/gcp/google-cloud-spanner-otel/gcpspanner.png b/quickstarts/gcp/google-cloud-spanner-otel/gcpspanner.png new file mode 100644 index 0000000000..a6c852de7c Binary files /dev/null and b/quickstarts/gcp/google-cloud-spanner-otel/gcpspanner.png differ diff --git a/quickstarts/gcp/google-cloud-spanner-otel/logo.svg b/quickstarts/gcp/google-cloud-spanner-otel/logo.svg deleted file mode 100644 index c14b248faf..0000000000 --- a/quickstarts/gcp/google-cloud-spanner-otel/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/gcp/google-cloud-spanner/config.yml b/quickstarts/gcp/google-cloud-spanner/config.yml index 008ea81f64..a335255ce8 100644 --- a/quickstarts/gcp/google-cloud-spanner/config.yml +++ b/quickstarts/gcp/google-cloud-spanner/config.yml @@ -17,7 +17,7 @@ description: |- Check out the [documentation](https://docs.newrelic.com/docs/infrastructure/google-cloud-platform-integrations/gcp-integrations-list/google-cloud-spanner-monitoring-integration/) to learn more about New Relic monitoring for Google Cloud Spanner. summary: Monitor Google Cloud Spanner by connecting GCP to New Relic -icon: logo.svg +icon: gcpspanner.png level: New Relic authors: - New Relic @@ -31,6 +31,8 @@ keywords: - gcp - google cloud platform - database +dashboards: + - gcp-spanner installPlans: - gcp-infrastructure-monitoring dataSourceIds: diff --git a/quickstarts/gcp/google-cloud-spanner/gcpspanner.png b/quickstarts/gcp/google-cloud-spanner/gcpspanner.png new file mode 100644 index 0000000000..a6c852de7c Binary files /dev/null and b/quickstarts/gcp/google-cloud-spanner/gcpspanner.png differ diff --git a/quickstarts/gcp/google-cloud-spanner/logo.svg b/quickstarts/gcp/google-cloud-spanner/logo.svg deleted file mode 100644 index c14b248faf..0000000000 --- a/quickstarts/gcp/google-cloud-spanner/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/gh-gates/config.yml b/quickstarts/gh-gates/config.yml new file mode 100644 index 0000000000..612f6c27ff --- /dev/null +++ b/quickstarts/gh-gates/config.yml @@ -0,0 +1,42 @@ +id: 91464093-cc5d-4599-8fee-23f4de0183b5 +slug: github-deployment-protection +title: GitHub Deployment Protection Rules +description: |+ + ## What are Deployment Protection Rules + Deployment Protection Rules for GitHub Actions provides additional control to your [GitHub Actions](https://github.com/features/actions) CI/CD workflows. Developers can enforce quality gates on every deployment environment, preventing deployments that do not meet specific criteria from reaching production. + + ### Why Set Up Deployment Protection Rules + By setting up Deployment Protection Rules and integrating them into their release processes, teams can break down silos and create tighter collaboration between development, operations, and other groups for faster, more reliable releases. This can also lead to a better overall development lifecycle, with fewer bugs, better testing, and more reliable code. + + ## Integrate New Relic with GitHub Actions releases + New Relic and GitHub have made it easy to set up rigorous control mechanisms that ensure only high-quality thoroughly tested code reaches production. + + With the [New Relic Gate App](https://github.com/apps/new-relic-gate), you can leverage anomaly detection to automatically intercept and validate deployment requests. This lets you prevent issues earlier in the release cycle to reduce alarming on higher level environments and build better software. + + ### Benefits + With this integration, you can connect software performance and environment health analysis to actual deployment criteria, allowing you to: + + - **Protect downstream environments from potential issues.** Connect New Relic signals with your deployment gates to prevent hazards and issues from being deployed downstream. + - **Gain flexible control with New Relic AIOps.** Whether it's errors, performance changes, or anomalies, anything you monitor can become a deployment gate. + - **Catch issues earlier in the release cycle.** Shift left and prevent issues before they make it to production. + + ## Get Started + - [Learn more](https://docs.newrelic.com/whats-new/2023/04/whats-new-04-20-github-integration/) + - [See instructions](https://github.com/apps/new-relic-gate)and install the app. + +summary: Use New Relic anomaly detection to create GitHub deployment protection rules +level: New Relic +authors: + - New Relic +keywords: + - github + - gates + - anomaly detection + - notifications + - AIOps + - Incident Intelligence +documentation: + - name: Get Started + url: https://docs.newrelic.com/whats-new/2023/04/whats-new-04-20-github-integration/ + description: Create GitHub Actions Deployment Protection Rules with New Relic AIOps +icon: logo.svg diff --git a/quickstarts/gh-gates/logo.svg b/quickstarts/gh-gates/logo.svg new file mode 100644 index 0000000000..d5e6491854 --- /dev/null +++ b/quickstarts/gh-gates/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/gigamon-appinsights/config.yml b/quickstarts/gigamon-appinsights/config.yml new file mode 100644 index 0000000000..8f98f2aa0d --- /dev/null +++ b/quickstarts/gigamon-appinsights/config.yml @@ -0,0 +1,48 @@ +id: 77af041f-de6c-45d1-9ac1-8d77d48ab9a9 + + +slug: gigamon-appinsights + +title: Gigamon Application Insights + +description: | + ## Deep Application Visibility + Analytics tools are only as smart as the data they receive. Gigamon Application Metadata Intelligence empowers + New Relic with critical metadata attributes across thousands of business, consumer and IT applications and services. + Get deep application visibility to rapidly pinpoint performance bottlenecks, quality issues and potential network security risks. + +summary: | + Powered by Gigamon's Application Metadata Intelligence (AMI), part of Application Intelligence, to help you monitor and manage complex digital initiatives. + +level: Verified + +authors: + - Gigamon + +keywords: + - gigamon + - application + - network + - AMI + - intelligence + - metadata + - siem + - newrelic partner + - NR1_addData + - NR1_sys + +documentation: + - name: Application Metadata Intelligence + url: https://www.gigamon.com/products/optimize-traffic/application-intelligence/application-metadata + description: Application Metadata Intelligence (AMI) helps you monitor and manage complex digital applications using network traffic analytics. + +icon: gigamon-appint.png + +dashboards: + - gigamon-appinsights + +installPlans: + - third-party-gigamon-appinsights + +dataSourceIds: + - gigamon-appinsights diff --git a/quickstarts/gigamon-appinsights/gigamon-appint.png b/quickstarts/gigamon-appinsights/gigamon-appint.png new file mode 100755 index 0000000000..900f571a6c Binary files /dev/null and b/quickstarts/gigamon-appinsights/gigamon-appint.png differ diff --git a/quickstarts/github-repo/config.yml b/quickstarts/github-repo/config.yml new file mode 100644 index 0000000000..66cafda020 --- /dev/null +++ b/quickstarts/github-repo/config.yml @@ -0,0 +1,30 @@ +id: f9bee2fb-ce0a-472f-a32a-64de90a6c1c3 + +slug: github-repo +title: GitHub Repo +description: |- + ## What is GitHub? + + GitHub is where over 100 million developers shape the future of software, together. + + Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and features, power your CI/CD and DevOps workflows, and secure code before you commit it. +summary: | + Monitor GitHub Repositories in New Relic by adding Headerless Log API endpoint as a GitHub Repository Webhook. +level: Community +authors: + - New Relic + - Peter Nguyen +keywords: + - github + - repository + - workflows + - pipelines +dashboards: + - github-repo +documentation: + - name: Send Logs to New Relic API Endpoint + url: https://docs.newrelic.com/docs/logs/log-api/introduction-log-api/ + description: Generate your log API endpoint in New Relic with your Api-Key as the query parameter. +icon: logo.png +website: https://www.newrelic.com + diff --git a/quickstarts/github-repo/logo.png b/quickstarts/github-repo/logo.png new file mode 100644 index 0000000000..f1f2899acd Binary files /dev/null and b/quickstarts/github-repo/logo.png differ diff --git a/quickstarts/gitlab/config.yml b/quickstarts/gitlab/config.yml index 716718a338..aaa5663ce5 100644 --- a/quickstarts/gitlab/config.yml +++ b/quickstarts/gitlab/config.yml @@ -30,3 +30,4 @@ documentation: description: Monitor your Gitlab pipelines with New Relic, making it easier to get observability into your CI/CD pipeline health and performance. icon: logo.svg website: https://www.newrelic.com + diff --git a/quickstarts/golden-signals-dashboard/config.yml b/quickstarts/golden-signals-dashboard/config.yml new file mode 100644 index 0000000000..6b9e0bae5d --- /dev/null +++ b/quickstarts/golden-signals-dashboard/config.yml @@ -0,0 +1,79 @@ +id: b9e3fc9f-c54a-4e30-8f2a-0319a07f7ac3 +# Sets the URL name of the quickstart on public I/O (required) +slug: golden-signals-dashboard-for-new-relic + +# Displayed in the UI (required) +title: Golden signals for New Relic + +# Long-form description of the quickstart (required) +description: | + Dashboard to monitor golden signals across APM, Infrastructure, Synthetics, Browser and Mobile with template variables to dynamically filter widgets. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + Monitoring the golden signals allows you to quickly see an overview of the health of your application. This dashboard lets you monitor golden signals across APM, Infrastructure, Synthetics, Browser and Mobile with template variables to dynamically filter widgets. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Zahra Siddiqa + +# Keywords for filtering / searching criteria in the UI +keywords: + - golden signals + - monitoring + - latency + - traffic + - errors + - error rates + - availability + +# # Reference to alert policies to be included in this quickstart +# alertPolicies: +# - condition-a +# - condition-b + +# Reference to dashboards to be included in this quickstart +dashboards: + - golden-signals-dashboard + +# Documentation references +documentation: + - name: Install APM agent + url: https://docs.newrelic.com/introduction-apm/ + description: Monitor everything from the hundreds of dependencies of a modern stack down to simple web-transaction times and throughput of an app. + + - name: Install Infrastructure agent + url: https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent/ + description: New Relic's infrastructure monitoring agent collects data about your hosts. It also reports data from some third party services, if enabled, and also log data. + + - name: Set up Synthetic monitor + url: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/ + description: Synthetic monitoring helps you proactively catch and resolve issues before they affect your customers, all without an installation. + + - name: Install Browser agent + url: https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent/ + description: The browser agent is a snippet of JavaScript code that monitors the performance of your app/site. + + - name: Install Mobile agent + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ + description: New Relic's mobile monitoring capabilities provide deeper visibility into the performance and crash troubleshooting of your Android, iOS, or hybrid mobile applications. + +dataSourceIds: + - golang + - microsoftnet + - java + - node-js + - php + - python + - ruby + - new-relic-infrastructure-agent + - new-relic-synthetics + - new-relic-browser + - mobile-getting-started + +# Content / Design +icon: logo.svg +website: https://www.newrelic.com diff --git a/quickstarts/golden-signals-dashboard/logo.svg b/quickstarts/golden-signals-dashboard/logo.svg new file mode 100644 index 0000000000..565d92d4e7 --- /dev/null +++ b/quickstarts/golden-signals-dashboard/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/gridgain/config.yml b/quickstarts/gridgain/config.yml new file mode 100644 index 0000000000..f2d16d5ba0 --- /dev/null +++ b/quickstarts/gridgain/config.yml @@ -0,0 +1,67 @@ +id: 6c88da16-0dbf-4159-9313-0ccfc48ffbaf +slug: gridgain +title: GridGain + +description: | + # What is GridGain? + + GridGain is a unified real-time data platform that is designed to + tackle speed and scale challenges. It is built on Apache Ignite, a top + 5 ASF project. + + ## Getting started + + GridGain exports extensive metrics and this quickstart allows you to + view them in New Relic. The same steps should also work with Apache + Ignite. To get started with GridGain, please check out [the + documentation](https://www.gridgain.com/docs/latest/). + + ## Dashboard + + This quickstart includes a sample dashboard. Note that the widgets + included are reasonable defaults but will likely need to be updated + depending on your configuration (persistence), use case (compute, + caching) and product (snapshots, data center replication). + + ## More information + + More information can be found in [our + documentation](https://docs.gridgain.com). Download GridGain + [here](https://www.gridgain.com/download) or launch your own cluster + in the cloud [here](https://portal.gridgain.com). + +summary: | + A quickstart for monitoring GridGain and Apache Ignite clusters. + +level: Community + +authors: + - GridGain + - Stephen Darlington + +keywords: + - database + - java + - cluster + - sql + - cache + - compute-grid + - apache-ignite + - ignite + +dataSourceIds: + - gridgain-data-source + +dashboards: + - gridgain + +documentation: + - name: GridGain documentation + url: https://www.gridgain.com/docs/latest/ + description: Getting started with GridGain. + - name: GridGain integration document + url: https://www.gridgain.com/docs/tutorials/new-relic/new-relic-tutorial + description: Capture the logs and metrics from GridGain in New Relic. + +icon: gridgain.svg +website: https://www.gridgain.com/ diff --git a/quickstarts/gridgain/gridgain.svg b/quickstarts/gridgain/gridgain.svg new file mode 100644 index 0000000000..7376a3634a --- /dev/null +++ b/quickstarts/gridgain/gridgain.svg @@ -0,0 +1,3 @@ + + + diff --git a/quickstarts/harbor/config.yml b/quickstarts/harbor/config.yml index 62faa36705..243e81547a 100644 --- a/quickstarts/harbor/config.yml +++ b/quickstarts/harbor/config.yml @@ -20,6 +20,7 @@ keywords: - remote-write - promql - grafana + - featured documentation: - name: Prometheus Installation Docs url: https://docs.newrelic.com/docs/infrastructure/prometheus-integrations/get-started/send-prometheus-metric-data-new-relic/ diff --git a/quickstarts/hivemq/config.yml b/quickstarts/hivemq/config.yml new file mode 100644 index 0000000000..5c4b73191e --- /dev/null +++ b/quickstarts/hivemq/config.yml @@ -0,0 +1,58 @@ +id: e3494e28-dcfb-4df2-a3d8-c7cca67525e0 +# Name of the quickstart +slug: hivemq + +# Title of the quickstart +title: HiveMQ (Prometheus) + +# Description of the quickstart +description: | + ## HiveMQ Monitoring + + HiveMQ's MQTT broker makes it easy to move data to and from connected devices in an efficient, fast and reliable manner. It's metrics subsystem reports all relevant metrics to monitor your MQTT brokers. + + ### What’s Included? + + New Relic + HiveMQ quickstart - New Relic’s instant observability quickstart provides the metrics reported by HiveMQ metrics subsystem. + + Monitor HiveMQ with New Relic to quickly gain visibility into single node and clustered HiveMQ servers, including: cache rates, message statistics, system and JVM metrics and more. + + ### Value of HiveMQ Quickstarts + + [HiveMQ monitoring with New Relic](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/) offers advanced features, including: + - Create custom queries and charts of your data integrations. + - Filter and analyze metrics in Infrastructure UI. + + New Relic’s instant observability quickstart helps developers reduce administrative overheads and accelerate time to value. As New Relic is SaaS-based, you also don’t have to worry about maintenance or onboarding. + +summary: | + New Relic's HiveMQ quickstart provides data from HiveMQ metrics subsystem. Install the quickstart to better understand utilization of resources and monitor performance issues. + +# Support level +level: New Relic + +# Design +icon: logo.svg +website: https://www.hivemq.com/ + +# Authors of the quickstart +authors: + - New Relic + +documentation: + - name: HiveMQ + description: | + MQTT broker that makes it easy to move data to and from connected devices. + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/ + +installPlans: + - hivemq-integration-docs + +dataSourceIds: + - hivemq-integration-docs + +keywords: + - infrastructure + - messaging + - queue + - prometheus diff --git a/quickstarts/hivemq/logo.svg b/quickstarts/hivemq/logo.svg new file mode 100644 index 0000000000..fe041eb022 --- /dev/null +++ b/quickstarts/hivemq/logo.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/hologres-matching-engine/config.yml b/quickstarts/hologres-matching-engine/config.yml new file mode 100644 index 0000000000..98365e9961 --- /dev/null +++ b/quickstarts/hologres-matching-engine/config.yml @@ -0,0 +1,57 @@ +id: 949f80ee-2167-4727-80ad-c1d43cb9520e +slug: hologres-matching-engine +description: | + ## Why should you monitor Hologres Matching Engine? + + Monitor your vector searches on Hologres Matching Engine to get visibility on what you send to Hologres Matching Engine, responses retrieved from Hologres Matching Engine, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + New Relic Hologres Matching Engine quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Hologres Matching Engine app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor the performance and quality of your vector searches with New Relic Hologres Matching Engine quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Hologres Matching Engine +documentation: + - name: Hologres Matching Engine integration documentation + description: | + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - hologres + - hologres matching engine + - graph processing engine + - distributed graph processing + - real-time graph processing + - real time graph processing + - vector search + - nearest-neighbor search + - nearest neighbor search + - machine learning + - artificial intelligence + - mlops + - NR1_addData + - data science + - big data + - AI + - ML +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/hologres-matching-engine/logo.png b/quickstarts/hologres-matching-engine/logo.png new file mode 100644 index 0000000000..a6ca898501 Binary files /dev/null and b/quickstarts/hologres-matching-engine/logo.png differ diff --git a/quickstarts/hugging-face/config.yml b/quickstarts/hugging-face/config.yml new file mode 100644 index 0000000000..3b1da1aa93 --- /dev/null +++ b/quickstarts/hugging-face/config.yml @@ -0,0 +1,48 @@ +id: 4debe1f5-1662-4bc9-aefa-ebcaea8575cb +slug: hugging-face +description: | + ## Why should you monitor your usage of Hugging Face? + Monitor your application powered by Hugging Face language models to ensure, get visibility to what you send to Hugging Face, responses received from Hugging Face, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Hugging Face monitoring quickstart + Our Hugging Face quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Hugging Face quickstart? + New Relic Hugging Face monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Hugging Face usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Hugging Face usage with New Relic Hugging Face quickstart. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: Hugging Face +documentation: + - name: Hugging Face integration documentation + description: | + Implement monitoring and instrumentation for your Hugging Face app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - hugging face + - mlops + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - generative ai + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/hugging-face/logo.png b/quickstarts/hugging-face/logo.png new file mode 100644 index 0000000000..e7ee81c6a9 Binary files /dev/null and b/quickstarts/hugging-face/logo.png differ diff --git a/quickstarts/ibmmq/config.yml b/quickstarts/ibmmq/config.yml index 1e70957511..aa24ea72ff 100644 --- a/quickstarts/ibmmq/config.yml +++ b/quickstarts/ibmmq/config.yml @@ -47,3 +47,4 @@ dataSourceIds: - ibmmq-integration-docs dashboards: - ibmmq + diff --git a/quickstarts/java/rmi/config.yml b/quickstarts/java/rmi/config.yml new file mode 100644 index 0000000000..6261bb4dbb --- /dev/null +++ b/quickstarts/java/rmi/config.yml @@ -0,0 +1,49 @@ +id: 2c586cea-b68d-46bb-9a75-99bdfa40b5cf +slug: newrelic-java-rmi +title: RMI Java Agent Extension +description: | + # What is RMI? + RMI stands for Remote Method Invocation. It is a Java-based application programming interface (API) that allows objects + in one Java virtual machine (JVM) to invoke methods on objects located in another JVM, whether they are on the same machine + or on a remote system. RMI enables distributed computing by providing a mechanism for objects to interact and communicate with + each other across different JVMs. + + With RMI, a client program can access and invoke methods on remote objects as if they were local objects, abstracting the complexities + of network communication and serialization. RMI handles the low-level details of communication, such as marshaling and unmarshaling parameters + and results, so developers can focus on writing the application logic. + + RMI relies on Java's object serialization mechanism to pass objects between JVMs. It allows objects to be passed as parameters, return values, or exceptions in method invocations, enabling distributed computing scenarios such as remote method calls, distributed object models, and distributed event notification systems. + +summary: | + RMI Java agent extension that effectively links client-initiated calls with remote server calls, facilitating the monitoring of these interactions. + Once deployed, the client and server transactions will be tied together with Distributed Tracing. + +level: Community + +keywords: + - nrlabs + - nrlabs-data + - apm + - java + - rmi + - remote method invocation +icon: logo.svg +authors: + - New Relic Labs +dataSourceIds: + - newrelic-java-rmi +documentation: + - name: Java agent extension for RMI + description: | + Provides instrumentation for the Java RMI on both the server and client side. + url: https://github.com/newrelic/newrelic-java-rmi/tree/main#installation + + - name: Java RMI Example + description: | + Provides a working sample for both RMI Client and Server + url: https://github.com/newrelic/newrelic-java-rmi/blob/main/docs/rmi_sample_userguide.pdf + +dashboards: + - java +alertPolicies: + - java diff --git a/quickstarts/java/rmi/logo.svg b/quickstarts/java/rmi/logo.svg new file mode 100644 index 0000000000..44dad2a2ed --- /dev/null +++ b/quickstarts/java/rmi/logo.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/java/websphere-liberty-profile/config.yml b/quickstarts/java/websphere-liberty-profile/config.yml index 35165ada8e..c03ff9cddf 100644 --- a/quickstarts/java/websphere-liberty-profile/config.yml +++ b/quickstarts/java/websphere-liberty-profile/config.yml @@ -1,6 +1,6 @@ id: 24dd2335-8e24-4923-9560-67612b409762 slug: websphere-liberty-profile -title: Websphere Liberty Profile +title: IBM Websphere Liberty Profile description: | ## Monitoring WebSphere Liberty Profile @@ -27,7 +27,7 @@ description: | Install the New Relic WebSphere Liberty Profile quickstart to effectively monitor Liberty Profile key performance indicators with our Java agent. This quickstart is the key to making sure that you detect and respond to any incident quickly and efficiently. summary: | Monitoring WebSphere Liberty Profile is critical to ensure that you detect incidents and respond to them quickly. Download the New Relic quickstart to track WebSphere Liberty Profile performance metrics. -icon: logo.svg +icon: logo.png level: Community authors: - New Relic @@ -40,6 +40,10 @@ dataSourceIds: - java documentation: - name: Installation Docs - url: https://docs.newrelic.com/docs/agents/java-agent/installation/include-java-agent-jvm-argument/#Installing_on_WebSphere_Liberty_Profile + url: https://docs.newrelic.com/install/java/?deployment=appServer&framework=websphere description: | Installation instructions for the Java agent and configuration options for Websphere Liberty Profile +dashboards: + - websphere-liberty-profile +alertPolicies: + - websphere-liberty-profile \ No newline at end of file diff --git a/quickstarts/java/websphere-liberty-profile/logo.png b/quickstarts/java/websphere-liberty-profile/logo.png new file mode 100644 index 0000000000..cfe333e493 Binary files /dev/null and b/quickstarts/java/websphere-liberty-profile/logo.png differ diff --git a/quickstarts/java/websphere-liberty-profile/logo.svg b/quickstarts/java/websphere-liberty-profile/logo.svg deleted file mode 100644 index b66e072186..0000000000 --- a/quickstarts/java/websphere-liberty-profile/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/jfrog-platform/config.yml b/quickstarts/jfrog-platform/config.yml index 1b703caddf..cb48405615 100644 --- a/quickstarts/jfrog-platform/config.yml +++ b/quickstarts/jfrog-platform/config.yml @@ -33,11 +33,13 @@ keywords: - artifactory - xray - security + - featured + - NR1_addData documentation: - name: JFrog Observability Solution - url: https://github.com/jfrog/log-analytics-newrelic + url: https://jfrog.com/help/r/jfrog-platform-administration-documentation/new-relic description: | - JFrog Github documentation + JFrog integration documentation icon: icon.svg dashboards: - jfrog-artifactory diff --git a/quickstarts/jina-ai/config.yml b/quickstarts/jina-ai/config.yml new file mode 100644 index 0000000000..43b88143fb --- /dev/null +++ b/quickstarts/jina-ai/config.yml @@ -0,0 +1,56 @@ +id: 803470a2-15f2-4e64-92f4-e5d4c9563e6d +slug: jina-ai +description: | + ## Why should you monitor your usage of Jina AI? + Monitor your application powered by Jina AI language models to ensure, get visibility to what you send to Jina AI, responses received from Jina AI, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Jina AI monitoring quickstart + Our Jina AI quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Jina AI quickstart? + New Relic Jina AI monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Jina AI usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Jina AI usage with New Relic Jina AI quickstart. +icon: logo.jpeg +level: + - New Relic +authors: + - New Relic +title: Jina AI +documentation: + - name: Jina AI integration documentation + description: | + Implement monitoring and instrumentation for your Jina AI app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - jina-ai + - large language model + - natural language processing + - nlp + - machine learning + - artificial intelligence + - ai + - jina ai + - cloud native + - llm + - llm chains + - generative ai + - jinaai + - multimodal ai + - neural search + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/jina-ai/logo.jpeg b/quickstarts/jina-ai/logo.jpeg new file mode 100644 index 0000000000..4c313f647d Binary files /dev/null and b/quickstarts/jina-ai/logo.jpeg differ diff --git a/quickstarts/jmeter/config.yml b/quickstarts/jmeter/config.yml new file mode 100644 index 0000000000..9fc3af9fc9 --- /dev/null +++ b/quickstarts/jmeter/config.yml @@ -0,0 +1,67 @@ +id: 18db3f9a-9033-4ff2-a2da-537409a500ac +# Sets the URL name of the quickstart on public I/O (required) +slug: jmeter + +# Displayed in the UI (required) +title: JMeter + +# Long-form description of the quickstart (required) +description: | + ## Quickstart for Jmeter Test Monitoring + Apache JMeter is open source software, a Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. + The link to JMeter plug-in provided enables you to send test results to New Relic. + This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. + The JMeter quickstart includes: + ## a dashboard + where users can easily monitor: + - Thread Group Details + - HTTP Responses + - Summary Report + - View Results in Table + ## alert conditions + where users are notified on: + - Test Error Rate + - 90th Percentile Latency + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Munwar Mohammed + +# Keywords for filtering / searching criteria in the UI +keywords: + - jmeter + - performance + - load + - stress + - functional + - testing web application + +# Reference to dashboards to be included in this quickstart +dashboards: + - jmeter + +alertPolicies: + - jmeter + +dataSourceIds: + - jmeter + +# Documentation references +documentation: + - name: Set up JMeter to send data to New Relic + url: https://github.com/darrensmithwtc/jmeter-backend-newrelic + description: Information on how to setup JMeter plug-in to send test results to New Relic + - name: Learn more about Apache JMeter + url: https://jmeter.apache.org/ + description: Information on how Apache JMeter can be utilized to performance test dynamic web applications + +# Content / Design +icon: logo.png +website: https://jmeter.apache.org/ \ No newline at end of file diff --git a/quickstarts/jmeter/logo.png b/quickstarts/jmeter/logo.png new file mode 100644 index 0000000000..d30a4a9ee6 Binary files /dev/null and b/quickstarts/jmeter/logo.png differ diff --git a/quickstarts/k6/config.yml b/quickstarts/k6/config.yml new file mode 100644 index 0000000000..fc8a8fbd1e --- /dev/null +++ b/quickstarts/k6/config.yml @@ -0,0 +1,50 @@ +id: b9ef4c73-0875-43dd-b9d5-4c3bb74632ea +slug: k6 + +title: k6 + +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 NR StatsD integration and including NR 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.png + +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/new-relic/ + description: Information on how to set up k6 to send data to New Relic, including all configuration options from k6. + - name: Learn more about the New Relic StatsD integration + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2/ + description: The StatsD integration is required to send k6 data to New Relic. + +dataSourceIds: + - k6 + +dashboards: + - k6 \ No newline at end of file diff --git a/quickstarts/k6/logo.png b/quickstarts/k6/logo.png new file mode 100644 index 0000000000..ddc4841123 Binary files /dev/null and b/quickstarts/k6/logo.png differ diff --git a/quickstarts/kubernetes/azure-kubernetes-service/config.yml b/quickstarts/kubernetes/azure-kubernetes-service/config.yml index 4a2b57a6db..0639d34035 100644 --- a/quickstarts/kubernetes/azure-kubernetes-service/config.yml +++ b/quickstarts/kubernetes/azure-kubernetes-service/config.yml @@ -26,6 +26,7 @@ keywords: - aks installPlans: - kubernetes-install - +dataSourceIds: + - kubernetes dashboards: - - aks \ No newline at end of file + - aks diff --git a/quickstarts/kubernetes/google-kubernetes-engine/config.yml b/quickstarts/kubernetes/google-kubernetes-engine/config.yml index 831f1d131e..d214f1fa26 100644 --- a/quickstarts/kubernetes/google-kubernetes-engine/config.yml +++ b/quickstarts/kubernetes/google-kubernetes-engine/config.yml @@ -26,8 +26,9 @@ keywords: - google installPlans: - kubernetes-install - +dataSourceIds: + - kubernetes dashboards: - google-kubernetes-engine alertPolicies: - - google-kubernetes-engine \ No newline at end of file + - google-kubernetes-engine diff --git a/quickstarts/lacework/config.yml b/quickstarts/lacework/config.yml index 0f7ccbdab4..46253d17fd 100644 --- a/quickstarts/lacework/config.yml +++ b/quickstarts/lacework/config.yml @@ -2,11 +2,16 @@ id: 8a7a7220-e8ec-4959-b35d-0fe082be8039 slug: lacework title: Lacework summary: Integrate Lacework's security events into the New Relic platform -description: |- +description: | + ## Lacework introduction + Lacework is a comprehensive cloud security platform. We aim to turn security into a data problem and replace the frictionful processes for things like breach investigations or achieving compliance standards with simple, contextualized workflows. + Technically, our approach is that we replace the traditional 'rules' based mentality that requires you to predict attacker patterns ahead of time with a fully ML based approach. We baseline what normal user, application and network behaviors look like across your workloads and cloud accounts automatically and then only alert you to deviations from the norm. This significantly reduces the amount of toil in setting up and maintaining our solution, but also drastically improves the efficacy and amount of security alerts you will receive. - The following Quickstart brings the curated security alerts for misconfigurations and anomalous security behaviors into the New Relic platform so you can easily triage against your wealth of observability data or easily transition from monitoring to security investigations from a single interface! - If you encounter any issues, have feedback or would like more details on how to get started, please head over to support.lacework.com or send an email to adam.larson@lacework.net! + + This integration with Lacework and New Relic brings the curated security alerts for misconfigurations and anomalous security behaviors into the New Relic platform so you can easily triage against your wealth of observability data or easily transition from monitoring to security investigations from a single interface! + + For more information/support, head over to [support.lacework.com](https://support.lacework.com/)! icon: logo.jpg level: Verified website: https://lacework.com/ @@ -14,8 +19,8 @@ authors: - Lacework, Inc documentation: - name: Lacework installation docs - description: The only prerequisite is to setup the New Relic integration within the Lacework UI. Details on how to do that can be found below! - url: https://support.lacework.com/hc/en-us/articles/360005842354-New-Relic + description: Setup the New Relic integration within the Lacework UI. + url: https://docs.lacework.net/onboarding/new-relic keywords: - security - compliance diff --git a/quickstarts/lambdatest/config.yml b/quickstarts/lambdatest/config.yml new file mode 100644 index 0000000000..4547bd6d62 --- /dev/null +++ b/quickstarts/lambdatest/config.yml @@ -0,0 +1,63 @@ +id: d05d8fc5-b6cb-46aa-a5d8-06ef5d6fb0af +slug: lambdatest +title: LambdaTest +description: | + ## About LambdaTest + ​ + LambdaTest is an AI-powered test orchestration and execution platform to run manual and automated tests at scale. With LambdaTest, developers and testers can test their websites and mobile applications across 3000+ real browsers, devices, and operating systems. + + ## About LambdaTest and New Relic Integration + + The integration of LambdaTest with New Relic offers a seamless experience for users aiming to optimize and monitor their stats during automated test execution. By bridging the gap between testing and performance monitoring, this integration brings forward an out-of-the-box dashboard that enables users to visualize and understand their testing metrics in real-time, set against the backdrop of broader application performance insights offered by New Relic. + + ## LambdaTest Dashboard and Visualization + + Upon successful integration, the LambdaTest Dashboard in New Relic becomes a hub of insights. This tailored interface showcases key testing metrics, offering a comprehensive perspective on your automated testing endeavors. Gain a high-level view of test executions, failures, and compatibility issues, ensuring you're always in the know about the quality of your web or mobile applications. + + ### Test Overview + + - Holistic view of automated testing activities. + - Displays key metrics such as test execution counts, pass rates, durations, etc. + - Insights on website compatibility across different browsers and devices. + - Immediate understanding of application's cross-browser functionality. + + ### Test Errors Overview + + - Focuses on discrepancies and anomalies in tests. + - Deep insights into test failures. + - Highlights the nature and frequency of errors. + - Provides information on environments where errors occurred. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. + +summary: | + LambdaTest offers a streamlined entry into automated testing. With just a few clicks, users can instantly set up, monitor, and evaluate their application's performance. +level: Community +authors: + - Prateek Saini + - LambdaTest +keywords: + - lambdatest + - logs + - newrelic partner + - devops + - cicd + - testing + - cross-browser + - featured + - NR1_addData + +documentation: + - name: LambdaTest installation docs + description: Setup the New Relic integration within the LambdaTest UI. + url: https://www.lambdatest.com/support/docs/new-relic-integration/ +# Reference to install plans located under /install directory +# Allows us to construct reusable "install plans" and just use their ID in the quickstart config + +dataSourceIds: + - lambdatest + +icon: logo.svg +website: https://www.lambdatest.com/ +dashboards: + - lambdatest \ No newline at end of file diff --git a/quickstarts/lambdatest/logo.svg b/quickstarts/lambdatest/logo.svg new file mode 100644 index 0000000000..03d0f6a2a2 --- /dev/null +++ b/quickstarts/lambdatest/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/quickstarts/lampy/config.yml b/quickstarts/lampy/config.yml new file mode 100644 index 0000000000..8a991cc4bf --- /dev/null +++ b/quickstarts/lampy/config.yml @@ -0,0 +1,66 @@ +id: e2564ad3-d9d0-4a84-b842-17295cd87a08 + +# Name of the quickstart +slug: lampy-stack + +# Title of the quickstart +title: LAMPy stack + +summary: | + With New Relic LAMPy integration, you can monitor your apps, infrastructure, web servers, databases, and databases, using Linux, Apache, MySQL, and Python agents. +# Description of the quickstart +description: | + ## Comprehensive LAMPy stack monitoring system: + LAMPy is a free, open source software stack used for building web sites and applications. LAMPy is an acronym for the operating system (Linux), the webserver (Apache), the database server (MySQL), and the programming language (Python). + ## What should you look for in a LAMPy dashboard? + - Linux: CPU usage, total memory usage, disk usage, etc + - Apache: Requests per second, bytes per second, workers status, etc + - MySQL: Operations per second, InnoDB read & writes, etc + - Python: Throughput, transaction overview, WSGI, etc + - In addition, you are free to create your own charts using the stored metrics + ## What’s included in the LAMPy quickstart? + This quickstart includes the following preconfigured observability solutions: + - Application metrics with your server’s primary health metrics, like CPU usage, memory, disk usage and more + - Multiple high-value alerts including latest number of questions per second, error transactions percentage, memory usage and CPU utilization + - Informative dashboards (Busy worker status, operations, InnoDB read and write, etc) + +# The logo of the quickstart +icon: logo.png + +# Support level +level: New Relic + +# Authors of the quickstart +authors: + - New Relic + - Ramana Reddy + +installPlans: + - apache-integration + - mysql-integration + - setup-python-agent + +keywords: + - LAMPy + - linux + - apache + - mysql + - python + +dashboards: + - lampy +alertPolicies: + - lampy + +documentation: + - name: LAMPy stack integration documentation + description: | + Integrate your LAMPy app and get your data into New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/lampy-integration/ + +dataSourceIds: + - linux + - apache + - mysql + - python diff --git a/quickstarts/lampy/logo.png b/quickstarts/lampy/logo.png new file mode 100644 index 0000000000..86890ba963 Binary files /dev/null and b/quickstarts/lampy/logo.png differ diff --git a/quickstarts/lancedb/config.yml b/quickstarts/lancedb/config.yml new file mode 100644 index 0000000000..fcd4fe5ce8 --- /dev/null +++ b/quickstarts/lancedb/config.yml @@ -0,0 +1,49 @@ +id: 2da598ad-ca3c-43a7-b6a1-cd4b7f3b7af6 +slug: lancedb +description: | + ## Why should you monitor your usage of LanceDB? + + Monitor your vector searches on LanceDB to get visibility on what you send to LanceDB, responses retrieved from LanceDB, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic LanceDB quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: LanceDB +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - lancedb + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/lancedb/logo.png b/quickstarts/lancedb/logo.png new file mode 100644 index 0000000000..24f091c06e Binary files /dev/null and b/quickstarts/lancedb/logo.png differ diff --git a/quickstarts/langchain-vectordb/config.yml b/quickstarts/langchain-vectordb/config.yml new file mode 100644 index 0000000000..ff269fc992 --- /dev/null +++ b/quickstarts/langchain-vectordb/config.yml @@ -0,0 +1,47 @@ +id: d40f70e5-c346-4c2e-9e5a-03a8f5485fc5 +slug: langchain-vectordb +description: | + ## Why should you monitor your usage of Vector Stores? + + Monitor your vector searches to get visibility on what you send to your vector store, responses retrieved from them, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic LangChain Vector Stores quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: LangChain Vector Stores +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/langchain-vectordb/logo.png b/quickstarts/langchain-vectordb/logo.png new file mode 100644 index 0000000000..240e64b569 Binary files /dev/null and b/quickstarts/langchain-vectordb/logo.png differ diff --git a/quickstarts/lighttpd/config.yml b/quickstarts/lighttpd/config.yml new file mode 100644 index 0000000000..0788ea8ce4 --- /dev/null +++ b/quickstarts/lighttpd/config.yml @@ -0,0 +1,40 @@ +id: c51dca70-14f4-4c1b-b0af-c2576b48f39f +slug: lighttpd +description: | + ## Comprehensive monitoring for your lighttpd server + + Lighttpd is an open-source web server designed for high-performance situations while staying standards-compliant, secure, and adaptable. + + ### Why monitor your lighttpd web server? + + Lighttpd monitoring provides important information to help you construct a complete picture of your web server's performance. This performance data includes uptime, network in bytes and packets, number of requests, and more. + + ### What’s included? + + Use New Relic to monitor your lighttpd server for immediate full-stack visibility, including: + - Alerts on things like busy servers, average number of requests and high memory usage. + - Dashboards to monitor crucial performance metrics such as uptime, busy servers, idle servers, networks, requests per second, and more. + +summary: | + With our Lighttpd integration you can monitor the performance of your web server. See your uptime, network in bytes and packets, number of connections, and more. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Lighttpd +dashboards: + - lighttpd +alertPolicies: + - lighttpd +documentation: + - name: Lighttpd + description: | + Use our infrastructure agent and Flex configuration to export lighttpd data to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/lighttpd-integration/ +dataSourceIds: + - lighttpd +keywords: + - Lighttpd + - web server + - infrastructure diff --git a/quickstarts/lighttpd/logo.png b/quickstarts/lighttpd/logo.png new file mode 100644 index 0000000000..4994b5278e Binary files /dev/null and b/quickstarts/lighttpd/logo.png differ diff --git a/quickstarts/loadmill/config.yml b/quickstarts/loadmill/config.yml new file mode 100644 index 0000000000..bf9e1772f4 --- /dev/null +++ b/quickstarts/loadmill/config.yml @@ -0,0 +1,44 @@ +id: 17b3235b-e501-47d4-8be9-2a32d23c8bb4 +# Sets the URL name of the quickstart on public I/O (required) +slug: loadmill + +# Displayed in the UI (required) +title: Loadmill Tests Results + +# Long-form description of the quickstart (required) +description: | + Monitor your Loadmill's test results. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + Monitor your Loadmill's test results + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Loadmill L.T.D + +# Keywords for filtering / searching criteria in the UI +keywords: + - tests + - loadmill + - API tests + - automation + - AI + - network + +# Reference to dashboards to be included in this quickstart +dashboards: + - loadmill + +# Documentation references +documentation: + - name: Loadmill Docs + url: https://docs.loadmill.com + description: Loadmill documentation + +# Content / Design +icon: logo.svg +website: https://www.loadmill.com diff --git a/quickstarts/loadmill/logo.svg b/quickstarts/loadmill/logo.svg new file mode 100644 index 0000000000..7c2c9f1829 --- /dev/null +++ b/quickstarts/loadmill/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/magento-business-insights/config.yml b/quickstarts/magento-business-insights/config.yml new file mode 100644 index 0000000000..3e7751c28b --- /dev/null +++ b/quickstarts/magento-business-insights/config.yml @@ -0,0 +1,51 @@ +id: f99bd30d-bac2-4b6d-a6cb-9b582b4d0dc5 +slug: magento-business-insights +description: | + ## Comprehensive monitoring quickstart for Magento Business Insights + Magento Business Insights involves tracking key performance indicators and other metrics in real-time, to ensure that the system is performing optimally and to identify potential issues before they become major problems. + ## Why monitor your Magento app? + Magento Ecommerce store monitoring is crucial to ensuring that the system is functioning smoothly and providing accurate data insights. + There are several reasons for this: + ### Revenue tracking: + Monitoring Magento Ecommerce store allows business owners and ecommerce managers to track revenue performance in real-time, ensuring that sales data is accurate and up-to-date. This information can be critical for making informed decisions around marketing and inventory management. + ### Downtime impact: + A business's revenue can be directly affected by downtime if customers are unable to purchase. Keeping track of downtime and lost revenue can help businesses quantify the impact of these issues. + ### Order tracking: + With Magento Business Insights, businesses can monitor order details such as total orders, average order value, and latest orders in order to get insight into their customer's buying behavior. + ### Customer details: + Analyzing customer details, such as new vs. returning customers and cart abandonment rates, can help businesses better understand their target market. + ### Funnel monitoring: + A funnel monitor tracks and analyzes the behavior of customers as they move through your e-commerce site. By monitoring the funnel, businesses can identify where customers are dropping off and where they need to improve the user experience to drive conversions. + ## What's included? + You'll have full-stack observability of your Magento app out-of-the-box: + - Alerts (Downtime (%), HTTP Errors and Largest Contentful Paint (LCP)) + - Dashboards (Executive summary, Customers, Orders, Funnel and more) + - Keep an eye on the performance and reliability of your Magento site + - Keep track of your transactions and bottom of the funnel on a desktop or mobile device +summary: | + Magento Business Insights quickstart offers a tailored business insights platform for Magento store owners and ecommerce managers. It facilitates real-time data extraction for informed decision-making. +icon: logo.svg +level: New Relic +authors: + - New Relic, Jyothi Surampudi +title: Magento Business Insights +documentation: + - name: Magento Business Insights documentation + description: | + Magento Business Insights Quickstart provides pre-configured packages for businesses to gain real-time insights. + url: https://docs.newrelic.com/docs/apm/agents/php-agent/other-integrations/magento-business-insights/ +keywords: + - magento business insights + - magento + - nri-flex +dataSourceIds: + - new-relic-infrastructure-agent + - php + - mysql + - apache + - elasticsearch + - new-relic-synthetics +dashboards: + - magento-business-insights +alertPolicies: + - magento-business-insights diff --git a/quickstarts/magento-business-insights/logo.svg b/quickstarts/magento-business-insights/logo.svg new file mode 100644 index 0000000000..6ca1841720 --- /dev/null +++ b/quickstarts/magento-business-insights/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/marqo/config.yml b/quickstarts/marqo/config.yml new file mode 100644 index 0000000000..a68ca252bd --- /dev/null +++ b/quickstarts/marqo/config.yml @@ -0,0 +1,49 @@ +id: cce580f3-7ba5-4519-9d7b-90f72d55440e +slug: marqo +description: | + ## Why should you monitor your usage of Marqo? + + Monitor your vector searches on Marqo to get visibility on what you send to Marqo, responses retrieved from Marqo, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Marqo quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: Marqo +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - marqo + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/marqo/logo.svg b/quickstarts/marqo/logo.svg new file mode 100644 index 0000000000..0b7c9fbdf2 --- /dev/null +++ b/quickstarts/marqo/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/mean/config.yml b/quickstarts/mean/config.yml new file mode 100644 index 0000000000..8d2157d021 --- /dev/null +++ b/quickstarts/mean/config.yml @@ -0,0 +1,51 @@ +id: 53147329-a8d4-47c3-ad53-6444a4610315 +slug: mean-stack +description: | + ## Comprehensive MEAN Stack Monitoring System + MEAN Stack is a popular open-source framework used to build dynamic web pages and online applications. It comprises of four essential components, namely MongoDB, ExpressJS, Angular, and NodeJS, all of which are based on JavaScript and JSON. These components integrate seamlessly and logically, making it easy to create web applications using this powerful technology stack. Each of the four components has a crucial role to play in the development of web applications. + + ## What should you look for in a MEAN dashboard? + - MongoDB metrics such as active connections, database details, and usage time + - For ExpressJS and NodeJS, there are a variety of metrics available, including web transactions, top ten errors, and memory usage + - Angular metrics include viewed urls, page views by city, ajax requests, etc. In addition, you may create your own chart based on the metrics collected + + ## What’s included in the MEAN quickstart? + Install this quickstart to setup preconfigured observability solutions: + - A number of high-value alerts are available including the average number of connections created, the FCP score and the memory usage + - Informative dashboards (the top 10 transactions, connections, database indexes, and more) + +summary: | + Monitor your apps using New Relic MEAN integration with Angular, MongoDB and NodeJS agents for browser, database and application monitoring. + +icon: logo.png +level: New Relic +authors: + - New Relic +title: MEAN Stack +documentation: + - name: MEAN Stack installation documentation + description: | + Integrate your MEAN app and get your data into New Relic. + url: >- + https://docs.newrelic.com/docs/browser/browser-integrations/mexn-integration/ +keywords: + - MEAN + - MongoDB + - database + - ExpressJS + - Angular + - NodeJS + - Fullstack + - MEAN Stack + - browser agent + - language agent + - featured + +dataSourceIds: + - node-js + - new-relic-browser + - mongodb +dashboards: + - mexn +alertPolicies: + - mexn diff --git a/quickstarts/mean/logo.png b/quickstarts/mean/logo.png new file mode 100644 index 0000000000..82e69a2029 Binary files /dev/null and b/quickstarts/mean/logo.png differ diff --git a/quickstarts/meilisearch/config.yml b/quickstarts/meilisearch/config.yml new file mode 100644 index 0000000000..7eeca529be --- /dev/null +++ b/quickstarts/meilisearch/config.yml @@ -0,0 +1,49 @@ +id: d8ad16aa-f4cf-45e1-9651-696ad775c3fa +slug: meilisearch +description: | + ## Why should you monitor your usage of Meilisearch? + + Monitor your vector searches on Meilisearch to get visibility on what you send to Meilisearch, responses retrieved from Meilisearch, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Meilisearch quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Meilisearch +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - meilisearch + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/meilisearch/logo.png b/quickstarts/meilisearch/logo.png new file mode 100644 index 0000000000..ab0386896a Binary files /dev/null and b/quickstarts/meilisearch/logo.png differ diff --git a/quickstarts/mern/config.yml b/quickstarts/mern/config.yml new file mode 100644 index 0000000000..c6ec9378ef --- /dev/null +++ b/quickstarts/mern/config.yml @@ -0,0 +1,60 @@ +id: ef98b152-9ccc-4e9b-8fc6-0d3b3215faeb +# Name of the quickstart +slug: mern-stack + +# Title of the quickstart +title: MERN Stack + +summary: | + Monitor your apps using New Relic MERN integration with ReactJS, MongoDB and NodeJS agents for browser, database and application monitoring. + +# Description of the quickstart +description: | + ## Comprehensive MERN Stack Monitoring System + MERN Stack is a widely used open-source framework that is based on JavaScript and is used to create dynamic web pages and online applications. The framework comprises of four components, namely MongoDB, ExpressJS, ReactJS, and NodeJS, all of which play a vital role in the development of web applications. These four technologies integrate seamlessly and logically, making it easy to build web applications using the MERN Stack. Each of these components is based on JavaScript and JSON, which makes the integration process simpler and more efficient. + + ## What should you look for in a MERN dashboard? + - MongoDB metrics such as active connections, database details, and usage time + - For ExpressJS and NodeJS, there are a variety of metrics available, including web transactions, top ten errors, and memory usage + - ReactJS metrics include page views by city, ajax requests, and viewed urls. Additionally, you can create your own chart based on the metrics collected + + ## What’s included in the MERN quickstart? + Install this quickstart to setup preconfigured observability solutions: + - A number of high-value alerts are available including the average number of connections created, the FCP score and the memory usage + - Informative dashboards (the top 10 transactions, connections, database indexes, and more) + +# The logo of the quickstart +icon: logo.png + +# Support level +level: New Relic + +# Authors of the quickstart +authors: + - New Relic + +keywords: + - MERN + - MongoDB + - ExpressJS + - ReactJS + - NodeJS + - Fullstack application monitoring + - browser agent + - language agent + - featured + +dashboards: + - mexn +alertPolicies: + - mexn +documentation: + - name: MERN Stack installation documentation + description: | + Integrate your MERN app and get your data into New Relic. + url: >- + https://docs.newrelic.com/docs/browser/browser-integrations/mexn-integration/ +dataSourceIds: + - node-js + - new-relic-browser + - mongodb \ No newline at end of file diff --git a/quickstarts/mern/logo.png b/quickstarts/mern/logo.png new file mode 100644 index 0000000000..6bdec32359 Binary files /dev/null and b/quickstarts/mern/logo.png differ diff --git a/quickstarts/mevn/config.yml b/quickstarts/mevn/config.yml new file mode 100644 index 0000000000..e204c73a75 --- /dev/null +++ b/quickstarts/mevn/config.yml @@ -0,0 +1,59 @@ +id: 28967bd0-fe5a-4482-9f1f-49ef042db9f1 + +# Name of the quickstart +slug: mevn-stack + +# Title of the quickstart +title: MEVN Stack + +summary: | + Monitor your apps using New Relic MEVN integration with Vue, MongoDB and NodeJS agents for browser, database and application monitoring. + +# Description of the quickstart +description: | + ## Comprehensive MEVN Stack Monitoring System + MEVN stack is a popular Javascript software stack that has become very popular in recent times to build powerful web applications. It comprises four essential components, namely MongoDB, ExpressJS, Vue, and NodeJS. These components integrate seamlessly and logically, making it easy to create web applications using this powerful technology stack. Each of these four components has a crucial role to play in the development of web applications. + + ## What’s included in the MEVN quickstart? + Install this quickstart to setup preconfigured observability solutions: + - MongoDB metrics such as active connections, database details, and usage time + - For ExpressJS and NodeJS, there are a variety of metrics available, including web transactions, the top ten errors, and memory usage + - Vue metrics include viewed urls, page views by city, AJAX requests, etc. In addition, you may create your own chart based on the metrics collected + - A number of high-value alerts are available including the average number of connections created, the FCP score and memory usage + +# The logo of the quickstart +icon: logo.png + +# Support level +level: New Relic + +# Authors of the quickstart +authors: + - New Relic + - Ramana Reddy + +keywords: + - MEVN + - MongoDB + - ExpressJS + - Vue + - NodeJS + - Fullstack application monitoring + - browser agent + - language agent + - featured + +dashboards: + - mexn +alertPolicies: + - mexn +documentation: + - name: MEVN Stack installation documentation + description: | + Integrate your MEVN app and get your data into New Relic. + url: >- + https://docs.newrelic.com/docs/browser/browser-integrations/mexn-integration/ +dataSourceIds: + - node-js + - new-relic-browser + - mongodb diff --git a/quickstarts/mevn/logo.png b/quickstarts/mevn/logo.png new file mode 100644 index 0000000000..d0a599e422 Binary files /dev/null and b/quickstarts/mevn/logo.png differ diff --git a/quickstarts/milvus/config.yml b/quickstarts/milvus/config.yml new file mode 100644 index 0000000000..cedc41353d --- /dev/null +++ b/quickstarts/milvus/config.yml @@ -0,0 +1,49 @@ +id: 2270ea63-1da5-4503-ae43-140b0e5f4f77 +slug: milvus +description: | + ## Why should you monitor your usage of Milvus? + + Monitor your vector searches on Milvus to get visibility on what you send to Milvus, responses retrieved from Milvus, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Milvus quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Milvus +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - milvus + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/milvus/logo.png b/quickstarts/milvus/logo.png new file mode 100644 index 0000000000..bfc85e9b1f Binary files /dev/null and b/quickstarts/milvus/logo.png differ diff --git a/quickstarts/mlops/bring-your-own/config.yml b/quickstarts/mlops/bring-your-own/config.yml index f40f1d6202..97a4c0bdf5 100644 --- a/quickstarts/mlops/bring-your-own/config.yml +++ b/quickstarts/mlops/bring-your-own/config.yml @@ -24,3 +24,5 @@ documentation: description: Documentation on how to bring your own ML data icon: logo.svg website: https://github.com/newrelic-experimental/ml-performance-monitoring +alertPolicies: + - bring-your-own-data diff --git a/quickstarts/mlops/google-jax/config.yml b/quickstarts/mlops/google-jax/config.yml new file mode 100644 index 0000000000..ddc0619ae8 --- /dev/null +++ b/quickstarts/mlops/google-jax/config.yml @@ -0,0 +1,50 @@ +id: 07fbb1f8-28e8-494d-b795-495fa5d29587 +slug: google-jax +description: | + ## Why should you monitor Google JAX? + Google JAX is an open-source machine learning library widely employed to develop and train neural network-based deep learning models. New Relic's Google JAX quickstart performance monitoring provides out-of-the-box observability for Google JAX models. + By using the Google JAX quickstart, you will be able to: + ### Identify performance bottlenecks: + Enhance the efficiency of your Google JAX models by pinpointing and optimizing performance-heavy areas. + ### Ensure model accuracy: + Monitor the output of your models in real-time to detect and correct discrepancies, thereby ensuring the desired model performance. + ### Error identification and resolution: + Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your Google JAX models. + ## Comprehensive monitoring quickstart for Google JAX models + With New Relic's Google JAX quickstart, you can actively oversee the performance of your Google JAX models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. + + ## What’s included in the Google JAX quickstart? + New Relic Google JAX monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your Google JAX models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use New Relic quickstart to monitor and analyze your Google JAX models. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: Google JAX +documentation: + - name: Google JAX integration documentation + description: | + Implement monitoring and instrumentation for your Google JAX models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - google jax + - jax + - torch + - py torch + - python + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data diff --git a/quickstarts/mlops/google-jax/logo.png b/quickstarts/mlops/google-jax/logo.png new file mode 100644 index 0000000000..3a615d6584 Binary files /dev/null and b/quickstarts/mlops/google-jax/logo.png differ diff --git a/quickstarts/mlops/keras/config.yml b/quickstarts/mlops/keras/config.yml new file mode 100644 index 0000000000..e386009de2 --- /dev/null +++ b/quickstarts/mlops/keras/config.yml @@ -0,0 +1,47 @@ +id: 0f6fe78c-27fd-45aa-b375-7384f42eccf4 +slug: keras +description: | + ## Why monitor your Keras models during inference? + Once Keras models are trained and deployed, monitoring during the inference phase becomes paramount for various reasons: + ### Improve performance: + Inference, especially with large models, can be computationally intensive. Monitoring metrics like inference latency, memory usage, and GPU utilization can identify bottlenecks, allowing for necessary optimizations. + ### Model health: + Over time, the distribution of input data might change, a phenomenon known as data drift. Monitoring allows for the early detection of such scenarios, ensuring the model remains robust and accurate. + ### Data quality: + As models make predictions on new, unseen data, ensuring the quality and consistency of input data is vital. Monitoring can help detect anomalies or inconsistencies in real-time data that could adversely affect model output. + + ## Comprehensive monitoring for Keras models during inference + Properly monitoring your Keras models during the inference phase ensures optimal performance and sustained accuracy. Tracking key metrics will help maintain model health and swiftly detect potential issues. + + ## What’s included in the Keras monitoring quickstart? + The New Relic Keras monitoring quickstart offers specialized out-of-the-box reporting for inference: + - Real-time visibility: Gain insights into the performance of your Keras models, tracking metrics like inference latency and throughput in real-time. + - Data Integrity Checks: Ensure that the input data for inference aligns with expected formats and does not have any anomalies that could affect model outputs. + - Proactive alerts: Receive immediate notifications about critical issues affecting your Keras model's performance or reliability during inference. + - Resource Utilization: Monitor the computational resources (CPU, GPU, memory) being used during the inference process to optimize deployments and control costs. +summary: | + Boost the performance of your Keras models by integrating with New Relic, providing comprehensive monitoring and optimization for the entire inference process. +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Keras +documentation: + - name: Keras integration documentation + description: | + Implement monitoring and instrumentation for your Keras models, and ensure that your monitoring data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - keras + - natural language processing + - machine learning + - artificial intelligence + - mlops + - NR1_addData + - ai +alertPolicies: + - bring-your-own-data \ No newline at end of file diff --git a/quickstarts/mlops/keras/logo.png b/quickstarts/mlops/keras/logo.png new file mode 100644 index 0000000000..eab70a3041 Binary files /dev/null and b/quickstarts/mlops/keras/logo.png differ diff --git a/quickstarts/mlops/langchain/config.yml b/quickstarts/mlops/langchain/config.yml new file mode 100644 index 0000000000..361fec280f --- /dev/null +++ b/quickstarts/mlops/langchain/config.yml @@ -0,0 +1,55 @@ +id: 74d4643a-7e19-43fc-81eb-e272f7bf0882 +slug: langchain +description: | + ## Why monitor your LangChain application? + LangChain is a framework for developing applications powered by language models. By monitoring your LangChain app, we are providing you visibility on the chains, tools as well as inputs and outputs. + By using the LangChain quickstart, you will be able to: + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ## Comprehensive monitoring quickstart for your LangChain app + Our LangChain quickstart provides metrics including error rate, input & output, latency, queries, retrieved document content and lets you integrate with different LLM providers and vector stores. + + ## What’s included in this quickstart? + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + - LLM calls and chains + - Tools + - Vector searches + - Alerts for errors, requests per model, and response time +summary: | + Improve your LangChain app's performance with New Relic LangChain quickstart. +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Jyothi Surampudi +title: LangChain +documentation: + - name: LangChain integration documentation + description: | + Implement monitoring and instrumentation for your LangChain app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - langchain + - langchain ai + - lang + - chain + - ai + - lang chain + - large language model + - natural language processing + - machine learning + - artificial intelligence + - NR1_addData + - mlops +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/mlops/langchain/logo.png b/quickstarts/mlops/langchain/logo.png new file mode 100644 index 0000000000..240e64b569 Binary files /dev/null and b/quickstarts/mlops/langchain/logo.png differ diff --git a/quickstarts/mlops/lightgbm/config.yml b/quickstarts/mlops/lightgbm/config.yml new file mode 100644 index 0000000000..33467fb02f --- /dev/null +++ b/quickstarts/mlops/lightgbm/config.yml @@ -0,0 +1,49 @@ +id: 3928ad94-68db-4201-a732-fb851dc52547 +slug: lightgbm +description: | + ## Why should you monitor LightGBM? + LightGBM is an open-source machine learning library widely employed to develop and train neural network-based deep learning models. New Relic's LightGBM quickstart performance monitoring provides out-of-the-box observability for LightGBM models. + By using the LightGBM quickstart, you will be able to: + ### Identify performance bottlenecks: + Enhance the efficiency of your LightGBM models by pinpointing and optimizing performance-heavy areas. + ### Ensure model accuracy: + Monitor the output of your models in real-time to detect and correct discrepancies, thereby ensuring the desired model performance. + ### Error identification and resolution: + Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your LightGBM models. + ## Comprehensive monitoring quickstart for LightGBM models + With New Relic's LightGBM quickstart, you can actively oversee the performance of your LightGBM models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. + + ## What’s included in the LightGBM quickstart? + New Relic LightGBM monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your LightGBM models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use New Relic quickstart to monitor and analyze your LightGBM models. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: LightGBM +documentation: + - name: LightGBM integration documentation + description: | + Implement monitoring and instrumentation for your LightGBM models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - lightgbm + - ai + - torch + - py torch + - python + - large language model + - natural language processing + - machine learning + - artificial intelligence + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data \ No newline at end of file diff --git a/quickstarts/mlops/lightgbm/logo.png b/quickstarts/mlops/lightgbm/logo.png new file mode 100644 index 0000000000..48c9fcf5dc Binary files /dev/null and b/quickstarts/mlops/lightgbm/logo.png differ diff --git a/quickstarts/mlops/pytorch/config.yml b/quickstarts/mlops/pytorch/config.yml new file mode 100644 index 0000000000..a7b46a1a2f --- /dev/null +++ b/quickstarts/mlops/pytorch/config.yml @@ -0,0 +1,50 @@ +id: 23a25d27-cafd-410d-a04c-209ee1281ed9 +slug: pytorch +description: | + ## Why should you monitor PyTorch? + PyTorch is an open-source machine learning library widely employed to develop and train neural network-based deep learning models. New Relic's PyTorch quickstart performance monitoring provides out-of-the-box observability for PyTorch models. + By using the PyTorch quickstart, you will be able to: + ### Identify performance bottlenecks: + Enhance the efficiency of your PyTorch models by pinpointing and optimizing performance-heavy areas. + ### Ensure model accuracy: + Monitor the output of your models in real-time to detect and correct discrepancies, thereby ensuring the desired model performance. + ### Error identification and resolution: + Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your PyTorch models. + ## Comprehensive monitoring quickstart for PyTorch models + With New Relic's PyTorch quickstart, you can actively oversee the performance of your PyTorch models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. + + ## What’s included in the PyTorch quickstart? + New Relic PyTorch monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your PyTorch models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use New Relic quickstart to monitor and analyze your PyTorch models. +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Jyothi Surampudi +title: PyTorch +documentation: + - name: PyTorch integration documentation + description: | + Implement monitoring and instrumentation for your PyTorch models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - pytorch + - pytorch ai + - torch + - py torch + - python + - large language model + - natural language processing + - machine learning + - artificial intelligence + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data \ No newline at end of file diff --git a/quickstarts/mlops/pytorch/logo.png b/quickstarts/mlops/pytorch/logo.png new file mode 100644 index 0000000000..3acc6f0f3a Binary files /dev/null and b/quickstarts/mlops/pytorch/logo.png differ diff --git a/quickstarts/mlops/sagemaker/config.yml b/quickstarts/mlops/sagemaker/config.yml deleted file mode 100644 index 528bc36032..0000000000 --- a/quickstarts/mlops/sagemaker/config.yml +++ /dev/null @@ -1,29 +0,0 @@ -id: cee03961-f9e3-46e1-89fd-70a626cfe8ce -slug: mlops-sagemaker -title: Amazon SageMaker -description: | - Use this integration to quickly monitor your Amazon SageMaker metrics and objects (sent to AWS CloudWatch) and view them as entities and dashboards in New Relic One. -summary: | - By integrating Amazon SageMaker telemetry into New Relic One you will be able to get a view of the performance metrics, visualize sophisticated ML models and create a comprehensive monitoring dashboards in New Relic for your ML models and applications pipelines. -level: New Relic -authors: - - New Relic -keywords: - - mlops - - ml - - ai - - sagemaker - - amazon-sagemaker - - aws-sagemaker - - machine-learning -installPlans: - - third-party-amazon-sagemaker -dataSourceIds: - - amazon-sagemaker -documentation: - - name: Sagemaker Docs - url: https://docs.newrelic.com/docs/mlops/integrations/aws-sagemaker-mlops-integration/ - description: | - Documentation on the Amazon SageMaker integration -icon: logo.svg -website: https://aws.amazon.com/sagemaker/ diff --git a/quickstarts/mlops/sagemaker/logo.svg b/quickstarts/mlops/sagemaker/logo.svg deleted file mode 100644 index 542ea19dd3..0000000000 --- a/quickstarts/mlops/sagemaker/logo.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Icon-Architecture/64/Arch_AWS-SageMaker_64 - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/quickstarts/mlops/scikit-learn/config.yml b/quickstarts/mlops/scikit-learn/config.yml new file mode 100644 index 0000000000..ae9c3efed9 --- /dev/null +++ b/quickstarts/mlops/scikit-learn/config.yml @@ -0,0 +1,49 @@ +id: 078db030-c128-4f61-b24b-2080fafcec55 +slug: scikit-learn +description: | + ## The Importance of Monitoring scikit-learn Models in Production + scikit-learn is a widely-used machine learning library in the Python ecosystem. When deploying these models in production environments, continuous monitoring during inference becomes essential for several key reasons: + ### Performance optimization: + By keeping an eye on your models, you can detect and rectify performance bottlenecks, ensuring that predictions are made efficiently and promptly. + ### Early detection of issues: + Through vigilant monitoring, problems such as delayed inference times or unexpected outputs can be identified early on, allowing for swift interventions and minimal service disruption. + ### Assured Reliability: + Active monitoring guarantees that the scikit-learn models remain dependable, reinforcing user trust in the predictions and insights provided. + + ## Comprehensive monitoring quickstart for scikit-learn + By placing emphasis on real-time monitoring during the inference phase, you not only ensure the efficacy of your training but also guarantee that your scikit-learn models are robust and reliable when serving users. + + ## What’s included in the scikit-learn quickstart? + New Relic scikit-learn monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your scikit-learn models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use the New Relic scikit-learn quickstart to improve the performance of your scikit-learn. +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Jyothi Surampudi +title: scikit-learn +documentation: + - name: scikit-learn integration documentation + description: | + Implement monitoring and instrumentation for your scikit-learn, and ensure that your scikit-learn's data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - scikit-learn + - scikit-learn ai + - scitkit learn + - scikit + - large language model + - natural language processing + - machine learning + - artificial intelligence + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data \ No newline at end of file diff --git a/quickstarts/mlops/scikit-learn/logo.png b/quickstarts/mlops/scikit-learn/logo.png new file mode 100644 index 0000000000..ced1931f66 Binary files /dev/null and b/quickstarts/mlops/scikit-learn/logo.png differ diff --git a/quickstarts/mlops/tensorflow/config.yml b/quickstarts/mlops/tensorflow/config.yml new file mode 100644 index 0000000000..112b8986a8 --- /dev/null +++ b/quickstarts/mlops/tensorflow/config.yml @@ -0,0 +1,50 @@ +id: 0aac0df6-057e-48d4-890d-283b9b8ee190 +slug: tensorflow +description: | + ## Why should you monitor TensorFlow? + TensorFlow is an open-source machine learning library widely employed to develop and train neural network-based deep learning models. New Relic's TensorFlow quickstart performance monitoring provides out-of-the-box observability for TensorFlow models. + By using the TensorFlow quickstart, you will be able to: + ### Identify performance bottlenecks: + Enhance the efficiency of your TensorFlow models by pinpointing and optimizing performance-heavy areas. + ### Ensure model accuracy: + Monitor the output of your models in real-time to detect and correct discrepancies, thereby ensuring the desired model performance. + ### Error identification and resolution: + Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your TensorFlow models. + ## Comprehensive monitoring quickstart for TensorFlow models + With New Relic's TensorFlow quickstart, you can actively oversee the performance of your TensorFlow models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. + + ## What’s included in the TensorFlow quickstart? + New Relic TensorFlow monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your TensorFlow models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use New Relic quickstart to monitor and analyze your TensorFlow models. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: TensorFlow +documentation: + - name: TensorFlow integration documentation + description: | + Implement monitoring and instrumentation for your TensorFlow models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - tensorflow + - tensor flow + - torch + - py torch + - python + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data diff --git a/quickstarts/mlops/tensorflow/logo.png b/quickstarts/mlops/tensorflow/logo.png new file mode 100644 index 0000000000..8a1a9e6a5b Binary files /dev/null and b/quickstarts/mlops/tensorflow/logo.png differ diff --git a/quickstarts/mlops/xgboost/config.yml b/quickstarts/mlops/xgboost/config.yml new file mode 100644 index 0000000000..fca8e5dd00 --- /dev/null +++ b/quickstarts/mlops/xgboost/config.yml @@ -0,0 +1,49 @@ +id: 0764ea85-0021-4c47-969e-9d8ec2eb016d +slug: xgboost +description: | + ## Why should you monitor XGBoost? + XGBoost is an open-source machine learning library widely employed to develop and train neural network-based deep learning models. New Relic's XGBoost quickstart performance monitoring provides out-of-the-box observability for XGBoost models. + By using the XGBoost quickstart, you will be able to: + ### Identify performance bottlenecks: + Enhance the efficiency of your XGBoost models by pinpointing and optimizing performance-heavy areas. + ### Ensure model accuracy: + Monitor the output of your models in real-time to detect and correct discrepancies, thereby ensuring the desired model performance. + ### Error identification and resolution: + Active monitoring allows for quick detection and rectification of errors, ensuring the reliability and robustness of your XGBoost models. + ## Comprehensive monitoring quickstart for XGBoost models + With New Relic's XGBoost quickstart, you can actively oversee the performance of your XGBoost models, gaining insights to ensure they run effectively and efficiently, especially in real-world deep learning applications. + + ## What’s included in the XGBoost quickstart? + New Relic XGBoost monitoring quickstart provides quality out-of-the-box reporting: + - Obtain insights into how your XGBoost models are performing in real-time + - Alerts on model performance: Set up proactive notifications for any unusual behavior or degradation in the performance of your models + +summary: | + Use New Relic quickstart to monitor and analyze your XGBoost models. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: XGBoost +documentation: + - name: XGBoost integration documentation + description: | + Implement monitoring and instrumentation for your XGBoost models, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic-experimental/ml-performance-monitoring +dataSourceIds: + - bring-your-own-data +keywords: + - xgboost + - ai + - torch + - py torch + - python + - large language model + - natural language processing + - machine learning + - artificial intelligence + - mlops + - NR1_addData +alertPolicies: + - bring-your-own-data \ No newline at end of file diff --git a/quickstarts/mlops/xgboost/logo.png b/quickstarts/mlops/xgboost/logo.png new file mode 100644 index 0000000000..70014b9fe5 Binary files /dev/null and b/quickstarts/mlops/xgboost/logo.png differ diff --git a/quickstarts/mobile-crash-analytics/config.yml b/quickstarts/mobile-crash-analytics/config.yml index c5bc06d455..4dd49ab632 100644 --- a/quickstarts/mobile-crash-analytics/config.yml +++ b/quickstarts/mobile-crash-analytics/config.yml @@ -12,10 +12,11 @@ description: | summary: | Real time mobile application crash & network analysis to ensure ongoing reliability and performance. level: Community -icon: logo.png +icon: icon.png authors: - New Relic - Siddhartha Khare + - Ruairi Douglas keywords: - dashboard - mobile-crash @@ -33,9 +34,14 @@ documentation: - name: Adding a dashboard url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/#get-started description: How to add a dashboard to New Relic + - name: Mobile app Alerts + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/mobile-monitoring-alert-information/ + description: How to set up alerts for your mobile app dashboards: - mobile-crash-analytics installPlans: - mobile-dashboard-install dataSourceIds: - mobile-getting-started +alertPolicies: + - mobile-crash-analytics diff --git a/quickstarts/mobile-crash-analytics/icon.png b/quickstarts/mobile-crash-analytics/icon.png new file mode 100644 index 0000000000..06116828cd Binary files /dev/null and b/quickstarts/mobile-crash-analytics/icon.png differ diff --git a/quickstarts/mobile-crash-analytics/logo.png b/quickstarts/mobile-crash-analytics/logo.png deleted file mode 100644 index 0255bded29..0000000000 Binary files a/quickstarts/mobile-crash-analytics/logo.png and /dev/null differ diff --git a/quickstarts/mobile-network-performance/config.yml b/quickstarts/mobile-network-performance/config.yml new file mode 100644 index 0000000000..e233ac1ffe --- /dev/null +++ b/quickstarts/mobile-network-performance/config.yml @@ -0,0 +1,49 @@ +id: 617ced9b-e5ad-4759-bd42-7a4353a26e18 +slug: mobile-network-performance-quickstart + +title: Mobile Network Performance + +description: | + ## Network performance Quickstart + + Get deeper insights into the networking details from your mobile application perspective. + + Receive details about the HTTP errors, Network failure, HTTP Request data, type of network errors. + + Help page on the dashboard will guide you on how to enable data filtering. + +summary: | + Real time mobile application network analysis to ensure ongoing reliability and performance. + +level: Community +icon: logo.png + +authors: + - Siddhartha Khare + +keywords: + - dashboard + - mobile-crash + - mobile network + - mobile agent + - HTTP data + - android + - ios + - apps + +documentation: + - name: Instrument your mobile application with New Relic + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/introduction-mobile-monitoring/ + description: How to instrument your mobile application with New Relic + + - name: Adding a dashboard + url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/#get-started + description: How to add a dashboard to New Relic + +dashboards: + - mobile-network-performance + +installPlans: + - mobile-network-performance-install +dataSourceIds: + - mobile-network-performance-install diff --git a/quickstarts/mobile-network-performance/logo.png b/quickstarts/mobile-network-performance/logo.png new file mode 100644 index 0000000000..06116828cd Binary files /dev/null and b/quickstarts/mobile-network-performance/logo.png differ diff --git a/quickstarts/mobile/config.yml b/quickstarts/mobile/config.yml index 04def6754e..fe88037d4e 100644 --- a/quickstarts/mobile/config.yml +++ b/quickstarts/mobile/config.yml @@ -2,12 +2,14 @@ id: 4b785b4d-0689-4516-b9db-fbf7227e2e1c slug: mobile-quickstart title: Mobile dashboard quickstart description: | - A dashboard for basic mobile metrics such as active users, installs and error rate. + A dashboard for basic mobile metrics such as app launches and installs, version breakdowns and memory usage. summary: | - A dashboard for basic mobile metrics such as active users, installs and error rate. + A dashboard for basic mobile metrics such as app launches and installs, version breakdowns and memory usage. level: Community authors: - Víctor Pérez + - Ruairi Douglas + - Siddhartha Khare keywords: - dashboard - mobile @@ -22,6 +24,9 @@ documentation: - name: Adding a dashboard url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/#get-started description: How to add a dashboard to New Relic + - name: Mobile app Alerts + url: https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/get-started/mobile-monitoring-alert-information/ + description: How to set up alerts for your mobile app icon: icon.png dashboards: - mobile @@ -29,3 +34,6 @@ installPlans: - mobile-dashboard-install dataSourceIds: - mobile-getting-started +alertPolicies: + - mobile + - mobile-crash-analytics diff --git a/quickstarts/mongodb-atlas-vector-search/config.yml b/quickstarts/mongodb-atlas-vector-search/config.yml new file mode 100644 index 0000000000..b71c3480cf --- /dev/null +++ b/quickstarts/mongodb-atlas-vector-search/config.yml @@ -0,0 +1,58 @@ +id: 5f20a4e7-c554-44dd-8077-7f7d43456915 +slug: mongodb-atlas-vector-search +description: | + ## Why should you monitor your usage of MongoDB Atlas Vector Search? + Monitor your vector searches with MongoDB Atlas Vector Search to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of MongoDB Atlas Vector Search + Track the behavior of MongoDB Atlas Vector Search. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of MongoDB Atlas Vector Search: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into MongoDB Atlas Vector Search's performance and identify areas of improvement. + + ## Comprehensive monitoring quickstart for MongoDB Atlas Vector Search + MongoDB Atlas Vector Search quickstart provides metrics including Identify popular queries, sources, and content. + + ## What’s included in this quickstart? + New Relic MongoDB Atlas Vector Search monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your MongoDB Atlas Vector Search app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic MongoDB Atlas Vector Search quickstart +icon: logo.svg +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: MongoDB Atlas Vector Search +documentation: + - name: MongoDB Atlas Vector Search integration documentation + description: | + Implement monitoring and instrumentation for MongoDB Atlas Vector Search, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - mongodb + - atlas vector search + - mongodb atlas vector search + - vector search + - vector database + - cloud-based vector search + - managed vector search + - machine learning + - artificial intelligence + - AI + - ML + - NLP + - CV + - text search + - image search + - video search + - product search +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb diff --git a/quickstarts/mongodb-atlas-vector-search/logo.svg b/quickstarts/mongodb-atlas-vector-search/logo.svg new file mode 100644 index 0000000000..a8c8bd434d --- /dev/null +++ b/quickstarts/mongodb-atlas-vector-search/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/mongodb-prometheus/config.yml b/quickstarts/mongodb-prometheus/config.yml index 91164eac21..80c4d37129 100644 --- a/quickstarts/mongodb-prometheus/config.yml +++ b/quickstarts/mongodb-prometheus/config.yml @@ -6,7 +6,7 @@ description: | MongoDB enables the unlimited virtual scaling of applications. Utilities like mongostat and mongotop offer immediate results but fail to provide insights into trends in a highly graphical visual dashboard. MongoDB dashboards provide insights into key metrics like connections saturation, oplog size, query and document operations, databases and indexes size, collections and transactions latency, replica set and members status. - Avoid slow queries with proper indexes that impact performance. Instantly monitor your entire MongoDB database with our instant observability kit or the MongoDB free monitoring tool. + Avoid slow queries with proper indexes that impact performance. Instantly monitor your entire MongoDB database with our instant observability kit or the MongoDB free monitoring tool. The critical differences between MongoDB free monitoring and monitoring MongoDB with New Relic’s instant observability quickstart are efficiency, usability, scope, and cost. MongoDB free monitoring focuses on standalone instances and replica sets. Data collected on disk utilization, memory, and operation execution times are uploaded periodically. @@ -16,7 +16,7 @@ description: | New Relic + MongoDB quickstart - New Relic’s instant observability quickstart provides multiple metrics related to instances, replica sets, members, databases, and collections. New Relic’s MongoDB quickstart contains a dashboard with meaningful insights, including: - - Predefined dashboard filters by Cluster, databases, collections, replica sets, and members. + - Predefined dashboard filters by Instance, databases, collections, replica sets, and members. - Connections saturation, operations by type, databases objects and size, indexes size, commands latency and duration, replica set and member status, and more. Monitor MongoDB with New Relic to quickly gain improved distribution and increased visibility into real-time user and app response times, throughput and breakdown by component and layer, and long-term data trends over time. @@ -30,7 +30,7 @@ description: | New Relic’s instant observability quickstart helps developers reduce administrative overheads and accelerate time to value. As New Relic is SaaS-based, you also don’t have to worry about maintenance or onboarding. summary: | - New Relic's MongoDB quickstart provides insights including total commands, requests per second, and database size. Install the quickstart to better understand utilization of resources and monitor performance issues. + New Relic's MongoDB quickstart provides insights including total commands, requests per second, and database size. Install the quickstart to better understand the utilization of resources and monitor performance issues. level: New Relic icon: logo.jpeg website: https://www.mongodb.com/ @@ -41,8 +41,6 @@ documentation: description: | Open source, document-oriented database where you store data in JSON-like files with dynamic schemas. url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/mongodb/mongodb-monitoring-integration-new/ -installPlans: - - mongodb-prometheus-integration-docs dataSourceIds: - mongodb-prometheus-integration-docs keywords: @@ -50,5 +48,6 @@ keywords: - database - featured - prometheus + - mongodb dashboards: - mongodb-prometheus diff --git a/quickstarts/mongodb/config.yml b/quickstarts/mongodb/config.yml index bdd9506e3d..0d490e2176 100644 --- a/quickstarts/mongodb/config.yml +++ b/quickstarts/mongodb/config.yml @@ -48,6 +48,5 @@ dataSourceIds: keywords: - infrastructure - database - - featured dashboards: - mongodb diff --git a/quickstarts/mosaicml/config.yml b/quickstarts/mosaicml/config.yml new file mode 100644 index 0000000000..c99914f3e1 --- /dev/null +++ b/quickstarts/mosaicml/config.yml @@ -0,0 +1,50 @@ +id: 4b436d48-741d-4092-8be6-d05c836fb827 +slug: mosaicml +description: | + ## Why should you monitor your usage of MosaicML? + Monitor your application powered by MosaicML language models to ensure, get visibility to what you send to MosaicML, responses received from MosaicML, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your MosaicML app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive MosaicML monitoring quickstart + Our MosaicML quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the MosaicML quickstart? + New Relic MosaicML monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your MosaicML usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your MosaicML usage with New Relic MosaicML quickstart. +icon: logo.svg +level: + - New Relic +authors: + - New Relic +title: MosaicML +documentation: + - name: MosaicML integration documentation + description: | + Implement monitoring and instrumentation for your MosaicML app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - mosaicml + - mosaicml ai + - langchain + - mlops + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - generative ai + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/mosaicml/logo.svg b/quickstarts/mosaicml/logo.svg new file mode 100644 index 0000000000..8f6aadb955 --- /dev/null +++ b/quickstarts/mosaicml/logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/mux-video/config.yml b/quickstarts/mux-video/config.yml new file mode 100644 index 0000000000..6644d05378 --- /dev/null +++ b/quickstarts/mux-video/config.yml @@ -0,0 +1,34 @@ +id: 65bd74f6-cfb7-4fb9-83a3-38cea143d839 +slug: mux-video +description: | + ## What is Mux? + + Mux is video infrastructure for the internet. With just a few lines of code, companies can get real-time analytics at world-leading scale, and understand their streaming data, monitor user engagement, and improve the quality of experience for viewers. Mux is trusted by today’s largest broadcasters and leaders in streaming video to reach their goals with actionable insights. And together with Mux Video, developers can also build video into their products quickly, reliably, and at global scale. + Learn more at [mux.com/data](https://mux.com/data) + + + ### Get started! + + The Mux - New Relic integration utilizes Amazon Kinesis Firehose to get data into New Relic. + + Check out the [documentation](https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/) to learn more about setting up New Relic monitoring for of data from Mux. +summary: | + Mux is video infrastructure that makes it easy for development teams to get actionable data at industry-leading scale, and build video into their products quickly and reliably. +icon: logo.svg +level: New Relic +authors: + - New Relic (Joseph Counts) +title: Mux Video Analytics (via Amazon Firehose) +dataSourceIds: + - mux-video +dashboards: + - mux-video-analytics +documentation: + - name: Mux installation docs + description: Send Mux logs to New Relic using Amazon Firehose + url: https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/ +keywords: + - mux + - video + - streaming + - newrelic partner diff --git a/quickstarts/mux-video/logo.svg b/quickstarts/mux-video/logo.svg new file mode 100644 index 0000000000..8ef574f0c4 --- /dev/null +++ b/quickstarts/mux-video/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/quickstarts/myscale/config.yml b/quickstarts/myscale/config.yml new file mode 100644 index 0000000000..5bc53192de --- /dev/null +++ b/quickstarts/myscale/config.yml @@ -0,0 +1,63 @@ +id: 466de6fd-07b2-4ca8-a105-48b2ec7abeae +slug: myscale +description: | + ## Why should you monitor your usage of MyScale? + + Monitor your vector searches on MyScale to get visibility on what you send to MyScale, responses retrieved from MyScale, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + MyScale uses the LangChain Vector Database to connect to New Relic. This quickstart provides a variety of a pre-built dashboard, which will help you gain insights into the health and performance of your AI app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor the performance and quality of your vector searches with New Relic MyScale quickstart. +icon: logo.jpeg +level: New Relic +authors: + - New Relic +title: MyScale +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - myscale + - vector search + - vectordb + - vector db + - my scale + - myscale ai + - my scale ai + - conversational ai + - ai + - chatbots + - natural language processing + - nlp + - machine learning + - deep learning + - aiops + - devops + - cloud computing + - intelligent automation + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/myscale/logo.jpeg b/quickstarts/myscale/logo.jpeg new file mode 100644 index 0000000000..ef6e2871be Binary files /dev/null and b/quickstarts/myscale/logo.jpeg differ diff --git a/quickstarts/netlify/netlify-builds/config.yml b/quickstarts/netlify/netlify-builds/config.yml index 438b801c6e..e066d719a4 100644 --- a/quickstarts/netlify/netlify-builds/config.yml +++ b/quickstarts/netlify/netlify-builds/config.yml @@ -34,7 +34,6 @@ keywords: - continuous integration - continuous deployment - newrelic partner - - featured - NR1_addData - NR1_sys installPlans: diff --git a/quickstarts/netlify/netlify-logs/config.yml b/quickstarts/netlify/netlify-logs/config.yml index 2eea2efdbf..ebb8bf0a73 100644 --- a/quickstarts/netlify/netlify-logs/config.yml +++ b/quickstarts/netlify/netlify-logs/config.yml @@ -41,7 +41,6 @@ keywords: - jamstack - serverless functions - newrelic partner - - featured - NR1_addData - NR1_sys installPlans: diff --git a/quickstarts/nextcloud/config.yml b/quickstarts/nextcloud/config.yml index 9ffdb6c804..2510966259 100644 --- a/quickstarts/nextcloud/config.yml +++ b/quickstarts/nextcloud/config.yml @@ -2,22 +2,34 @@ id: fe6eb60f-faff-46f9-bf64-666a874ac855 slug: nextcloud description: | ## Comprehensive monitoring for your Nextcloud server - You can use New Relic's infrastructure agent to monitor the performance of your Nextcloud server in near real-time, correlate transactions as they move across the app environment, and identify issues to troubleshoot. - ### Why monitor your Nextcloud server? - Use the power of our infrastructure monitoring agent and the Prometheus open metric integration to control, monitor, and secure the data on your Nextcloud server. Use our dashboards to get a high-level overview of your server's performance. - - See a map of your server's processes to help you track down the source of your issues fast. - - Use our tools to help you maintain quick throughput and low latency on your server. - - Check the health of your database, application, and server Nextcloud dependencies. + Empower yourself with New Relic's cutting-edge Nextcloud monitoring system and gain complete control over the health of your platform. Stay ahead of the curve by monitoring your Nextcloud in real-time, connecting the dots between transactions across your application environment, and swiftly troubleshoot any issues that arise with ease. + + ## Why monitor Nextcloud? + + ### Solve login problems + Users may experience issues with logging into their Nextcloud accounts, such as incorrect login credentials or connection errors. + + ### Quickly identify performance issues + Nextcloud can become slow or unresponsive, especially if the server is running low on resources or if the network connection is slow. + + ### Identify storage limitations + Nextcloud can experience storage limitations if the server's disk space is running low, or if there are issues with the underlying storage infrastructure. + + ### Catch file syncing issues + Users may experience issues with file syncing, such as conflict errors or delayed updates, which can result in data loss or corruption. + ### What’s included? Use New Relic to monitor and observe your Nextcloud server to: - Be alerted on things like excessive heap memory usage and scrape errors. - Use dashboards to monitor crucial performance metrics, such as uptime, free space, total active users, and more. - Enable your Nextcloud admins to keep track of the status and operation of your server installations. + summary: | - The controllable self-hosted productivity platform. Monitor the server, check the condition of it and keep a watch on what happens to your files with our Infrastructure agent and Prometheus open metric integration. -icon: logo.png + Achieve greater control over your productivity with our self-hosted platform. Stay on top of the performance of your server and ensure the optimal functioning of your system by monitoring it through our Infrastructure agent and utilizing the powerful integration with Prometheus open metrics. + level: New Relic +icon: logo.png authors: - New Relic title: Nextcloud diff --git a/quickstarts/nr-logs-summary/config.yml b/quickstarts/nr-logs-summary/config.yml new file mode 100644 index 0000000000..e784f576f3 --- /dev/null +++ b/quickstarts/nr-logs-summary/config.yml @@ -0,0 +1,34 @@ +id: 32f0ff6d-4f4e-420e-a042-c0e71e5252fc +slug: nr-logs-summary +title: New Relic Logs Summary +description: | + This quickstart contains the following: + + A Log Summary Dashboard that includes tabs for: + - Estimates on overall ingestion by partition, along with ingest estimates based on various attributes for log type, source, etc. + - Breakdown of logs by well known attributes such as logtype, filePath, level, etc. + - APM Log details (logs received by our APM agents) + - Logging related NRIntegration errors + + A pre-built alert for Logging NrIntegration Errors + - An alert that fires when a Logging NrIntegration error is detected in a 5m window. + - Modify the threshold based on your environment / preferences. +summary: | + Get better insights into your logs. +level: New Relic +authors: + - Marcel Schlapfer +keywords: + - logs + - APM +dataSourceIds: + - guided-install +documentation: + - name: Get started with log management + url: https://docs.newrelic.com/docs/logs/get-started/get-started-log-management/ + description: Get started with log management +icon: logo.svg +dashboards: + - nr-logs-summary +alertPolicies: + - nr-logs-summary diff --git a/quickstarts/nr-logs-summary/logo.svg b/quickstarts/nr-logs-summary/logo.svg new file mode 100644 index 0000000000..ea60419c6b --- /dev/null +++ b/quickstarts/nr-logs-summary/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/quickstarts/nr-reports/config.yml b/quickstarts/nr-reports/config.yml new file mode 100644 index 0000000000..a681c55ad6 --- /dev/null +++ b/quickstarts/nr-reports/config.yml @@ -0,0 +1,62 @@ +id: 260438fc-9bbb-4f7a-8a03-930b5a0ae0bc +# Sets the URL name of the quickstart on public I/O (required) +slug: nr-reports + +# Displayed in the UI (required) +title: New Relic Reports + +# Long-form description of the quickstart (required) +description: | + New Relic Reports is an engine for automating the generation of custom reports + built using telemetry in the New Relic Telemetry Data Platform and the delivery + of those reports via a variety of channels. + + ## Installation + + Installing New Relic Reports is easy. First make sure you check + [the prerequisites](https://github.com/newrelic/nr-reports#prerequisites). + Then follow the [installed steps](https://github.com/newrelic/nr-reports#installation). + + ## Getting Started + + Check out [the Getting Started](https://github.com/newrelic/nr-reports#getting-started) + documentation to see an example of generating each type of report. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + New Relic Reports is a report generation and automation framework for New Relic. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Scott DeWitt + +# Keywords for filtering / searching criteria in the UI +keywords: + - report + - reports + - custom + +# Reference to alert policies to be included in this quickstart +alertPolicies: [] + +# Reference to dashboards to be included in this quickstart +dashboards: [] + +# Documentation references +documentation: + - name: Installation + url: https://github.com/newrelic/nr-reports#installation + description: Installing New Relic Reports + - name: Getting Started + url: https://github.com/newrelic/nr-reports#getting-started + description: A tutorial to get you started with New Relic Reports. + - name: New Relic Reports Repository + url: https://github.com/newrelic/nr-reports + description: The New Relic Reports repository. + +# Content / Design +icon: logo.svg +website: https://github.com/newrelic/nr-reports diff --git a/quickstarts/nr-reports/logo.svg b/quickstarts/nr-reports/logo.svg new file mode 100644 index 0000000000..ea60419c6b --- /dev/null +++ b/quickstarts/nr-reports/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/quickstarts/nuxtjs/config.yml b/quickstarts/nuxtjs/config.yml index 30cf225d37..96c71082be 100644 --- a/quickstarts/nuxtjs/config.yml +++ b/quickstarts/nuxtjs/config.yml @@ -40,8 +40,6 @@ documentation: description: | Integrate your NuxtJS app with our Vue browser monitoring and get your data into New Relic. url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/browser-monitoring-integrations/nuxt-js-integration/ -installPlans: - - nuxtjs dataSourceIds: - nuxtjs dashboards: diff --git a/quickstarts/nvidia-dcgm/config.yml b/quickstarts/nvidia-dcgm/config.yml new file mode 100644 index 0000000000..937e1bf5d2 --- /dev/null +++ b/quickstarts/nvidia-dcgm/config.yml @@ -0,0 +1,46 @@ +id: 7f86bb7f-0502-418b-aae7-4ad327964874 +slug: nvidia-dcgm +description: | + ## Why monitor NVIDIA DCGM? + monitoring NVIDIA DCGM is essential for maintaining the health and efficiency of your GPU infrastructure in a data center. It helps with performance optimization, fault detection, resource management, energy efficiency, and overall data center health, while also aiding in troubleshooting, security, and compliance. + + ## Comprehensive monitoring quickstart for NVIDIA DCGM + New Relic comprehensive monitoring of your GPU infrastructure in your data center. This setup will allow you to monitor GPU performance and health while leveraging the capabilities of New Relic for data visualization, alerting, and analysis. + + ## What’s included in this quickstart? + New Relic NVIDIA DCGM monitoring quickstart provides quality out-of-the-box reporting: + - Dashboards (power usage, GPU utilisation, clocks, etc) + - Alerts for NVIDIA DCGM (GPU temperature, Xid error) + + +summary: | + Monitor and analyze your NVIDIA DCGM infrastructure with New Relic. +icon: logo.png +level: New Relic +authors: + - New Relic + - Ramana Reddy +title: NVIDIA DCGM +documentation: + - name: NVIDIA DCGM integration documentation + description: | + Monitor and instrument your NVIDIA DCGM with New Relic to gain deep insights into your performance. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-dcgm-integration/ +keywords: + - NVIDIA DCGM + - AI Acceleration + - Machine Learning Acceleration + - GPU Management + - AI Management + - Machine Learning Management + - Deep Learning Performance + - AI Performance + - GPU Optimization + - AI Optimization + - NR1_addData +dataSourceIds: + - nvidia-dcgm +dashboards: + - nvidia-dcgm +alertPolicies: + - nvidia-dcgm \ No newline at end of file diff --git a/quickstarts/nvidia-dcgm/logo.png b/quickstarts/nvidia-dcgm/logo.png new file mode 100644 index 0000000000..36d7822f35 Binary files /dev/null and b/quickstarts/nvidia-dcgm/logo.png differ diff --git a/quickstarts/nvidia-gpu/config.yml b/quickstarts/nvidia-gpu/config.yml new file mode 100644 index 0000000000..ac2c67d986 --- /dev/null +++ b/quickstarts/nvidia-gpu/config.yml @@ -0,0 +1,39 @@ +id: 6aa90868-0102-4c56-9493-51e9875c6fdb +slug: nvidia-gpu + +title: Nvidia GPU Monitoring + +description: | + Our NVIDIA GPU integration assists you in monitoring the status of GPUs. + This integration leverages our infrastructure agent and the Flex integration, which is seamlessly integrated with NVIDIA's SMI utility. + It provides you with a pre-built dashboard containing crucial GPU metrics, including GPU utilization, ECC error counts, + active compute processes, clock and performance states, temperature, fan speed, as well as dynamic and static information about each supported device. + +summary: | + Monitor NVidia GPUs performance and state. + +level: Community + +authors: + - New Relic + +keywords: + - nvidia + - gpu + - infrastructure + +documentation: + - name: NVIDIA GPU integration + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-gpu-integration/ + description: Monitor the status and performance of NVidia GPUs. + +icon: logo.png + +dashboards: + - nvidia-gpu + +alertPolicies: + - nvidia-gpu + +dataSourceIds: + - nvidia-gpu \ No newline at end of file diff --git a/quickstarts/nvidia-gpu/logo.png b/quickstarts/nvidia-gpu/logo.png new file mode 100644 index 0000000000..00e777df8c Binary files /dev/null and b/quickstarts/nvidia-gpu/logo.png differ diff --git a/quickstarts/observability-as-code/ansible/config.yml b/quickstarts/observability-as-code/ansible/config.yml index 291e688e68..e8b4e34c0a 100644 --- a/quickstarts/observability-as-code/ansible/config.yml +++ b/quickstarts/observability-as-code/ansible/config.yml @@ -10,12 +10,12 @@ description: | It uses no agents and no additional custom security infrastructure, so it's easy to deploy - and most importantly, it uses a very simple language (YAML, in the form of Ansible Playbooks) that allow you to describe your automation jobs in a way that approaches plain English. # What does New Relic provide - New Relic has developed a Ansible playbook for the Ansible agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. + New Relic has developed a Ansible role for the Ansible agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/), [New Relic Application Performance Monitoring](https://docs.newrelic.com/docs/new-relic-solutions/new-relic-one/install-configure/configure-new-relic-agents/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. # How to get started? - Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Ansible](https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-ansible) + Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Ansible](https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/config-management-tools/configure-infrastructure-agent-using-ansible) summary: | - New Relic Ansible playbook to deploy the New Relic Infrastructure agent and On Host Integrations throughout your environment. + New Relic Ansible role to deploy the New Relic Infrastructure agent, New Relic APM and On Host Integrations throughout your environment. level: New Relic authors: - New Relic @@ -33,10 +33,13 @@ documentation: description: | Open-source software provisioning, configuration management, and application-deployment tool enabling infrastructure as code. - url: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-ansible + url: https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/config-management-tools/configure-infrastructure-agent-using-ansible - name: Ansible Galaxy description: | Ansible Galaxy page for the New Relic Ansible role - url: https://galaxy.ansible.com/newrelic/newrelic_agents + url: https://galaxy.ansible.com/newrelic/newrelic_install + - name: Github repository + description: Github repository for the New Relic Role. + url: https://github.com/newrelic/ansible-install icon: logo.svg -website: https://galaxy.ansible.com/newrelic/newrelic_agents +website: https://galaxy.ansible.com/newrelic/newrelic_install diff --git a/quickstarts/observability-as-code/chef/config.yml b/quickstarts/observability-as-code/chef/config.yml index 6c9940c3d9..2cd5057689 100644 --- a/quickstarts/observability-as-code/chef/config.yml +++ b/quickstarts/observability-as-code/chef/config.yml @@ -8,12 +8,12 @@ description: | The Chef Infra agent is self-updating, self-automating and works well in low bandwidth or remote environments. It also allows Chef to scale up and down as customers demands change. Security keys are managed and rotated regularly using Chef automated cookbooks which allows admins to turn off port access to SSH and WinRM further securing their environments in line with recommendations from industry standards like CIS (Center for Internet Security) benchmarks. # What does New Relic provide - New Relic has developed a Chef recipe for the Chef Infra agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. + New Relic has developed a Chef recipe for the Chef Infra agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/), [New Relic Application Performance Monitoring](https://docs.newrelic.com/docs/new-relic-solutions/new-relic-one/install-configure/configure-new-relic-agents/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. # How to get started? - Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Chef](https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef) + Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Chef](https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-infrastructure-agent-using-chef) summary: | - New Relic Chef recipe to deploy the New Relic Infrastructure agent and On Host Integrations throughout your environment. + New Relic Chef recipe to deploy the New Relic Infrastructure agent, New Relic APM and On Host Integrations throughout your environment. level: New Relic authors: - New Relic @@ -29,9 +29,12 @@ dataSourceIds: documentation: - name: Chef installation docs description: Chef is a configuration management tool written in Ruby and Erlang. - url: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef + url: https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/config-management-tools/configure-infrastructure-agent-using-chef - name: Chef Supermarket description: Chef Supermarket page for the New Relic Chef Recipe - url: https://supermarket.chef.io/cookbooks/newrelic-infra + url: https://supermarket.chef.io/cookbooks/newrelic-install + - name: Github repository + description: Github repository for the New Relic Cookbook. + url: https://github.com/newrelic/chef-install icon: logo.svg -website: https://supermarket.chef.io/cookbooks/newrelic-infra +website: https://supermarket.chef.io/cookbooks/newrelic-install diff --git a/quickstarts/observability-as-code/puppet/config.yml b/quickstarts/observability-as-code/puppet/config.yml index 4e8cc7ac73..341f93472a 100644 --- a/quickstarts/observability-as-code/puppet/config.yml +++ b/quickstarts/observability-as-code/puppet/config.yml @@ -6,12 +6,12 @@ description: | Puppet is the industry standard for IT automation. Modernize, manage and bring your hybrid infrastructure into compliance through Puppet's powerful continuous automation. # What does New Relic provide - New Relic has developed a Puppet module for the Puppet agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. + New Relic has developed a Puppet module for the Puppet agent to deploy the [New Relic Infrastructure agent](https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/), [New Relic Application Performance Monitoring](https://docs.newrelic.com/docs/new-relic-solutions/new-relic-one/install-configure/configure-new-relic-agents/) and [On Host Integrations](https://docs.newrelic.com/docs/infrastructure/host-integrations/get-started/introduction-host-integrations) throughout your environment. # How to get started? - Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Puppet](https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-puppet) + Follow the instructions on New Relic documentation: [Configure the infrastructure agent using Puppet](https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/config-management-tools/configure-infrastructure-agent-puppet) summary: | - New Relic Puppet module to deploy the New Relic Infrastructure agent and On Host Integrations throughout your environment. + New Relic Puppet module to deploy the New Relic Infrastructure agent, New Relic APM and On Host Integrations throughout your environment. level: New Relic authors: - New Relic @@ -29,9 +29,12 @@ documentation: description: | Puppet is a configuration management tool used to manage various stages of the IT infrastructure lifecycle. - url: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-puppet + url: https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent/config-management-tools/configure-infrastructure-agent-puppet - name: Puppet Forge description: Puppet Forge page for the New Relic Puppet Module - url: https://forge.puppet.com/modules/newrelic/newrelic_infra + url: https://forge.puppet.com/modules/newrelic/newrelic_installer + - name: Github repository + description: Github repository for the New Relic Provider. + url: https://github.com/newrelic/puppet-install icon: logo.svg -website: https://forge.puppet.com/modules/newrelic/newrelic_infra +website: https://forge.puppet.com/modules/newrelic/newrelic_installer diff --git a/quickstarts/ollama/config.yml b/quickstarts/ollama/config.yml new file mode 100644 index 0000000000..cd6d216e24 --- /dev/null +++ b/quickstarts/ollama/config.yml @@ -0,0 +1,53 @@ +id: 36968ec7-acef-4b9a-9c6a-3eaaaebdc053 +slug: ollama +description: | + ## Why should you monitor your usage of Ollama? + Monitor your application powered by Ollama language models to ensure, get visibility to what you send to Ollama, responses received from Ollama, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Ollama monitoring quickstart + Our Ollama quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Ollama quickstart? + New Relic Ollama monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Ollama usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Ollama usage with New Relic Ollama quickstart. +icon: logo.png +level: + - New Relic +authors: + - New Relic +title: Ollama +documentation: + - name: Ollama integration documentation + description: | + Implement monitoring and instrumentation for your Ollama app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - ollama + - large language model + - natural language processing + - nlp + - machine learning + - artificial intelligence + - ai + - ollama ai + - cloud native + - llm + - llm chains + - generative ai + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/ollama/logo.png b/quickstarts/ollama/logo.png new file mode 100644 index 0000000000..8cd2cf1ed8 Binary files /dev/null and b/quickstarts/ollama/logo.png differ diff --git a/quickstarts/oma-data-gov/config.yml b/quickstarts/oma-data-gov/config.yml index b4a5c2ad17..6114b2b229 100644 --- a/quickstarts/oma-data-gov/config.yml +++ b/quickstarts/oma-data-gov/config.yml @@ -4,7 +4,7 @@ title: OMA Data Ingest Governance description: | Data ingest governance is a practice of ensuring optimal value for telemetry data collected by an organization particularly a complex organization with numerous business units and working groups. summary: | - The prerequisite step of data governance includes developing an accurate baseline of your telemetry data ingest levels. A good ingest baseline will break your ingest out by sub-account and telemetry type. This is particularly necessary in a complex organization with numerous business units and working groups. + The prerequisite step of data governance includes developing an accurate baseline of your telemetry data ingest levels. A good ingest baseline will break your ingest out by sub-account and telemetry type. This is particularly necessary in a complex organization with numerous business units and working groups. level: New Relic authors: - Jim Hagan diff --git a/quickstarts/oma-qf/config.yml b/quickstarts/oma-qf/config.yml index 500afce8b9..f1a2a2fde4 100644 --- a/quickstarts/oma-qf/config.yml +++ b/quickstarts/oma-qf/config.yml @@ -34,3 +34,4 @@ icon: logo.svg website: https://www.newrelic.com dashboards: - om-quality-foundation + - om-qf-retail-user-journey diff --git a/quickstarts/openai/config.yaml b/quickstarts/openai/config.yaml index 578cf36da1..0ca5a62c2b 100644 --- a/quickstarts/openai/config.yaml +++ b/quickstarts/openai/config.yaml @@ -7,15 +7,15 @@ description: | ## Monitor your GPT-3 and GPT-4 Application Usage in New Relic With the GPT integration, you'll have the ability to seamlessly monitor OpenAI completion queries and simultaneously log useful statistics in a New Relic customizable dashboard about your requests. - + By adding just two lines of code, users can gain access to key performance metrics such as cost, response time, and sample inputs/outputs. The dashboard also allows users to track total requests, average token/requests, and model names. - + With New Relic's fully customizable dashboard, users can add additional metrics based on their specific business requirements and needs. - + Overall, New Relic's OpenAI integration provides real-time metrics around GPT applications to help businesses optimize usage, reduce costs, and achieve better results. summary: | - Seamlessly monitor your usage of OpenAI’s GPT Series APIs using New Relic’s dashboard. You'll get access to real-time metrics that can help you optimize usage, reduce costs, and achieve better results. + Seamlessly monitor your usage of OpenAI’s GPT Series APIs using New Relic’s dashboard. You'll get access to real-time metrics that can help you optimize usage, reduce costs, and achieve better results. icon: openai-logo.svg @@ -26,7 +26,7 @@ authors: - Yogev Kriger documentation: - - name: Monitor OpenAI + - name: Monitor OpenAI description: | A lightweight tool to monitor your OpenAI workload. url: >- @@ -37,13 +37,10 @@ keywords: - openai - ai - gpt - - mlops - -installPlans: - - setup-openai + - mlops + - llm dataSourceIds: - - openai - -dashboards: - - openai + - llm-application +alertPolicies: + - llm-application diff --git a/quickstarts/openllm/config.yml b/quickstarts/openllm/config.yml new file mode 100644 index 0000000000..ada04acba0 --- /dev/null +++ b/quickstarts/openllm/config.yml @@ -0,0 +1,56 @@ +id: 5d5e33d3-f66c-49f1-8b8e-024fb115010b +slug: openllm +description: | + ## Why should you monitor your usage of OpenLLM? + Monitor your application powered by OpenLLM language models to ensure, get visibility to what you send to OpenLLM, responses received from OpenLLM, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive OpenLLM monitoring quickstart + Our OpenLLM quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the OpenLLM quickstart? + New Relic OpenLLM monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your OpenLLM usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your OpenLLM usage with New Relic OpenLLM quickstart. +icon: logo.jpeg +level: + - New Relic +authors: + - New Relic +title: OpenLLM +documentation: + - name: OpenLLM integration documentation + description: | + Implement monitoring and instrumentation for your OpenLLM app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - openllm + - large language model + - natural language processing + - nlp + - machine learning + - artificial intelligence + - ai + - openllm ai + - cloud native + - llm + - llm chains + - deep learning + - distributed computing + - kubernetes + - generative ai + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/openllm/logo.jpeg b/quickstarts/openllm/logo.jpeg new file mode 100644 index 0000000000..5518e1a6f3 Binary files /dev/null and b/quickstarts/openllm/logo.jpeg differ diff --git a/quickstarts/openstack-controller/config.yml b/quickstarts/openstack-controller/config.yml new file mode 100644 index 0000000000..5e5807f55b --- /dev/null +++ b/quickstarts/openstack-controller/config.yml @@ -0,0 +1,43 @@ +id: 68fd037d-8185-4604-853c-fb9a652686d3 +slug: openstack-controller +description: | + ## Why monitor Openstack Controller? + Monitoring the OpenStack controller helps you maintain the stability, performance, security, and availability of your cloud environment by detecting issues early, responding promptly, and continuously improving your infrastructure to meet the needs of users and applications. + + ## Comprehensive monitoring quickstart for Openstack Controller + New Relic comprehensive monitoring solution collects data from all aspects of your OpenStack environment, so you can see exactly what's happening and identify any potential problems before they impact your users. + + ## What’s included in this quickstart? + New Relic Openstack Controller monitoring quickstart provides quality out-of-the-box reporting: + - Track the performance of your OpenStack services, such as compute, networking and storage + - Identify and troubleshoot performance bottlenecks with ease + - Get pre-built alerts when there are problems with your OpenStack environment + - Correlate data from different data sources to get a holistic view of your environment + + +summary: | + Monitor and analyze your Openstack Controller infrastructure with New Relic. +icon: logo.png +level: New Relic +authors: + - New Relic + - Ramana Reddy +title: Openstack Controller +documentation: + - name: Openstack Controller integration documentation + description: | + Monitor and instrument your OpenStack Controller with New Relic to gain deep insights into your performance. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/openstack-controller-integration/ +keywords: + - openstack controller + - openstack + - nova controller + - neutron controller + - cinder controller + - Keystone controller +dataSourceIds: + - openstack-controller +dashboards: + - openstack-controller +alertPolicies: + - openstack-controller \ No newline at end of file diff --git a/quickstarts/openstack-controller/logo.png b/quickstarts/openstack-controller/logo.png new file mode 100644 index 0000000000..3f69a04377 Binary files /dev/null and b/quickstarts/openstack-controller/logo.png differ diff --git a/quickstarts/opslevel/config.yml b/quickstarts/opslevel/config.yml new file mode 100644 index 0000000000..803b928bed --- /dev/null +++ b/quickstarts/opslevel/config.yml @@ -0,0 +1,57 @@ +id: 6eccea7a-7465-4731-a6fc-fc26ecd4b81f +# quickstarts/opslevel/config.yml + + +slug: opslevel +title: OpsLevel + +description: | + ## What is OpsLevel? + + A developer portal for high-performing engineering teams. Give your engineering team one place to *fix, build, and release high-quality code without operational toil*. Improve speed and standards with the [OpsLevel developer portal](https://www.opslevel.com). + + ### OpsLevel quickstart highlights + + Integrate New Relic with OpsLevel to bring New Relic alert statuses into your OpsLevel developer portal. + + With New Relic in OpsLevel you can: + * Set yourself up to avoid incidents, performance issues, or gaps in your observability data streams + * Give your team real-time visibility of production status across your software ecosystem + * Keep your team informed of alerts and notify the correct people to help resolve them + + ### Get started! + + Check out our [Integration Guide](https://docs.opslevel.com/docs/new-relic-integration) to learn more about connecting New Relic and OpsLevel. + + New to OpsLevel? [Try OpsLevel for free.](https://www.opslevel.com/free-trial?utm_source=referral&utm_medium=website&utm_campaign=nr-integration) + +summary: | + Be prepared for incidents and solve performance issues faster by combining the complete context in OpsLevel with New Relic’s monitoring capabilities. + +# Possible values: New Relic | Verified | Community +# Please consult with pull request reviewers if you think your quickstart should have a support level other than "Community" +level: Community + +authors: + - OpsLevel + +# These keywords can be mapped to category terms +# which help to categorize quickstarts. +# To have your quickstart appear under a certain category, +# these keywords must include a matching category term, +# see link in the keywords row of the table below. +keywords: + - newrelic partner + - messaging + - opslevel + +# Relevant documentation for this quickstart +documentation: + - name: Installation and Usage docs + url: >- + https://docs.opslevel.com/docs/new-relic-integration + description: | + Documentation to help you get started with the OpsLevel <> New Relic Integration + +# An icon or logo for the quickstart +icon: logo.svg diff --git a/quickstarts/opslevel/logo.svg b/quickstarts/opslevel/logo.svg new file mode 100644 index 0000000000..d1107d66ee --- /dev/null +++ b/quickstarts/opslevel/logo.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/palm-2/config.yml b/quickstarts/palm-2/config.yml new file mode 100644 index 0000000000..bfdc6a15f7 --- /dev/null +++ b/quickstarts/palm-2/config.yml @@ -0,0 +1,51 @@ +id: e3b42f08-2a47-4398-80c7-229f28b2fba1 +slug: palm-2 +description: | + ## Why should you monitor your usage of PaLM 2? + Monitor your application powered by PaLM 2 language models to ensure, get visibility to what you send to PaLM 2, responses received from PaLM 2, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your PaLM 2 app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive PaLM 2 monitoring quickstart + Our PaLM 2 quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the PaLM 2 quickstart? + New Relic PaLM 2 monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your PaLM 2 usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your PaLM 2 usage with New Relic PaLM 2 quickstart. +icon: logo.svg +level: + - New Relic +authors: + - New Relic +title: PaLM 2 +documentation: + - name: PaLM 2 integration documentation + description: | + Implement monitoring and instrumentation for your PaLM 2 app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - palm2 + - palm 2 + - langchain + - mlops + - large language model + - natural language processing + - nlp + - machine learning + - artificial intelligence + - ai + - generative ai + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/palm-2/logo.svg b/quickstarts/palm-2/logo.svg new file mode 100644 index 0000000000..5c345fe1c1 --- /dev/null +++ b/quickstarts/palm-2/logo.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/pgvector/config.yml b/quickstarts/pgvector/config.yml new file mode 100644 index 0000000000..ca00f01b7f --- /dev/null +++ b/quickstarts/pgvector/config.yml @@ -0,0 +1,49 @@ +id: 19f7bab8-860b-428c-b7d4-ff6a28f438c3 +slug: pgvector +description: | + ## Why should you monitor your usage of PGVector? + + Monitor your vector searches on PGVector to get visibility on what you send to PGVector, responses retrieved from PGVector, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic PGVector quickstart. +icon: logo.jpeg +level: New Relic +authors: + - New Relic +title: PGVector +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - pgvector + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/pgvector/logo.jpeg b/quickstarts/pgvector/logo.jpeg new file mode 100644 index 0000000000..8ca5860575 Binary files /dev/null and b/quickstarts/pgvector/logo.jpeg differ diff --git a/quickstarts/postfix/config.yml b/quickstarts/postfix/config.yml new file mode 100644 index 0000000000..04c1d0af95 --- /dev/null +++ b/quickstarts/postfix/config.yml @@ -0,0 +1,41 @@ +id: d880675c-6c3e-4a81-95f5-0206e46cda6c +slug: postfix +description: | + ## Postfix queue performance monitoring + + Postfix monitoring involves tracking and analyzing metrics related to the performance, health, and security of a Postfix mail server. This includes monitoring the mail queue, message traffic, error logs, and security. It can also be used to set up dashboards and alerts for monitoring Postfix metrics in real-time. Proper monitoring of Postfix can ensure the smooth operation and security of the mail server. + + ### What should you look for in a Postfix dashboard? + + Postfix monitoring dashboards provide real-time statistics on mail queues, message traffic, resource utilization, error logs, and security. + + ### What’s included in the Postfix quickstart? + + Install this quickstart to install preconfigured observability solutions: + - A number of high-value alerts are available, including whenever the Postfix service is down, connections are lost, or connections time out. + - Informative dashboards (email delivery process, number of messages bounced and deferred, number of incoming connections, and more). + +summary: | + Monitor your Postfix with New Relic infrastructure agent and Flex configuration. Get real-time insights into email delivery and performance, including message flows, queue sizes, per-day traffic summaries, per-hour traffic records, and server load. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Postfix +dashboards: + - postfix +alertPolicies: + - postfix +documentation: + - name: Postfix + description: | + Postfix is a well-known mail server that is used to route and deliver email messages across mail servers. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/postfix-monitoring-integration +dataSourceIds: + - postfix +keywords: + - postfix + - mail server + - infrastructure + \ No newline at end of file diff --git a/quickstarts/postfix/logo.png b/quickstarts/postfix/logo.png new file mode 100644 index 0000000000..3a61c656a9 Binary files /dev/null and b/quickstarts/postfix/logo.png differ diff --git a/quickstarts/postgres-embedding/config.yml b/quickstarts/postgres-embedding/config.yml new file mode 100644 index 0000000000..bb32ff10cc --- /dev/null +++ b/quickstarts/postgres-embedding/config.yml @@ -0,0 +1,57 @@ +id: 7f885669-3254-4f92-9e44-2c4d8d7d0014 + +slug: postgres-embedding +description: | + ## Why should you monitor your usage of Postgres Embedding? + Monitor your vector searches with Postgres Embedding to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + + ### Track the query performance of Postgres Embedding + Track the behavior of Postgres Embedding. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of Postgres Embedding + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your Postgres Embedding's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + Postgres Embedding monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Postgres Embedding. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Postgres Embedding's performance and quality with New Relic Postgres Embedding quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Postgres Embedding +documentation: + - name: Postgres Embedding integration documentation + description: | + Implement monitoring and instrumentation for your Postgres Embedding, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - pg embedding + - postgres embedding + - vector embedding + - postgreSQL + - timescaleDB + - machine learning + - artificial intelligence + - AI + - ML + - NLP + - CV + - computer vision + - image search + - video search + - text search + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/postgres-embedding/logo.png b/quickstarts/postgres-embedding/logo.png new file mode 100644 index 0000000000..849946ef43 Binary files /dev/null and b/quickstarts/postgres-embedding/logo.png differ diff --git a/quickstarts/public-api-performance/config.yml b/quickstarts/public-api-performance/config.yml deleted file mode 100644 index 85e11e3f6f..0000000000 --- a/quickstarts/public-api-performance/config.yml +++ /dev/null @@ -1,32 +0,0 @@ -id: 7f8e7ef2-d94b-47bc-8d85-31471430b673 -slug: public-api-performance -title: Public API Performance -description: | - ## Public API Performance - - Explore the performance data New Relic collects about commonly used, public APIs. Use this dashboard to: - - * Determine if a public API you use is experiencing a performance issue - * Compare the performance of your publicly-available APIs against other services - * Evaluate the API performance of providers when considering which one(s) to choose -summary: | - Explore the performance data New Relic collects about commonly used, public APIs. -level: New Relic -authors: - - New Relic -keywords: - - public api - - performance - - provider -installPlans: - - public-api-performance -dataSourceIds: - - public-api-performance -dashboards: - - public-api-performance -documentation: - - name: Public API Performance Dashboard - url: https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/explore-public-api-performance-dashboard/ - description: See our documentation for more details on the Public API Performance Dashboard. -icon: logo.svg -website: https://www.newrelic.com diff --git a/quickstarts/public-api-performance/logo.svg b/quickstarts/public-api-performance/logo.svg deleted file mode 100644 index 8dab573e6e..0000000000 --- a/quickstarts/public-api-performance/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/python/aiohttp/config.yml b/quickstarts/python/aiohttp/config.yml index 6fd2e4f4b3..2f7d4f11e4 100644 --- a/quickstarts/python/aiohttp/config.yml +++ b/quickstarts/python/aiohttp/config.yml @@ -2,21 +2,21 @@ id: e7948525-8726-46a5-83fa-04732ad42fd1 slug: aiohttp title: AIOHTTP description: | - ## AIO HTTP complete monitoring quickstart + ## AIOHTTP complete monitoring quickstart - Instantly monitor Python applications with AIO HTTP quickstart. Our [Python](https://docs.newrelic.com/docs/agents/python-agent/) integration lets you quickly identify and resolve potential performance issues with your AIO HTTP server and enhance user experiences. + Instantly monitor Python applications with AIOHTTP quickstart. Our [Python](https://docs.newrelic.com/docs/agents/python-agent/) integration lets you quickly identify and resolve potential performance issues with your AIOHTTP server and enhance user experiences. - ### Monitoring AIO HTTP + ### Monitoring AIOHTTP - Python application developers can extend AIO HTTP performance monitoring to collect, clean, and analyze data to make better data-driven business decisions. Monitoring is vital to ensure uptime and data reliability by keeping an eye on the AIO HTTP server and AIO HTTP client. + Python application developers can extend AIOHTTP performance monitoring to collect, clean, and analyze data to make better data-driven business decisions. Monitoring is vital to ensure uptime and data reliability by keeping an eye on the AIOHTTP server and AIOHTTP client. - New Relic's AIO HTTP quickstart provides dashboards and built-in instrumentation to track AIO HTTP requests, CPU utilization, garbage collection CPU time, memory heap used, most popular transactions, throughput reports, top 5 slowest transactions, and more. + New Relic's AIOHTTP quickstart provides dashboards and built-in instrumentation to track AIOHTTP requests, CPU utilization, garbage collection CPU time, memory heap used, most popular transactions, throughput reports, top 5 slowest transactions, and more. Count on real-time alerts to apdex scores, CPU utilization, and transaction errors. Expand the Python agent's default monitoring and behavior through the agent API or agent config file and target additional activity and functional calls. - ### New Relic - The complete AIO HTTP dashboard tool + ### New Relic - The complete AIOHTTP dashboard tool - The AIO HTTP dashboard tool ensures total visibility into critical metrics, leveraging dashboards and synthetic checks. With APIs and flexible custom instrumentation options, developers can use multiple building blocks to improve performance and adapt data for your app. + The AIOHTTP dashboard tool ensures total visibility into critical metrics, leveraging dashboards and synthetic checks. With APIs and flexible custom instrumentation options, developers can use multiple building blocks to improve performance and adapt data for your app. #### What's included? @@ -25,8 +25,8 @@ description: | Know what's happening in real-time by tracking CPU utilization, throughput reports, and popular transactions with full-stack observability of your entire infrastructure. - With the AIO HTTP complete monitoring quickstart, you can remediate errors before they impact user experience. -summary: New Relic's AIO HTTP complete monitoring quickstart offers dashboards, alerts, and custom instrumentation to track the health and performance of your Python application before it impacts user experience. + With the AIOHTTP complete monitoring quickstart, you can remediate errors before they impact user experience. +summary: New Relic's AIOHTTP complete monitoring quickstart offers dashboards, alerts, and custom instrumentation to track the health and performance of your Python application before it impacts user experience. icon: logo.svg level: New Relic authors: diff --git a/quickstarts/python/python/config.yml b/quickstarts/python/python/config.yml index 466caf70f6..514abbbd69 100644 --- a/quickstarts/python/python/config.yml +++ b/quickstarts/python/python/config.yml @@ -48,12 +48,11 @@ documentation: description: | Python is an interpreted, high-level and general-purpose programming language. - url: https://docs.newrelic.com/docs/agents/python-agent/getting-started/compatibility-requirements-python-agent + url: https://docs.newrelic.com/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/ keywords: - apm - python - language agent - - featured installPlans: - setup-python-agent dataSourceIds: diff --git a/quickstarts/qdrant/config.yml b/quickstarts/qdrant/config.yml new file mode 100644 index 0000000000..81ee050047 --- /dev/null +++ b/quickstarts/qdrant/config.yml @@ -0,0 +1,47 @@ +id: 1223a0ff-689d-4102-ae8b-3e2c3a04c171 +slug: qdrant +description: | + ## Why should you monitor your usage of Qdrant? + Monitor your vector searches on Qdrant to get visibility on what you send to Qdrant, responses retrieved from Qdrant, latency, usage and errors. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ## Comprehensive monitoring quickstart for your Qdrant app + Our Qdrant quickstart provides metrics including Identify popular queries, sources, and content. + + ## What’s included in this quickstart? + New Relic Qdrant monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Qdrant app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic Qdrant quickstart +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: Qdrant +documentation: + - name: Qdrant integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - Qdrant + - langchain + - vector store + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/qdrant/logo.png b/quickstarts/qdrant/logo.png new file mode 100644 index 0000000000..e1cfe25520 Binary files /dev/null and b/quickstarts/qdrant/logo.png differ diff --git a/quickstarts/redis-otel/config.yml b/quickstarts/redis-otel/config.yml new file mode 100644 index 0000000000..02dd9d35a8 --- /dev/null +++ b/quickstarts/redis-otel/config.yml @@ -0,0 +1,30 @@ +id: 6d07c47a-6b4d-4369-98c5-3736ec6d2000 +slug: redis-otel +title: Redis (OpenTelemetry) +summary: | + Monitoring Redis is essential for maintaining fast database operations and a responsive application. Install New Relic Redis for OpenTelemetry quickstart to proactively instrument Redis with the OpenTelemetry Redis receiver. +description: | + ## How to monitor Redis with New Relic? + The OpenTelemetry Redis receiver collects metrics from your running Redis instances. These metrics provide insights into operations, memory usage, client connections, and more. + A New Relic entity will be created for each Redis instance, allowing you to easily explore, configure alerts, and compare metrics for all your Redis databases in one place. + Our monitoring quickstart includes a pre-built dashboard that displays aggregated metrics from all of your Redis instances, with the ability to filter the data for specific analyses. + ### Why monitor Redis with New Relic? + New Relic Redis for OpenTelemetry quickstart gives you comprehensive visibility into your Redis databases alongside your apps and server infrastructure. Monitoring Redis is vital to obtain real-time performance metrics for databases across your entire environment. This ensures optimal database operations, leading to better application performance and enhanced user experiences. +icon: logo.svg +level: New Relic +authors: + - New Relic +dataSourceIds: + - redis-otel +alertPolicies: + - redis-otel +documentation: + - name: Redis (OpenTelemetry) installation docs + description: | + Redis is an in-memory data structure store, used as a database, cache, and message broker. Monitoring it provides insights into its operations and performance. + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-redis + +keywords: + - open telemetry + - redis + - infrastructure diff --git a/quickstarts/redis-otel/logo.svg b/quickstarts/redis-otel/logo.svg new file mode 100644 index 0000000000..ed312206b9 --- /dev/null +++ b/quickstarts/redis-otel/logo.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/quickstarts/redmine/config.yml b/quickstarts/redmine/config.yml index 6741c174c7..7829787502 100644 --- a/quickstarts/redmine/config.yml +++ b/quickstarts/redmine/config.yml @@ -5,7 +5,7 @@ description: | We can monitor your Redmine application in a complex environment and keep you on top of performance with our Ruby agent. ## Why monitor Redmine? - Redmine is a popular open-source project management and issue tracking tool, but like any software, it can also have some issues. Our quickstart helps you catch those quickly and effortlessly. ## Why monitor your Redmine app? + Redmine is a popular open-source project management and issue tracking tool, but like any software, it can also have some issues. Our quickstart helps you catch those quickly and effortlessly. ### Slow performance Redmine can become slow and unresponsive with a large number of projects, issues, and users, requiring optimization and maintenance to keep it running smoothly. @@ -49,6 +49,7 @@ keywords: - redmine - ruby agent - ruby + installPlans: - redmine dataSourceIds: diff --git a/quickstarts/redpanda/config.yml b/quickstarts/redpanda/config.yml index ee4f5def2f..0d7da5f602 100644 --- a/quickstarts/redpanda/config.yml +++ b/quickstarts/redpanda/config.yml @@ -14,7 +14,7 @@ description: | Identify high latency in processing to solve for overall platform performance. ### Data loss - Our node dashboard alerts you immediately in case of failures, to prevent data loss by quick intervention. + Our quickstart dashboard alerts you immediately in case of failures, to prevent data loss by quick intervention. Redpanda observability is essential for ensuring its reliability, availability, and performance, and for preventing and resolving issues. @@ -35,8 +35,6 @@ documentation: description: | New Relic’s instant observability quickstart with Redpanda monitoring helps to detect your metrics which are useful for debugging and measuring system health. url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/redpanda-integration/ -installPlans: - - redpanda dataSourceIds: - redpanda keywords: diff --git a/quickstarts/resmo/config.yml b/quickstarts/resmo/config.yml new file mode 100644 index 0000000000..78b610d05a --- /dev/null +++ b/quickstarts/resmo/config.yml @@ -0,0 +1,40 @@ +id: 1f7fdf81-5d61-4f6a-9cd4-6c72d73df8e7 +slug: resmo +description: | + ## What is Resmo? + Resmo provides a comprehensive solution for continuous cyber asset visibility and security to cloud-native teams. By allowing SQL-based data queries across a range of Cloud and SaaS providers, Resmo enables customers to stay informed of any changes. Resmo consolidates users, vulnerabilities, repositories, and other essential elements to provide valuable insights through user-friendly dashboards and automates compliance checks for frameworks such as CIS benchmarks. This alerts customers to potential security vulnerabilities. + + ### How this integration works + + Once you sign up to Resmo, you can easily integrate your account with New Relic using an API key. Resmo uses an API to do the initial polling and collect existing resources. Then, we receive resource changes and updates in real-time by regular polling. + + ### What does this integration offer + + With this integration you can: + - Gather and monitor all your New Relic assets on a single platform. + - Query your New Relic dashboards, accounts, alert policies, API keys, and more. + - Set up rules to continuously assess your New Relic resources. + - Set up and receive rule notifications based on your New Relic resource configurations. + + +summary: | + Resmo is a cyber asset visibility and security solution for cloud-native teams, enabling discovery, security, and compliance across Cloud and SaaS platforms. +icon: logo.svg +level: New Relic +authors: + - New Relic + - Resmo +title: Resmo +documentation: + - name: Resmo installation docs + description: Integrate your Resmo account with New Relic using an API key. + url: >- + https://docs.resmo.com/product/integrations/new-relic-integration +keywords: + - resmo + - newrelic partner + - assets + - rules + - notifications + - resource configurations + diff --git a/quickstarts/resmo/logo.svg b/quickstarts/resmo/logo.svg new file mode 100644 index 0000000000..a8348d6a2d --- /dev/null +++ b/quickstarts/resmo/logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/quickstarts/roku/config.yml b/quickstarts/roku/config.yml index 906bdcfac0..b84c4d958f 100644 --- a/quickstarts/roku/config.yml +++ b/quickstarts/roku/config.yml @@ -29,7 +29,6 @@ keywords: - tracker - roku - brightscript - - featured installPlans: - third-party-roku - third-party-roku-http-analytics diff --git a/quickstarts/sendgrid/config.yml b/quickstarts/sendgrid/config.yml index 67d5525f35..555ef18f2e 100644 --- a/quickstarts/sendgrid/config.yml +++ b/quickstarts/sendgrid/config.yml @@ -28,3 +28,4 @@ icon: logo.png website: https://sendgrid.com/ dashboards: - sendgrid-dashboard + diff --git a/quickstarts/sendmail/config.yml b/quickstarts/sendmail/config.yml new file mode 100644 index 0000000000..4d2397093f --- /dev/null +++ b/quickstarts/sendmail/config.yml @@ -0,0 +1,36 @@ +id: c4e07f51-b3f4-4cac-8527-fd96a09923da +slug: sendmail +description: | + ## Sendmail performance monitoring + Sendmail performance monitoring involves monitoring the efficiency and effectiveness of the message delivery in Sendmail and identifying any issues or bottlenecks that may affect email delivery on time. + Effective Sendmail performance monitoring ensures that the email system operates smoothly, messages are processed efficiently, and potential issues are promptly identified and addressed, leading to reliable and timely delivery of email messages. + ### What should you look for in a Sendmail dashboard? + There are several important factors and indicators that must be taken seriously when assessing a Sendmail dashboard. These incorporate backlog analysis, delivery success rate, error tracking, and message processing. + ### What’s included in the Sendmail quickstart? + Install this quickstart to get preconfigured observability solutions: + - A number of high-value alerts are available, including total errors logged, message not accepted for delivery (%), Sendmail service down, and high memory (%). + - Informative dashboards (number of messages sent, failed, and deferred, number of senders and recipients, connection time out and more). +summary: | + Monitor your Sendmail with New Relic infrastructure agent and Flex configuration. Get real-time insights into email delivery and performance, including message status, mail logs, errors and warnings, and sender and recipient details. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Sendmail +dashboards: + - sendmail +alertPolicies: + - sendmail +documentation: + - name: Sendmail + description: | + Use our infrastructure agent and Flex configuration to export Sendmail data to New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sendmail-monitoring-integration +dataSourceIds: + - sendmail +keywords: + - sendmail + - mail server + - infrastructure + diff --git a/quickstarts/sendmail/logo.png b/quickstarts/sendmail/logo.png new file mode 100644 index 0000000000..a70f0a1103 Binary files /dev/null and b/quickstarts/sendmail/logo.png differ diff --git a/quickstarts/shopify/config.yml b/quickstarts/shopify/config.yml new file mode 100644 index 0000000000..7bcc7d6fbf --- /dev/null +++ b/quickstarts/shopify/config.yml @@ -0,0 +1,44 @@ +id: 022f9ce9-38b4-47f4-94b6-aa543a0c8952 +slug: shopify +title: Shopify +description: | + ## About Shopify + + Shopify is unified solution that will help you start your business, create a website, sell your product, and even market/manage your business in one place. + + ### About this integration + + This integration provides a quick and easy way to monitor your Shopify web application, by giving you key browsing metrics like throughput, error rate, traces, and page views. + + ### Setup + + To set up this integration, you will just need to add the [New Relic browser agent code](https://onenr.io/0MRNpYqNqQn) into your Shopify application source code. You can find your Shopify source code by following these stesps in your [Shopify Portal](admin.shopify.com): + + 1. Open **Themes** inside of your online store. + 2. Click the ellipsis (**...**) next to the Customize option, then select **Edit code**. + 3. Under the **layout** section, look for your main file for your theme called **theme.liquid**. + + Once your in the source code, you can paste the New Relic browser agent code and save it. + + ### Visualizing your Shopify application data + + Once the setup is complete, you can see all of your real time User monitoring data in the new entity created in your New Relic account! You can find the entity in [New Relic](https://one.newrelic.com) under the entity name you created in the agent creation flow. +summary: | + Shopify is a solution that simplifies ecommerce applications and solution stack. +authors: + - New Relic + - Joseph Counts +keywords: + - traffic + - replay + - simulate + - report + - newrelic partner +dataSourceIds: + - shopify +documentation: + - name: New Relic browser agent documentation + url: https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent/ + description: You can follow this guide to set up our browser agent with your shopify website. +icon: logo.jpg +website: https://shopify.com diff --git a/quickstarts/shopify/logo.jpg b/quickstarts/shopify/logo.jpg new file mode 100644 index 0000000000..8b496c30f4 Binary files /dev/null and b/quickstarts/shopify/logo.jpg differ diff --git a/quickstarts/singlestoredb/config.yml b/quickstarts/singlestoredb/config.yml new file mode 100644 index 0000000000..378d41e56f --- /dev/null +++ b/quickstarts/singlestoredb/config.yml @@ -0,0 +1,49 @@ +id: 5d8f4722-54fb-4586-92b0-d5a198251486 +slug: singlestoredb +description: | + ## Why should you monitor your usage of SingleStoreDB? + + Monitor your vector searches on SingleStoreDB to get visibility on what you send to SingleStoreDB, responses retrieved from SingleStoreDB, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + SingleStoreDB uses the LangChain Vector Database to connect to New Relic. This quickstart provides a variety of a pre-built dashboard, which will help you gain insights into the health and performance of your AI app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor the performance and quality of your vector searches with New Relic SingleStoreDB quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: SingleStoreDB +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - singlestoredb + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/singlestoredb/logo.svg b/quickstarts/singlestoredb/logo.svg new file mode 100644 index 0000000000..595b5738ea --- /dev/null +++ b/quickstarts/singlestoredb/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/sklearn-vector-store/config.yml b/quickstarts/sklearn-vector-store/config.yml new file mode 100644 index 0000000000..48b9a1ca75 --- /dev/null +++ b/quickstarts/sklearn-vector-store/config.yml @@ -0,0 +1,51 @@ +id: d7f4dbd9-4496-4622-80a3-1c38760a3cdc +slug: sklearn-vector-store +description: | + ## Why should you monitor your usage of SKLearn Vector Store? + Monitor your vector searches on SKLearn Vector Store to get visibility on what you send to SKLearn Vector Store, responses retrieved from SKLearn Vector Store, latency, usage and errors. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ### What’s included in this quickstart? + New Relic SKLearn Vector Store monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your SKLearn Vector Store app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content. + +summary: | + Monitor your Vector search's performance and quality with New Relic SKLearn Vector Store quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: SKLearn Vector Store +documentation: + - name: SKLearn Vector Store Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - SKLearn Vector Store + - vector store + - vector database + - machine learning + - artificial intelligence + - computer vision + - information retrieval + - python + - scikit-learn + - AI + - ML + - NLP + - CV + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/sklearn-vector-store/logo.png b/quickstarts/sklearn-vector-store/logo.png new file mode 100644 index 0000000000..ced1931f66 Binary files /dev/null and b/quickstarts/sklearn-vector-store/logo.png differ diff --git a/quickstarts/snowflake/config.yml b/quickstarts/snowflake/config.yml index 85b1c38b12..8ef4c1d28e 100644 --- a/quickstarts/snowflake/config.yml +++ b/quickstarts/snowflake/config.yml @@ -39,8 +39,6 @@ documentation: url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/snowflake-integration/ keywords: - snowflake -installPlans: - - snowflake dataSourceIds: - snowflake dashboards: diff --git a/quickstarts/sonarqube/config.yml b/quickstarts/sonarqube/config.yml new file mode 100644 index 0000000000..051fec10f2 --- /dev/null +++ b/quickstarts/sonarqube/config.yml @@ -0,0 +1,46 @@ +id: bb89147b-0d3c-44bf-8037-accbfd8aa99a + +slug: sonarqube +description: | + ## Comprehensive monitoring quickstart for SonarQube + + By integrating SonarQube with New Relic, you can get comprehensive information about the quality of your codebase and receive alerts about serious vulnerabilities. You can keep track of your code deployments as well as the complete CI/CD workflow by visualizing and gathering metrics and logs. + + ## Why monitor SonarQube? + The open source platform SonarQube is utilized by development teams to ensure the quality of their source code. SonarQube was specifically designed to provide accessible code quality control to all users. + + By leveraging New Relic, you can enhance your understanding of the health and performance of your SonarQube server, regardless of whether it is deployed on-premises or in a containerized environment. Additionally, New Relic enables you to assess the quality and stability of your code throughout the development process, offering valuable insights. + + + ## What’s included in this quickstart? + New Relic SonarQube monitoring quickstart provides quality out-of-the-box reporting: + - Code duplication + - Coding guidelines + - Identify possible bugs due to code complexity + - Design and architecture comments + - Display and keep track of important code metrics + - Gather SonarQube logs and review them to gain knowledge of its condition + +summary: | + Identify and optimize SonarQube performance with New Relic SonarQube monitoring. +icon: logo.png +level: New Relic +authors: + - New Relic +title: SonarQube +documentation: + - name: SonarQube integration documentation + description: | + Monitor the performance metrics of your SonarQube instances in real-time with New Relic SonarQube. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/ +keywords: + - sonarqube + - sonar + - sonarqube jmx +dashboards: + - sonarqube +alertPolicies: + - sonarqube +dataSourceIds: + - sonarqube \ No newline at end of file diff --git a/quickstarts/sonarqube/logo.png b/quickstarts/sonarqube/logo.png new file mode 100644 index 0000000000..fdc2c5ed92 Binary files /dev/null and b/quickstarts/sonarqube/logo.png differ diff --git a/quickstarts/speedscale/config.yml b/quickstarts/speedscale/config.yml index 5453309092..0a51e0dfeb 100644 --- a/quickstarts/speedscale/config.yml +++ b/quickstarts/speedscale/config.yml @@ -20,7 +20,6 @@ keywords: - simulate - report - newrelic partner - - featured - NR1_addData - NR1_sys installPlans: diff --git a/quickstarts/squid-prometheus/config.yml b/quickstarts/squid-prometheus/config.yml new file mode 100644 index 0000000000..d93cdf7ff3 --- /dev/null +++ b/quickstarts/squid-prometheus/config.yml @@ -0,0 +1,53 @@ +id: 20bc868d-d0f6-4413-91a6-2afc281a906b +# Name of the quickstart +slug: squid-prometheus + +# Title of the quickstart +title: Squid (Prometheus) + +# Description of the quickstart +description: | + ## Squid Monitoring + Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. + + ### What’s Included? + New Relic + Squid (Prometheus) quickstart - New Relic’s instant observability quickstart provides the metrics reported by Squid Prometheus exporter. + Monitor Squid Cache Managers with New Relic to quickly gain visibility into your cache manager, including active cache managers, traffic, hit rate and more. + + ### Value of Squid Quickstarts + [Squid monitoring with New Relic](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/) offers advanced features, including: + - Create custom queries and charts of your data integrations. + - Filter and analyze metrics in Infrastructure UI. + New Relic’s instant observability quickstart helps developers reduce administrative overheads and accelerate time to value. As New Relic is SaaS-based, you also don’t have to worry about maintenance or onboarding. +summary: | + New Relic's Squid Prometheus quickstart provides data from Squid Cache Manager. Install the quickstart to better understand utilization of the cache and monitor performance issues. +# Support level +level: New Relic + +# Design +icon: logo.png +website: http://www.squid-cache.org/ + +# Authors of the quickstart +authors: + - New Relic + +documentation: + - name: Squid (Prometheus) + description: | + Caching proxy for the Web supporting different protocols that reduces bandwidth and improves response times. + url: https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/ + +installPlans: + - squid-prometheus-integration-docs + +dataSourceIds: + - squid-prometheus-integration-docs + +keywords: + - infrastructure + - cache + - prometheus + +dashboards: + - squid-prometheus diff --git a/quickstarts/squid-prometheus/logo.png b/quickstarts/squid-prometheus/logo.png new file mode 100644 index 0000000000..8e1bfda949 Binary files /dev/null and b/quickstarts/squid-prometheus/logo.png differ diff --git a/quickstarts/starrocks/config.yml b/quickstarts/starrocks/config.yml new file mode 100644 index 0000000000..64610cc50c --- /dev/null +++ b/quickstarts/starrocks/config.yml @@ -0,0 +1,54 @@ +id: 34fd3401-f511-49f0-a01c-2f1d3a8c7a7a +slug: starrocks +description: | + ## Why should you monitor your usage of StarRocks? + + Monitor your vector searches on StarRocks to get visibility on what you send to StarRocks, responses retrieved from StarRocks, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + StarRocks uses the LangChain Vector Database to connect to New Relic. This quickstart provides a variety of a pre-built dashboard, which will help you gain insights into the health and performance of your AI app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor the performance and quality of your vector searches with New Relic StarRocks quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: StarRocks +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - starrocks + - vector search + - vectordb + - vector db + - starrocks ai + - ai + - open source analytical database + - analytical database + - artificial intelligence + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/starrocks/logo.png b/quickstarts/starrocks/logo.png new file mode 100644 index 0000000000..75c01a99a9 Binary files /dev/null and b/quickstarts/starrocks/logo.png differ diff --git a/quickstarts/stripe/config.yml b/quickstarts/stripe/config.yml new file mode 100644 index 0000000000..37bd23d8b5 --- /dev/null +++ b/quickstarts/stripe/config.yml @@ -0,0 +1,37 @@ +id: 45a54f55-c921-48a0-bdf8-a324526edbdf +slug: stripe +description: | + ## Why monitor your Stripe? + As an ecommerce store owner, monitoring your Stripe payment gateway is an important way to ensure that your payments are processed smoothly and securely, identify and troubleshoot problems, comply with regulations, and improve your customer experience. + ## Comprehensive monitoring quickstart for Stripe + Stripe quickstart by New Relic helps you get payment gateway observability for your ecommerce customers. By collecting and analyzing data from Stripe, you can gain insights into your payment activity and identify any potential problems. This can help you improve the performance of your payment gateway and ensure that your customers have a smooth checkout experience. + ## What’s included in this quickstart? + The Stripe quickstart by New Relic is a pre-configured integration that makes it easy to collect and analyze data from Stripe. + This quickstart gives you a complete overview of your payment activity, including: + - Transaction data: Insights into each transaction, such as success, cancellation, revenue, and volume + - Error data: Detailed insights into errors, such as declined cards and invalid payment information + - Alerts: Real-time alerts during critical times, such as payment gateway outages and CPU spikes +summary: | + Stripe quickstart by New Relic helps you monitor your payment gateway and improve the checkout experience for your ecommerce customers. +icon: logo.png +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Stripe +documentation: + - name: Stripe integration documentation + description: | + Get insights into your Stripe observability data to improve your business. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/stripe-integration/ +keywords: + - stripe + - node.js + - stripe payment + - stripe checkout +dataSourceIds: + - stripe +dashboards: + - stripe +alertPolicies: + - stripe diff --git a/quickstarts/stripe/logo.png b/quickstarts/stripe/logo.png new file mode 100644 index 0000000000..26b7ce66fb Binary files /dev/null and b/quickstarts/stripe/logo.png differ diff --git a/quickstarts/supabase/config.yml b/quickstarts/supabase/config.yml new file mode 100644 index 0000000000..c61fe26239 --- /dev/null +++ b/quickstarts/supabase/config.yml @@ -0,0 +1,49 @@ +id: fecfebf6-4b32-47d6-a637-51617044a712 +slug: supabase +description: | + ## Why should you monitor your usage of Supabase? + Monitor your vector searches on Supabase to get visibility on what you send to Supabase, responses retrieved from Supabase, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ## Comprehensive monitoring quickstart for your Supabase app + Our Supabase quickstart provides metrics including Identify popular queries, sources, and content. + + ## What’s included in this quickstart? + New Relic Supabase monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Supabase app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic Supabase quickstart +icon: logo.png +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: Supabase +documentation: + - name: Supabase integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - Supabase + - langchain + - vector store + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb diff --git a/quickstarts/supabase/logo.png b/quickstarts/supabase/logo.png new file mode 100644 index 0000000000..a02ed8676d Binary files /dev/null and b/quickstarts/supabase/logo.png differ diff --git a/quickstarts/sybase/config.yml b/quickstarts/sybase/config.yml index 1da135ca53..3cf1da3c2b 100644 --- a/quickstarts/sybase/config.yml +++ b/quickstarts/sybase/config.yml @@ -36,3 +36,4 @@ documentation: description: Monitor SAP Adaptive Server Enterprise (Sybase) icon: logo.svg website: https://www.newrelic.com + diff --git a/quickstarts/synthetics/private-locations/config.yml b/quickstarts/synthetics/private-locations/config.yml index f4db213f23..87798cbe0c 100644 --- a/quickstarts/synthetics/private-locations/config.yml +++ b/quickstarts/synthetics/private-locations/config.yml @@ -48,3 +48,4 @@ icon: logo.svg website: https://www.newrelic.com dashboards: - synthetics-private-minions + diff --git a/quickstarts/tidbcloud/config.yml b/quickstarts/tidbcloud/config.yml new file mode 100644 index 0000000000..6c202300cb --- /dev/null +++ b/quickstarts/tidbcloud/config.yml @@ -0,0 +1,48 @@ +id: bb0e7dc3-7484-46ca-841e-86a2d8818fcc +# Sets the URL name of the quickstart on public I/O (required) +dataSourceIds: + - tidbcloud +slug: tidbcloud-quickstart + +# Displayed in the UI (required) +title: TiDB Cloud + +# Long-form description of the quickstart (required) +description: |- + ## Quickstart for TiDB Cloud monitoring + TiDB Cloud is a fully-managed Database-as-a-Service (DBaaS) solution for TiDB, an open-source, distributed SQL database that is designed to handle both online transaction processing (OLTP) and online analytical processing (OLAP) workloads. + + ### New Relic TiDB Cloud quickstart features + With monitoring statistics enabled, you can observe key metrics to analyze the performance of your cluster. + + ### TiDBCloud Quickstart instructions + Check out [Metrics available to New Relic](https://docs.pingcap.com/tidbcloud/monitor-new-relic-integration#metrics-available-to-new-relic) to learn more about New Relic monitoring for TiDBCloud. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + New Relic's TiDB Cloud quickstart provides performance insights including database time, queries per second, and resource utilization. Install the quickstart to better understand utilization of resources and monitor performance issues. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - PingCAP + - lilyjazz + +# Keywords for filtering / searching criteria in the UI +keywords: + - database + +dashboards: + - tidbcloud + +# Documentation references +documentation: + - name: Integrate TiDB Cloud with New Relic + url: https://docs.pingcap.com/tidbcloud/monitor-new-relic-integration + description: You can configure TiDB Cloud to send metric data about your TiDB clusters to New Relic. + +# Content / Design +icon: logo.svg +website: https://tidbcloud.com/ diff --git a/quickstarts/tidbcloud/logo.svg b/quickstarts/tidbcloud/logo.svg new file mode 100644 index 0000000000..7010b35021 --- /dev/null +++ b/quickstarts/tidbcloud/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/tigris/config.yml b/quickstarts/tigris/config.yml new file mode 100644 index 0000000000..ae725fc47c --- /dev/null +++ b/quickstarts/tigris/config.yml @@ -0,0 +1,47 @@ +id: b708e579-49a7-471c-9579-c68fcf53083c +slug: tigris +description: | + ## Why should you monitor your usage of Tigris? + Monitor your vector searches on Tigris to get visibility on what you send to Tigris, responses retrieved from Tigris, latency, usage and errors. + ### Track the query performance of Tigris + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track the health of Tigris: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your Tigris's performance and identify areas of improvement. + + ### What’s included in this quickstart? + New Relic Tigris monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Tigris app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content. + +summary: | + Monitor your Vector search's performance and quality with New Relic Tigris quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Tigris +documentation: + - name: Tigris Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - tigris + - tigris vector db + - vector database + - vector search + - AI database + - machine learning database + - big data database + - SQL-based vector database + - sql based vector database + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/tigris/logo.svg b/quickstarts/tigris/logo.svg new file mode 100644 index 0000000000..e023e74c05 --- /dev/null +++ b/quickstarts/tigris/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/tvos/config.yml b/quickstarts/tvos/config.yml index 6e59531212..2d9f5f4548 100644 --- a/quickstarts/tvos/config.yml +++ b/quickstarts/tvos/config.yml @@ -27,3 +27,4 @@ dataSourceIds: - tvos-mobile keywords: - mobile + diff --git a/quickstarts/typesense/config.yml b/quickstarts/typesense/config.yml new file mode 100644 index 0000000000..4f328d02ef --- /dev/null +++ b/quickstarts/typesense/config.yml @@ -0,0 +1,49 @@ +id: e9e125ff-2fe7-47b5-8a29-2a43b95136ec +slug: typesense +description: | + ## Why should you monitor your usage of Typesense? + Monitor your vector searches on Typesense to get visibility on what you send to Typesense, responses retrieved from Typesense, latency, usage and errors. + + ### Track the query performance of Typesense + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track the health of Typesense: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into Typesense's performance and identify areas of improvement. + + ## Comprehensive monitoring quickstart for your Typesense app + Our Typesense quickstart provides metrics including Identify popular queries, sources, and content. + + ## What’s included in this quickstart? + New Relic Typesense monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of Typesense. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content +summary: | + Monitor your Vector search's performance and quality with New Relic Typesense quickstart +icon: logo.svg +level: + - New Relic +authors: + - New Relic + - Ramana Reddy +title: Typesense +documentation: + - name: Typesense integration documentation + description: | + Implement monitoring and instrumentation for Typesense, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - Typesense + - langchain + - vector store + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +alertPolicies: + - langchain-vectordb +dashboards: + - langchain-vectordb diff --git a/quickstarts/typesense/logo.svg b/quickstarts/typesense/logo.svg new file mode 100644 index 0000000000..e9f46540b8 --- /dev/null +++ b/quickstarts/typesense/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/vectara/config.yml b/quickstarts/vectara/config.yml new file mode 100644 index 0000000000..4eb8493544 --- /dev/null +++ b/quickstarts/vectara/config.yml @@ -0,0 +1,47 @@ +id: 1b92a44e-44a4-4e46-a563-85003d4362df +slug: vectara +description: | + ## Why should you monitor your usage of Vectara? + Monitor your vector searches with Vectara to gain insights into the data you're sending to it, the responses you're receiving, the latency, usage, and any potential errors. + ### Track the query performance of Vectara + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track the health of Vectara + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your Vectara's performance and identify areas of improvement. + + ### What’s included in this quickstart? + New Relic Vectara monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of Vectara. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Vectara quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: Vectara +documentation: + - name: Vectara integration documentation + description: | + Implement monitoring and instrumentation for your Vectara, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - vectara + - vector store + - machine learning + - vector search + - artificial intelligence + - AI + - ML + - NLP + - data science + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/vectara/logo.svg b/quickstarts/vectara/logo.svg new file mode 100644 index 0000000000..8cf6daff10 --- /dev/null +++ b/quickstarts/vectara/logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/velero-prometheus/config.yml b/quickstarts/velero-prometheus/config.yml index 356824791a..69bd8abb8c 100644 --- a/quickstarts/velero-prometheus/config.yml +++ b/quickstarts/velero-prometheus/config.yml @@ -35,6 +35,7 @@ keywords: - write - kubernetes - disaster recovery + - featured installPlans: - setup-prometheus dataSourceIds: diff --git a/quickstarts/vertica/config.yml b/quickstarts/vertica/config.yml new file mode 100644 index 0000000000..2ae5c18716 --- /dev/null +++ b/quickstarts/vertica/config.yml @@ -0,0 +1,48 @@ +id: 09009442-2ff7-499d-b9ac-67d2a9db2352 + +slug: vertica +description: | + ## Why monitor Vertica? + Vertica is a high-performance, scalable data warehouse platform that is used by many organizations to store and analyze large datasets. However, like any complex system, Vertica can experience problems that can impact performance and reliability. + Here are the top three reasons why Vertica needs to be monitored: + ### Data skew and segmentation: + Vertica distributes data across multiple nodes, and each node processes a subset of the data. If the data is not distributed evenly across the nodes, it can cause data skew, which can lead to performance problems. Segmentation is another problem that can occur when the data is not distributed evenly across the nodes. Segmentation can cause queries to take longer to run, as they have to wait for all of the nodes to finish processing their portion of the query. + ### Resource utilization: + Vertica is a resource-intensive platform, and it is important to monitor resource utilization to ensure that the system is not overloaded. Resources to monitor include CPU, memory, and disk I/O. If any of these resources are maxed out, it can lead to performance problems. + ### Query performance: + Vertica is designed to handle complex queries on large datasets quickly and efficiently. However, it is important to monitor query performance to ensure that queries are running as expected. If you notice that queries are taking longer to run than usual, it may be a sign of a performance problem. + + ## Comprehensive monitoring quickstart for Vertica + + Vertica Quickstart shows how to monitor a Vertica database and run simple queries to analyze the performance. As modern databases become increasingly complex yet crucial to business operations, it is imperative to continually monitor their performance. Vertica, a high-performance analytics database, provides several performance monitoring methods. You can monitor the activity and health of a Vertica database through log files and system tables. + + ### What’s included in the Vertica quickstart? + + Install this quickstart to get preconfigured observability solutions: + - Includes pre-built alert if the disk usage exceeds 90% + - Informative dashboards (long running queries, disk usage, user informations, sessions and more). + +summary: | + Monitor your Vertica with New Relic infrastructure agent and NRI-Flex configuration. Get real-time insights into Vertica database and performance, including long running queries, queries duration, disk space, table information and more. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Vertica +dashboards: + - vertica +alertPolicies: + - vertica +documentation: + - name: Vertica + description: | + Monitor the performance metrics of your Vertica database in real-time with New Relic Vertica. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vertica-monitoring-integration +dataSourceIds: + - vertica +keywords: + - vertica + - database + - infrastructure + - opentext diff --git a/quickstarts/vertica/logo.png b/quickstarts/vertica/logo.png new file mode 100644 index 0000000000..0492545ffb Binary files /dev/null and b/quickstarts/vertica/logo.png differ diff --git a/quickstarts/victorops/config.yml b/quickstarts/victorops/config.yml deleted file mode 100644 index 5eb75af44c..0000000000 --- a/quickstarts/victorops/config.yml +++ /dev/null @@ -1,38 +0,0 @@ -id: 3937fc57-4414-4db7-8f23-b313892379ab -slug: victorops -description: | - ## What is VictorOps? - - Get notified via VictorOps when incidents are opened, acknowledged, or closed. - Notifications can include charts about the incident. - - ### Get started! - - Check out our VictorOps documentation to set up a notification channel and provide fast and consistent ways for the right personnel to be notified about incidents - - ### More info - - Check out the [documentation](https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts) to learn more about New Relic alerting for VictorOps. -summary: | - Get notified via VictorOps when incidents are opened, acknowledged, or closed. - Notifications can include charts about the incident. -icon: logo.svg -level: New Relic -authors: - - New Relic -title: VictorOps -documentation: - - name: VictorOps installation docs - description: | - Send your New Relic alerts to VictorOps - url: https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts -keywords: - - victorops - - on call - - support - - site reliability - - SRE -installPlans: - - third-party-victorops -dataSourceIds: - - victorops diff --git a/quickstarts/victorops/logo.svg b/quickstarts/victorops/logo.svg deleted file mode 100644 index fad94d0fd4..0000000000 --- a/quickstarts/victorops/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/video/video-android/config.yml b/quickstarts/video/video-android/config.yml index 49f521efc0..3b4b449f75 100644 --- a/quickstarts/video/video-android/config.yml +++ b/quickstarts/video/video-android/config.yml @@ -21,3 +21,4 @@ documentation: url: https://github.com/newrelic/video-agent-android description: Agent to monitor video applications for Android. icon: logo.svg + diff --git a/quickstarts/vmware/vmware-esxi/config.yml b/quickstarts/vmware/vmware-esxi/config.yml deleted file mode 100644 index 47b798e1a4..0000000000 --- a/quickstarts/vmware/vmware-esxi/config.yml +++ /dev/null @@ -1,21 +0,0 @@ -id: 1b913236-5aab-424c-8135-c1d2a4a03441 -slug: vmware-esxi -description: Hypervisor built for direct interaction with server hardware and resources. -summary: Hypervisor built for direct interaction with server hardware and resources. -icon: logo.svg -level: New Relic -authors: - - New Relic -title: VMware ESXi -documentation: - - name: VMware ESXi installation docs - description: | - Hypervisor built for direct interaction with server hardware and - resources. - url: https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/vmware-esxi-open-source-integration -keywords: - - infrastructure -installPlans: - - third-party-vmware-esxi -dataSourceIds: - - vmware-esxi diff --git a/quickstarts/vmware/vmware-esxi/logo.svg b/quickstarts/vmware/vmware-esxi/logo.svg deleted file mode 100644 index 0b2ee0e033..0000000000 --- a/quickstarts/vmware/vmware-esxi/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/vmware/vmware-vsphere/config.yml b/quickstarts/vmware/vmware-vsphere/config.yml new file mode 100644 index 0000000000..1db5d523c7 --- /dev/null +++ b/quickstarts/vmware/vmware-vsphere/config.yml @@ -0,0 +1,32 @@ +id: 87bd9d20-a193-4aa8-80f7-a1f5c65278f1 +slug: vmware-vsphere +title: VMware vSphere +description: | + Enterprise Workload Platform for Traditional and Next Gen Apps +summary: | + Enterprise Workload Platform for Traditional and Next Gen Apps +level: New Relic +authors: + - New Relic + - Zack Mutchler + - Marc Netterfield +keywords: + - infrastructure + - vmware + - vsphere + - esxi + - vcenter +installPlans: + - vsphere-integration +dataSourceIds: + - vmware-vsphere +alertPolicies: + - vmware-vsphere +dashboards: + - vmware-vsphere +documentation: + - name: VMware vSphere installation docs + description: | + Enterprise Workload Platform for Traditional and Next Gen Apps + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/vmware-vsphere-monitoring-integration/#install +icon: logo.svg diff --git a/quickstarts/vmware/vmware-vsphere/logo.svg b/quickstarts/vmware/vmware-vsphere/logo.svg new file mode 100644 index 0000000000..87a103e97e --- /dev/null +++ b/quickstarts/vmware/vmware-vsphere/logo.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/quickstarts/weaviate/config.yml b/quickstarts/weaviate/config.yml new file mode 100644 index 0000000000..433e4a8753 --- /dev/null +++ b/quickstarts/weaviate/config.yml @@ -0,0 +1,43 @@ +id: 7a0892b5-1309-445c-9902-e094aaf5077b +slug: weaviate +description: | + ## Why should you monitor your usage of Weaviate? + Monitor your vector searches on Weaviate to get visibility on what you send to Weaviate, responses retrieved from Weaviate, latency, usage and errors. + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + ### What’s included in this quickstart? + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Weaviate quickstart. +icon: logo.png +level: New Relic +authors: + - New Relic +title: Weaviate +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - weaviate + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/weaviate/logo.png b/quickstarts/weaviate/logo.png new file mode 100644 index 0000000000..0f4e8f5927 Binary files /dev/null and b/quickstarts/weaviate/logo.png differ diff --git a/quickstarts/windows/windows-certs/config.yml b/quickstarts/windows/windows-certs/config.yml new file mode 100644 index 0000000000..1c7749230b --- /dev/null +++ b/quickstarts/windows/windows-certs/config.yml @@ -0,0 +1,52 @@ +id: 34776289-28ab-4832-ba67-adbb4357d21d +# Sets the URL name of the quickstart on public I/O (required) +slug: windowslocalcerts + +# Displayed in the UI (required) +title: Windows Local Certs + +# Long-form description of the quickstart (required) +description: | + The quickstart shares an example of how to get started with getting visibility into the local certificates in your Windows environment. Within this bundle you'll find information on the instrumentation (via Flex on NR Infrastructure Agent), as well as a starter dashboard that will be added to your account. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + Get visibility into the local certificates running on a Windows machine. + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - Nima Adib + +icon: logo.png + +# Keywords for filtering / searching criteria in the UI +keywords: + - windows + - microsoft + - server + - os + - operating system + - certificates + - powershell + +# Reference to install plans located under /install directory +# Allows us to construct reusable "install plans" and just use their ID in the quickstart config +dataSourceIds: + - windows-certs + +# Reference to dashboards to be included in this quickstart +dashboards: + - windows-certs + +# Documentation references +documentation: + - name: Get started with this flex integration + url: https://github.com/newrelic/nri-flex/tree/master/examples/windows/WindowsExpCertSample + description: github link with the example integration set up as well as the documentation and overview. + +# Content / Design +website: https://www.newrelic.com + diff --git a/quickstarts/windows/windows-certs/logo.png b/quickstarts/windows/windows-certs/logo.png new file mode 100644 index 0000000000..675e89e22d Binary files /dev/null and b/quickstarts/windows/windows-certs/logo.png differ diff --git a/quickstarts/winservices/config.yml b/quickstarts/winservices/config.yml index fb7f2e8fc4..c1818f500b 100644 --- a/quickstarts/winservices/config.yml +++ b/quickstarts/winservices/config.yml @@ -32,6 +32,7 @@ keywords: - service - os - operating system + - featured authors: - New Relic documentation: diff --git a/quickstarts/wordpress-fullstack/config.yml b/quickstarts/wordpress-fullstack/config.yml new file mode 100644 index 0000000000..5ca5bf74b4 --- /dev/null +++ b/quickstarts/wordpress-fullstack/config.yml @@ -0,0 +1,50 @@ +id: 5e747b2f-ec74-4145-8006-9acbbc64c7db +slug: wordpress-fullstack +description: | + ## Comprehensive monitoring quickstart for WordPress + WordPress is a popular open-source content management system (CMS) used for creating websites, blogs, and web applications. It provides a user-friendly interface and a wide range of customizable themes and plugins, allowing users to build and manage their online content without extensive coding knowledge. + + New Relic WordPress Full Stack quickstart enables performance monitoring of your WordPress application through agents installation and New Relic Flex configuration. + + ### Why monitor WordPress? + Websites across various domains extensively utilize WordPress applications. Despite their versatility, these websites can experience slowdowns caused by factors such as slow-loading plugins, database connection problems, or other variables. + Our WordPress Full-Stack quickstart offers step-by-step documentation for instrumenting the quickstart and provides a pre-built dashboard to monitor crucial performance metrics, database metrics, and error messages generated on a specific URL. These indicators assist you and your team in identifying and addressing concerns, ultimately enhancing your website's performance. + + ### What’s included in this quickstart? + New Relic WordPress Full Stack monitoring agent capture the following metrics: + - Easily identify plugins that consume the most time and resources + - User usage statistics i.e., user device type and unique visitors + - Database metrics like connections per second and more + - Browser metrics like page view comparison, time to first byte (TTFB) and more + - Transactions and related error messages + - WordPress debug logs are also captured +summary: | + Optimize the monitoring of WordPress metrics, plugins, logs, and performance analysis by leveraging the integrated full stack monitoring capabilities offered by New Relic. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: WordPress Full Stack +documentation: + - name: WordPress Full Stack documentation + description: | + Monitor the performance metrics of your WordPress application and its instances in real-time with New Relic. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/wordpress-fullstack-integration/ +keywords: + - wordpress + - php + - performance monitoring + - CMS + - wordpress full stack + - browser + - full stack + - word press +dataSourceIds: + - new-relic-infrastructure-agent + - php + - mysql + - apache +dashboards: + - wordpress-fullstack +alertPolicies: + - wordpress-fullstack diff --git a/quickstarts/wordpress-fullstack/logo.svg b/quickstarts/wordpress-fullstack/logo.svg new file mode 100644 index 0000000000..bf1dd42fef --- /dev/null +++ b/quickstarts/wordpress-fullstack/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/zilliz/config.yml b/quickstarts/zilliz/config.yml new file mode 100644 index 0000000000..df5b18eed1 --- /dev/null +++ b/quickstarts/zilliz/config.yml @@ -0,0 +1,49 @@ +id: 610b6e73-e4fa-47a6-b797-573230c1f18b +slug: zilliz +description: | + ## Why should you monitor your usage of Zilliz? + + Monitor your vector searches on Zilliz to get visibility on what you send to Zilliz, responses retrieved from Zilliz, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic Zilliz monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Zilliz app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic Zilliz quickstart. +icon: logo.svg +level: New Relic +authors: + - New Relic +title: Zilliz +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - zilliz + - vector search + - vectordb + - vector db + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/zilliz/logo.svg b/quickstarts/zilliz/logo.svg new file mode 100644 index 0000000000..7a57eb4a5f --- /dev/null +++ b/quickstarts/zilliz/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/utils/__tests__/create-validate-pr-quickstarts.test.js b/utils/__tests__/create-validate-pr-quickstarts.test.js index 89c1302225..992f84ac98 100644 --- a/utils/__tests__/create-validate-pr-quickstarts.test.js +++ b/utils/__tests__/create-validate-pr-quickstarts.test.js @@ -8,6 +8,7 @@ import * as githubHelpers from '../lib/github-api-helpers'; jest.mock('@actions/core'); jest.spyOn(global.console, 'error').mockImplementation(() => {}); +jest.spyOn(global.console, 'log').mockImplementation(() => {}); jest.mock('../lib/github-api-helpers', () => ({ ...jest.requireActual('../lib/github-api-helpers'), diff --git a/utils/__tests__/dashboard-helper.test.js b/utils/__tests__/dashboard-helper.test.js index 342595b23b..b5bac98a25 100644 --- a/utils/__tests__/dashboard-helper.test.js +++ b/utils/__tests__/dashboard-helper.test.js @@ -3,6 +3,8 @@ import { checkLine, createWarningComment, runHelper, + getLines, + getWarnings, } from '../dashboard-helper'; import * as ghHelpers from '../lib/github-api-helpers'; import * as core from '@actions/core'; @@ -20,51 +22,62 @@ jest.mock('../lib/github-api-helpers', () => { jest.mock('node-fetch'); describe('dashboard-helper', () => { - describe('checkLine', () => { + describe('getWarnings', () => { test('handles empty string input', () => { - expect(checkLine('')).toHaveLength(0); + expect(getWarnings('')).toHaveLength(0); }); test('finds guid', () => { - expect(checkLine(`(entity.guid)`)).toHaveLength(1); + expect(getWarnings(`(entity.guid)`)).toHaveLength(1); }); test('finds entityGuid', () => { - expect(checkLine(`entityGuid`)).toHaveLength(1); + expect(getWarnings({'entityGuid': 1234})).toHaveLength(1); }); test('finds linkedEntityGuids', () => { - expect(checkLine(`"linkedEntityGuids": 123456`)).toHaveLength(1); + expect(getWarnings({"linkedEntityGuids":123456})).toHaveLength(1); }); test('does not find null linkedEntityGuids', () => { - expect(checkLine(`"linkedEntityGuids": null`)).toHaveLength(0); + expect(getWarnings({"linkedEntityGuids":null})).toHaveLength(0); }); test('finds permissions field', () => { - expect(checkLine(`"permissions": test`)).toHaveLength(1); + expect(getWarnings({"permissions": 'test'})).toHaveLength(1); }); test('finds accountId', () => { - expect(checkLine(`"accountId": 123456`)).toHaveLength(1); + expect(getWarnings({"accountId":123456})).toHaveLength(1); }); test('does not find accountId equal to zero', () => { - expect(checkLine(`"accountId": 0`)).toHaveLength(0); + expect(getWarnings({"accountId":0})).toHaveLength(0); }); test('finds accountIds', () => { - expect(checkLine(`"accountIds": [ 0 ]`)).toHaveLength(1); + expect(getWarnings({"accountIds":[ 31415 ]})).toHaveLength(1); }); test('does not find accountIds equal to []', () => { - expect(checkLine(`"accountIds": []`)).toHaveLength(0); - }); + expect(getWarnings({"accountIds":[]})).toHaveLength(0); + }); + + test('finds warnings across multiple lines', () => { + const multiLine = { + "accountIds": [ + 12345678, + 3456, + 12, + ], + } + expect(getWarnings(multiLine)).toHaveLength(1); + }); }); describe('createWarningComment', () => { test('creates comment', () => { - const warnings = ['test string | test file | test line']; + const warnings = ['test string | test file']; const testComment = createWarningComment(warnings); expect(testComment).toContain(warnings[0]); expect(testComment).toContain( @@ -110,7 +123,10 @@ describe('dashboard-helper', () => { 'raw-url/dashboards/cool-dash/cool-dash.json', { headers: { authorization: 'token token' } } ); - expect(core.setOutput).toHaveBeenCalledWith('comment', '### The PR checks have run and found the following warnings:%0A%0A| Warning | Filepath | Line # | %0A| --- | --- | --- | %0A| \"permissions\" field should not be used | dashboards/cool-dash/cool-dash.json | 2 |%0A%0AReference the [Contributing Docs for Dashboards](https://github.com/newrelic/newrelic-quickstarts/blob/main/CONTRIBUTING.md#dashboards) for more information. %0A'); + expect(core.setOutput).toHaveBeenCalledWith( + 'comment', + '### The PR checks have run and found the following warnings:\n\n| Warning | Filepath | \n| --- | --- | \n| "permissions" field should not be used | dashboards/cool-dash/cool-dash.json |\n\nReference the [Contributing Docs for Dashboards](https://github.com/newrelic/newrelic-quickstarts/blob/main/CONTRIBUTING.md#dashboards) for more information. \n' + ); }); test('handles network error;', async () => { diff --git a/utils/__tests__/logger.test.ts b/utils/__tests__/logger.test.ts new file mode 100644 index 0000000000..0df210dcf7 --- /dev/null +++ b/utils/__tests__/logger.test.ts @@ -0,0 +1,23 @@ +import logger from '../logger'; + +jest.spyOn(console, 'log').mockImplementation(jest.fn()); + +describe('logger', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('Defaults to INFO level', () => { + process.env.LOG_LEVEL = ''; + + logger.info('test'); + expect(console.log).toHaveBeenCalledTimes(1); + }); + + test('Does not log at a level higher than set', () => { + process.env.LOG_LEVEL = 'INFO'; + + logger.debug('test'); + expect(console.log).toHaveBeenCalledTimes(0); + }); +}); diff --git a/utils/__tests__/set-dashboard-required-datasources.test.js b/utils/__tests__/set-dashboard-required-datasources.test.js index 4d092e7f70..8eef514239 100644 --- a/utils/__tests__/set-dashboard-required-datasources.test.js +++ b/utils/__tests__/set-dashboard-required-datasources.test.js @@ -6,6 +6,7 @@ import * as nrGraphQlHelpers from '../lib/nr-graphql-helpers'; import { setDashboardsRequiredDataSources } from '../set-dashboards-required-datasources'; jest.spyOn(global.console, 'error').mockImplementation(() => {}); +jest.spyOn(global.console, 'log').mockImplementation(() => {}); jest.mock('../lib/github-api-helpers', () => ({ ...jest.requireActual('../lib/github-api-helpers'), diff --git a/utils/create-validate-data-sources.ts b/utils/create-validate-data-sources.ts index df746a9122..423cd78708 100644 --- a/utils/create-validate-data-sources.ts +++ b/utils/create-validate-data-sources.ts @@ -14,6 +14,7 @@ import DataSource, { DataSourceMutationResponse } from './lib/DataSource'; import { NerdGraphResponseWithLocalErrors } from './types/nerdgraph'; import type { DataSourceConfig } from './types/DataSourceConfig'; +import logger from './logger'; const DATA_SOURCE_CONFIG_REGEXP = new RegExp( 'data-sources/.+/config.+(yml|yaml)' @@ -45,7 +46,9 @@ const main = async () => { process.exit(1); } + logger.info(`Fetching files for pull request ${GITHUB_API_URL}`); const files = await fetchPaginatedGHResults(GITHUB_API_URL, githubToken); + logger.info(`Found ${files.length} files`); const dataSources = filterOutTestFiles(files) .filter(isNotRemoved) @@ -58,6 +61,8 @@ const main = async () => { let results: (NerdGraphResponseWithLocalErrors & { name: string; })[] = []; + + logger.info(`Submitting ${dataSources.length} data sources...`); // Submit all of the mutations (in chunks of 5) for (const c of chunk(dataSources, 5)) { const res = await Promise.all( @@ -84,6 +89,8 @@ const main = async () => { if (hasFailed) { process.exit(1); } + + logger.info(`Success!`); }; if (require.main === module) { diff --git a/utils/create_validate_pr_quickstarts.ts b/utils/create_validate_pr_quickstarts.ts index 04312227f1..b9d35ee615 100644 --- a/utils/create_validate_pr_quickstarts.ts +++ b/utils/create_validate_pr_quickstarts.ts @@ -19,6 +19,7 @@ import { NerdGraphResponseWithLocalErrors, NerdGraphError, } from './types/nerdgraph'; +import logger from './logger'; type ResponseWithErrors = NerdGraphResponseWithLocalErrors & { @@ -33,8 +34,8 @@ const installPlanErrorExists = (error: Error | NerdGraphError): boolean => const dataSourceErrorExists = (error: Error | NerdGraphError): boolean => 'extensions' in error && - error?.extensions?.argumentPath.includes('dataSourceIds') && - error?.message?.includes('contains a data source that does not exist'); + error?.extensions?.argumentPath.includes('dataSourceIds') && + error?.message?.includes('contains a data source that does not exist'); export const countAndOutputErrors = ( graphqlResponses: ResponseWithErrors[] @@ -72,9 +73,12 @@ export const createValidateQuickstarts = async ( return false; } + logger.info(`Fetching files for pull request ${ghUrl}`); // Get all files from PR const files = await fetchPaginatedGHResults(ghUrl, ghToken); + logger.info(`Found ${files.length} files`); + // Get all quickstart mutation variables const quickstarts = filterOutTestFiles(files) .filter(isNotRemoved) @@ -121,6 +125,7 @@ export const createValidateQuickstarts = async ( // Class implementations may throw an error const quickstartErrors: string[] = []; + logger.info(`Submitting ${quickstarts.length} quickstarts...`); for (const c of chunk(quickstarts, 5)) { try { const res = await Promise.all( @@ -162,6 +167,8 @@ const main = async () => { if (hasFailed) { process.exit(1); } + + logger.info(`Success!`); }; /** diff --git a/utils/dashboard-helper.ts b/utils/dashboard-helper.ts index 6cb0663824..5c9b521355 100644 --- a/utils/dashboard-helper.ts +++ b/utils/dashboard-helper.ts @@ -13,7 +13,7 @@ const regexAndWarning: [RegExp, string][] = [ [/\"permissions\": /, `\"permissions\" field should not be used`], [/\"accountId\": (?:(?!0))/, `\"accountId\" must be zero`], [ - /\"accountIds\"\s*:\s\[(?!\s*])([^\]\[]+)\]/, + /\"accountIds\": \"\[(?!\s*])([^\]\[]+)\]\"/, `\"accountIds\" must be set to []`, ], ]; @@ -28,13 +28,34 @@ export const checkLine = (line: string) => { return warningsFound; }; -const encodedNewline = '%0A'; +export const getWarnings = (dashboardJson: any) => { + const dashLines = JSON.stringify(dashboardJson, (k, v) => { + if (Array.isArray(v)) { + return JSON.stringify(v) + } + return v + }, 2).split('\n'); + const warnings: string[] = []; + + dashLines.forEach((line) => { + const output = checkLine(line); + if (output.length > 0) { + output.forEach((warning) => + warnings.push(warning) + ); + } + }); + return warnings; +} + +const encodedNewline = '\n'; + export const createWarningComment = (warnings: string[]) => { const commentMessage = [ `### The PR checks have run and found the following warnings:${encodedNewline}`, ]; - const tableHeader = `| Warning | Filepath | Line # | ${encodedNewline}| --- | --- | --- | `; + const tableHeader = `| Warning | Filepath | ${encodedNewline}| --- | --- | `; commentMessage.push(tableHeader); warnings.forEach((w) => commentMessage.push(w)); @@ -61,7 +82,7 @@ export const runHelper = async ( return false; } - const warnings: string[] = []; + const warningMessages: string[] = []; const files = await fetchPaginatedGHResults(new URL(prUrl).href, token); @@ -80,25 +101,19 @@ export const runHelper = async ( } const responseJSON = await response.json(); - const dashLines = JSON.stringify(responseJSON, null, 2).split('\n'); - - dashLines.forEach((line, lineNumber) => { - const output = checkLine(line); - if (output.length > 0) { - output.forEach((o) => - warnings.push(`| ${o} | ${dash.filename} | ${lineNumber + 1} |`) - ); - } - }); + const warnings = getWarnings(responseJSON); + warnings.forEach((o) => + warningMessages.push(`| ${o} | ${dash.filename} |`) + ); } catch (error: any) { console.error('Error:', error.message); return false; } } - if (warnings.length > 0) { - console.log('Found warnings:', warnings); - const warningComment = createWarningComment(warnings); + if (warningMessages.length > 0) { + console.log('Found warnings:', warningMessages); + const warningComment = createWarningComment(warningMessages); core.setOutput('comment', warningComment); } diff --git a/utils/generate-uuids.ts b/utils/generate-uuids.ts index 1102bb93b5..5181c225c2 100644 --- a/utils/generate-uuids.ts +++ b/utils/generate-uuids.ts @@ -3,11 +3,13 @@ import * as fs from 'fs'; import { v4 as uuidv4 } from 'uuid'; import Quickstart from './lib/Quickstart'; +import logger from './logger'; const main = (quickstarts: Quickstart[]): void => { for (const quickstart of quickstarts) { if (!quickstart.config.id) { - console.log(`Generated ID for ${quickstart.config.title}`); + logger.info(`Generating ID for ${quickstart.config.title}...`); + const newId: string = uuidv4(); const rawConfig: string = fs.readFileSync( quickstart.getConfigFilePath(), @@ -18,6 +20,7 @@ const main = (quickstarts: Quickstart[]): void => { fs.writeFileSync(quickstart.getConfigFilePath(), configWithId, { encoding: 'utf8', }); + logger.info(`Generated ID for ${quickstart.config.title}`); } } }; diff --git a/utils/lib/Alert.ts b/utils/lib/Alert.ts index 628e3a0921..8c20c29325 100644 --- a/utils/lib/Alert.ts +++ b/utils/lib/Alert.ts @@ -5,6 +5,7 @@ import * as glob from 'glob'; import Component from './Component'; +import logger from '../logger'; import type { AlertType, QuickstartAlertInput, @@ -152,29 +153,36 @@ class Alert extends Component { | { alertPolicy: AlertPolicyDataSource } | { alertPolicy: null; errors: ErrorOrNerdGraphError[] } > { + const policyName = `${quickstart.name} alert policy`; + + logger.info(`Request data sources for ${policyName}`); const { data, errors } = await fetchNRGraphqlResults< AlertPolicyRequiredDataSourcesQueryVariables, AlertPolicyRequiredDataSourcesQueryResults >({ queryString: ALERT_POLICY_REQUIRED_DATA_SOURCES_QUERY, - variables: { query: `${quickstart.name} alert policy` }, + variables: { query: policyName }, }); + logger.debug(`Results for ${policyName}`, { data, errors }); const results = data?.actor?.nr1Catalog?.search?.results; const hasFailed = quickstart.dataSourceIds.length > 1; if (errors && errors.length > 0) { + logger.debug(`Errors requesting data sources for ${policyName}`, { + errors, + }); return { alertPolicy: null, errors }; } if (results === undefined || results.length === 0) { - console.log(`No alert policy for quickstart ${quickstart.name} exists`); + logger.info(`No alert policy for quickstart ${quickstart.name} exists`); return { alertPolicy: null, errors: [] }; } if (hasFailed) { - console.log( + logger.info( `Multiple Quickstart data sources detected for Quickstart: ${quickstart.name} with AlertPolicy: ${results[0].id} must update manually` ); @@ -214,6 +222,10 @@ class Alert extends Component { templateId: string, dataSourceIds: string[] ) { + logger.info(`Submitting mutation for alert policy ${templateId}`, { + templateId, + dataSourceIds, + }); const result = await fetchNRGraphqlResults< AlertPolicySetRequiredDataSourcesMutationVariables, AlertPolicySetRequiredDataSourcesMutationResults @@ -221,6 +233,8 @@ class Alert extends Component { queryString: ALERT_POLICY_SET_REQUIRED_DATA_SOURCES_MUTATION, variables: { templateId, dataSourceIds }, }); + logger.info(`Submitted mutation for alert policy ${templateId}`); + logger.debug(`Results for alert policy mutation`, { ...result }); return result; } diff --git a/utils/lib/Dashboard.ts b/utils/lib/Dashboard.ts index 78213df7e0..71b318ae68 100644 --- a/utils/lib/Dashboard.ts +++ b/utils/lib/Dashboard.ts @@ -6,6 +6,7 @@ import type { QuickstartDashboardInput } from '../types/QuickstartMutationVariab import type { NerdGraphResponseWithLocalErrors } from '../types/nerdgraph'; import Component from './Component'; +import logger from '../logger'; import { GITHUB_RAW_BASE_URL, DASHBOARD_REQUIRED_DATA_SOURCES_QUERY, @@ -160,6 +161,7 @@ class Dashboard extends Component { static async getRequiredDataSources( templateId: string ): Promise<{ ids: string[]; errors?: ErrorOrNerdGraphError[] }> { + logger.info(`Requesting data sources for ${templateId}`); const { data, errors } = await fetchNRGraphqlResults< DashboardRequiredDataSourcesQueryVariables, DashboardRequiredDataSourcesQueryResults @@ -167,6 +169,7 @@ class Dashboard extends Component { queryString: DASHBOARD_REQUIRED_DATA_SOURCES_QUERY, variables: { id: templateId }, }); + logger.debug(`Results for ${templateId}`, { data, errors }); const ids = data?.actor?.nr1Catalog?.dashboardTemplate?.metadata?.requiredDataSources?.map( @@ -196,6 +199,10 @@ class Dashboard extends Component { ...new Set([...currDataSourceIds, ...newDataSourceIds]), ]; + logger.info(`Submitting mutation for dashboard ${templateId}`, { + templateId, + newDataSourceIds, + }); const result = await fetchNRGraphqlResults< DashboardSetRequiredDataSourcesMutationVariables, DashboardSetRequiredDataSourcesMutationResults @@ -203,6 +210,11 @@ class Dashboard extends Component { queryString: DASHBOARD_SET_REQUIRED_DATA_SOURCES_MUTATION, variables: { templateId, dataSourceIds }, }); + logger.info(`Submitted mutation for dashboard ${templateId}`); + logger.debug(`Results for dashboard ${templateId}`, { + data: result.data, + errors: result.errors, + }); return result; } diff --git a/utils/lib/DataSource.ts b/utils/lib/DataSource.ts index 02cfdc1606..fdbbad82c3 100644 --- a/utils/lib/DataSource.ts +++ b/utils/lib/DataSource.ts @@ -5,6 +5,7 @@ import * as yaml from 'js-yaml'; import Component from './Component'; import { DATA_SOURCE_MUTATION, GITHUB_RAW_BASE_URL } from '../constants'; +import logger from '../logger'; import { fetchNRGraphqlResults } from './nr-graphql-helpers'; @@ -114,6 +115,7 @@ class DataSource extends Component { ); } + logger.info(`Submitting mutation for ${this.config.id}`, { dryRun }); const { data, errors } = await fetchNRGraphqlResults< DataSourceMutationVariable, DataSourceMutationResponse @@ -121,6 +123,8 @@ class DataSource extends Component { queryString: DATA_SOURCE_MUTATION, variables: this._getComponentMutationVariables(dryRun), }); + logger.info(`Submitted mutation for ${this.config.id}`, { dryRun }); + logger.debug(`Submission results for ${this.config.id}`, { data, errors }); // filePath may need to be changed for this rework return { data, errors, name: this.identifier }; diff --git a/utils/lib/Quickstart.ts b/utils/lib/Quickstart.ts index 576fa1bde5..546f4bf4cc 100644 --- a/utils/lib/Quickstart.ts +++ b/utils/lib/Quickstart.ts @@ -7,6 +7,7 @@ import Alert from './Alert'; import Dashboard from './Dashboard'; import DataSource from './DataSource'; import Component from './Component'; +import logger from '../logger'; import { MOCK_UUID, GITHUB_RAW_BASE_URL, @@ -44,14 +45,14 @@ type Components = InstanceType; enum ConfigKey { AlertPolicies = 'alertPolicies', - Dashboards = 'dashboards', -}; + Dashboards = 'dashboards', +} interface ConfigToMutationMap { configKey: ConfigKey; mutationKey: string; constructor: ComponentType; -}; +} const ConfigToMutation: ConfigToMutationMap[] = [ { @@ -172,7 +173,7 @@ class Quickstart { description: doc.description, })), icon: icon && this._constructIconUrl(icon), - keywords: keywords, + keywords: keywords ?? [], sourceUrl: Component.getAssetSourceUrl( Component.removeBasePath(path.dirname(this.configPath), this.basePath) ), @@ -200,6 +201,7 @@ class Quickstart { } public async submitMutation(dryRun = true) { + logger.info(`Submitting mutation for ${this.identifier}`, { dryRun }); const { data, errors } = await fetchNRGraphqlResults< QuickstartMutationVariable, QuickstartMutationResponse @@ -207,6 +209,11 @@ class Quickstart { queryString: QUICKSTART_MUTATION, variables: await this.getMutationVariables(dryRun), }); + logger.info(`Submitted mutation for ${this.identifier}`, { dryRun }); + logger.debug(`Submission results for ${this.identifier}`, { + data, + errors, + }); // filePath may need to be changed for this rework return { data, errors, name: this.identifier }; diff --git a/utils/lib/__tests__/Quickstart.test.js b/utils/lib/__tests__/Quickstart.test.js index 18514ff15c..21c856e7ea 100644 --- a/utils/lib/__tests__/Quickstart.test.js +++ b/utils/lib/__tests__/Quickstart.test.js @@ -155,6 +155,16 @@ describe('Quickstart', () => { expect(variables.quickstartMetadata.installPlanStepIds).toHaveLength(1); expect(variables.quickstartMetadata.dataSourceIds).toHaveLength(1); }); + + test('Returns keywords as empty array if no keywords are provided', async () => { + const qs = new Quickstart( + 'quickstarts/mock-quickstart-11/config.yml', + MOCK_FILES_BASEPATH + ); + const variables = await qs.getMutationVariables(true); + + expect(variables.quickstartMetadata.keywords).toEqual([]); + }); }); describe('validate', () => { @@ -187,7 +197,7 @@ describe('Quickstart', () => { test('Returns all quickstarts in directory', () => { const quickstarts = Quickstart.getAll(MOCK_FILES_BASEPATH); - expect(quickstarts).toHaveLength(10); + expect(quickstarts).toHaveLength(11); }); test('Handles no quickstarts in directory', () => { diff --git a/utils/lib/github-api-helpers.ts b/utils/lib/github-api-helpers.ts index cd55847693..089d91d398 100644 --- a/utils/lib/github-api-helpers.ts +++ b/utils/lib/github-api-helpers.ts @@ -4,6 +4,7 @@ import { QUICKSTART_CONFIG_REGEXP, DATA_SOURCE_CONFIG_REGEXP, } from '../constants'; +import logger from '../logger'; const INSTALL_CONFIG_REGEXP = new RegExp('install/.+/install.+(yml|yaml)'); const MOCK_FILES_REGEXP = new RegExp('mock_files/.+'); const TEMPLATE_REGEXP = new RegExp('_template/.+'); @@ -51,23 +52,31 @@ export const fetchPaginatedGHResults = async ( url: string, token: string ): Promise => { + logger.debug(`Running fetch against ${url}`, { url }); let files: GithubAPIPullRequestFile[] = []; let nextPageLink: string | null = url; try { while (nextPageLink) { + logger.debug(`Fetching ${nextPageLink}`, { url: nextPageLink }); const resp = await fetch(nextPageLink, { headers: { authorization: `token ${token}` }, }); + // TODO: this should happen after the resp.ok check const responseJson = await resp.json(); if (!resp.ok) { + logger.error(`Error from Github API`, { + url: nextPageLink, + status: resp.statusText, + code: resp.status, + }); throw new Error(`Github API returned: ${responseJson.message}`); } nextPageLink = getNextLink(resp.headers.get('Link')); files = [...files, ...responseJson]; } } catch (error) { - console.error('Error:', error); + logger.error('Error:', { error }); process.exit(1); } diff --git a/utils/lib/nr-graphql-helpers.ts b/utils/lib/nr-graphql-helpers.ts index 8c813f14c1..c5a2485399 100644 --- a/utils/lib/nr-graphql-helpers.ts +++ b/utils/lib/nr-graphql-helpers.ts @@ -16,6 +16,7 @@ import { } from '../constants'; import { Policy } from 'cockatiel'; import fetch, { Response } from 'node-fetch'; +import logger from '../logger'; const NR_API_URL = process.env.NR_API_URL || ''; const NR_API_TOKEN = process.env.NR_API_TOKEN || ''; @@ -62,6 +63,8 @@ export const fetchNRGraphqlResults = async ( try { const body = buildRequestBody(queryBody); + logger.debug(`Running NerdGraph request...`, { url: NR_API_URL, body }); + const res = await retry.execute(() => fetch(NR_API_URL, { method: 'POST', @@ -73,19 +76,34 @@ export const fetchNRGraphqlResults = async ( }) ); + logger.debug(`Received status code`, { + status: res.statusText, + code: res.status, + }); + if (!res.ok) { graphqlErrors.push( new Error(`Received status code ${res.status} from the API`) ); + + logger.error(`Bad response`, { + status: res.statusText, + code: res.status, + }); } else { const { data, errors } = await res.json(); results = data; if (errors) { graphqlErrors = [...graphqlErrors, ...errors]; + + // only debug logging here, since we expect validation errors + // coming back from nerdgraph + logger.debug(`Received errors from NerdGraph`, { errors }); } } } catch (error) { graphqlErrors.push(error as Error); + logger.error(`Request errored out`, { error: error }); } return { data: results, errors: graphqlErrors }; @@ -175,6 +193,9 @@ type CategoryTermsNRGraphqlResults = { export const getCategoryTermsFromKeywords = async ( configKeywords: string[] | undefined = [] ): Promise => { + logger.debug(`Fetching categories...`); + + // TODO: handles errors!! const { data } = await fetchNRGraphqlResults< {}, CategoryTermsNRGraphqlResults @@ -182,6 +203,7 @@ export const getCategoryTermsFromKeywords = async ( queryString: CATEGORIES_QUERY, variables: {}, }); + logger.debug(`Category result`, { data }); const { categories } = data.actor.nr1Catalog; @@ -216,10 +238,13 @@ type GetPublishedDataSourceIdsResponse = { export const getPublishedDataSourceIds = async (): Promise => { + logger.debug(`Fetching all data source Ids`); + const { data, errors } = await fetchNRGraphqlResults< {}, CoreDataSourceSearchResults >({ queryString: CORE_DATA_SOURCES_QUERY, variables: {} }); + logger.debug(`Data source Ids result`, { data, errors }); const results = data?.actor?.nr1Catalog?.search?.results ?? []; @@ -241,6 +266,8 @@ export type GetPublishedComponentIdsResult = { export const getPublishedComponentIds = async ( quickstartId: string ): Promise => { + logger.debug(`Fetching quickstart components for ${quickstartId}`); + const { data, errors } = await fetchNRGraphqlResults< { id: string }, QuickstartComponentsIdsResponse @@ -248,6 +275,7 @@ export const getPublishedComponentIds = async ( queryString: QUICKSTART_COMPONENTS_IDS_QUERY, variables: { id: quickstartId }, }); + logger.debug(`Quickstart components result`, { data, errors }); const { metadata: { dataSources, quickstartComponents }, diff --git a/utils/logger.ts b/utils/logger.ts new file mode 100644 index 0000000000..fbdb901ccc --- /dev/null +++ b/utils/logger.ts @@ -0,0 +1,111 @@ +enum LoggingLevel { + ERROR, + INFO, + DEBUG, +} + +type logFn = (message: string, attributes?: Record) => void; + +/* + * Logs at the `DEBUG` level + */ +export const debug: logFn = (message, attributes) => { + if (!shouldLog(LoggingLevel.DEBUG)) { + return; + } + + return log(message, { ...attributes, LEVEL: LoggingLevel.DEBUG }); +}; + +/* + * Logs at the `INFO` level + */ +export const info: logFn = (message, attributes) => { + if (!shouldLog(LoggingLevel.INFO)) { + return; + } + + return log(message, { ...attributes, LEVEL: LoggingLevel.INFO }); +}; + +/* + * The lowest level of logging, `ERROR`, this will always be logged if called + */ +export const error: logFn = (message, attributes) => { + if (!shouldLog(LoggingLevel.ERROR)) { + return; + } + + return log(message, { ...attributes, LEVEL: LoggingLevel.ERROR }); +}; + +/* + * Outputs the log, currently this is just to the console + * but could be extended. + */ +const log: logFn = (message, attributes) => { + const datetime = new Date(Date.now()); + + logToConsole(message, datetime, attributes); +}; + +/* + * Formats and logs to the console + */ +const logToConsole = ( + message: string, + datetime: Date, + attributes?: Record +) => { + const niceDate = datetime.toUTCString(); + const separator = '-'; + + if (attributes) { + console.log(niceDate, separator, message, JSON.stringify(attributes)); + } else { + console.log(niceDate, separator, message); + } +}; + +/* + * Determines if a particular log level should be logged based on the + * set log level. + */ +const shouldLog = (level: LoggingLevel) => { + if (level <= readLogLevel()) { + return true; + } + return false; +}; + +/* + * Reads the log level from the `LOG_LEVEL` environment variable + * defaults to INFO level + */ +const readLogLevel = (): LoggingLevel => { + const logLevel = process.env.LOG_LEVEL; + + switch (logLevel) { + case 'ERROR': { + // 0 + return LoggingLevel.ERROR; + } + case 'INFO': { + // 1 + return LoggingLevel.INFO; + } + case 'DEBUG': { + //2 + return LoggingLevel.DEBUG; + } + default: { + return LoggingLevel.INFO; + } + } +}; + +export default { + debug, + error, + info, +}; diff --git a/utils/mock_files/quickstarts/mock-quickstart-11/config.yml b/utils/mock_files/quickstarts/mock-quickstart-11/config.yml new file mode 100644 index 0000000000..56fa840563 --- /dev/null +++ b/utils/mock_files/quickstarts/mock-quickstart-11/config.yml @@ -0,0 +1,39 @@ +# Name of the quickstart (required) +slug: template-quickstart + +# Displayed in the UI (required) +title: Template Quickstart + +# Long-form description of the quickstart (required) +description: | + The template quickstart allows you to get visibility into the performance and available of your example service and dependencies. Use this quickstart together with the mock up integrations. + +# Displayed in search results and recommendations. Summarizes a quickstarts functionality. +summary: | + A short form description for this quickstart + +# Support level: New Relic | Verified | Community (required) +level: Community + +# Authors of the quickstart (required) +authors: + - John Smith + +# No keywords + +# Reference to install plans located under /install directory +# Allows us to construct reusable "install plans" and just use their ID in the quickstart config +installPlans: + - mock-install-1 + +dataSourceIds: + - test-data-source + +documentation: + - name: Installation Docs + url: docs.newrelic.com + description: Description about this doc reference + +# Content / Design +icon: logo.png +website: https://www.newrelic.com \ No newline at end of file diff --git a/utils/package.json b/utils/package.json index 8d7d4006db..4cf5d5a45a 100644 --- a/utils/package.json +++ b/utils/package.json @@ -52,6 +52,5 @@ "ts-node": "^10.7.0", "typescript": "^4.6.4", "uuid": "^8.3.2" - }, - "devDependencies": {} + } } diff --git a/utils/preview.ts b/utils/preview.ts index a8b9fdda9e..2f28310b69 100644 --- a/utils/preview.ts +++ b/utils/preview.ts @@ -16,8 +16,7 @@ const PORT = process.env.PORT || '3000'; const PARENT_DIRECTORY = path.resolve(__dirname, '../quickstarts'); const DASHBOARDS_DIRECTORY = path.resolve(__dirname, '../dashboards'); const ALERTS_DIRECTORY = path.resolve(__dirname, '../alert-policies'); -const BASE_PREVIEW_LINK = - 'https://newrelic.com/instant-observability/preview?local=true'; +const BASE_PREVIEW_LINK = 'http://localhost:8000/preview?local=true'; const app = express(); diff --git a/utils/set-alert-policy-required-datasources.ts b/utils/set-alert-policy-required-datasources.ts index a127c9f267..f43132791f 100644 --- a/utils/set-alert-policy-required-datasources.ts +++ b/utils/set-alert-policy-required-datasources.ts @@ -8,6 +8,7 @@ import { import Quickstart from './lib/Quickstart'; import Alert, { SubmitSetRequiredDataSourcesMutationResult } from './lib/Alert'; import { chunk, translateNGErrors } from './lib/nr-graphql-helpers'; +import logger from './logger'; type QuickstartResult = { name: string; @@ -28,7 +29,9 @@ const getQuickstartNameAndDataSources = async ( return { hasFailed: true, results: [] }; } + logger.info(`Fetching files for pull request ${ghUrl}`); const files = await fetchPaginatedGHResults(ghUrl, ghToken); + logger.info(`Found ${files.length} files`); const quickstartNames = filterQuickstartConfigFiles(files) .filter(isNotRemoved) @@ -126,6 +129,8 @@ const main = async () => { if (hasFailed) { process.exit(1); } + + logger.info('Success!'); }; /** diff --git a/utils/set-dashboards-required-datasources.ts b/utils/set-dashboards-required-datasources.ts index 8915f2d2d5..489d539f85 100644 --- a/utils/set-dashboards-required-datasources.ts +++ b/utils/set-dashboards-required-datasources.ts @@ -15,6 +15,7 @@ import Dashboard, { } from './lib/Dashboard'; import { CUSTOM_EVENT, recordNerdGraphResponse } from './newrelic/customEvent'; import { passedProcessArguments } from './lib/helpers'; +import logger from './logger'; const getQuickstartIds = async ( ghUrl?: string, @@ -30,7 +31,9 @@ const getQuickstartIds = async ( return { hasFailed: true, results: [] }; } + logger.info(`Fetching files for pull request ${ghUrl}`); const files = await fetchPaginatedGHResults(ghUrl, ghToken); + logger.info(`Found ${files.length} files`); const filteredQuickstarts = filterQuickstartConfigFiles(files) .filter(isNotRemoved) @@ -171,6 +174,8 @@ const main = async () => { if (hasFailed) { process.exit(1); } + + logger.info('Success!'); }; /** diff --git a/utils/yarn.lock b/utils/yarn.lock index 4cc6ad1311..66bb8676be 100644 --- a/utils/yarn.lock +++ b/utils/yarn.lock @@ -32,6 +32,14 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" @@ -67,6 +75,16 @@ "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" @@ -84,20 +102,25 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.22.5" "@babel/helper-module-imports@^7.16.7": version "7.16.7" @@ -139,11 +162,28 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" @@ -167,11 +207,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112" integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -272,20 +326,29 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.18.0", "@babel/traverse@^7.7.2": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba" - integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw== +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.0" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.0" - debug "^4.1.0" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.18.0", "@babel/traverse@^7.7.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" + integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" globals "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": @@ -296,6 +359,15 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -510,21 +582,45 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.7" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.13" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -533,6 +629,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -1075,7 +1179,7 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz#59590c8ffa8b5939cf4161f00827b8873ad72498" integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1251,7 +1355,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2290,9 +2394,9 @@ json-schema-traverse@^1.0.0: integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@2.x, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kleur@^3.0.3: version "3.0.3"
String -A short form description for the quickstart component. +A short form description for the quickstart component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +
String -The human-readable name for the quickstart component. +The human-readable name for the quickstart component. * [#help-nr1-dev-experience](https://newrelic.slack.com/archives/CPE597DNY) + * Team ID: No team ID provided + +* [catalog-service-elixir repo](https://source.datanerd.us/nr1-dev-experience/catalog-service-elixir) + + * visibility(customer) + +