Kubernetes and VM / Bare-Metal
This topic explains how to confirm that Fabric is successfully exposing Prometheus-format metrics through the bundled JMX Exporter. The goal is to validate the Fabric-side metrics surface before moving on to collection layer configuration, dashboards, or alerting.
Verification is the same whether you are on Kubernetes or a VM — the curl command and the expected output are identical. What differs is where you run the command from.
This how-to focuses on verification only, not initial setup. It assumes the JMX Exporter has already been enabled for Fabric. If it has not, see How to Enable the JMX Exporter for Fabric first.
This how-to covers:
[ K8s + VM ] Applies to both Kubernetes and VM / bare-metal deployments.
You are verifying four things:
There are two endpoints to verify — one for Fabric itself and one for the iid_finder process, which runs as a separate JVM:
http://localhost:7170/metrics # Fabric JVM and application metrics
http://localhost:7270/metrics # iid_finder metrics
At minimum, verify port 7170. Port 7270 is relevant if iid_finder is running in your deployment.
Confirm the following before running verification:
The javaagent line in jvm.options should look like:
-javaagent:$K2_HOME/monitor/jmx_exporter/jmx_prometheus_javaagent-1.5.0.jar=7170:$K2_HOME/monitor/jmx_exporter/fabric_config.yaml
The curl command is the same in both environments, but where you run it differs.
[ K8s ] Run the verification from inside the Fabric pod.
The JMX Exporter binds to localhost inside the container. It is not accessible from outside the pod without port-forwarding. Run the verification from inside the pod:
kubectl exec -it <fabric-pod-name> -n <namespace> -- curl http://localhost:7170/metrics
Or open an interactive shell inside the pod first:
kubectl exec -it <fabric-pod-name> -n <namespace> -- /bin/bash
curl http://localhost:7170/metrics
To verify the iid_finder endpoint:
kubectl exec -it <fabric-pod-name> -n <namespace> -- curl http://localhost:7270/metrics
Note: Replace
[ VM / Bare-Metal ] Run the verification directly on the Fabric host.
On a VM or bare-metal host, the exporter binds to localhost on the Fabric machine. Run the curl command directly on that host:
curl http://localhost:7170/metrics
To verify the iid_finder endpoint:
curl http://localhost:7270/metrics
If you need to test reachability from a remote machine (such as the Prometheus monitoring machine), use the Fabric host IP:
curl http://
:7170/metrics Note: The JMX Exporter binds to 127.0.0.1 by default in some configurations. If remote access returns a connection refused error, confirm the bind address in the javaagent line and check firewall rules between the monitoring machine and the Fabric host.
[ K8s + VM ] Applies to both deployment models.
A successful response returns Prometheus-format text. It is a plain text format with one metric per line, using the pattern:
# HELP <metric_name> <description>
# TYPE <metric_name> <type>
<metric_name>{<labels>} <value>
The response from a working Fabric exporter includes:
You do not need to validate every metric at this stage. The key checks are:
To quickly check for Fabric-specific metrics:
curl -s http://localhost:7170/metrics | grep '^fabric_'
To check for JVM metrics:
curl -s http://localhost:7170/metrics | grep '^jvm_'
[ K8s + VM ] Applies to both deployment models.
Verification is successful when all of the following are true:
At this point the Fabric-side metrics surface is working. The next step is to confirm that the collection layer (Grafana Agent on Kubernetes, or Prometheus on VMs) is successfully scraping the endpoint.
The most common causes:
Kubernetes specific: Confirm you are running the curl from inside the pod, not from outside. The exporter is not exposed externally by default.
VM specific: Confirm the exporter is not bound to 127.0.0.1 if you are testing from a remote machine. Check the bind address in the javaagent line.
VM specific: Use 'lsof -i :7170' or 'ss -tlnp | grep 7170' on the Fabric host to confirm which process is listening on that port.
This means the Fabric-side exposure is correct. The problem is in the collection layer, not in Fabric:
Note: A Fabric-side verification failure and a collection-layer failure look different. If curl returns valid metrics, Fabric is doing its job correctly. Investigate the collection layer separately.
Both deployment models:
Kubernetes only:
VM / Bare-Metal only:
Kubernetes and VM / Bare-Metal
This topic explains how to confirm that Fabric is successfully exposing Prometheus-format metrics through the bundled JMX Exporter. The goal is to validate the Fabric-side metrics surface before moving on to collection layer configuration, dashboards, or alerting.
Verification is the same whether you are on Kubernetes or a VM — the curl command and the expected output are identical. What differs is where you run the command from.
This how-to focuses on verification only, not initial setup. It assumes the JMX Exporter has already been enabled for Fabric. If it has not, see How to Enable the JMX Exporter for Fabric first.
This how-to covers:
[ K8s + VM ] Applies to both Kubernetes and VM / bare-metal deployments.
You are verifying four things:
There are two endpoints to verify — one for Fabric itself and one for the iid_finder process, which runs as a separate JVM:
http://localhost:7170/metrics # Fabric JVM and application metrics
http://localhost:7270/metrics # iid_finder metrics
At minimum, verify port 7170. Port 7270 is relevant if iid_finder is running in your deployment.
Confirm the following before running verification:
The javaagent line in jvm.options should look like:
-javaagent:$K2_HOME/monitor/jmx_exporter/jmx_prometheus_javaagent-1.5.0.jar=7170:$K2_HOME/monitor/jmx_exporter/fabric_config.yaml
The curl command is the same in both environments, but where you run it differs.
[ K8s ] Run the verification from inside the Fabric pod.
The JMX Exporter binds to localhost inside the container. It is not accessible from outside the pod without port-forwarding. Run the verification from inside the pod:
kubectl exec -it <fabric-pod-name> -n <namespace> -- curl http://localhost:7170/metrics
Or open an interactive shell inside the pod first:
kubectl exec -it <fabric-pod-name> -n <namespace> -- /bin/bash
curl http://localhost:7170/metrics
To verify the iid_finder endpoint:
kubectl exec -it <fabric-pod-name> -n <namespace> -- curl http://localhost:7270/metrics
Note: Replace
[ VM / Bare-Metal ] Run the verification directly on the Fabric host.
On a VM or bare-metal host, the exporter binds to localhost on the Fabric machine. Run the curl command directly on that host:
curl http://localhost:7170/metrics
To verify the iid_finder endpoint:
curl http://localhost:7270/metrics
If you need to test reachability from a remote machine (such as the Prometheus monitoring machine), use the Fabric host IP:
curl http://
:7170/metrics Note: The JMX Exporter binds to 127.0.0.1 by default in some configurations. If remote access returns a connection refused error, confirm the bind address in the javaagent line and check firewall rules between the monitoring machine and the Fabric host.
[ K8s + VM ] Applies to both deployment models.
A successful response returns Prometheus-format text. It is a plain text format with one metric per line, using the pattern:
# HELP <metric_name> <description>
# TYPE <metric_name> <type>
<metric_name>{<labels>} <value>
The response from a working Fabric exporter includes:
You do not need to validate every metric at this stage. The key checks are:
To quickly check for Fabric-specific metrics:
curl -s http://localhost:7170/metrics | grep '^fabric_'
To check for JVM metrics:
curl -s http://localhost:7170/metrics | grep '^jvm_'
[ K8s + VM ] Applies to both deployment models.
Verification is successful when all of the following are true:
At this point the Fabric-side metrics surface is working. The next step is to confirm that the collection layer (Grafana Agent on Kubernetes, or Prometheus on VMs) is successfully scraping the endpoint.
The most common causes:
Kubernetes specific: Confirm you are running the curl from inside the pod, not from outside. The exporter is not exposed externally by default.
VM specific: Confirm the exporter is not bound to 127.0.0.1 if you are testing from a remote machine. Check the bind address in the javaagent line.
VM specific: Use 'lsof -i :7170' or 'ss -tlnp | grep 7170' on the Fabric host to confirm which process is listening on that port.
This means the Fabric-side exposure is correct. The problem is in the collection layer, not in Fabric:
Note: A Fabric-side verification failure and a collection-layer failure look different. If curl returns valid metrics, Fabric is doing its job correctly. Investigate the collection layer separately.
Both deployment models:
Kubernetes only:
VM / Bare-Metal only: