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/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/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/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/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/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/dashboards/amazon-sagemaker/amazon-sagemaker.json b/dashboards/amazon-sagemaker/amazon-sagemaker.json index a194be284f..5378155266 100644 --- a/dashboards/amazon-sagemaker/amazon-sagemaker.json +++ b/dashboards/amazon-sagemaker/amazon-sagemaker.json @@ -3,17 +3,32 @@ "description": null, "pages": [ { - "name": "SageMaker", + "name": "Endpoint Invocation Metrics", "description": null, "widgets": [ { - "title": "Total Invocations", + "title": "", "layout": { "column": 1, "row": 1, "width": 2, "height": 2 + }, + "visualization": { + "id": "viz.markdown" }, + "rawConfiguration": { + "text": "# Amazon SageMaker\nAmazon SageMaker is a fully managed machine learning service. With Amazon SageMaker, data scientists and developers can quickly build and train machine learning models, and then deploy them into a production-ready hosted environment." + } + }, + { + "title": "Total invocations", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, "visualization": { "id": "viz.billboard" }, @@ -24,7 +39,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(`aws.sagemaker.Invocations`) as 'Total Invocations'FROM Metric" + "query": "SELECT sum(`aws.sagemaker.Invocations`) from Metric where aws.Namespace = 'AWS/SageMaker' and aws.sagemaker.FeatureGroupName is null" } ], "platformOptions": { @@ -33,13 +48,58 @@ } }, { - "title": "Sagemaker Total and per instance Invocations", + "title": "Invocation errors", "layout": { - "column": 3, + "column": 5, "row": 1, - "width": 5, + "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" }, @@ -53,37 +113,75 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(`aws.sagemaker.Invocations`) as 'Total Invocations', sum(`aws.sagemaker.InvocationsPerInstance`) as 'Invocations per Instance' FROM Metric TIMESERIES" + "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": 8, + "column": 1, "row": 1, - "width": 5, + "width": 2, "height": 2 - }, + }, "visualization": { "id": "viz.markdown" }, "rawConfiguration": { - "text": "# Amazon SageMaker\nAmazon SageMaker is a fully managed machine learning service. With Amazon SageMaker, data scientists and developers can quickly build and train machine learning models, and then deploy them into a production-ready hosted environment." + "text": "# Amazon SageMaker Inference Endpoints\nAmazon SageMaker Inference Endpoints are a powerful tool to deploy your machine learning models in the cloud and make predictions on new data at scale." } }, { - "title": "Average CPU Utilization by Endpoints and Training Jobs", + "title": "Cpu utilization by endpoints (%)", "layout": { - "column": 1, - "row": 3, - "width": 4, - "height": 3 - }, + "column": 3, + "row": 1, + "width": 5, + "height": 2 + }, "visualization": { "id": "viz.area" }, @@ -97,7 +195,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws..aws.sagemaker.endpoints.CPUUtilization`) as 'CPU Utilized by Endpoints', average(`aws..aws.sagemaker.trainingjobs.CPUUtilization`) as 'CPU Utilized by Training Jobs' FROM Metric TIMESERIES " + "query": "SELECT average(`aws..aws.sagemaker.endpoints.CPUUtilization`) as 'CPU Utilized by Endpoints' FROM Metric TIMESERIES auto facet `aws..aws.sagemaker.endpoints.EndpointName`" } ], "platformOptions": { @@ -109,15 +207,15 @@ } }, { - "title": "Average Memory Utilization by Endpoints and training jobs", + "title": "Memory utilization by endpoints (%)", "layout": { - "column": 5, - "row": 3, - "width": 4, - "height": 3 - }, + "column": 8, + "row": 1, + "width": 5, + "height": 2 + }, "visualization": { - "id": "viz.line" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -129,30 +227,24 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws..aws.sagemaker.endpoints.MemoryUtilization`) as 'Memory Utilization by Endpoints', average(`aws..aws.sagemaker.trainingjobs.MemoryUtilization`) as 'Memory Utilization by Training Jobs' FROM Metric TIMESERIES" + "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 - }, - "units": { - "unit": "PERCENTAGE" - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "Average Disk Utilization by Endpoints and Training Jobs", + "title": "Disk utilization by endpoints (%)", "layout": { - "column": 9, + "column": 1, "row": 3, "width": 4, - "height": 3 - }, + "height": 4 + }, "visualization": { - "id": "viz.stacked-bar" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -164,25 +256,22 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws..aws.sagemaker.endpoints.DiskUtilization`) as 'Disk Utilization by Endpoints', average(`aws..aws.sagemaker.trainingjobs.DiskUtilization`) as 'Disk Utilization by Training Jobs' FROM Metric TIMESERIES" + "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 - }, - "units": { - "unit": "PERCENTAGE" } } }, { - "title": "Average Latency", + "title": "Gpu utilization by endpoints (%)", "layout": { - "column": 1, - "row": 6, + "column": 5, + "row": 3, "width": 4, - "height": 3 - }, + "height": 4 + }, "visualization": { "id": "viz.area" }, @@ -196,45 +285,26 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws.sagemaker.ModelLatency`)/1000 as 'Model Latency', average(`aws.sagemaker.OverheadLatency`) as 'Overhead Latency' FROM Metric TIMESERIES" + "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 - }, - "units": { - "unit": "MS" } } }, { - "title": "Training Jobs Errors", + "title": "Gpu memory utilization by endpoints (%)", "layout": { - "column": 5, - "row": 6, + "column": 9, + "row": 3, "width": 4, - "height": 3 - }, + "height": 4 + }, "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 }, @@ -244,42 +314,109 @@ "nrqlQueries": [ { "accountId": 0, - "query": "FROM Metric select sum(`aws..aws.sagemaker.trainingjobs.train:error`) as 'Training Jobs Errors' TIMESERIES auto" + "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 Jobs\nAmazon SageMaker Training Job is a process that involves training 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 jobs\nAmazon SageMaker Transform job is a process used for applying 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": "Invocation Errors", + "title": "", "layout": { "column": 9, - "row": 6, + "row": 1, "width": 4, - "height": 3 + "height": 1 + }, + "visualization": { + "id": "viz.markdown" }, + "rawConfiguration": { + "text": "# Processing Jobs\nAmazon SageMaker Processing Job is a managed compute environment used for data preprocessing, analysis, or other tasks in machine learning workflows, helping automate and streamline data preparation and analysis before model training." + } + }, + { + "title": "Training jobs errors", + "layout": { + "column": 1, + "row": 2, + "width": 4, + "height": 1 + }, "visualization": { - "id": "viz.area" + "id": "viz.billboard" }, "rawConfiguration": { - "colors": { - "seriesOverrides": [ - { - "color": "#00ff08", - "seriesName": "4XX Errors" - }, - { - "color": "#66b2f4", - "seriesName": "5XX Errors" - }, - { - "color": "#ff7961", - "seriesName": "Model Errors" - } - ] + "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 }, @@ -289,7 +426,7 @@ "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" + "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": { @@ -298,15 +435,15 @@ } }, { - "title": "Average GPU Memory Utilization by Endpoints", + "title": "Memory utilization by processing jobs (%)", "layout": { - "column": 1, - "row": 9, + "column": 9, + "row": 2, "width": 4, "height": 3 - }, + }, "visualization": { - "id": "viz.line" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -318,30 +455,24 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws..aws.sagemaker.endpoints.GPUMemoryUtilization`) as 'GPU Memory Utilization by Endpoints' FROM Metric TIMESERIES " + "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 - }, - "units": { - "unit": "PERCENTAGE" - }, - "yAxisLeft": { - "zero": true } } }, { - "title": "Average GPU Utilization by Endpoints", + "title": "Memory utilization by training jobs (%)", "layout": { - "column": 5, - "row": 9, + "column": 1, + "row": 3, "width": 4, - "height": 3 - }, + "height": 2 + }, "visualization": { - "id": "viz.line" + "id": "viz.area" }, "rawConfiguration": { "facet": { @@ -353,21 +484,975 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(`aws..aws.sagemaker.endpoints.GPUUtilization`) as 'GPU Utilization by Endpoints' FROM Metric TIMESERIES " + "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 \nAmazon SageMaker Feature Store 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\nTo identify bias in the data before expending resources to train models on it, SageMaker 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 - }, - "units": { - "unit": "PERCENTAGE" - }, - "yAxisLeft": { - "zero": true } } } ] } - ] -} \ No newline at end of file + ], + "variables": [] +} diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker.png b/dashboards/amazon-sagemaker/amazon-sagemaker.png deleted file mode 100644 index 70dc2bd2f5..0000000000 Binary files a/dashboards/amazon-sagemaker/amazon-sagemaker.png and /dev/null differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker01.png b/dashboards/amazon-sagemaker/amazon-sagemaker01.png new file mode 100644 index 0000000000..312e7888cc Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker01.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker02.png b/dashboards/amazon-sagemaker/amazon-sagemaker02.png new file mode 100644 index 0000000000..9d73bc584a Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker02.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker03.png b/dashboards/amazon-sagemaker/amazon-sagemaker03.png new file mode 100644 index 0000000000..b1c5409bfa Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker03.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker04.png b/dashboards/amazon-sagemaker/amazon-sagemaker04.png new file mode 100644 index 0000000000..c1521ca1b1 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker04.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker05.png b/dashboards/amazon-sagemaker/amazon-sagemaker05.png new file mode 100644 index 0000000000..d67a58d1c2 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker05.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker06.png b/dashboards/amazon-sagemaker/amazon-sagemaker06.png new file mode 100644 index 0000000000..698175ce4f Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker06.png differ diff --git a/dashboards/amazon-sagemaker/amazon-sagemaker07.png b/dashboards/amazon-sagemaker/amazon-sagemaker07.png new file mode 100644 index 0000000000..36c8db9786 Binary files /dev/null and b/dashboards/amazon-sagemaker/amazon-sagemaker07.png differ 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..ac569231f9 --- /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://trafficserver.apache.org/images/press/ts_logo_tm_1960x375.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/marketplace?account=3510613).\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/azure-machine-learning/Azure-Machine-Learning.png b/dashboards/azure-machine-learning/Azure-Machine-Learning.png new file mode 100644 index 0000000000..6cec96b9c7 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..2f8fbe27de 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-learning.json b/dashboards/azure-machine-learning/azure-machine-learning.json new file mode 100644 index 0000000000..5673359f42 --- /dev/null +++ b/dashboards/azure-machine-learning/azure-machine-learning.json @@ -0,0 +1,1178 @@ +{ + "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": -1 + } + ] + } + }, + { + "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": -1 + } + ] + } + }, + { + "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": -1 + } + ] + } + }, + { + "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": -1 + } + ] + } + }, + { + "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": "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": "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 + } + } + } + ] + } + ] +} \ No newline at end of file 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/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/sonarqube/sonarqube-01a.png b/dashboards/sonarqube/sonarqube-01a.png deleted file mode 100644 index 7f27cc2a35..0000000000 Binary files a/dashboards/sonarqube/sonarqube-01a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-01b.png b/dashboards/sonarqube/sonarqube-01b.png new file mode 100644 index 0000000000..654fae4a41 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-01b.png differ diff --git a/dashboards/sonarqube/sonarqube-02a.png b/dashboards/sonarqube/sonarqube-02a.png deleted file mode 100644 index aae18687eb..0000000000 Binary files a/dashboards/sonarqube/sonarqube-02a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-02b.png b/dashboards/sonarqube/sonarqube-02b.png new file mode 100644 index 0000000000..63106e6e09 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-02b.png differ diff --git a/dashboards/sonarqube/sonarqube-03a.png b/dashboards/sonarqube/sonarqube-03a.png deleted file mode 100644 index 102fed407f..0000000000 Binary files a/dashboards/sonarqube/sonarqube-03a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-03b.png b/dashboards/sonarqube/sonarqube-03b.png new file mode 100644 index 0000000000..4a53448f6e Binary files /dev/null and b/dashboards/sonarqube/sonarqube-03b.png differ diff --git a/dashboards/sonarqube/sonarqube-04a.png b/dashboards/sonarqube/sonarqube-04a.png deleted file mode 100644 index dfb4cc9fae..0000000000 Binary files a/dashboards/sonarqube/sonarqube-04a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-04b.png b/dashboards/sonarqube/sonarqube-04b.png new file mode 100644 index 0000000000..594153e845 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-04b.png differ diff --git a/dashboards/sonarqube/sonarqube-05a.png b/dashboards/sonarqube/sonarqube-05a.png deleted file mode 100644 index 432f4324be..0000000000 Binary files a/dashboards/sonarqube/sonarqube-05a.png and /dev/null differ diff --git a/dashboards/sonarqube/sonarqube-05b.png b/dashboards/sonarqube/sonarqube-05b.png new file mode 100644 index 0000000000..bf826e0448 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-05b.png differ diff --git a/dashboards/sonarqube/sonarqube-06b.png b/dashboards/sonarqube/sonarqube-06b.png new file mode 100644 index 0000000000..316ee10268 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-06b.png differ diff --git a/dashboards/sonarqube/sonarqube-07b.png b/dashboards/sonarqube/sonarqube-07b.png new file mode 100644 index 0000000000..3b79e58970 Binary files /dev/null and b/dashboards/sonarqube/sonarqube-07b.png differ diff --git a/dashboards/sonarqube/sonarqube.json b/dashboards/sonarqube/sonarqube.json index 6a18716be2..9b8103a82c 100644 --- a/dashboards/sonarqube/sonarqube.json +++ b/dashboards/sonarqube/sonarqube.json @@ -22,27 +22,11 @@ "text": "![SonarQube logo](https://raw.githubusercontent.com/newrelic/newrelic-quickstarts/main/quickstarts/sonarqube/logo.png)" } }, - { - "title": "", - "layout": { - "column": 1, - "row": 2, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "\n\n**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=337b820d-ada6-527d-77eb-90faed3fd418).\n\nUnable to find data in your dashboard? -[Troubleshoot here](\nhttps://docs.newrelic.com/docs/infrastructure/prometheus-integrations/install-configure-openmetrics/configure-prometheus-openmetrics-integrations/#general-config)\n\nFollow New Relic [SonarQube documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/) to instrument SonarQube.\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=SonarQube) here and let us know how we can improve it for you.\n" - } - }, { "title": "Percentage of Active Database Connections", "layout": { "column": 3, - "row": 2, + "row": 1, "width": 3, "height": 1 }, @@ -79,7 +63,7 @@ "title": "Compute Engine", "layout": { "column": 6, - "row": 2, + "row": 1, "width": 3, "height": 1 }, @@ -104,40 +88,25 @@ } }, { - "title": "Elasticsearch Disk Space (%)", + "title": "Elasticsearch Up", "layout": { - "column": 8, - "row": 2, - "width": 5, - "height": 3 + "column": 9, + "row": 1, + "width": 2, + "height": 1 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.stacked-bar" + "id": "viz.billboard" }, "rawConfiguration": { - "colors": { - "seriesOverrides": [ - { - "color": "#00d679", - "seriesName": "free disk space(%)" - }, - { - "color": "#3b485e", - "seriesName": "used disk space(%)" - } - ] - }, "facet": { "showOtherSeries": false }, - "legend": { - "enabled": true - }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT 100 - (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'used disk space(%)', (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'free disk space(%)' FROM Metric TIMESERIES AUTO" + "query": "SELECT IF(latest(sonarqube_health_elasticsearch_status) = 1, 'Up', 'Down') AS 'elasticsearch' FROM Metric " } ], "platformOptions": { @@ -146,10 +115,10 @@ } }, { - "title": "Elasticsearch Up", + "title": "SonarQube Up", "layout": { - "column": 9, - "row": 2, + "column": 11, + "row": 1, "width": 2, "height": 1 }, @@ -164,7 +133,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "SELECT IF(latest(sonarqube_health_elasticsearch_status) = 1, 'Up', 'Down') AS 'elasticsearch' FROM Metric " + "query": "SELECT IF(latest(sonarqube_health_web_status) = 1, 'Up', 'Down') AS 'sonarqube' FROM Metric" } ], "platformOptions": { @@ -173,25 +142,44 @@ } }, { - "title": "SonarQube Up", + "title": "", "layout": { - "column": 11, + "column": 1, "row": 2, "width": 2, - "height": 1 + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.billboard" + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "\n\n**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/catalog-pack-details?state=337b820d-ada6-527d-77eb-90faed3fd418).\n\nInstrument SonarQube with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=SonarQube) here and let us know how we can improve it for you.\n" + } + }, + { + "title": "SonarQube Health status", + "layout": { + "column": 3, + "row": 2, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" }, "rawConfiguration": { "facet": { "showOtherSeries": false }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT IF(latest(sonarqube_health_web_status) = 1, 'Up', 'Down') AS 'sonarqube' FROM Metric" + "query": "SELECT latest(sonarqube_health_integration_github_status) AS 'Github status', latest(sonarqube_health_integration_gitlab_status) AS 'Gitlab status', latest(sonarqube_health_web_status) AS 'Web status', latest(sonarqube_health_integration_azuredevops_status) AS 'Azuredevops status', latest(sonarqube_health_elasticsearch_status), latest(sonarqube_health_integration_bitbucket_status) AS 'Bitbucket status', latest(sonarqube_health_compute_engine_status) AS 'Compute engine status' FROM Metric TIMESERIES " } ], "platformOptions": { @@ -200,18 +188,30 @@ } }, { - "title": "SonarQube Health status", + "title": "Elasticsearch Disk Space (%)", "layout": { - "column": 3, - "row": 3, + "column": 8, + "row": 2, "width": 5, "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "viz.area" + "id": "viz.stacked-bar" }, "rawConfiguration": { + "colors": { + "seriesOverrides": [ + { + "color": "#00d679", + "seriesName": "free disk space(%)" + }, + { + "color": "#3b485e", + "seriesName": "used disk space(%)" + } + ] + }, "facet": { "showOtherSeries": false }, @@ -221,7 +221,7 @@ "nrqlQueries": [ { "accountIds": [], - "query": "SELECT latest(sonarqube_health_integration_github_status) AS 'Github status', latest(sonarqube_health_integration_gitlab_status) AS 'Gitlab status', latest(sonarqube_health_web_status) AS 'Web status', latest(sonarqube_health_integration_azuredevops_status) AS 'Azuredevops status', latest(sonarqube_health_elasticsearch_status), latest(sonarqube_health_integration_bitbucket_status) AS 'Bitbucket status', latest(sonarqube_health_compute_engine_status) AS 'Compute engine status' FROM Metric TIMESERIES " + "query": "SELECT 100 - (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'used disk space(%)', (latest(sonarqube_elasticsearch_disk_space_free_bytes) * 100 )/latest(sonarqube_elasticsearch_disk_space_total_bytes) AS 'free disk space(%)' FROM Metric TIMESERIES AUTO" } ], "platformOptions": { @@ -233,7 +233,7 @@ "title": "", "layout": { "column": 1, - "row": 6, + "row": 5, "width": 3, "height": 1 }, @@ -249,7 +249,7 @@ "title": "Elasticsearch Disk Space used", "layout": { "column": 4, - "row": 6, + "row": 5, "width": 2, "height": 1 }, @@ -286,7 +286,7 @@ "title": "", "layout": { "column": 6, - "row": 6, + "row": 5, "width": 1, "height": 1 }, @@ -302,7 +302,7 @@ "title": "Elasticsearch Disk Space Free", "layout": { "column": 7, - "row": 6, + "row": 5, "width": 2, "height": 1 }, @@ -329,7 +329,7 @@ "title": "", "layout": { "column": 9, - "row": 6, + "row": 5, "width": 1, "height": 1 }, @@ -345,7 +345,7 @@ "title": "Elasticsearch Disk Space Total", "layout": { "column": 10, - "row": 6, + "row": 5, "width": 3, "height": 1 }, @@ -377,7 +377,7 @@ "title": "SonarQube License", "layout": { "column": 1, - "row": 7, + "row": 6, "width": 5, "height": 3 }, @@ -410,7 +410,7 @@ "title": "Compute Engine Pending Tasks", "layout": { "column": 6, - "row": 7, + "row": 6, "width": 4, "height": 1 }, @@ -437,7 +437,7 @@ "title": "SonarQube Web Uptime", "layout": { "column": 10, - "row": 7, + "row": 6, "width": 3, "height": 3 }, @@ -469,7 +469,7 @@ "title": "Number of Connected SonarLint Clients", "layout": { "column": 6, - "row": 8, + "row": 7, "width": 4, "height": 1 }, @@ -496,7 +496,7 @@ "title": "Remaining Days until SonarQube License Expiration", "layout": { "column": 6, - "row": 9, + "row": 8, "width": 4, "height": 1 }, @@ -855,7 +855,7 @@ ] }, { - "name": "Logs", + "name": "Sonar JMX", "description": null, "widgets": [ { @@ -871,70 +871,721 @@ "id": "viz.markdown" }, "rawConfiguration": { - "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + "text": "# SonarQube JMX Web\nSonarQube's JMX monitoring observes the Java Virtual Machine metrics related to the active, idle, initial, and queued database connections of the web server." } }, { - "title": "SonarQube Logs", + "title": "Active Pool Connections", "layout": { "column": 1, "row": 2, - "width": 12, - "height": 4 + "width": 4, + "height": 3 }, "linkedEntityGuids": null, "visualization": { - "id": "logger.log-table-widget" + "id": "viz.stacked-bar" }, "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, "nrqlQueries": [ { "accountIds": [], - "query": "SELECT hostname, message FROM Log WHERE logtype = {{log_type}}" + "query": "SELECT latest(PoolActiveConnections) AS 'active pool connections', latest(PoolMaxActiveConnections) AS 'maximum active pool connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " } - ] + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ] - } - ], - "variables": [ - { - "name": "displayName", - "items": null, - "defaultValues": [ + }, { - "value": { - "string": "sonarqube" + "title": "Idle Pool Connections Statistics", + "layout": { + "column": 5, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolIdleConnections) AS 'idle connections',latest(PoolMinIdleConnections) AS 'min idle connections', latest(PoolMaxIdleConnections) AS 'max idle connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ], - "nrqlQuery": { - "accountIds": [], - "query": "SELECT uniques(displayName) FROM PostgresqlDatabaseSample SINCE 3 MONTHS AGO " - }, - "title": "Select the database", - "type": "NRQL", - "isMultiSelection": false, - "replacementStrategy": "DEFAULT" - }, - { - "name": "log_type", - "items": null, - "defaultValues": [ + }, { - "value": { - "string": "sonar_logs" + "title": "Max Wait Time in Connection Pool (seconds)", + "layout": { + "column": 9, + "row": 2, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolMaxWaitMillis)/1000 AS 'max wait time' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } } - } - ], - "nrqlQuery": { - "accountIds": [], - "query": "SELECT logtype FROM Log since 6 months ago" - }, - "title": "Select your log_type", - "type": "NRQL", - "isMultiSelection": false, + }, + { + "title": "Total Number of Database Connections in Queue", + "layout": { + "column": 1, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(QueueSize) AS 'queue connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Initial Number of Database Connections", + "layout": { + "column": 4, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolInitialSize) AS 'initial connections' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Worker Counts", + "layout": { + "column": 7, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(WorkerCount) AS 'worker count',latest(LargestWorkerCount) AS 'largest worker count' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Pool Remove Abandoned Timeout (seconds)", + "layout": { + "column": 10, + "row": 5, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(PoolRemoveAbandonedTimeoutSeconds) AS 'seconds' FROM JVMSampleSonarQubeWebMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 8, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Compute Engine\nSonarQube's JMX monitoring, it tracks the Java Virtual Machine metrics associated with task errors, task success, processing time of tasks, and the time tasks remain pending in the Compute Engine." + } + }, + { + "title": "Compute Engine Tasks Statistics", + "layout": { + "column": 1, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ErrorCount) AS 'errors', latest(InProgressCount) AS 'in progress', latest(PendingCount) AS 'pending', latest(SuccessCount) AS 'success' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Number of Task Errors", + "layout": { + "column": 5, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ErrorCount) AS 'task errors' FROM JVMSampleSonarQubeComputeEngineMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Total Number of Tasks Success", + "layout": { + "column": 9, + "row": 9, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(SuccessCount) AS 'tasks success' FROM JVMSampleSonarQubeComputeEngineMetrics" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "value": 1 + } + ] + } + }, + { + "title": "Compute Engine Workers", + "layout": { + "column": 1, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(WorkerCount) AS 'worker count', latest(WorkerMaxCount) AS 'worker max count' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Tasks Processing Time (milliseconds)", + "layout": { + "column": 5, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ProcessingTime) AS 'total tasks processing time' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Total Tasks Pending Time (milliseconds)", + "layout": { + "column": 9, + "row": 12, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(LongestTimePending) AS 'total tasks pending time' FROM JVMSampleSonarQubeComputeEngineMetrics TIMESERIES AUTO " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + } + ] + }, + { + "name": "Infrastructure", + "description": null, + "widgets": [ + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.cpuPercent) AS 'CPU used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.memoryUsedPercent) AS 'Memory used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.disk.usedPercent) as 'Storage used %' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + } + } + }, + { + "title": "Free Disk (%)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.diskFreePercent) FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(host.net.transmitBytesPerSecond) AS 'transmit bytes per second', average(host.net.receiveBytesPerSecond) AS 'receive bytes per second' FROM Metric TIMESERIES auto" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Processes Running", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.process.cpuPercent) as 'CPU %', latest(host.process.threadCount) as 'Threads' FROM Metric FACET processId, processDisplayName ORDER BY cpuPercent asc LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**Logs forwarding** (optional)\n\nFollow New Relic [SonarQube Logs forwarding documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/#forward-sonarqube-logs-to-new-relic) to instrument SonarQube Logs." + } + }, + { + "title": "", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "## Choose variable\nSelect your appropriate \"logtype\" variable(s) to display the related logs." + } + }, + { + "title": "SonarQube Logs", + "layout": { + "column": 1, + "row": 2, + "width": 12, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT hostname, message FROM Log WHERE logtype = {{log_type}}" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "displayName", + "items": null, + "defaultValues": [ + { + "value": { + "string": "sonarqube" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(displayName) FROM PostgresqlDatabaseSample SINCE 3 MONTHS AGO " + }, + "title": "Select the database", + "type": "NRQL", + "isMultiSelection": false, + "replacementStrategy": "DEFAULT" + }, + { + "name": "log_type", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(logtype) FROM Log since 6 months ago" + }, + "title": "Select your log_type", + "type": "NRQL", + "isMultiSelection": true, "replacementStrategy": "DEFAULT" } ] diff --git a/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/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/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/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/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/quickstarts/azure-openai/logo.svg b/quickstarts/azure-openai/logo.svg new file mode 100644 index 0000000000..6ab4b5ce5c --- /dev/null +++ b/quickstarts/azure-openai/logo.svg @@ -0,0 +1,2 @@ + +OpenAI icon diff --git a/quickstarts/azure/azure-machine-learning/config.yml b/quickstarts/azure/azure-machine-learning/config.yml new file mode 100644 index 0000000000..c43e026f5c --- /dev/null +++ b/quickstarts/azure/azure-machine-learning/config.yml @@ -0,0 +1,41 @@ +id: 7b419a4e-f2e7-4e2d-b0fc-130cd8e942c4 +slug: azure-machine-learning +title: Azure Machine Learning +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-monitoring-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 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-monitoring-integration/ +keywords: + - azure + - azure machine learning + - machine learning + - azure ml +dashboards: + - azure-machine-learning +dataSourceIds: + - azure-monitor 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/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/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/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/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/gatsby-build/config.yml b/quickstarts/gatsby-build/config.yml index 148d57df0d..00e00d47a3 100644 --- a/quickstarts/gatsby-build/config.yml +++ b/quickstarts/gatsby-build/config.yml @@ -22,6 +22,5 @@ documentation: description: | Ship performance data from Gatsby builds using OpenTelemetry url: https://newrelic.com/blog/best-practices/optimize-gatsby-build-opentelemetry - dashboards: - gatsby-build 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/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/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/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/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/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/openai/config.yaml b/quickstarts/openai/config.yaml index 166beac02d..0ca5a62c2b 100644 --- a/quickstarts/openai/config.yaml +++ b/quickstarts/openai/config.yaml @@ -42,3 +42,5 @@ keywords: dataSourceIds: - llm-application +alertPolicies: + - llm-application 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/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/sonarqube/config.yml b/quickstarts/sonarqube/config.yml index 6de6194313..051fec10f2 100644 --- a/quickstarts/sonarqube/config.yml +++ b/quickstarts/sonarqube/config.yml @@ -36,6 +36,8 @@ documentation: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration/ keywords: - sonarqube + - sonar + - sonarqube jmx dashboards: - sonarqube alertPolicies: 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/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/utils/__tests__/dashboard-helper.test.js b/utils/__tests__/dashboard-helper.test.js index 96f0744c97..b5bac98a25 100644 --- a/utils/__tests__/dashboard-helper.test.js +++ b/utils/__tests__/dashboard-helper.test.js @@ -66,7 +66,9 @@ describe('dashboard-helper', () => { test('finds warnings across multiple lines', () => { const multiLine = { "accountIds": [ - 12345678 + 12345678, + 3456, + 12, ], } expect(getWarnings(multiLine)).toHaveLength(1); diff --git a/utils/lib/Quickstart.ts b/utils/lib/Quickstart.ts index da61a350db..546f4bf4cc 100644 --- a/utils/lib/Quickstart.ts +++ b/utils/lib/Quickstart.ts @@ -173,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) ), 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/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