{"componentChunkName":"component---src-templates-docs-tsx","path":"/tutorials/pixie-101/service-performance/","result":{"data":{"site":{"siteMetadata":{"title":"Pixie Docs","docsLocation":"https://github.com/pixie-io/pixie-docs"}},"mdx":{"fields":{"id":"b9843b3b-9061-5df8-bb5b-20a96ab7516b","title":"Service Performance","slug":"/tutorials/pixie-101/service-performance"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Service Performance\",\n  \"metaTitle\": \"Tutorials | Pixie 101 | Service Performance\",\n  \"metaDescription\": \"Learn how to use Pixie to monitor service performance.\",\n  \"order\": 3,\n  \"redirect_from\": [\"/using-pixie/use-cases/service-health/\"]\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar YouTube = makeShortcode(\"YouTube\");\nvar CloudLink = makeShortcode(\"CloudLink\");\nvar PoiTooltip = makeShortcode(\"PoiTooltip\");\nvar Alert = makeShortcode(\"Alert\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Unreliable or slow services can lead to a poor user experience for your customers. With Pixie, you can get immediate visibility into the health of your services, without the need for manual instrumentation.\"), mdx(\"p\", null, \"Pixie automatically captures all network traffic in your cluster using \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.brendangregg.com/ebpf.html\"\n  }), \"eBPF\"), \", a low-level Linux tracing technology. Messages of a \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/about-pixie/data-sources/#supported-protocols\"\n  }), \"supported protocol\"), \" type, such as HTTP2/gRPC, are parsed and paired with their responses, making latency, error, and throughput information immediately available after installing Pixie.\"), mdx(\"p\", null, \"This tutorial will demonstrate how to use Pixie to see:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The flow of HTTP traffic between the services in your cluster.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Latency per service.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Latency per service endpoint.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A sample of the slowest requests for an individual service.\")), mdx(\"p\", null, \"If you're interested in troubleshooting HTTP errors, check out the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/tutorials/pixie-101/request-tracing\"\n  }), \"Request Tracing\"), \" tutorial.\"), mdx(YouTube, {\n    youTubeId: \"Rex0yz_5vwc\",\n    mdxType: \"YouTube\"\n  }), mdx(\"h2\", null, \"Prerequisites\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You will need a Kubernetes cluster with Pixie installed. If you do not have a cluster, you can create a minikube cluster and install Pixie using one of our \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/installing-pixie/install-guides/\"\n  }), \"install guides\"), \".\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You will need to install the demo microservices application, using Pixie's CLI:\"))), mdx(\"blockquote\", null, mdx(\"ul\", {\n    parentName: \"blockquote\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"/installing-pixie/install-schemes/cli/#1.-install-the-pixie-cli\"\n  }), \"Install the Pixie CLI\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Run \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"px demo deploy px-sock-shop\"), \" to install Weavework's \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://microservices-demo.github.io/\"\n  }), \"Sock Shop\"), \" demo app.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Run \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"kubectl get pods -n px-sock-shop\"), \" to make sure all pods are ready before proceeding. The demo app can take up to 5 minutes to deploy.\"))), mdx(\"h2\", null, \"Service Graph\"), mdx(\"p\", null, \"When debugging issues with microservices, it helps to start at a high-level view, like a service map, and then drill down into the problem service(s).\"), mdx(\"p\", null, \"For a global view of the services in your cluster, we'll use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px/cluster\"), \" script:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open the \", mdx(CloudLink, {\n    url: \"/\",\n    mdxType: \"CloudLink\"\n  }, \"Live UI\"), \" and select \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"px/cluster\"), \" from the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"script\"), \" drop-down menu at the top.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This script shows a graph of the HTTP traffic between the services in your cluster, along with latency, error, and throughput rate per service.\")), mdx(\"div\", {\n    \"className\": \"image-xl relative\"\n  }, mdx(PoiTooltip, {\n    top: 9,\n    left: 2,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Click the Kubernetes icon\"), ' ', \"for a shortcut to the `px/cluster` script.\"), mdx(PoiTooltip, {\n    top: 26,\n    left: 60,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Hover over an edge\"), ' ', \"for latency, error and throughput. Thicker lines indicate more traffic.\"), mdx(PoiTooltip, {\n    top: 60,\n    left: 47,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Drag the 3-dot column divider\"), ' ', \"to expand the column.\"), mdx(\"svg\", {\n    title: \"\",\n    src: \"use-case-tutorials/cluster.png\"\n  })), mdx(Alert, {\n    variant: \"outlined\",\n    severity: \"info\",\n    mdxType: \"Alert\"\n  }, \"Hover over the flashing blue circles on the image above to see tips about this graph.\"), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Scroll down to the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Services\"), \" table.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This table contains latency, error and throughput rate for all HTTP traffic. The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"INBOUND_THROUGHPUT\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OUTBOUND_THROUGHPUT\"), \" columns  reflect all traced network traffic (not just HTTP) for the service.\")), mdx(\"p\", null, \"Let's figure out which service is the slowest.\"), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LATENCY\"), \" column title to sort the services by latency.\")), mdx(\"p\", null, \"It\\u2019s good to check multiple percentiles for latency, not just the average, in order to get a better picture of the overall distribution.\"), mdx(\"ol\", {\n    \"start\": 4\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Expand the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LATENCY\"), \" column by dragging the 3-dot column header divider.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This script represents service latency with a \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://datavizcatalogue.com/methods/box_plot.html\"\n  }), \"box & whisker plot\"), \".\")), mdx(\"ol\", {\n    \"start\": 5\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click the vertical quantile lines on the box plot to switch the latency display between the P50, P90 and P99 quantile values.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"LATENCY\"), \" column will resort itself and the column title will update to reflect the selected quantile.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"A high P50 latency value for the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"front-end\"), \" service indicates that this is general performance degradation, rather than an issue with a specific request.\")), mdx(\"h2\", null, \"Service Performance\"), mdx(\"p\", null, \"Once we have identified a service we are interested in investigating further, we will want to drill down into its detailed latency information.\"), mdx(\"p\", null, \"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.\"), mdx(\"ol\", {\n    \"start\": 6\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"From the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"SERVICE\"), \" column in the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Services\"), \" table, click on the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"px-sock-shop/front-end\"), \" service.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This will open the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px/service\"), \" script with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"service\"), \" argument pre-filled with the name of the service you selected.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px/service\"), \" script shows the latency, error, and throughput over time for all HTTP requests for the service.\")), mdx(\"div\", {\n    \"className\": \"image-xl relative\"\n  }, mdx(PoiTooltip, {\n    top: 35,\n    left: 68,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Click a legend item\"), ' ', \"to highlight those specific results. Click the item a second time to show all results.\"), mdx(PoiTooltip, {\n    top: 27,\n    left: 58,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Drag your mouse across the graph\"), ' ', \"to see the values at particular timestamps.\"), mdx(PoiTooltip, {\n    top: 10,\n    left: 82,\n    mdxType: \"PoiTooltip\"\n  }, mdx(\"strong\", null, \"Modify the start_time\"), ' ', \"to change the time window for the results (e.g -30m, -1h).\"), mdx(\"svg\", {\n    title: \"\",\n    src: \"use-case-tutorials/service.png\"\n  })), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This view shows us that the service's latency values have been consistent over the selected time window.\")), mdx(\"ol\", {\n    \"start\": 7\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Scroll down to the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Sample of Slow Requests\"), \" table and expand the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"REQ_PATH\"), \" column.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"If this service handles multiple kinds of requests, this table can help identify if there is a particular request type that is much slower.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This table shows individual requests, so we will see the full path with URL parameters filled in (for example, \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/restaurants/123\"), \").  However, Pixie makes it possible to drill down into individual logical endpoints (for example, \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/restaurants/*\"), \").\")), mdx(\"h2\", null, \"Endpoint Performance\"), mdx(\"p\", null, \"Request latency can vary greatly by endpoint, especially if one of the requests is more database intensive. However, when there are wildcards (URL parameters) in your request paths, it can be difficult to drill down into a particular endpoint.\"), mdx(\"p\", null, \"Pixie can cluster HTTP requests by logical endpoint, substituting a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"*\"), \" for the parameters in your requests. For example, the following two requests:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/restaurants/0123550/reviews/239487345/author\"), \"\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/restaurants/3485799/reviews/394853457/author\"))), mdx(\"p\", null, \"would be clustered together into the logical endpoint:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/restaurants/*/reviews/*/author\"))), mdx(\"p\", null, \"Let's look at latency by logical service endpoint:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Select \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pxbeta/service_endpoints\"), \" from the script drop-down menu (note: this is a Beta script).\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Select the drop-down arrow next to the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"service\"), \" argument, type \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px-sock-shop/catalogue\"), \", and press Enter to re-run the script.\"))), mdx(Alert, {\n    variant: \"outlined\",\n    severity: \"info\",\n    mdxType: \"Alert\"\n  }, \"Pixie displays service names in the UI in the <namespace>/<service> format.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This script shows latency, error and throughput per logical endpoint for the given service.\")), mdx(\"div\", {\n    \"className\": \"image-xl\"\n  }, mdx(\"svg\", {\n    title: \"\",\n    src: \"use-case-tutorials/service_endpoints.png\"\n  })), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click on \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"catalog/*\"), \" in the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Endpoints\"), \" table to see an overview of that individual endpoint with a sample of slow requests.\")), mdx(\"div\", {\n    \"className\": \"image-xl\"\n  }, mdx(\"svg\", {\n    title: \"\",\n    src: \"use-case-tutorials/service_endpoint.png\"\n  })), mdx(\"h2\", null, \"Related Scripts\"), mdx(\"p\", null, \"This tutorial demonstrated a few of Pixie's \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/pixie-io/pixie/tree/main/src/pxl_scripts\"\n  }), \"community scripts\"), \". For more insight into the health of your services, check out the following scripts:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(CloudLink, {\n    url: \"/script/pod\",\n    mdxType: \"CloudLink\"\n  }, \"px/pod\"), \" shows a CPU flamegraph for the pod to see how your Go/C++/Rust applications are spending their time. To learn more about how use Pixie for application profiling, check out the [Profiling with Flamegraphs](/tutorials/pixie-101/profiler) tutorial.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(CloudLink, {\n    url: \"/script/services\",\n    mdxType: \"CloudLink\"\n  }, \"px/services\"), \" shows LET over time for all services in the given namespace, along with a  service graph.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(CloudLink, {\n    url: \"/script/service_stats\",\n    mdxType: \"CloudLink\"\n  }, \"px/service_stats\"), \" shows LET over time for the given service, along with a service graph and summary of incoming and outgoing traffic.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(CloudLink, {\n    url: \"/script/service_edge_stats\",\n    mdxType: \"CloudLink\"\n  }, \"px/service_edge_stats\"), \" shows statistics about the traffic between two services.\")));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"File","relativePath":"en/04-tutorials/01-pixie-101/03-service-performance.md"},"frontmatter":{"metaTitle":"Tutorials | Pixie 101 | Service Performance","metaDescription":"Learn how to use Pixie to monitor service performance."},"headings":[{"value":"Prerequisites","depth":2},{"value":"Service Graph","depth":2},{"value":"Service Performance","depth":2},{"value":"Endpoint Performance","depth":2},{"value":"Related Scripts","depth":2}]},"allMdx":{"edges":[{"node":{"fields":{"slug":"/about-pixie","title":"About Pixie","level":1,"id":"250033c7-6bfc-5ed2-8855-bfae9d3d41b8","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/what-is-pixie","title":"Pixie Overview","level":2,"id":"3d7111da-bb7e-58a6-acdb-af0bee4488fb","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/data-sources","title":"Data Sources","level":2,"id":"ceef1554-49d1-5b10-a3fa-6dc84d90bf20","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/pixie-ebpf","title":"How Pixie uses eBPF","level":2,"id":"5e9e1b8e-3181-52e0-a3d5-335a3367cb14","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/roadmap","title":"Roadmap","level":2,"id":"15dcc722-a1a6-58e9-9c20-8d6f8d3762df","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/faq","title":"FAQ","level":2,"id":"af60166c-104d-576d-8018-94d9907813f9","lang":"en"}}},{"node":{"fields":{"slug":"/about-pixie/troubleshooting","title":"Troubleshooting","level":2,"id":"739e15de-0d00-526a-80ed-51a13c2b6f5d","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie","title":"Installing Pixie","level":1,"id":"77fd1ffe-859b-5b56-9745-5c371bd47e6d","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/requirements","title":"Requirements","level":2,"id":"d3d8a31a-c579-5792-8e40-3076ae89d15e","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s","title":"Setting up Kubernetes (optional)","level":2,"id":"1b2c0456-0c8e-59f3-9859-73e664d277bc","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/minikube-setup","title":"Minikube","level":3,"id":"8e37881c-b785-585f-9bf4-271d71297044","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/eks-setup","title":"EKS","level":3,"id":"f9e46ba9-b438-5226-94c2-8c580311efb9","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/gke-setup","title":"GKE","level":3,"id":"89fcc4ea-771a-5bdc-ae96-75fa080b2402","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/aks-setup","title":"AKS","level":3,"id":"61a9efea-c52d-5b4a-ad01-7758292a1e6b","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/k0s-setup","title":"k0s","level":3,"id":"db610fd7-59f7-50ee-b962-2395ded4213d","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/setting-up-k8s/other-environments","title":"Additional environments","level":3,"id":"456ab527-bcef-5f0b-9099-92524b0e1a60","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides","title":"Install Guides","level":2,"id":"f94cfa88-6add-5e46-86f8-7c89ad77886a","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/hosted-pixie","title":"Hosted Pixie","level":3,"id":"e12f9502-f00b-5290-aabe-6952f1017919","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/hosted-pixie/cosmic-cloud","title":"Cosmic Cloud","level":4,"id":"24145104-fa42-53e2-9cd4-207bc191da39","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/hosted-pixie/new-relic-cloud","title":"New Relic Cloud","level":4,"id":"604f4893-db3e-5b9a-86a0-d487039b117b","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/self-hosted-pixie","title":"Self-Hosted Pixie","level":3,"id":"60ea09cc-b8c7-52d5-b3f6-da39d78b8014","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/self-hosted-pixie/airgap-pixie","title":"Air Gapped Pixie","level":4,"id":"2e215d50-3936-58fa-bc7e-7b9d56205705","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-guides/self-hosted-pixie/production-readiness","title":"Production Readiness","level":4,"id":"4bba186e-a4e9-52f9-a556-3367c6beb3cf","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-schemes","title":"Install Schemes (optional)","level":2,"id":"89aa8fa5-88de-57fa-ac9b-9d9cb4680190","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-schemes/cli","title":"CLI (Recommended)","level":3,"id":"c180d499-3bbe-5b18-aca2-fad92744f82b","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-schemes/yaml","title":"YAML","level":3,"id":"a07677ae-cdce-581a-a639-b2c6eb63ca2a","lang":"en"}}},{"node":{"fields":{"slug":"/installing-pixie/install-schemes/helm","title":"Helm","level":3,"id":"198fca51-0df6-5a68-82bc-c33777f6c452","lang":"en"}}},{"node":{"fields":{"slug":"/using-pixie","title":"Using Pixie","level":1,"id":"ee5c081e-d25d-50ac-b534-b26089cb7fa9","lang":"en"}}},{"node":{"fields":{"slug":"/using-pixie/using-live-ui","title":"Using the Live UI","level":2,"id":"f6358be5-5e72-5d5a-b802-37b7a1832a6e","lang":"en"}}},{"node":{"fields":{"slug":"/using-pixie/using-cli","title":"Using the CLI","level":2,"id":"68df7159-bf22-5cfe-8a81-1376fc49fe9e","lang":"en"}}},{"node":{"fields":{"slug":"/using-pixie/api-quick-start","title":"Using the API","level":2,"id":"1dc6c347-8d39-5536-8bdb-6c8b9a3c9cab","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials","title":"Tutorials","level":1,"id":"cca4356e-0565-5dcf-b2e0-80aa8b361993","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101","title":"Pixie 101","level":2,"id":"33c94a0b-7e15-50de-9749-c25f7cef4839","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/network-monitoring","title":"Network Monitoring","level":3,"id":"07ab17ed-445b-56bb-a95a-03c2c4643606","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/infra-health","title":"Infra Health","level":3,"id":"7d14f277-00f4-53bf-b4a0-8deb32615831","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/service-performance","title":"Service Performance","level":3,"id":"b9843b3b-9061-5df8-bb5b-20a96ab7516b","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/database-query-profiling","title":"Database Query Profiling","level":3,"id":"15b9c87a-215a-554b-9a09-3c4013e68e01","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/request-tracing","title":"Request Tracing","level":3,"id":"e940076b-02be-5f2d-b951-6fa2fc5e430d","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/profiler","title":"Continuous Application Profiling","level":3,"id":"9511d5a0-5e74-5165-9383-0fd475c23475","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pixie-101/kafka-monitoring","title":"Kafka Monitoring","level":3,"id":"2c806ace-110b-5395-a5b4-51d19005e151","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts","title":"PxL Scripts","level":2,"id":"78bb61b8-0d24-5d1a-9c05-acc2e750e2a7","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts","title":"How to Write a PxL Script","level":3,"id":"8676a620-9a59-5bd0-9b53-55e63802b395","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-1","title":"Tutorial #1: Write your first PxL script","level":4,"id":"5caa0251-970d-57e2-9c04-ff6c61fbdca5","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-2","title":"Tutorial #2: Finish your first PxL Script","level":4,"id":"303904f6-8f98-5e43-8679-9d19bf0a0945","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-3","title":"Tutorial #3: Write your first Vis Spec","level":4,"id":"895dc65f-6f9e-5a8c-8d4e-368116926e91","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-4","title":"Tutorial #4: Add a Timeseries chart to your Vis Spec","level":4,"id":"2b04efb0-129d-5df3-9a4c-e61d87190077","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-5","title":"Tutorial #5: Add a Graph to your Vis Spec","level":4,"id":"9d89ab55-95d1-5a65-b88b-ed7e69f76eec","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/script-dev-environment","title":"Running the Script Dev Environment","level":3,"id":"a6251ead-6888-55c8-8ff2-b71355e973ea","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/script-of-the-week","title":"Script of the Week","level":3,"id":"6200e2ac-1b2d-5f58-8b02-d525503ca923","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/script-of-the-week/script-of-the-week-1","title":"SOTW #1: Network Flow Graph","level":4,"id":"eb9f1a63-f0bd-52ef-a481-4d239616af30","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/pxl-scripts/script-of-the-week/script-of-the-week-2","title":"SOTW #2: Detect redundant DNS requests caused by dnsConfig ndots setting","level":4,"id":"22e7fd79-7750-5f13-a21d-3d540a2c5c36","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/integrations","title":"Integrations and Alerts","level":2,"id":"fe423431-b224-5d0c-a88c-1f098066ccdf","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/integrations/slackbot-alert","title":"Slack Alerts using the Pixie API","level":3,"id":"1dc3e45e-b259-5d77-9bf3-3d4314cdb2eb","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/integrations/grafana","title":"Grafana Pixie Plugin","level":3,"id":"85eccf7d-3ec9-5511-ab5b-fa3e71725aa8","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/integrations/otel","title":"Export OpenTelemetry Data","level":3,"id":"4bab7cd9-681d-56d1-af53-de68b5b60dad","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/integrations/export-plugin","title":"Exporting PxL Scripts to a Plugin","level":3,"id":"eb57fb2e-c348-542c-98f1-655c88d3348b","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/custom-data","title":"Collecting Custom Data","level":2,"id":"ca5b9e99-5f1c-5ed4-93be-ebcf31699399","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/custom-data/distributed-bpftrace-deployment","title":"Distributed bpftrace Deployment","level":3,"id":"f1e1cc7a-5581-5676-8d9a-85bb14c52ce3","lang":"en"}}},{"node":{"fields":{"slug":"/tutorials/custom-data/dynamic-go-logging","title":"Dynamic Logging In Go (Alpha)","level":3,"id":"b1fa96bb-c032-5c32-bbd3-9d1dc00cb3e3","lang":"en"}}},{"node":{"fields":{"slug":"/reference","title":"Reference","level":1,"id":"972efda6-5ba8-5c1f-b409-e1961e60a697","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin","title":"Admin","level":2,"id":"e8b2b842-2589-5519-894a-95851f06ed1b","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/authentication","title":"Authentication","level":3,"id":"023db48c-efc1-5556-8428-f1b25a98b853","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/debug-info","title":"Debug Info","level":3,"id":"e334c6f5-0f9b-59b4-bd49-d79574c7a6d0","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/deploy-options","title":"Deploy Options","level":3,"id":"332629cf-447a-523d-97d5-9ecf5635adfb","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/environment-configs","title":"Environment-Specific Configurations","level":3,"id":"646bc1aa-e534-50a0-adf9-df13592f40da","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/cluster-id","title":"Find a Cluster ID","level":3,"id":"a8f5bac8-c7b4-5985-abcd-7ebb6a897673","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/api-keys","title":"Managing API Keys","level":3,"id":"589063fb-21f2-5877-aed8-b3673fcaecc5","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/deploy-keys","title":"Managing Deploy Keys","level":3,"id":"d1ce062f-9be2-5b3e-898a-08590163e618","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/tuning-mem-usage","title":"Tuning Memory Usage","level":3,"id":"5d943cc7-00cd-55fd-b465-e60961155dea","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/uninstall","title":"Uninstalling Pixie","level":3,"id":"95a9ed92-2b71-5f32-9618-398ffbe1aeca","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/updating-pixie","title":"Updating Pixie","level":3,"id":"02982707-1c80-570f-b226-aa46207feace","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/user-mgmt","title":"User Management & Sharing","level":3,"id":"3cc5d4b2-6779-5a7b-a1a1-690511981cf5","lang":"en"}}},{"node":{"fields":{"slug":"/reference/admin/verifying-images","title":"Verifying Images","level":3,"id":"4b741c31-3593-516e-b388-dec7288b2fd7","lang":"en"}}},{"node":{"fields":{"slug":"/reference/architecture","title":"Architecture","level":2,"id":"44dca647-e9a1-578f-b4a4-fdc40eeb46b2","lang":"en"}}},{"node":{"fields":{"slug":"/reference/api","title":"API","level":2,"id":"a144a102-4502-574a-9734-6d5463354591","lang":"en"}}},{"node":{"fields":{"slug":"/reference/api/overview","title":"Overview","level":3,"id":"546c5a9f-b1d7-5286-8f7d-47e2fd3c6535","lang":"en"}}},{"node":{"fields":{"slug":"/reference/api/go","title":"Go","level":3,"id":"7194578f-2940-5669-b681-7a7aa29378ce","lang":"en"}}},{"node":{"fields":{"slug":"/reference/plugins","title":"Plugins","level":2,"id":"be267788-7808-5c2f-a868-289b64556b88","lang":"en"}}},{"node":{"fields":{"slug":"/reference/plugins/plugin-system","title":"Pixie Plugin System","level":3,"id":"b687eff3-307a-53c9-bf8b-a3247293a0f9","lang":"en"}}},{"node":{"fields":{"slug":"/reference/plugins/grafana","title":"Grafana Datasource Plugin","level":3,"id":"ae420e44-f30e-5686-be06-61b609233a11","lang":"en"}}},{"node":{"fields":{"slug":"/reference/pxl","title":"PxL","level":2,"id":"e07ac997-01a5-5a7c-9689-52a6cf481c7a","lang":"en"}}}]}},"pageContext":{"id":"b9843b3b-9061-5df8-bb5b-20a96ab7516b","lang":"en","languages":[{"id":"de","label":"Deutsch"}],"globalUrlTree":[{"lang":"en","slug":"/about-pixie/what-is-pixie"},{"lang":"en","slug":"/about-pixie/pixie-ebpf"},{"lang":"en","slug":"/about-pixie/data-sources"},{"lang":"en","slug":"/about-pixie/faq"},{"lang":"en","slug":"/about-pixie/roadmap"},{"lang":"en","slug":"/about-pixie"},{"lang":"en","slug":"/about-pixie/troubleshooting"},{"lang":"en","slug":"/installing-pixie"},{"lang":"en","slug":"/installing-pixie/requirements"},{"lang":"en","slug":"/using-pixie"},{"lang":"en","slug":"/using-pixie/api-quick-start"},{"lang":"en","slug":"/tutorials"},{"lang":"en","slug":"/reference"},{"lang":"en","slug":"/using-pixie/using-cli"},{"lang":"en","slug":"/using-pixie/using-live-ui"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/minikube-setup"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/eks-setup"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/gke-setup"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/other-environments"},{"lang":"en","slug":"/reference/architecture"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/k0s-setup"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s/aks-setup"},{"lang":"en","slug":"/installing-pixie/setting-up-k8s"},{"lang":"en","slug":"/installing-pixie/install-guides"},{"lang":"en","slug":"/installing-pixie/install-schemes/cli"},{"lang":"en","slug":"/installing-pixie/install-schemes/helm"},{"lang":"en","slug":"/installing-pixie/install-schemes/yaml"},{"lang":"en","slug":"/installing-pixie/install-schemes"},{"lang":"en","slug":"/tutorials/pixie-101/network-monitoring"},{"lang":"en","slug":"/tutorials/pixie-101/infra-health"},{"lang":"en","slug":"/tutorials/pixie-101/service-performance"},{"lang":"en","slug":"/tutorials/pixie-101/request-tracing"},{"lang":"en","slug":"/tutorials/pixie-101/database-query-profiling"},{"lang":"en","slug":"/tutorials/pixie-101/kafka-monitoring"},{"lang":"en","slug":"/tutorials/pixie-101"},{"lang":"en","slug":"/tutorials/pxl-scripts"},{"lang":"en","slug":"/tutorials/pxl-scripts/script-dev-environment"},{"lang":"en","slug":"/tutorials/pixie-101/profiler"},{"lang":"en","slug":"/tutorials/integrations/slackbot-alert"},{"lang":"en","slug":"/tutorials/integrations"},{"lang":"en","slug":"/tutorials/integrations/export-plugin"},{"lang":"en","slug":"/tutorials/custom-data"},{"lang":"en","slug":"/tutorials/custom-data/dynamic-go-logging"},{"lang":"en","slug":"/reference/admin/authentication"},{"lang":"en","slug":"/reference/admin/debug-info"},{"lang":"en","slug":"/reference/admin/cluster-id"},{"lang":"en","slug":"/tutorials/custom-data/distributed-bpftrace-deployment"},{"lang":"en","slug":"/tutorials/integrations/grafana"},{"lang":"en","slug":"/tutorials/integrations/otel"},{"lang":"en","slug":"/reference/admin/environment-configs"},{"lang":"en","slug":"/reference/admin/api-keys"},{"lang":"en","slug":"/reference/admin/deploy-keys"},{"lang":"en","slug":"/reference/admin/deploy-options"},{"lang":"en","slug":"/reference/admin/verifying-images"},{"lang":"en","slug":"/reference/api/overview"},{"lang":"en","slug":"/reference/admin/tuning-mem-usage"},{"lang":"en","slug":"/reference/api/go"},{"lang":"en","slug":"/reference/admin/user-mgmt"},{"lang":"en","slug":"/reference/admin"},{"lang":"en","slug":"/reference/admin/updating-pixie"},{"lang":"en","slug":"/reference/api"},{"lang":"en","slug":"/reference/plugins/grafana"},{"lang":"en","slug":"/reference/plugins/plugin-system"},{"lang":"en","slug":"/reference/admin/uninstall"},{"lang":"en","slug":"/installing-pixie/install-guides/hosted-pixie/cosmic-cloud"},{"lang":"en","slug":"/reference/plugins"},{"lang":"en","slug":"/reference/pxl"},{"lang":"en","slug":"/installing-pixie/install-guides/hosted-pixie/new-relic-cloud"},{"lang":"en","slug":"/installing-pixie/install-guides/hosted-pixie"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-3"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-1"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-4"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-2"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts/custom-pxl-scripts-5"},{"lang":"en","slug":"/installing-pixie/install-guides/self-hosted-pixie/production-readiness"},{"lang":"en","slug":"/installing-pixie/install-guides/self-hosted-pixie/airgap-pixie"},{"lang":"en","slug":"/installing-pixie/install-guides/self-hosted-pixie"},{"lang":"en","slug":"/tutorials/pxl-scripts/write-pxl-scripts"},{"lang":"en","slug":"/tutorials/pxl-scripts/script-of-the-week/script-of-the-week-1"},{"lang":"en","slug":"/tutorials/pxl-scripts/script-of-the-week"},{"lang":"en","slug":"/tutorials/pxl-scripts/script-of-the-week/script-of-the-week-2"}],"availableLanguages":[{"slug":"/tutorials/pixie-101/service-performance","lang":"en"}],"availableClouds":[{"name":"Cosmic Cloud","baseUrl":"https://work.getcosmic.ai","cloudAddr":"getcosmic.ai"},{"name":"New Relic Cloud","baseUrl":"https://work.withpixie.ai","cloudAddr":"withpixie.ai"}]}}}