Resource pressure can impact the health of your services, but it can be hard to correlate with application performance. With Pixie, you can easily monitor your infrastructure alongside your network and application layers.
This tutorial will demonstrate how to use Pixie to:
Let’s use the
px/nodes script to get high-level resource usage information for all of the nodes in our cluster:
scriptdrop-down menu at the top.
This script lists all of the nodes in the cluster along with their CPU usage, memory consumption, and network traffic stats. It also displays a list of pods that were on each node during the time window.
Pixie's UI makes it easy to quickly navigate between Kubernetes resources. Clicking on any pod, node, service, or namespace name in the UI will open a script showing a high-level overview for that entity.
px/nodescript for that node. This script may take a few seconds to execute.
px/nodescript shows a similar set of information - CPU usage, memory usage, and network traffic - but just for the selected node.
Notice that the script's required
nodeargument has been filed out for you. If you had navigated to this script directly, using the
scriptdrop-down menu, you would have needed to provide a node name before seeing results.
groupbyargument at the top and select "pod". The graphs will update to display the information grouped by pod instead of node.
px/nodescript contains a list of the pods on the node in the top left Pods table.
px/podscript. This script may take a few seconds to execute.
px/podshows an overview of the specified pod, including high-level HTTP application metrics, and resource usage. It also lists containers on the pod, all live processes, inbound HTTP traffic, and more.
This flamegraph can be used to identify performance issues in application code written in one of the supported languages (Go, C++, Rust). The wider the bar, the more time spent in the function.
This tutorial demonstrated a few of Pixie's community scripts. For more insight into your infrastructure, check out the following scripts:
px/namespaceslists the namespaces on the cluster with their pod and service counts. It also lists the high-level resource consumption by namespace.
px/namespacelists the pods and services in a given namespace, as well as a service map.
px/podsshows an overview of the pods in the specified namespace along with their high-level application metrics (latency, error, throughput) and resource usage (cpu, writes, reads).
px/pid_memory_usageshows the virtual and average memory useage for all processes in the cluster.
px/service_memory_usageshows the virtual and average memory useage for all services in the cluster.
px/pod_lifetime_resourceshows the total resource usage of a pod over its lifetime.
px/perf_flamegraphshows stack trace samples that indicate where your applications are spending their time. Optional filters refine the results by namespace, node or pod.
px/upidsshows a list of UPIDs running in the specified namespace.
px/jvm_statsshows JVM stats for Java processes running on the cluster.