diff --git a/assets/neuvector-monitor/neuvector-monitor-103.0.3+up2.7.6.tgz b/assets/neuvector-monitor/neuvector-monitor-103.0.3+up2.7.6.tgz
new file mode 100644
index 0000000000..39154af181
Binary files /dev/null and b/assets/neuvector-monitor/neuvector-monitor-103.0.3+up2.7.6.tgz differ
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/Chart.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/Chart.yaml
new file mode 100644
index 0000000000..3998bd7737
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/Chart.yaml
@@ -0,0 +1,27 @@
+annotations:
+ catalog.cattle.io/certified: rancher
+ catalog.cattle.io/display-name: NeuVector Monitor
+ catalog.cattle.io/kube-version: '>=1.18.0-0 < 1.29.0-0'
+ catalog.cattle.io/namespace: cattle-neuvector-system
+ catalog.cattle.io/os: linux
+ catalog.cattle.io/permits-os: linux
+ catalog.cattle.io/provides-gvr: neuvector.com/v1
+ catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0'
+ catalog.cattle.io/release-name: neuvector-monitor
+ catalog.cattle.io/type: cluster-tool
+ catalog.cattle.io/upstream-version: 2.7.6
+apiVersion: v1
+appVersion: 5.3.2
+description: Helm feature chart (optional) add-on to NeuVector for monitoring with
+ Prometheus/Grafana.
+home: https://neuvector.com
+icon: https://avatars2.githubusercontent.com/u/19367275?s=200&v=4
+keywords:
+- security
+maintainers:
+- email: support@neuvector.com
+ name: becitsthere
+name: neuvector-monitor
+sources:
+- https://github.com/neuvector/neuvector
+version: 103.0.3+up2.7.6
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/README.md b/charts/neuvector-monitor/103.0.3+up2.7.6/README.md
new file mode 100644
index 0000000000..897f52ed5a
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/README.md
@@ -0,0 +1,22 @@
+# NeuVector Helm Chart
+
+Helm chart for NeuVector's monitoring services.
+
+## Configuration
+
+The following table lists the configurable parameters of the NeuVector chart and their default values.
+
+Parameter | Description | Default | Notes
+--------- | ----------- | ------- | -----
+`registry` | NeuVector container registry | `registry.neuvector.com` |
+`oem` | OEM release name | `nil` |
+`leastPrivilege` | Assume monitor chart is always installed after the core chart, so service accounts created by the core chart will be used. Keep this value as same as in the core chart. | `false` |
+`exporter.enabled` | If true, create Prometheus exporter | `false` |
+`exporter.image.repository` | exporter image name | `neuvector/prometheus-exporter` |
+`exporter.image.tag` | exporter image tag | `latest` |
+`exporter.ctrlSecretName` | existing secret that have CTRL_USERNAME and CTRL_PASSWORD fields to login to the controller. | `nil` | if parameter exists then `exporter.CTRL_USERNAME` & `exporter.CTRL_PASSWORD` will be skipped
+`exporter.CTRL_USERNAME` | Username to login to the controller. Suggest to replace the default admin user to a read-only user | `admin` |
+`exporter.CTRL_PASSWORD` | Password to login to the controller. | `admin` |
+`exporter.enforcerStats.enabled` | If true, enable the Enforcers stats | `false` | For the performance reason, by default the exporter does NOT pull CPU/memory usage from enforcers.
+---
+
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/app-readme.md b/charts/neuvector-monitor/103.0.3+up2.7.6/app-readme.md
new file mode 100644
index 0000000000..e0faed5b50
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/app-readme.md
@@ -0,0 +1,5 @@
+### Run-Time Protection Without Compromise
+
+NeuVector delivers a complete run-time security solution with container process/file system protection and vulnerability scanning combined with the only true Layer 7 container firewall. Protect sensitive data with a complete container security platform.
+
+Helm chart for NeuVector's monitoring services. Please make sure REST API service for controller in core chart is enabled.
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/dashboards/nv_dashboard.json b/charts/neuvector-monitor/103.0.3+up2.7.6/dashboards/nv_dashboard.json
new file mode 100644
index 0000000000..1da8b12e94
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/dashboards/nv_dashboard.json
@@ -0,0 +1,2036 @@
+{
+ "__inputs": [
+ {
+ "name": "datasource",
+ "label": "Prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__elements": {},
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "10.2.3"
+ },
+ {
+ "type": "panel",
+ "id": "piechart",
+ "name": "Pie chart",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "stat",
+ "name": "Stat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "text",
+ "name": "Text",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "timeseries",
+ "name": "Time series",
+ "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": null,
+ "links": [],
+ "liveNow": false,
+ "panels": [
+ {
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 3,
+ "x": 0,
+ "y": 0
+ },
+ "id": 38,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "
\n \n ![NeuVector Logo](https://avatars.githubusercontent.com/u/19367275?s=200&v=4)
\n
\n [Documentation](https://open-docs.neuvector.com)
\n \n [Users Slack Channel](https://rancher-users.slack.com/archives/C036F6JDZ8C)
\n \n [GitHub](https://github.com/neuvector)\n\n
",
+ "mode": "markdown"
+ },
+ "pluginVersion": "10.2.3",
+ "title": "NeuVector Product Links",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 3,
+ "y": 0
+ },
+ "id": 25,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_enforcers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Enforcer Replica Count",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 3,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 0
+ },
+ "id": 8,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_cvedbVersion",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "CVE Database Version",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 9,
+ "y": 0
+ },
+ "id": 20,
+ "links": [],
+ "maxDataPoints": 1000,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_pods",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Discovered Pod Count",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "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": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "percentunit"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 0
+ },
+ "id": 34,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(nv_controller_cpu) by (display)\n",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Controller CPU Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 3,
+ "y": 3
+ },
+ "id": 32,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_admission_denied",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "title": "Denied Admissions",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "continuous-RdYlGr"
+ },
+ "mappings": [
+ {
+ "options": {
+ "1": {
+ "color": "light-orange",
+ "index": 1
+ },
+ "2": {
+ "color": "yellow",
+ "index": 2
+ },
+ "3": {
+ "color": "green",
+ "index": 3
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "index": 0,
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 3
+ },
+ "id": 2,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_controllers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Controller Replicas",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 9,
+ "y": 3
+ },
+ "id": 19,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_disconnectedEnforcers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Disconnected Enforcers",
+ "type": "stat"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": false,
+ "inspect": false,
+ "width": 300
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "string"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "log"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 101
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "light-orange",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "displayName",
+ "value": "Event Type"
+ },
+ {
+ "id": "custom.filterable",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "name"
+ },
+ "properties": [
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Violation Type"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Last seen"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "dateTimeAsIso"
+ },
+ {
+ "id": "custom.width",
+ "value": 200
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "fromname"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Source Pod"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "toname"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Destination Pod"
+ }
+ ]
+ }
+ ]
+ },
+ "fontSize": "90%",
+ "gridPos": {
+ "h": 8,
+ "w": 9,
+ "x": 3,
+ "y": 6
+ },
+ "id": 29,
+ "links": [],
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": [
+ {
+ "desc": true,
+ "displayName": "Last seen"
+ }
+ ]
+ },
+ "pluginVersion": "10.2.3",
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Event",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm",
+ "decimals": 2,
+ "link": false,
+ "mappingType": 1,
+ "pattern": "Metric",
+ "preserveFormat": false,
+ "sanitize": true,
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Time",
+ "colorMode": "value",
+ "colors": [
+ "#E0B400",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "dateTimeAsIso"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "nv_log_events",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Security Event Log",
+ "transform": "timeseries_aggregations",
+ "transformations": [
+ {
+ "id": "labelsToFields",
+ "options": {}
+ },
+ {
+ "id": "merge",
+ "options": {}
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "endpoint": true,
+ "fromns": true,
+ "id": true,
+ "instance": true,
+ "job": true,
+ "namespace": true,
+ "pod": true,
+ "service": true,
+ "target": true,
+ "tons": true
+ },
+ "indexByName": {
+ "Time": 0,
+ "Value": 14,
+ "endpoint": 1,
+ "fromname": 7,
+ "fromns": 15,
+ "id": 2,
+ "instance": 3,
+ "job": 4,
+ "log": 5,
+ "name": 6,
+ "namespace": 8,
+ "pod": 9,
+ "service": 10,
+ "target": 11,
+ "toname": 12,
+ "tons": 13
+ },
+ "renameByName": {}
+ }
+ },
+ {
+ "id": "groupBy",
+ "options": {
+ "fields": {
+ "Value": {
+ "aggregations": [
+ "max"
+ ],
+ "operation": "aggregate"
+ },
+ "fromname": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "log": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "name": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "toname": {
+ "aggregations": [],
+ "operation": "groupby"
+ }
+ }
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {},
+ "indexByName": {},
+ "renameByName": {
+ "Value (lastNotNull)": "Last seen",
+ "Value (max)": "Last seen"
+ }
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "left",
+ "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": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "bytes"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 6
+ },
+ "id": 12,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(nv_controller_memory) by (display)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Controller Memory Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [],
+ "unit": "none"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "light-orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 14,
+ "w": 3,
+ "x": 0,
+ "y": 10
+ },
+ "id": 24,
+ "links": [],
+ "options": {
+ "displayLabels": [
+ "value"
+ ],
+ "legend": {
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": []
+ },
+ "pieType": "pie",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "tooltip": {
+ "mode": "none",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "expr": "sum(nv_container_vulnerabilityHigh) by (service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "expr": "sum(nv_container_vulnerabilityMedium) by (service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Cluster CVE Count",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "piechart"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "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": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "percentunit"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byValue",
+ "options": {
+ "op": "gte",
+ "reducer": "allIsZero",
+ "value": 0
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": true,
+ "viz": false
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byValue",
+ "options": {
+ "op": "gte",
+ "reducer": "allIsNull",
+ "value": 0
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": true,
+ "viz": false
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 12
+ },
+ "id": 10,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(nv_enforcer_cpu) by (display)\n",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Enforcer CPU Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "inspect": false,
+ "width": 101
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "exported_service"
+ },
+ "properties": [
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Cluster Service Name"
+ },
+ {
+ "id": "custom.inspect",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "light-orange",
+ "value": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "exported_service"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 300
+ },
+ {
+ "id": "custom.align",
+ "value": "right"
+ },
+ {
+ "id": "displayName",
+ "value": "Cluster Service Name"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 4,
+ "x": 3,
+ "y": 14
+ },
+ "id": 36,
+ "links": [],
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": []
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(nv_container_vulnerabilityHigh) by (exported_service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(nv_container_vulnerabilityMedium) by (exported_service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Vulnerabilities by Service",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": false,
+ "inspect": false,
+ "minWidth": 50
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "name"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "string"
+ },
+ {
+ "id": "custom.align",
+ "value": "right"
+ },
+ {
+ "id": "custom.inspect",
+ "value": true
+ },
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Repository/Image: Tag"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "color"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "light-orange",
+ "value": 1
+ }
+ ]
+ }
+ },
+ {
+ "id": "color"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 5,
+ "x": 7,
+ "y": 14
+ },
+ "id": 33,
+ "links": [],
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "expr": "sum(nv_image_vulnerabilityHigh) by (name)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "expr": "sum(nv_image_vulnerabilityMedium) by (name)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Registry Images Vulnerabilities",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "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": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "bytes"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byValue",
+ "options": {
+ "op": "gte",
+ "reducer": "allIsZero",
+ "value": 0
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": true,
+ "viz": false
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byValue",
+ "options": {
+ "op": "gte",
+ "reducer": "allIsNull",
+ "value": 0
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": true,
+ "viz": false
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 18
+ },
+ "id": 35,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "10.2.3",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "max(nv_enforcer_memory) by (display)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Enforcer Memory Usage",
+ "type": "timeseries"
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 39,
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "Prometheus",
+ "value": "prometheus"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Data Source",
+ "multi": false,
+ "name": "datasource",
+ "options": [],
+ "query": "prometheus",
+ "queryValue": "",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-5m",
+ "to": "now"
+ },
+ "timepicker": {
+ "hidden": false,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "UTC",
+ "title": "NeuVector",
+ "uid": "nv_dashboard0001",
+ "version": 1,
+ "weekStart": ""
+}
\ No newline at end of file
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/questions.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/questions.yaml
new file mode 100644
index 0000000000..b8d51b3791
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/questions.yaml
@@ -0,0 +1,27 @@
+questions:
+#monitor configurations
+- variable: exporter.image.repository
+ default: "neuvector/prometheus-exporter"
+ description: exporter image repository
+ type: string
+ label: Exporter Image Path
+ group: "Container Images"
+- variable: exporter.image.tag
+ default: ""
+ description: image tag for exporter
+ type: string
+ label: exporter Image Tag
+ group: "Container Images"
+#controller crendential configuration
+- variable: exporter.CTRL_USERNAME
+ default: "admin"
+ description: Controller Username
+ type: string
+ label: Controller Username
+ group: "Controller Crendential"
+- variable: exporter.CTRL_PASSWORD
+ default: "admin"
+ description: Controller Password
+ type: string
+ label: Controller Password
+ group: "Controller Crendential"
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/_helpers.tpl b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/_helpers.tpl
new file mode 100644
index 0000000000..5d21a18241
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/_helpers.tpl
@@ -0,0 +1,40 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "neuvector.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "neuvector.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "neuvector.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{- define "system_default_registry" -}}
+{{- if .Values.global.cattle.systemDefaultRegistry -}}
+{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}}
+{{- else -}}
+{{- "" -}}
+{{- end -}}
+{{- end -}}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/dashboard.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/dashboard.yaml
new file mode 100644
index 0000000000..9a6840a4d8
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/dashboard.yaml
@@ -0,0 +1,19 @@
+{{- if .Values.exporter.grafanaDashboard.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: nv-grafana-dashboard
+ namespace: {{ .Values.exporter.grafanaDashboard.namespace | default .Release.Namespace }}
+ labels:
+ grafana_dashboard: "1"
+{{- if .Values.exporter.grafanaDashboard.labels }}
+ {{- toYaml .Values.exporter.grafanaDashboard.labels | nindent 4}}
+{{- end }}
+{{- if .Values.exporter.grafanaDashboard.annotations }}
+ annotations:
+ {{- toYaml .Values.exporter.grafanaDashboard.annotations | nindent 4}}
+{{- end }}
+data:
+ nv_dashboard.json: |
+{{ .Files.Get "dashboards/nv_dashboard.json" | indent 4 }}
+{{- end }}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-deployment.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-deployment.yaml
new file mode 100644
index 0000000000..8309f8a412
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-deployment.yaml
@@ -0,0 +1,75 @@
+{{- if .Values.exporter.enabled -}}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: neuvector-prometheus-exporter-pod
+ namespace: {{ .Release.Namespace }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: neuvector-prometheus-exporter-pod
+ template:
+ metadata:
+ annotations:
+ prometheus.io/path: /metrics
+ prometheus.io/port: "8068"
+ prometheus.io/scrape: "true"
+ checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
+ labels:
+ app: neuvector-prometheus-exporter-pod
+ release: {{ .Release.Name }}
+ {{- with .Values.exporter.podLabels }}
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ spec:
+ {{- if .Values.imagePullSecrets }}
+ imagePullSecrets:
+ - name: {{ .Values.imagePullSecrets }}
+ {{- end }}
+ {{- if .Values.leastPrivilege }}
+ serviceAccountName: basic
+ serviceAccount: basic
+ {{- end }}
+ {{- with .Values.exporter.securityContext }}
+ securityContext:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ containers:
+ - name: neuvector-prometheus-exporter-pod
+ {{ if eq .Values.registry "registry.neuvector.com" }}
+ {{ if .Values.oem }}
+ image: "{{ .Values.registry }}/{{ .Values.oem }}/prometheus-exporter:{{ .Values.exporter.image.tag }}"
+ {{- else }}
+ image: "{{ .Values.registry }}/prometheus-exporter:{{ .Values.exporter.image.tag }}"
+ {{- end }}
+ {{- else }}
+ image: {{ template "system_default_registry" . }}{{ .Values.exporter.image.repository }}:{{ .Values.exporter.image.tag }}
+ {{- end }}
+ imagePullPolicy: Always
+ {{- with .Values.exporter.containerSecurityContext }}
+ securityContext:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ env:
+ - name: CTRL_API_SERVICE
+ value: {{ .Values.exporter.apiSvc }}
+ - name: EXPORTER_PORT
+ value: "8068"
+ {{- if .Values.exporter.enforcerStats.enabled }}
+ - name: ENFORCER_STATS
+ value: "{{.Values.exporter.enforcerStats.enabled | default "false"}}"
+ {{- end }}
+ envFrom:
+ - secretRef:
+ {{- if .Values.exporter.ctrlSecretName }}
+ name: {{ .Values.exporter.ctrlSecretName }}
+ {{ else }}
+ name: neuvector-prometheus-exporter-pod-secret
+ {{- end }}
+ restartPolicy: Always
+{{- end }}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-service.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-service.yaml
new file mode 100644
index 0000000000..b304562709
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-service.yaml
@@ -0,0 +1,28 @@
+{{- if and .Values.exporter.enabled .Values.exporter.svc.enabled -}}
+apiVersion: v1
+kind: Service
+metadata:
+ name: neuvector-prometheus-exporter
+ namespace: {{ .Release.Namespace }}
+ {{- with .Values.exporter.svc.annotations }}
+ annotations:
+ {{ toYaml . | nindent 4 }}
+ {{- end }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+ app: neuvector-prometheus-exporter
+spec:
+ type: {{ .Values.exporter.svc.type }}
+ {{- if and .Values.exporter.svc.loadBalancerIP (eq .Values.exporter.svc.type "LoadBalancer") }}
+ loadBalancerIP: {{ .Values.exporter.svc.loadBalancerIP }}
+ {{- end }}
+ ports:
+ - port: 8068
+ name: metrics
+ targetPort: 8068
+ protocol: TCP
+ selector:
+ app: neuvector-prometheus-exporter-pod
+{{- end }}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-servicemonitor.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-servicemonitor.yaml
new file mode 100644
index 0000000000..25ca23d121
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/exporter-servicemonitor.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.exporter.serviceMonitor.enabled -}}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ name: neuvector-prometheus-exporter
+ namespace: {{ .Release.Namespace }}
+ {{- with .Values.exporter.serviceMonitor.annotations }}
+ annotations:
+ {{ toYaml . | nindent 4 }}
+ {{- end }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+{{- if .Values.exporter.serviceMonitor.labels }}
+ {{- toYaml .Values.exporter.serviceMonitor.labels | nindent 4}}
+{{- end }}
+spec:
+ selector:
+ matchLabels:
+ app: neuvector-prometheus-exporter
+ namespaceSelector:
+ matchNames:
+ - {{ .Release.Namespace }}
+ endpoints:
+ - port: metrics
+ {{- if .Values.exporter.serviceMonitor.interval }}
+ interval: {{ .Values.exporter.serviceMonitor.interval }}
+ {{- end }}
+ path: "/metrics"
+ {{- if .Values.exporter.serviceMonitor.metricRelabelings }}
+ metricRelabelings:
+ {{- toYaml .Values.exporter.serviceMonitor.metricRelabelings | nindent 6 }}
+ {{- end }}
+ {{- if .Values.exporter.serviceMonitor.relabelings }}
+ relabelings:
+ {{- toYaml .Values.exporter.serviceMonitor.relabelings | nindent 6 }}
+ {{- end }}
+{{- end }}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/templates/secret.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/secret.yaml
new file mode 100644
index 0000000000..a751795995
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/templates/secret.yaml
@@ -0,0 +1,15 @@
+{{- if and (.Values.exporter.enabled) (not .Values.exporter.ctrlSecretName) -}}
+apiVersion: v1
+kind: Secret
+metadata:
+ name: neuvector-prometheus-exporter-pod-secret
+ namespace: {{ .Release.Namespace }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+type: Opaque
+data:
+ CTRL_USERNAME: {{ .Values.exporter.CTRL_USERNAME | b64enc | quote }}
+ CTRL_PASSWORD: {{ .Values.exporter.CTRL_PASSWORD | b64enc | quote }}
+{{- end }}
diff --git a/charts/neuvector-monitor/103.0.3+up2.7.6/values.yaml b/charts/neuvector-monitor/103.0.3+up2.7.6/values.yaml
new file mode 100644
index 0000000000..dc89881ed3
--- /dev/null
+++ b/charts/neuvector-monitor/103.0.3+up2.7.6/values.yaml
@@ -0,0 +1,59 @@
+# Default values for neuvector.
+# This is a YAML-formatted file.
+# Declare variables to be passed into the templates.
+
+global:
+ cattle:
+ systemDefaultRegistry: ""
+
+registry: docker.io
+oem: ''
+leastPrivilege: false
+
+exporter:
+ # If false, exporter will not be installed
+ enabled: true
+ image:
+ repository: rancher/mirrored-neuvector-prometheus-exporter
+ tag: 5.3.2
+ # changes this to a readonly user !
+ CTRL_USERNAME: admin
+ CTRL_PASSWORD: admin
+ ctrlSercretName: ''
+ enforcerStats:
+ enabled: false
+ ctrlSecretName: ''
+ apiSvc: neuvector-svc-controller-api:10443
+ podLabels: {}
+ securityContext: {}
+ containerSecurityContext: {}
+
+ svc:
+ enabled: true
+ type: ClusterIP
+ loadBalancerIP: ''
+ annotations: {}
+ # service.beta.kubernetes.io/azure-load-balancer-internal: "true"
+ # service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
+
+ grafanaDashboard:
+ enabled: false
+ namespace: "" # Release namespace, if empty
+ labels: {}
+ # annotations: {}
+ # k8s-sidecar-target-directory: /tmp/dashboards/neuvector
+
+ serviceMonitor:
+ enabled: false
+ # labels for the ServiceMonitor.
+ labels: {}
+ # annotations for the ServiceMonitor.
+ annotations: {}
+ # Scrape interval. If not set, the Prometheus default scrape interval is used.
+ interval: ""
+ # MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
+ # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
+ metricRelabelings: []
+ # RelabelConfigs to apply to samples before scraping
+ # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
+ relabelings: []
diff --git a/index.yaml b/index.yaml
index b13d5fc6ef..b13e30949e 100755
--- a/index.yaml
+++ b/index.yaml
@@ -6036,6 +6036,37 @@ entries:
- assets/neuvector-crd/neuvector-crd-100.0.0+up2.2.0.tgz
version: 100.0.0+up2.2.0
neuvector-monitor:
+ - annotations:
+ catalog.cattle.io/certified: rancher
+ catalog.cattle.io/display-name: NeuVector Monitor
+ catalog.cattle.io/kube-version: '>=1.18.0-0 < 1.29.0-0'
+ catalog.cattle.io/namespace: cattle-neuvector-system
+ catalog.cattle.io/os: linux
+ catalog.cattle.io/permits-os: linux
+ catalog.cattle.io/provides-gvr: neuvector.com/v1
+ catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0'
+ catalog.cattle.io/release-name: neuvector-monitor
+ catalog.cattle.io/type: cluster-tool
+ catalog.cattle.io/upstream-version: 2.7.6
+ apiVersion: v1
+ appVersion: 5.3.2
+ created: "2024-04-18T16:24:04.442969-03:00"
+ description: Helm feature chart (optional) add-on to NeuVector for monitoring
+ with Prometheus/Grafana.
+ digest: 0b44123f1e5b0b5ece2ccc6162190bff2684620c84b58301fda3b33460567b75
+ home: https://neuvector.com
+ icon: https://avatars2.githubusercontent.com/u/19367275?s=200&v=4
+ keywords:
+ - security
+ maintainers:
+ - email: support@neuvector.com
+ name: becitsthere
+ name: neuvector-monitor
+ sources:
+ - https://github.com/neuvector/neuvector
+ urls:
+ - assets/neuvector-monitor/neuvector-monitor-103.0.3+up2.7.6.tgz
+ version: 103.0.3+up2.7.6
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: NeuVector Monitor
diff --git a/release.yaml b/release.yaml
index ed37b7571b..99f504aff7 100644
--- a/release.yaml
+++ b/release.yaml
@@ -51,6 +51,7 @@ neuvector-monitor:
- 103.0.2+up2.7.3
- 102.0.8+up2.7.3
- 102.0.9+up2.7.6
+ - 103.0.3+up2.7.6
prometheus-federator:
- 103.0.1+up0.4.1
- 104.0.0-rc1+up0.4.1