From f3e4fd4585bd87e01554de70265cfa9da1ead167 Mon Sep 17 00:00:00 2001 From: Applciation Study Tool Builder Date: Mon, 26 Aug 2024 23:34:11 +0000 Subject: [PATCH] Publish AST v0.3.0 --- .github/ISSUE_TEMPLATE/bug_report.md | 5 + README.md | 51 +- VERSION | 2 +- docker-compose.yaml | 2 +- .../dashboards/bigip/device/top-n.json | 41 +- .../dashboards/bigip/profile/ltm-http.json | 1713 +++++++++-------- 6 files changed, 919 insertions(+), 895 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 3743aa5..2e169cb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -37,3 +37,8 @@ If the issue is in regards to missing data in dashboards, please also run the fo ``` curl 'localhost:9090/federate?match[]=%7B__name__%3D~"f5.%2A"%7D' ``` + +Logs for the collector can be gathered with: +``` +docker logs application-study-tool-otel-collector-1 --tail 1000 +``` diff --git a/README.md b/README.md index deddd44..c5a5aff 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,20 @@ docker (or compatible) - [Installation Instructions](https://docs.docker.com/eng Clone the repo or download source tarball from the [release](https://github.com/f5devcentral/application-study-tool/releases) section. ```shell +# Clone the repo git clone https://github.com/f5devcentral/application-study-tool.git cd application-study-tool +# Edit the following file with Grafana variables as required +cp .env-example .env +# Edit the following file with device secrets as required (see "Configure Device Secrets" below) +cp .env.device-secrets-example .env.device-secrets +# Edit the config file with device / connection info (see "Configure Devices To Scrape" below) +vi ./config/big-ips.json +# Start the tool +docker-compose up ``` -#### Configure Devices To Scrape +### Configure Devices To Scrape Application Study Tool includes an init container which builds an OpenTelemetry Collector Configuration file based on a provided list of BIG-IPs in JSON format. @@ -58,7 +67,7 @@ Edit config/big-ips.json to reflect your list of BIG-IPs and their access creden ] ``` -#### Configure Device Secrets +### Configure Device Secrets The application study tool default configuration relies on environment variables which contain device access credentials. There are a number of ways to manage and inject secrets into a container environment (modifications to the docker-compose file @@ -75,7 +84,37 @@ BIGIP_PASSWORD_2=bar-foo123! The variable name (the part on the left of the equal sign) must match the configured value for the devices that use this password in config/big-ips.json. -#### Configure CA File +#### Account Permissions +The vast majority of telemetry data can be collected with read-only access to the BigIP. Some +granular stats are only available as output to a iControl Rest 'bash' shell command, and these require +read-write access. If a read-only account is used, the following metrics are unavailable: + +``` +f5_virtual_server_profile_client_ssl_connection_count{} +f5_virtual_server_profile_client_ssl_bytes_out_total{} +f5_virtual_server_profile_http_responses_total{} +f5_virtual_server_profile_http_requests_total{} +f5_virtual_server_profile_client_ssl_records_out_total{} +f5_plane_cpu_count{} +f5_virtual_server_profile_client_ssl_insecure_handshake_rejects_total{} +f5_virtual_server_profile_client_ssl_premature_disconnects_total{} +f5_virtual_server_profile_client_ssl_renegotiations_total{} +f5_virtual_server_profile_client_ssl_connection_max{} +f5_virtual_server_profile_client_ssl_insecure_handshake_accepts_total{} +f5_virtual_server_profile_client_ssl_bytes_in_total{} +f5_virtual_server_profile_client_ssl_handshake_count{} +f5_virtual_server_profile_client_ssl_records_in_total{} +f5_virtual_server_profile_client_ssl_connection_total{} +f5_policy_ip_intelligence_feed_list_count{} +f5_policy_ip_intelligence_info{} +f5_virtual_server_profile_client_ssl_secure_handshakes_total{} +f5_policy_ip_intelligence_generation{} +f5_plane_cpu_utilization_5s{} +``` + +This will impact data output in several dashboards/panels (denoted with description fields indicating as such). + +### Configure CA File AST expects a valid TLS cert bundle unless `tls_insecure_skip_verify` is set to true for each device. In order to mount and use your CA file, you must configure the docker-compose.yaml file in this directory, and set the `ca_file` parameter to the resulting path. Example: @@ -110,7 +149,7 @@ The configuration paramteter `tls_insecure_skip_verify` defaults to false. Insta that the connection between the OTEL collector and the BIG-IP does not have secure TLS termination. -#### Configure Grafana +### Configure Grafana The Grafana instance can be configured via environment variable using their standard [options](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#override-configuration-with-environment-variables). @@ -122,7 +161,9 @@ cp .env-example .env ``` -#### Run Application Study Tool +### Run Application Study Tool +Once the above configurations have been made, the tool can be started with: + ``` docker compose up ``` diff --git a/VERSION b/VERSION index 81fd7ba..d4dfa56 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.2.0 \ No newline at end of file +v0.3.0 \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 9aff384..a5b1934 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -41,7 +41,7 @@ services: command: ["/bin/sh", "/app/init_entrypoint.sh"] otel-collector: - image: ghcr.io/f5devcentral/application-study-tool/otel_custom_collector:v0.2.0 + image: ghcr.io/f5devcentral/application-study-tool/otel_custom_collector:v0.3.0 restart: unless-stopped volumes: - otel_collector:/etc/otel-collector-config diff --git a/services/grafana/provisioning/dashboards/bigip/device/top-n.json b/services/grafana/provisioning/dashboards/bigip/device/top-n.json index 6dba076..8b5a229 100644 --- a/services/grafana/provisioning/dashboards/bigip/device/top-n.json +++ b/services/grafana/provisioning/dashboards/bigip/device/top-n.json @@ -18,7 +18,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 16, + "id": 9, "links": [], "panels": [ { @@ -252,6 +252,7 @@ "type": "prometheus", "uid": "PBFA97CFB590B2093" }, + "description": "This panel requires data retrieved from a bash command. If the BigIP account used to scrape the device lacks this permission, it is expected to be blank.", "fieldConfig": { "defaults": { "color": { @@ -355,6 +356,7 @@ "type": "prometheus", "uid": "PBFA97CFB590B2093" }, + "description": "This panel requires data retrieved from a bash command. If the BigIP account used to scrape the device lacks this permission, it is expected to be blank.", "fieldConfig": { "defaults": { "color": { @@ -623,32 +625,7 @@ ] } }, - "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "Pool: /Common/pool-1 Member: /Common/172.29.67.197:80" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } - ] + "overrides": [] }, "gridPos": { "h": 8, @@ -1322,6 +1299,7 @@ "type": "prometheus", "uid": "PBFA97CFB590B2093" }, + "description": "This panel requires data retrieved from a bash command. If the BigIP account used to scrape the device lacks this permission, it is expected to be blank.", "fieldConfig": { "defaults": { "color": { @@ -2065,9 +2043,9 @@ "list": [ { "current": { - "selected": false, - "text": "bigip/Edge1.f5kc.local", - "value": "bigip/Edge1.f5kc.local" + "selected": true, + "text": "bigip/Edge2.f5kc.local", + "value": "bigip/Edge2.f5kc.local" }, "datasource": { "type": "prometheus", @@ -2118,11 +2096,10 @@ "from": "now-1h", "to": "now" }, - "timeRangeUpdatedDuringEditOrView": false, "timepicker": {}, "timezone": "browser", "title": "Top N", "uid": "edrjqc81ub85cc", - "version": 5, + "version": 3, "weekStart": "" } \ No newline at end of file diff --git a/services/grafana/provisioning/dashboards/bigip/profile/ltm-http.json b/services/grafana/provisioning/dashboards/bigip/profile/ltm-http.json index f6b64f7..41d3095 100644 --- a/services/grafana/provisioning/dashboards/bigip/profile/ltm-http.json +++ b/services/grafana/provisioning/dashboards/bigip/profile/ltm-http.json @@ -1,923 +1,924 @@ { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "id": 14, - "links": [], - "panels": [ - { - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 5, - "title": "Profile Overview", - "type": "row" - }, + "annotations": { + "list": [ { + "builtIn": 1, "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 1, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "f5_profile_http_info{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}", - "format": "table", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A", - "useBackend": false + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 11, + "links": [], + "panels": [ + { + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 5, + "title": "Profile Overview", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "changes(f5_profile_http_generation{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[24h])", - "format": "table", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "B", - "useBackend": false - } - ], - "title": "Profile Settings", - "transformations": [ - { - "id": "joinByField", - "options": { - "byField": "f5_profile_http_name", - "mode": "outer" - } + "inspect": false }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Time 1": true, - "Time 2": true, - "Value": true, - "Value #A": true, - "__name__": true, - "__name__ 1": true, - "__name__ 2": true, - "dataType": true, - "dataType 1": true, - "dataType 2": true, - "f5_profile_http_name 1": false, - "instance": true, - "instance 1": true, - "instance 2": true, - "job": true, - "job 1": true, - "job 2": true + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "includeByName": {}, - "indexByName": { - "Time 1": 12, - "Time 2": 17, - "Value #A": 16, - "Value #B": 11, - "__name__": 21, - "dataType 1": 13, - "dataType 2": 18, - "f5_defaults_from_name": 2, - "f5_description": 1, - "f5_profile_http_enforcement_known_method_count": 3, - "f5_profile_http_enforcement_max_header_size": 4, - "f5_profile_http_enforcement_pipeline": 5, - "f5_profile_http_enforcement_unknown_method": 6, - "f5_profile_http_explicit_proxy_bad_request_message": 7, - "f5_profile_http_explicit_proxy_bad_response_message": 8, - "f5_profile_http_explicit_proxy_default_connect_handling": 9, - "f5_profile_http_name": 0, - "f5_server_agent_name": 10, - "instance 1": 14, - "instance 2": 19, - "job 1": 15, - "job 2": 20 - }, - "renameByName": { - "Value #B": "Gen. Changes [24h]", - "f5_defaults_from_name": "Defaults From", - "f5_description": "Description", - "f5_profile_http_enforcement_known_method_count": "Enforce Known Methods", - "f5_profile_http_enforcement_known_methods_count": "Enforce Methods", - "f5_profile_http_enforcement_max_header_size": "Enforce Max Head Size", - "f5_profile_http_enforcement_pipeline": "Enforce Pipeline", - "f5_profile_http_enforcement_unknown_method": "Enforce Unk. Method", - "f5_profile_http_explicit_proxy_bad_request_message": "Proxy Bad Req", - "f5_profile_http_explicit_proxy_bad_response_message": "Proxy Bad Resp", - "f5_profile_http_explicit_proxy_default_connect_handling": "Proxy Def. Conn.", - "f5_profile_http_name": "Profile", - "f5_profile_http_name 1": "Profile", - "f5_server_agent_name": "Server Agent" + { + "color": "red", + "value": 80 } - } + ] } - ], - "type": "table" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 }, - "id": 6, - "panels": [], - "title": "HTTP Request / Response", - "type": "row" + "overrides": [] }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "overrides": [] + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "f5_profile_http_info{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "changes(f5_profile_http_generation{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[24h])", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B", + "useBackend": false + } + ], + "title": "Profile Settings", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "f5_profile_http_name", + "mode": "outer" } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Value": true, + "Value #A": true, + "__name__": true, + "__name__ 1": true, + "__name__ 2": true, + "dataType": true, + "dataType 1": true, + "dataType 2": true, + "f5_profile_http_name 1": false, + "instance": true, + "instance 1": true, + "instance 2": true, + "job": true, + "job 1": true, + "job 2": true }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "rate(f5_profile_http_requests_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[$__rate_interval])", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{f5_profile_http_name}}", - "range": true, - "refId": "A", - "useBackend": false + "includeByName": {}, + "indexByName": { + "Time 1": 12, + "Time 2": 17, + "Value #A": 16, + "Value #B": 11, + "__name__": 21, + "dataType 1": 13, + "dataType 2": 18, + "f5_defaults_from_name": 2, + "f5_description": 1, + "f5_profile_http_enforcement_known_method_count": 3, + "f5_profile_http_enforcement_max_header_size": 4, + "f5_profile_http_enforcement_pipeline": 5, + "f5_profile_http_enforcement_unknown_method": 6, + "f5_profile_http_explicit_proxy_bad_request_message": 7, + "f5_profile_http_explicit_proxy_bad_response_message": 8, + "f5_profile_http_explicit_proxy_default_connect_handling": 9, + "f5_profile_http_name": 0, + "f5_server_agent_name": 10, + "instance 1": 14, + "instance 2": 19, + "job 1": 15, + "job 2": 20 + }, + "renameByName": { + "Value #B": "Gen. Changes [24h]", + "f5_defaults_from_name": "Defaults From", + "f5_description": "Description", + "f5_profile_http_enforcement_known_method_count": "Enforce Known Methods", + "f5_profile_http_enforcement_known_methods_count": "Enforce Methods", + "f5_profile_http_enforcement_max_header_size": "Enforce Max Head Size", + "f5_profile_http_enforcement_pipeline": "Enforce Pipeline", + "f5_profile_http_enforcement_unknown_method": "Enforce Unk. Method", + "f5_profile_http_explicit_proxy_bad_request_message": "Proxy Bad Req", + "f5_profile_http_explicit_proxy_bad_response_message": "Proxy Bad Resp", + "f5_profile_http_explicit_proxy_default_connect_handling": "Proxy Def. Conn.", + "f5_profile_http_name": "Profile", + "f5_profile_http_name 1": "Profile", + "f5_server_agent_name": "Server Agent" + } } - ], - "title": "HTTP Request Rate", - "type": "timeseries" + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" + "id": 6, + "panels": [], + "title": "HTTP Request / Response", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "thresholdsStyle": { + "mode": "off" } }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "rate(f5_profile_http_responses_by_status_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[$__rate_interval])", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{f5_profile_http_name}}: {{http_status_range}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "HTTP Response Rate By Status", - "type": "timeseries" + "overrides": [] }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [] - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 18 - }, - "id": 3, - "options": { - "legend": { - "displayMode": "table", - "placement": "right", - "showLegend": true + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(f5_profile_http_requests_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{f5_profile_http_name}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "HTTP Request Rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "increase(f5_profile_http_requests_by_version_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", - "format": "time_series", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{f5_profile_http_name}} - {{http_version}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "HTTP Requests By Version [1h]", - "type": "piechart" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "mappings": [] + "thresholdsStyle": { + "mode": "off" + } }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 6, - "y": 18 + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, - "id": 4, - "options": { - "legend": { - "displayMode": "table", - "placement": "right", - "showLegend": true + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(f5_profile_http_responses_by_status_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{f5_profile_http_name}}: {{http_status_range}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "HTTP Response Rate By Status", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" - } + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "increase(f5_profile_http_requests_by_method_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", - "format": "time_series", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{f5_profile_http_name}} - {{http_method}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "HTTP Requests By Method", - "type": "piechart" + "overrides": [] }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [] + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 18 + }, + "id": 3, + "options": { + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 18 - }, - "id": 9, - "options": { - "legend": { - "displayMode": "table", - "placement": "right", - "showLegend": true + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "increase(f5_profile_http_requests_by_version_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "{{f5_profile_http_name}} - {{http_version}}", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "HTTP Requests By Version [1h]", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" - } + "mappings": [] }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "increase(f5_profile_http_responses_by_version_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", - "format": "time_series", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{f5_profile_http_name}} - {{http_version}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "HTTP Responses By Version [1h]", - "type": "piechart" + "overrides": [] }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 26 - }, - "id": 7, - "panels": [], - "title": "Virtual Server HTTP Request Response", - "type": "row" + "gridPos": { + "h": 8, + "w": 6, + "x": 6, + "y": 18 }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "id": 4, + "options": { + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "increase(f5_profile_http_requests_by_method_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "{{f5_profile_http_name}} - {{http_method}}", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "HTTP Requests By Method", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false } }, - "overrides": [] + "mappings": [] }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 10, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "right", - "showLegend": true + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 18 + }, + "id": 9, + "options": { + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "rate(f5_virtual_server_profile_http_requests_total{f5_profile_http_name=~\"$profile_name\", job=\"$device_name\"}[$__rate_interval])", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{f5_profile_http_name}}: {{http_method}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Virtual Server HTTP Request Rate By Method", - "type": "timeseries" + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "increase(f5_profile_http_responses_by_version_total{job=\"$device_name\", f5_profile_http_name=~\"$profile_name\"}[1h])", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "{{f5_profile_http_name}} - {{http_version}}", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "HTTP Responses By Version [1h]", + "type": "piechart" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" + "id": 7, + "panels": [], + "title": "Virtual Server HTTP Request Response", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "description": "This panel requires data retrieved from a bash command. If the BigIP account used to scrape the device lacks this permission, it is expected to be blank.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" } }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 27 - }, - "id": 11, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "maxHeight": 600, - "mode": "single", - "sort": "none" + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "rate(f5_virtual_server_profile_http_responses_total{f5_profile_http_name=~\"$profile_name\", job=\"$device_name\"}[$__rate_interval])", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{f5_profile_http_name}}: {{http_status_range}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Virtual Server HTTP Response Rate By Status", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "tags": [], - "templating": { - "list": [ + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 10, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ { - "current": { - "selected": true, - "text": "bigip/Edge2.f5kc.local", - "value": "bigip/Edge2.f5kc.local" - }, "datasource": { "type": "prometheus", "uid": "PBFA97CFB590B2093" }, - "definition": "label_values(f5_system_state_up_ratio,job)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "device_name", - "options": [], - "query": { - "qryType": 1, - "query": "label_values(f5_system_state_up_ratio,job)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(f5_virtual_server_profile_http_requests_total{f5_profile_http_name=~\"$profile_name\", job=\"$device_name\"}[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{f5_profile_http_name}}: {{http_method}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Virtual Server HTTP Request Rate By Method", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "description": "This panel requires data retrieved from a bash command. If the BigIP account used to scrape the device lacks this permission, it is expected to be blank.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 11, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "maxHeight": 600, + "mode": "single", + "sort": "none" + } + }, + "targets": [ { - "allValue": ".*", - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, "datasource": { "type": "prometheus", "uid": "PBFA97CFB590B2093" }, - "definition": "label_values(f5_profile_http_info,f5_profile_http_name)", - "hide": 0, - "includeAll": true, - "multi": true, - "name": "profile_name", - "options": [], - "query": { - "qryType": 1, - "query": "label_values(f5_profile_http_info,f5_profile_http_name)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(f5_virtual_server_profile_http_responses_total{f5_profile_http_name=~\"$profile_name\", job=\"$device_name\"}[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{f5_profile_http_name}}: {{http_status_range}}", + "range": true, + "refId": "A", + "useBackend": false } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timeRangeUpdatedDuringEditOrView": false, - "timepicker": {}, - "timezone": "browser", - "title": "LTM - HTTP Profile", - "uid": "cdu8euqz7w0zkc", - "version": 2, - "weekStart": "" - } \ No newline at end of file + ], + "title": "Virtual Server HTTP Response Rate By Status", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "bigip/Edge2.f5kc.local", + "value": "bigip/Edge2.f5kc.local" + }, + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "definition": "label_values(f5_system_state_up_ratio,job)", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "device_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(f5_system_state_up_ratio,job)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "definition": "label_values(f5_profile_http_info,f5_profile_http_name)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "profile_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(f5_profile_http_info,f5_profile_http_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "LTM - HTTP Profile", + "uid": "cdu8euqz7w0zkc", + "version": 2, + "weekStart": "" +} \ No newline at end of file