Metrics from Local Apps
As described in the Monitoring Overview, you can obtain metrics from an application run outside the cluster, but on the same machine. The main steps to see metrics from a local app include:
Run app to verify
Make sure that your project is set up to provide metrics as described in
Setting Up Monitoring. Run the application to verify that the application process is up and is producing metrics.
For example, let’s assume you’ve started an application with sbt run
that is exporting Lightbend Telemetry via the cinnamon-metrics
port at http://localhost:9001/metrics
. Pointing a browser at that url might yield something like the following:
# HELP self_node_node_unable_to_join_event Node unable to join event
# TYPE self_node_node_unable_to_join_event gauge
self_node_node_unable_to_join_event{self_node="ShoppingCartApp@localhost:2551",application="com.lightbend.esdemos.shoppingcartapp.ShoppingCartApp",host="MacBook-Pro.local",} 0.0
# HELP jvm_pools_Code_Cache_used pools.Code-Cache.used
# TYPE jvm_pools_Code_Cache_used gauge
jvm_pools_Code_Cache_used{application="com.lightbend.esdemos.shoppingcartapp.ShoppingCartApp",host="MacBook-Pro.local",} 5619456.0
# HELP jvm_pools_PS_Eden_Space_usage pools.PS-Eden-Space.usage
# TYPE jvm_pools_PS_Eden_Space_usage gauge
jvm_pools_PS_Eden_Space_usage{application="com.lightbend.esdemos.shoppingcartapp.ShoppingCartApp",host="MacBook-Pro.local",} 0.031576853648024865
...
Find VirtualBox bridge IP
After you are sure that the application is exporting metrics, find the local IP address for VirtualBox. This IP serves as the bridge between the processes running within Minikube and the localhost. On Mac and Linux machines, run ifconfig
, which yields something like the following and identifies the VirtualBox IP address:
...
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
inet6 fe80::8154:3d9e:faf0:57cc%utun1 prefixlen 64 scopeid 0x13
nd6 options=201<PERFORMNUD,DAD>
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
Create Kubernetes Service object
Continuing with the example in the previous section, the VirtualBox IP is 192.168.99.1
. Create a Kubernetes Service descriptor file with the following contents, substituting your own application name and port numbers where necessary.
For example, create a myapp-local.yaml
file:
apiVersion: v1
kind: Service
metadata:
name: myapp-local
annotations:
"prometheus.io/scrape": "true"
"prometheus.io/scheme": http
"prometheus.io/path": "/metrics"
"prometheus.io/port": "9001"
spec:
ports:
- name: metrics
protocol: TCP
port: 9001
targetPort: 9001
---
apiVersion: v1
kind: Endpoints
metadata:
name: myapp-local
subsets:
- addresses:
- ip: 192.168.99.1
ports:
- name: metrics
protocol: TCP
port: 9001
Then create these resources in Minikube by applying the file:
kubtctl apply -f myapp-local.yaml
View metrics
From the Console main page, click the ‘Grafana’ icon in the upper left corner.
Then you should be able to go to the appropriate dashboard to view your application metrics, or create a new custom dashboard for that purpose.