{"componentChunkName":"component---src-templates-docs-tsx","path":"/tutorials/integrations/export-plugin/","result":{"data":{"site":{"siteMetadata":{"title":"Pixie Docs","docsLocation":"https://github.com/pixie-io/pixie-docs"}},"mdx":{"fields":{"id":"eb57fb2e-c348-542c-98f1-655c88d3348b","title":"Exporting PxL Scripts to a Plugin","slug":"/tutorials/integrations/export-plugin"},"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\": \"Exporting PxL Scripts to a Plugin\",\n  \"metaTitle\": \"Tutorials | Integrations and Alerts | Exporting a PxL Script\",\n  \"metaDescription\": \"Export PxL Scripts to a Plugin\",\n  \"order\": 4,\n  \"redirect_from\": [\"/tutorials/export-live-view/\"]\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 CodeTabs = makeShortcode(\"CodeTabs\");\nvar CodeRenderer = makeShortcode(\"CodeRenderer\");\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, \"This tutorial shows you how to automatically convert a PxL Script into an OpenTelemetry export script that can be used with a Pixie plugin.\\nPlugin scripts make it easy to extend Pixie's capabilities: you can enable a wide-range of use-cases\\nincluding long-term storage and \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://blog.px.dev/autoscaling-custom-k8s-metric/\"\n  }), \"control signals for autoscalers\"), \".\"), mdx(\"p\", null, \"We released the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/tutorials/integrations/otel\"\n  }), \"OpenTelemetry Exporter\"), \" and \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://blog.px.dev/plugin-system/\"\n  }), \"Plugin System\"), \" a few months before,\\nbut we got a lot of feedback that writing export scripts was long and repetitive.\"), mdx(\"p\", null, \"We built this new flow to automate out the tedious parts of writing export scripts.\"), 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. If you don\\u2019t already have one, you can create a minikube cluster following the directions \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/installing-pixie/setting-up-k8s/minikube-setup/\"\n  }), \"here\"), \".\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You will need to install Pixie on your cluster 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 setup a \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/reference/plugins/plugin-system/\"\n  }), \"Pixie plugin\"), \". You can \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/pixie-io/pixie-demos/tree/main/otel-collector\"\n  }), \"setup a simple demo collector\"), \" to try the feature out.\"))), mdx(\"h2\", null, \"Writing the PxL script in the Live UI\"), mdx(\"p\", null, \"PxL scripts are used to query telemetry data collected by the Pixie Platform. Here we will write a script that calculates the throughput of requests through each endpoint of each pod in your cluster. In the following section, we'll convert the script into an OpenTelemetry export script.\"), mdx(\"p\", null, \"We'll use the Live UI's \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Scratch Pad\"), \" to develop our PxL script.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Open Pixie's \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/using-pixie/using-live-ui/\"\n  }), \"Live UI\"), \".\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Select the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Scratch Pad\"), \" script from the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"script\"), \" drop-down menu in the top left.\"), mdx(\"svg\", {\n    src: \"plugin/scratch_pad_selection.png\"\n  })), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Open the script editor using the keyboard shortcut: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ctrl+e\"), \" (Windows, Linux) or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cmd+e\"), \" (Mac).\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Replace the contents of the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"PxL Script\"), \" tab with the following.\"))), mdx(\"div\", {\n    \"className\": \"code-tabs-wrapper\"\n  }, mdx(CodeTabs, {\n    mdxType: \"CodeTabs\"\n  }, mdx(CodeRenderer, {\n    language: \"python:numbers\",\n    title: \"\",\n    mdxType: \"CodeRenderer\"\n  }, mdx(\"pre\", {\n    parentName: \"div\"\n  }, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-python:numbers\"\n  }), \"import px\\n# Read in the http_events table\\ndf = px.DataFrame(table='http_events', start_time='-10s', end_time=px.now())\\n\\n# Attach the pod and service metadata\\ndf.pod = df.ctx['pod']\\ndf.service = df.ctx['service']\\n# Count the number of requests per pod and service\\ndf = df.groupby(['pod', 'service', 'req_path']).agg(\\n  throughput=('latency', px.count),\\n  time_=('time_', px.max),\\n)\\n\\npx.display(df, 'http')\\n\"))))), mdx(\"ol\", {\n    \"start\": 5\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Run the script using the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"RUN\"), \" button in the top right or by using the keyboard shortcut: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ctrl+enter\"), \" (Windows, Linux) or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cmd+enter\"), \" (Mac).\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Hide the script editor using \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ctrl+e\"), \" (Windows, Linux) or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cmd+e\"), \" (Mac).\"))), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Your Live UI should output something similar to the following:\")), mdx(\"svg\", {\n    src: \"plugin/generate_otel_results.png\"\n  }), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"This PxL script calculates the throughput of HTTP requests made to each pod in your cluster.\")), mdx(\"h2\", null, \"Exporting the PxL Script\"), mdx(\"p\", null, \"Now that we have our PxL script, let's export it.\"), mdx(\"ol\", {\n    \"start\": 7\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Open the script editor again (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ctrl+e\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cmd+e\"), \")\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"On the top right corner, click \\\"Export to Plugin\\\". Pixie will process the script and attempt to generate an OpenTelemetry export configuration for it.\"), mdx(\"svg\", {\n    src: \"plugin/export_button.png\"\n  })), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If the export fails, you'll see an error message.\"), mdx(\"svg\", {\n    src: \"plugin/time_column_missing.png\"\n  })), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If the export is successful, you'll be directed to the \\\"Create Export Script\\\" page with the generated OpenTelemetry Export Script already filled in!  \"), mdx(\"svg\", {\n    src: \"plugin/create_export_script.png\"\n  })), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Read over the generated script and make any changes such as adding resource columns or removing undesired metrics. See \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"#how-it-works\"\n  }), \"How it Works\"), \" for more on how the script is generated.\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Set the name of the script to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"my-export-script\"), \" and set the Plugin provider to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OpenTelemetry\"), \".\"), mdx(\"svg\", {\n    src: \"plugin/named_create_export_script.png\"\n  })), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Click \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Create\"), \" and you should see \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"my-export-script\"), \" in the \\\"Custom Scripts\\\" section. Your data should now be sent to whatever Plugin you configured.\"), mdx(\"svg\", {\n    src: \"plugin/export_status.png\"\n  }))), mdx(\"h2\", null, \"How it Works\"), mdx(\"p\", null, \"When you export a PxL script, we extract the schema generated by the script and auto-generate the OpenTelemetry Export PxL for each table.\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"INT64\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FLOAT64\"), \" columns become \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/reference/pxl/otel-export/px.otel.metric.gauge\"\n  }), mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"Gauges\")), \" while other column types become the\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/reference/pxl/otel-export/px.otel.data\"\n  }), mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"resource attributes\")), \" of the exported Data.\"), mdx(\"p\", null, \"Any calls to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px.DataFrame\"), \" are rewritten to replace the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"start_time\"), \" argument with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px.plugin.start_time\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"end_time\"), \" argument with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"px.plugin.end_time\"), \".\\nThese arguments are filled in by the Plugin script-runner with the start and end times of the current summary window. The summary window size can be configured\\non the \\\"Create Export Script\\\" page.\"), mdx(\"h2\", null, \"Next Steps\"), mdx(\"p\", null, \"You've now converted your first PxL script into an OpenTelemetry export script. You can\\ndive deeper into PxL scripts by checking out our \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/tutorials/pxl-scripts/write-pxl-scripts/\"\n  }), \"\\\"How to Write a PxL Script\\\"\"), \" series or by reading through the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/reference/pxl/\"\n  }), \"PxL documentation\"), \".\"), mdx(\"p\", null, \"You can also learn more about Pixie's OpenTelemetry integration \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/tutorials/integrations/otel/\"\n  }), \"in this tutorial\"), \" and through the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/reference/pxl/otel-export/\"\n  }), \"OpenTelemetry Export documentation\"), \".\"), mdx(\"h2\", null, \"Troubleshooting\"), mdx(\"p\", null, \"Having problems? Check out the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/about-pixie/troubleshooting/#troubleshooting-a-pixie-plugin\"\n  }), \"Pixie Plugin Troubleshooting\"), \" guide.\"));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"File","relativePath":"en/04-tutorials/03-integrations/04-export-plugin.md"},"frontmatter":{"metaTitle":"Tutorials | Integrations and Alerts | Exporting a PxL Script","metaDescription":"Export PxL Scripts to a Plugin"},"headings":[{"value":"Prerequisites","depth":2},{"value":"Writing the PxL script in the Live UI","depth":2},{"value":"Exporting the PxL Script","depth":2},{"value":"How it Works","depth":2},{"value":"Next Steps","depth":2},{"value":"Troubleshooting","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":"eb57fb2e-c348-542c-98f1-655c88d3348b","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/integrations/export-plugin","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"}]}}}