Custom metrics configuration for NetScaler CPX using ConfigMap

You can provide custom metrics configuration JSON files to a NetScaler CPX™ instance in Kubernetes using ConfigMap. This allows you to add custom metrics schema files without overwriting the default metrics configuration files (schema.json and reference_schema.json) that include CPX.

During startup, the NetScaler CPX instance places the default metrics configuration files in the /var/metrics_conf directory. If you mount a ConfigMap at /cpx/custom_metrics_conf, CPX validates each JSON file and copies valid files into /var/metrics_conf alongside the defaults.

Notes:

  • Custom JSON files must contain valid JSON. Invalid files are skipped during startup, and an error is logged in boot.log.
  • Default files (schema.json, reference_schema.json) are always placed first.
  • Custom files with the same name as a default file override the default file.

Configure custom metrics

You can configure custom metrics for NetScaler CPX by creating a ConfigMap and deploying the NetScaler CPX instance with the ConfigMap mounted.

To configure by using the CLI

Create the custom metrics configuration JSON files that you want to provide to the NetScaler CPX instance. The following is a sample custom configuration file:

{
    "counter": "http_requests_total",
    "label": "method",
    "description": "Total HTTP requests by method"
}
<!--NeedCopy-->

Create a ConfigMap from the files using the kubectl create configmap command. For example, to create a ConfigMap named custom-metrics-conf based on the configuration file custom_schema.json:

kubectl create configmap custom-metrics-conf --from-file=custom_schema.json=./custom_schema.json
<!--NeedCopy-->

View the created ConfigMap using the kubectl get configmap command.

kubectl get configmap custom-metrics-conf -o yaml
<!--NeedCopy-->

The following example shows sample output:

apiVersion: v1
data:
  custom_schema.json: |
    {
      "counter": "http_requests_total",
      "label": "method",
      "description": "Total HTTP requests by method"
    }
kind: ConfigMap
metadata:
  creationTimestamp: 2026-05-14T06:26:50Z
  name: custom-metrics-conf
  namespace: default
  resourceVersion: "8865149"
  uid: c1c7cb5b-ea05-11e7-914a-926745c10b02
<!--NeedCopy-->

To configure using a YAML file

Specify the created ConfigMap, custom-metrics-conf, in the YAML file used to deploy the NetScaler CPX instance. The following sample configuration shows how to include the ConfigMap in the deployment YAML:

apiVersion: v1
kind: Pod
metadata:
  name: cpx-1
  labels:
    app: cpx-daemon
  annotations:
    NETSCALER_AS_APP: "True"
spec:
  containers:
  - name: cpx
    image: "quay.io/netscaler/netscaler-cpx:14.1-72.56"
    securityContext:
      privileged: true
  volumeMounts:
    - name: config-volume
      mountPath: /cpx/bootup_conf
    - name: custom-metrics-volume
      mountPath: /cpx/custom_metrics_conf
  env:
    - name: "EULA"
      value: "yes"
    imagePullPolicy: IfNotPresent
  volumes:
  - name: config-volume
    configMap:
      name: cpx-config
  - name: custom-metrics-volume
    configMap:
      name: custom-metrics-conf
<!--NeedCopy-->

Deploy the NetScaler CPX instance. Once the instance deploys and starts, the default metrics configuration files (schema.json and reference_schema.json) are placed in /var/metrics_conf. The custom JSON files from the ConfigMap mounted at /cpx/custom_metrics_conf are validated and copied into /var/metrics_conf.

Custom metrics configuration for NetScaler CPX using ConfigMap