Skip to main content

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

  1. 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
            }
        }
    }
  2. 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.

    6375440447.png
  3. Restart all the relevant Checkmarx components, for which Prometheus has been enabled, and then restart IIS Applications, using IIS Reset.

  4. 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:

    6374819135.png

Setting up Grafana to Query CxSAST/AMQ/MSSQL

6515884326.png
  1. 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.

  2. 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""
  3. Run Telegraf from CLI, using the command: telegraf --config telegraf.conf

  4. Download and extract Prometheus SQL exporter (https://github.com/free/sql_exporter/releases). For Windows, download ‘amd64’ binaries.

  5. 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'

  6. Run sql_exporter.exe from CLI.

  7. Download and extract Prometheus binaries (https://github.com/prometheus/prometheus/releases). For Windows, download ‘amd64’ binaries.

  8. 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"]
  9. Run prometheus.exe from CLI.

  10. Open Prometheus web interface (http://localhost:9090/targets) to see a list of all Checkmarx SAST.

    6375669802.png
  11. 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.

  12. Open the Grafana console at http://localhost:3000/.

  13. Type ‘admin’ for the user and password for the initial setup, then specify your own password.

  14. Open the DataSources page http://localhost:3000/datasources.

  15. Select a Prometheus data source, and set URL to http://localhost:9090.

  16. Press Save & Test, to confirm it's successful.

  17. On the same page, select the Dashboards tab.

  18. Import all the available dashboards in the list, by clicking the Import buttons at the end of each row.

  19. 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).

  20. 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": ""
    }
  21. Select your CxDashboard at http://localhost:3000/dashboards and observe the SAST metrics.