- Checkmarx Documentation
- Checkmarx SAST
- SAST Set Up Guide
- SAST Maintenance Guide
- SAST Application Dashboard- Using Prometheus Metrics and Grafana
SAST Application Dashboard- Using Prometheus Metrics and Grafana
Introduction
With Prometheus Metrics and Grafana, a SAST application dashboard can be created to conveniently track:
the health status of the Checkmarx applications components, like managers and services
the application environment, including the CPU, memory, and storage
the base-system events, like disk and processes
the base Checkmarx metrics, like up and down time, and handles
status and use of third-party components, like ActiveMQ and SQLServer
In addition, Prometheus Metrics and Grafana support can be used for offline analysis of performance, bugs, and customer support.
Instructions for Enabling Prometheus Metrics in Checkmarx SAST
Enable Prometheus Metrics for Checkmarx components by modifying the MetricsConnectorData key in the dbo.CxComponentConfiguration table with the following values:
{ "PrometheusServerConnectionData": { "ScansManager": { "IsEnabled": true, "Url": "metrics/", "Hostname": "localhost", "Port": 9010, "UseHttps": false }, "JobsManager": { "IsEnabled": true, "Url": "metrics/", "Hostname": "localhost", "Port": 9011, "UseHttps": false }, "SystemManager": { "IsEnabled": true, "Url": "metrics/", "Hostname": "localhost", "Port": 9012, "UseHttps": false }, "ResultsService": { "IsEnabled": true, "Url": "metrics/", "Hostname": "localhost", "Port": 9013, "UseHttps": false }, "RestService": { "IsEnabled": true }, "SoapService": { "IsEnabled": true } } }
Enable Prometheus Metrics for Checkmarx Portal (WebClient) by navigating to the Portal root folder (C:\Program Files\Checkmarx\CheckmarxWebPortal\Web). Open web.config and search for EnablePrometheusMetrics. Set its value to true.
Restart all the relevant Checkmarx components, for which Prometheus has been enabled, and then restart IIS Applications, using IIS Reset.
Metrics will be available for queries on the same machine, using:
http://localhost:9010/metrics - ScansManager
http://localhost:9011/metrics - JobsManager
http://localhost:9012/metrics - SystemManager
http://localhost:9013/metrics - ResultsService
https://localhost/Cxwebinterface/metrics - CxWebInterface (SOAP) - http/s depends on your installation configuration
https://localhost/cxrestapi/metrics - CxRestAPI (REST) - http/s depends on your installation configuration
https://localhost/cxwebclient/metrics - CxWebClient (Portal) - http/s depends on your installation configuration
For example, a query result for the JobsManager service:
Setting up Grafana to Query CxSAST/AMQ/MSSQL
Download and extract Telegraf binaries (https://github.com/influxdata/telegraf/releases/). Telegraf is used to query ActiveMQ and send outputs to Prometheus. Make sure your ActiveMQ Web Console is enabled. For Windows, download ‘amd64’ binaries.
Modify telegraf.conf:
search for and uncomment: (remove ‘#’) [[outputs.prometheus_client]] -> within the same section, uncomment: listen = ":9273" [[inputs.activemq]] -> within the same section, uncomment: url = http://127.0.0.1:8161 username = "admin" password = "admin""
Run Telegraf from CLI, using the command: telegraf --config telegraf.conf
Download and extract Prometheus SQL exporter (https://github.com/free/sql_exporter/releases). For Windows, download ‘amd64’ binaries.
Modify sql_exporter.yml: search for data_source_name and replace its value with user\password\hostname\port of your MSSQL instance. For example with localhost:
data_source_name: 'sqlserver://test:123456@localhost:1433'
Run sql_exporter.exe from CLI.
Download and extract Prometheus binaries (https://github.com/prometheus/prometheus/releases). For Windows, download ‘amd64’ binaries.
Modify prometheus.yml as follows (note that tab indentation is important. Also modify ‘scheme’ values to ‘http’ if you are using the SAST portal without https):
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global "evaluation_interval". rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it"s Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "Prometheus" # metrics_path defaults to "/metrics" # scheme defaults to "http". static_configs: - targets: ["localhost:9090"] - job_name: "ScansManager" static_configs: - targets: ["localhost:9010"] - job_name: "JobsManager" static_configs: - targets: ["localhost:9011"] - job_name: "SystemManager" static_configs: - targets: ["localhost:9012"] - job_name: "ResultsService" static_configs: - targets: ["localhost:9013"] - job_name: "CxWebInterface" scheme: https tls_config: insecure_skip_verify: true metrics_path: /CxWebInterface/metrics static_configs: - targets: ["localhost"] - job_name: "CxRestAPI" scheme: https tls_config: insecure_skip_verify: true metrics_path: /CxRestAPI/metrics static_configs: - targets: ["localhost"] - job_name: "CxWebClient" scheme: https tls_config: insecure_skip_verify: true metrics_path: /CxWebClient/metrics static_configs: - targets: ["localhost"] - job_name: "MSSQL" static_configs: - targets: ["localhost:9399"] - job_name: "ActiveMQ" static_configs: - targets: ["localhost:9273"]
Run prometheus.exe from CLI.
Open Prometheus web interface (http://localhost:9090/targets) to see a list of all Checkmarx SAST.
Download and install Grafana (https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1) Grafana is used as the UI for the metrics data.
Open the Grafana console at http://localhost:3000/.
Type ‘admin’ for the user and password for the initial setup, then specify your own password.
Open the DataSources page http://localhost:3000/datasources.
Select a Prometheus data source, and set URL to http://localhost:9090.
Press Save & Test, to confirm it's successful.
On the same page, select the Dashboards tab.
Import all the available dashboards in the list, by clicking the Import buttons at the end of each row.
Import ActiveMQ/MSSQL dashboards: http://localhost:3000/dashboard/import (fill in the ID and click Load); ActiveMQ: https://grafana.com/grafana/dashboards/10702 (use ID: 10702) and Microsoft SQL Server: https://grafana.com/grafana/dashboards/13919 (use ID: 13919).
Import CxDashboard JSON Model: http://localhost:3000/dashboard/import (fill in ‘json panel’).
{ "__inputs": [{ "name": "DS_PROMETHEUS", "label": "Prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" }], "__requires": [{ "type": "panel", "id": "bargauge", "name": "Bar gauge", "version": "" }, { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "7.4.2" }, { "type": "panel", "id": "graph", "name": "Graph", "version": "" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" }, { "type": "panel", "id": "table-old", "name": "Table (old)", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "datasource", "uid": "grafana" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": 25, "links": [], "liveNow": false, "panels": [ { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "mappings": [ { "options": { "0": { "index": 0, "text": "OFF" }, "1": { "index": 1, "text": "ON" } }, "type": "value" } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 0 }, { "color": "green", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 0 }, "id": 2, "maxDataPoints": 1000, "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": { "valueSize": 30 }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "exemplar": true, "expr": "up{}", "format": "time_series", "instant": false, "interval": "", "legendFormat": "{{job}}", "refId": "A" } ], "title": "Services Status", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 0 }, "id": 8, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.1.0-pre", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "topk(5, max(scrape_duration_seconds) by (job))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}", "metric": "", "refId": "A", "step": 20 } ], "title": "Scrape Duration", "type": "timeseries" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 9 }, "id": 56, "panels": [], "title": "MSSQL", "type": "row" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 6, "x": 0, "y": 10 }, "id": 46, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": { "valueSize": 70 }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "rate(mssql_deadlocks[$__rate_interval])", "refId": "A" } ], "title": "Deadlocks", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 6, "x": 6, "y": 10 }, "id": 44, "maxDataPoints": 458, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": { "valueSize": 70 }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "rate(mssql_kill_connection_errors[$__rate_interval])", "refId": "A" } ], "title": "Kill Connection Errors", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 6, "x": 12, "y": 10 }, "id": 48, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": { "valueSize": 50 }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "mssql_batch_requests", "refId": "A" } ], "title": "Number of Transact-SQL", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 6, "x": 18, "y": 10 }, "id": 42, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": { "valueSize": 50 }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "mssql_page_fault_count", "refId": "A" } ], "title": "Number of Page Faults", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "dark-red", "value": 80 } ] }, "unit": "decbytes" }, "overrides": [ { "matcher": { "id": "byName", "options": "mssql_os_memory{instance=\"localhost:9399\", job=\"MSSQL\", state=\"available\"}" }, "properties": [ { "id": "displayName", "value": "Available" } ] }, { "matcher": { "id": "byName", "options": "mssql_os_memory{instance=\"localhost:9399\", job=\"MSSQL\", state=\"used\"}" }, "properties": [ { "id": "displayName", "value": "Used" } ] }, { "matcher": { "id": "byName", "options": "C" }, "properties": [ { "id": "displayName", "value": "Total" } ] } ] }, "gridPos": { "h": 7, "w": 6, "x": 0, "y": 15 }, "id": 38, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "editorMode": "explain", "expr": "mssql_os_memory{instance=\"localhost:9399\", job=\"MSSQL\", state=\"available\"}", "range": true, "refId": "A" }, { "datasource": "${DS_PROMETHEUS}", "expr": "mssql_os_memory{instance=\"localhost:9399\", job=\"MSSQL\", state=\"used\"}", "hide": false, "refId": "B" }, { "datasource": { "name": "Expression", "type": "__expr__", "uid": "__expr__" }, "expression": "$A + $B", "hide": false, "refId": "C", "type": "math" } ], "title": "Physical Memory", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "bytes" }, "overrides": [ { "matcher": { "id": "byName", "options": "mssql_os_page_file{instance=\"localhost:9399\", job=\"MSSQL\", state=\"available\"}" }, "properties": [ { "id": "displayName", "value": "Available" } ] }, { "matcher": { "id": "byName", "options": "mssql_os_page_file{instance=\"localhost:9399\", job=\"MSSQL\", state=\"used\"}" }, "properties": [ { "id": "displayName", "value": "Used" } ] }, { "matcher": { "id": "byName", "options": "sum(mssql_os_page_file)" }, "properties": [ { "id": "displayName", "value": "Total" } ] } ] }, "gridPos": { "h": 7, "w": 6, "x": 6, "y": 15 }, "id": 40, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "mssql_os_page_file", "refId": "A" }, { "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "expr": "sum(mssql_os_page_file)", "hide": false, "legendFormat": "__auto", "range": true, "refId": "B" } ], "title": "Page File", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 20, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineStyle": { "fill": "solid" }, "lineWidth": 1, "pointSize": 2, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 15 }, "id": 52, "options": { "legend": { "calcs": [], "displayMode": "hidden", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": "${DS_PROMETHEUS}", "expr": "mssql_virtual_memory_bytes", "refId": "A" } ], "title": "Virtual Memory Size", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 22 }, "id": 50, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true, "text": { "titleSize": 11 } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, "expr": "mssql_connections", "instant": false, "range": true, "refId": "A" } ], "title": "Active Connections", "type": "gauge" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "fill": 1, "fillGradient": 4, "gridPos": { "h": 9, "w": 16, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 30, "legend": { "alignAsTable": true, "avg": false, "current": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "exemplar": true, "expr": "mssql_log_growths", "interval": "", "legendFormat": "{{database}}{{db}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "DB Log growth since last restart", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:584", "format": "short", "logBase": 1, "show": true }, { "$$hashKey": "object:585", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "description": "", "fill": 1, "fillGradient": 4, "gridPos": { "h": 9, "w": 8, "x": 16, "y": 30 }, "hiddenSeries": false, "id": 32, "legend": { "alignAsTable": true, "avg": false, "current": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "exemplar": true, "expr": "mssql_io_stall_total{job=~\"$Job\"}", "interval": "", "legendFormat": "{{database}}{{db}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Total wait time of I/O stall", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:17304", "format": "ms", "logBase": 1, "show": true }, { "$$hashKey": "object:17305", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 39 }, "id": 54, "panels": [], "title": "ActiveMQ", "type": "row" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "displayName": "", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 40 }, "id": 6, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "expr": "activemq_queues_size", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{name}}-size", "refId": "A" } ], "title": "Queues Sizes", "type": "timeseries" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "decimals": 0, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 40 }, "id": 10, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "asc" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "expr": "activemq_queues_consumer_count", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{name}}-consumer", "refId": "B" } ], "title": "Queues Consumer", "type": "timeseries" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "displayName": "", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 50 }, "id": 14, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "expr": "activemq_queues_enqueue_count", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{name}}-enqueue", "refId": "D" } ], "title": "Queues Enqueue", "type": "timeseries" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineStyle": { "fill": "solid" }, "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 50 }, "id": 12, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": { "0": "j", "1": "V", "2": "o", "3": "D", "4": "K", "5": "I", "6": "6", "7": "n", "8": "z" }, "expr": "activemq_queues_dequeue_count", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{name}}-dequeue", "refId": "C" } ], "title": "Queues Dequeue", "type": "timeseries" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "decimals": 0, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "VirtualTopic.AccessControlEvents -enqueue" }, "properties": [ { "id": "displayName", "value": "VirtualTopic.AccessControlEvents" } ] }, { "matcher": { "id": "byName", "options": "VirtualTopic.Findings -enqueue" }, "properties": [ { "id": "displayName", "value": "VirtualTopic.Findings" } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 59 }, "id": 36, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "expr": "activemq_topics_enqueue_count", "legendFormat": "{{name}}-enqueue", "range": true, "refId": "A" } ], "title": "Topics Enqueue", "type": "timeseries" }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 3, "pointSize": 6, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "VirtualTopic.AccessControlEvents -dequeue" }, "properties": [ { "id": "displayName", "value": "VirtualTopic.AccessControlEvents" } ] }, { "matcher": { "id": "byName", "options": "VirtualTopic.Findings -dequeue" }, "properties": [ { "id": "displayName", "value": "VirtualTopic.Findings" } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 59 }, "id": 34, "maxDataPoints": 1488, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.2", "targets": [ { "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "expr": "activemq_topics_dequeue_count", "legendFormat": "{{name}}-dequeue", "range": true, "refId": "A" } ], "title": "Topics Dequeue", "type": "timeseries" } ], "refresh": false, "schemaVersion": 36, "style": "dark", "tags": [], "templating": { "list": [] }, "time": { "from": "now-6h", "to": "now" }, "timepicker": {}, "timezone": "", "title": "CxDashboard", "uid": "SH8qlPkVk", "version": 2, "weekStart": "" }
Select your CxDashboard at http://localhost:3000/dashboards and observe the SAST metrics.