{"componentChunkName":"component---src-templates-docs-js","path":"/guides/external-reports/opentelemetry-integration","result":{"data":{"site":{"siteMetadata":{"title":"Documentation | LoadFocus","docsLocation":""}},"mdx":{"fields":{"id":"bf50fa00-2299-5d1f-8e5d-2e6e6ab6ec15","title":"OpenTelemetry (OTLP) Integration","slug":"/guides/external-reports/opentelemetry-integration","locale":"en-GB"},"body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"OpenTelemetry (OTLP) Integration\",\n  \"metaTitle\": \"OpenTelemetry OTLP Integration | LoadFocus\",\n  \"metaDescription\": \"Stream live load test metrics over OTLP to any OpenTelemetry backend such as Honeycomb, Grafana Cloud, New Relic, Datadog or your own collector.\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"Stream Load Test Metrics over OpenTelemetry\"), mdx(\"p\", null, \"The OpenTelemetry integration exports your live load test metrics over the OpenTelemetry Protocol (OTLP) to any OTLP-compatible backend, so you can watch a test in the same tool you already use for observability. It works with Honeycomb, Grafana Cloud, New Relic, Datadog, Dynatrace, Elastic, and any self-hosted OpenTelemetry Collector.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"800px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/docs/static/f144cfe299f551038e20f5b8699847dd/d50e7/opentelemetry-configuration.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"68.5%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAABb0lEQVQoz42SQXKcMBBFObyXvkc2uUEWuYQrZgwzQjMxBoludQskJM0mJZRMJiRx0vWKeiw+X0BXo0KtcQICZEDOAoSbaI3voDRWWqPlRQhZ103bCiHky8vxcGj7fvA+OLf+Ee9XQMphACOEPJ26pjkdj6JtRV03r69vAGaaEACnCe/EACCzBaBKT2Yc1dPTl6Y5dp3s8pyF6DaXUp6lPBe53V4uX7dnmUppRCREsna2dtmuWZizMM9Fbs48E1lrl9ysNBIxomG2MaaUrn+jzE3yOyuNxvAwKCK75gn/Q1jjz2atJ0RDxO8077g1EwA650OIIaSN+E++NzPbcdQAJoSYjxTiriT+Njn8o9kM46D02PdvUl76fjCGAUz5sUQcQowx3ZNSKmGYbYDJI6zLHMo3c84viys453fJQg4Tw8cP8fHh+vhw/fxpTWkhsrvFXBa/w7kVkapRTd2J6mdzeDaXs0EsK0n3lC36FVYKvgEGthM9sZmHyQAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"OpenTelemetry Configuration modal in LoadFocus showing name, OTLP endpoint, protocol and headers fields\",\n    \"title\": \"OpenTelemetry Configuration modal in LoadFocus showing name, OTLP endpoint, protocol and headers fields\",\n    \"src\": \"/docs/static/f144cfe299f551038e20f5b8699847dd/5a190/opentelemetry-configuration.png\",\n    \"srcSet\": [\"/docs/static/f144cfe299f551038e20f5b8699847dd/772e8/opentelemetry-configuration.png 200w\", \"/docs/static/f144cfe299f551038e20f5b8699847dd/e17e5/opentelemetry-configuration.png 400w\", \"/docs/static/f144cfe299f551038e20f5b8699847dd/5a190/opentelemetry-configuration.png 800w\", \"/docs/static/f144cfe299f551038e20f5b8699847dd/c1b63/opentelemetry-configuration.png 1200w\", \"/docs/static/f144cfe299f551038e20f5b8699847dd/29007/opentelemetry-configuration.png 1600w\", \"/docs/static/f144cfe299f551038e20f5b8699847dd/d50e7/opentelemetry-configuration.png 2280w\"],\n    \"sizes\": \"(max-width: 800px) 100vw, 800px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Create the Integration\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Go to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Account\"), \" > \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Integration Settings\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"New Integration\"), \" and choose \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"OpenTelemetry\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Fill in the fields below and click \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Save integration\"), \".\")), mdx(\"h3\", null, \"Integration Fields\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Name:\"), \" A label for this integration, for example \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Honeycomb HTTP\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"OTLP Endpoint:\"), \" Where metrics are sent.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"For \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"HTTP (protobuf)\"), \", use the base URL including the scheme, for example \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"https://api.honeycomb.io\"), \". LoadFocus appends \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/v1/metrics\"), \" for you.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"For \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"gRPC\"), \", use \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"host:port\"), \", for example \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"api.honeycomb.io:443\"), \". If you omit the scheme, \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"https://\"), \" is assumed.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Protocol:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"HTTP (protobuf)\"), \" (the default, works everywhere) or \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"gRPC\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Headers:\"), \" Comma-separated \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"key=value\"), \" pairs used for authentication, for example \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"api-key=YOUR_KEY,x-tenant=team\"), \". This is the only secret field and is stored encrypted.\")), mdx(\"h2\", null, \"Endpoints and Headers by Backend\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Backend\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Endpoint (HTTP)\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Endpoint (gRPC)\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Headers\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Honeycomb\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://api.honeycomb.io\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"api.honeycomb.io:443\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"x-honeycomb-team=INGEST_KEY,x-honeycomb-dataset=DATASET_NAME\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Grafana Cloud\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"your stack's OTLP gateway URL\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"not offered on the hosted gateway\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"Authorization=Basic BASE64(instanceID:token)\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"New Relic\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://otlp.nr-data.net\"), \" (US) or \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://otlp.eu01.nr-data.net\"), \" (EU)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"otlp.nr-data.net:4317\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"api-key=LICENSE_KEY\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Dynatrace\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://ENV.live.dynatrace.com/api/v2/otlp\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"not offered\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"Authorization=Api-Token TOKEN\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Elastic\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"your APM server OTLP URL\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"your APM server \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"host:8200\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"Authorization=ApiKey API_KEY\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Self-hosted collector\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"http(s)://your-collector:4318\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"your-collector:4317\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"optional\")))), mdx(\"h3\", null, \"Honeycomb notes\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use an \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Ingest Key\"), \", created under \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Environment Settings\"), \" > \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"API Keys\"), \" > \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Ingest\"), \". Copy the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Key Secret\"), \" shown once when you create the key, not the shorter Key ID from the list. Sending the Key ID returns \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"unknown API key\"), \" (HTTP 401).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Metrics require the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"x-honeycomb-dataset\"), \" header to name the dataset they land in.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Give the key the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Can create services/datasets\"), \" permission so the dataset is created on the first metrics that arrive.\")), mdx(\"h2\", null, \"Attach the Integration to a Test\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open a JMeter or k6 test and go to its \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Integrations\"), \" section.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Select your OpenTelemetry integration from the dropdown.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Save the test, then run it.\")), mdx(\"p\", null, \"Every run tagged with an integration streams its metrics to the configured backend.\"), mdx(\"h2\", null, \"What You Will See\"), mdx(\"p\", null, \"Metrics arrive tagged with the resource attributes \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"service.name\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"loadfocus.testrunname\"), \", and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"loadfocus.testrunid\"), \", so you can slice by test run.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"JMeter tests\"), \" send \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"jmeter.samples\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"jmeter.response_time_ms\"), \", and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"jmeter.errors\"), \", tagged with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"sampler\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"response_code\"), \". JMeter batches and flushes at the end of the run, so its metrics appear once the run finishes.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"k6 tests\"), \" send k6's standard metrics such as \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"http_req_duration\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"http_reqs\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"vus\"), \", and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"iterations\"), \", streamed while the test runs.\")), mdx(\"h2\", null, \"Troubleshooting\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"unknown API key\"), \" or HTTP 401:\"), \" the credential is wrong or missing. For Honeycomb, confirm you used the Key Secret, not the Key ID.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"No data in the backend:\"), \" confirm the destination name (Honeycomb dataset, New Relic account, and so on), confirm the auth header, and remember that JMeter metrics only appear once the run has finished.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Endpoint rejected:\"), \" HTTP endpoints must include the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"https://\"), \" scheme; gRPC endpoints use \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"host:port\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"The run itself is unaffected:\"), \" if an integration is misconfigured, the test still runs, it simply exports no metrics.\")), mdx(\"h2\", null, \"Edit or Remove the Integration\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Edit:\"), \" in \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Integration Settings\"), \", click the edit icon on the integration to change the name, endpoint, protocol, or headers. Leave the Headers field blank to keep the existing credential; enter a value only when you want to replace it.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Remove:\"), \" click the delete icon on the integration to remove it from your external reporting services.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#stream-load-test-metrics-over-opentelemetry","title":"Stream Load Test Metrics over OpenTelemetry"},{"url":"#create-the-integration","title":"Create the Integration","items":[{"url":"#integration-fields","title":"Integration Fields"}]},{"url":"#endpoints-and-headers-by-backend","title":"Endpoints and Headers by Backend","items":[{"url":"#honeycomb-notes","title":"Honeycomb notes"}]},{"url":"#attach-the-integration-to-a-test","title":"Attach the Integration to a Test"},{"url":"#what-you-will-see","title":"What You Will See"},{"url":"#troubleshooting","title":"Troubleshooting"},{"url":"#edit-or-remove-the-integration","title":"Edit or Remove the Integration"}]},"parent":{"__typename":"File","relativePath":"en/guides/external-reports/opentelemetry-integration.md"},"frontmatter":{"metaTitle":"OpenTelemetry OTLP Integration | LoadFocus","metaDescription":"Stream live load test metrics over OTLP to any OpenTelemetry backend such as Honeycomb, Grafana Cloud, New Relic, Datadog or your own collector.","order":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/","title":"Welcome to the LoadFocus Documentation"}}},{"node":{"fields":{"slug":"/knowledge-base","title":"Knowledge Base"}}},{"node":{"fields":{"slug":"/guides","title":"How-To Guides"}}},{"node":{"fields":{"slug":"/pricing","title":"Pricing FAQs"}}},{"node":{"fields":{"slug":"/knowledge-base/understanding-declined-card-payments","title":"Why has my card payment been declined?"}}},{"node":{"fields":{"slug":"/knowledge-base/how-to-update-card-details","title":"How to Update Card Details for Failed Payments"}}},{"node":{"fields":{"slug":"/guides/api-monitoring","title":"API Monitoring"}}},{"node":{"fields":{"slug":"/knowledge-base/using-3rd-party-tools-to-load-test-website-locally","title":"How to load testing locally hosted website or API"}}},{"node":{"fields":{"slug":"/guides/external-reports","title":"External Reporting"}}},{"node":{"fields":{"slug":"/knowledge-base/understanding-differences-between-http-and-https","title":"Differences between HTTP and HTTPS"}}},{"node":{"fields":{"slug":"/knowledge-base/using-query-parameters","title":"How to Use URL Query Parameters"}}},{"node":{"fields":{"slug":"/knowledge-base/using-valid-url-endpoints","title":"What is a Valid URL for a Load Test"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing","title":"Load Testing with Apache JMeter"}}},{"node":{"fields":{"slug":"/knowledge-base/what-is-an-http-method","title":"What is an HTTP request method"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing","title":"k6 Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing","title":"Load Testing"}}},{"node":{"fields":{"slug":"/guides/mcp","title":"AI Assistants (MCP)"}}},{"node":{"fields":{"slug":"/knowledge-base/using-google-analytics-and-no-requests-while-load-testing","title":"No traffic in Google Analytics while load testing"}}},{"node":{"fields":{"slug":"/guides/onboarding","title":"LoadFocus Onboarding"}}},{"node":{"fields":{"slug":"/guides/monitoring-as-code","title":"Monitoring as Code"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance","title":"Monitor Website Performance"}}},{"node":{"fields":{"slug":"/guides/openapi-import","title":"Import from OpenAPI / Swagger"}}},{"node":{"fields":{"slug":"/guides/setup-teardown-scripts","title":"Setup and teardown scripts"}}},{"node":{"fields":{"slug":"/guides/reusable-snippets","title":"Reusable snippets"}}},{"node":{"fields":{"slug":"/guides/teams","title":"Teams Management"}}},{"node":{"fields":{"slug":"/guides/external-reports/azure-app-insights-integration","title":"Azure App Insights Integration"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/downloading-jmx-csv-files","title":"Downloading .JMX and .CSV Files in LoadFocus"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/analyzing-k6-test-results","title":"Analyzing k6 Load Test Results"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/alert-configuration","title":"Alert Configuration"}}},{"node":{"fields":{"slug":"/guides/load-testing/adding-notes-to-results","title":"Adding Notes to Test Results"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels","title":"Alert Channels"}}},{"node":{"fields":{"slug":"/guides/external-reports/datadog-integration","title":"Datadog Integration"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/how-to-run-new-apache-jmeter-load-test","title":"How to Run a New Apache JMeter Load Test"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/how-to-run-k6-load-test","title":"How to Run a New k6 Load Test"}}},{"node":{"fields":{"slug":"/guides/load-testing/ai-credits","title":"AI Credits"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/alert-metrics","title":"Alert Metrics"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/import-to-jmeter-from-curl-har-postman-openapi","title":"Import cURL, HAR, Postman or OpenAPI to a JMeter Test"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/import-to-k6-from-curl-har-postman-openapi","title":"Import cURL, HAR, Postman or OpenAPI to a k6 Test"}}},{"node":{"fields":{"slug":"/guides/external-reports/opentelemetry-integration","title":"OpenTelemetry (OTLP) Integration"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/core-web-vitals-competitor-comparison","title":"Core Web Vitals Competitor Comparison"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/api-check-results","title":"Understanding API Check Results"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/uploading-k6-scripts","title":"Uploading k6 Scripts and Data Files"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/core-web-vitals-metrics","title":"What are the Core Web Vitals?"}}},{"node":{"fields":{"slug":"/guides/load-testing/authorization-code-grant-type-oauth-2-0","title":"Authorization Code Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/browser-checks","title":"Browser Checks"}}},{"node":{"fields":{"slug":"/guides/load-testing/analyzing-load-test-results","title":"How to Check Load Test Results"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd","title":"Load Testing API Integration"}}},{"node":{"fields":{"slug":"/guides/load-testing/baseline-comparison-between-load-tests","title":"Baseline Comparison Between Load Tests"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-generators-hardware-infrastructure-jmeter","title":"What are the hardware resources allocated to my account for load generators?"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/getting-started","title":"Getting Started"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/check-groups","title":"Check Groups"}}},{"node":{"fields":{"slug":"/guides/load-testing/client-credentials-grant-type-oauth-2-0","title":"Client Credentials Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-anomalies","title":"Load Testing Anomalies"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/how-to-run-new-website-performance-test","title":"Create New Website Performance Test"}}},{"node":{"fields":{"slug":"/guides/load-testing/common-http-error-codes","title":"Common HTTP Error status codes"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/custom-domain-status-page","title":"How to Add a Custom Domain to Your Status Page"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/how-to-create-new-alert","title":"Create a New Alert"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/check-retries-and-alert-thresholds","title":"Check Retries and Alert Thresholds"}}},{"node":{"fields":{"slug":"/guides/load-testing/crafting-perfect-test-names","title":"Crafting Perfect Test Names"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-engine-health-monitoring","title":"Engine Health Monitoring"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/http-authentication","title":"HTTP Authentication"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/dashboards","title":"Dashboards"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/largest-contentful-paint","title":"Largest Contentful Paint (LCP)"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-error-analysis","title":"Error Analysis"}}},{"node":{"fields":{"slug":"/guides/load-testing/decoding-average-response-times","title":"Decoding Average Response Time"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/dns-monitors","title":"DNS Monitors"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/lighthouse-opportunities","title":"Lighthouse Opportunities"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/heartbeat-monitors","title":"Heartbeat (Cron Job) Monitors"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-insights","title":"Load Testing Insights"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-jtl-file-analysis","title":"Logs & JTL File Analysis"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/pdf-report-branding","title":"Branded PDF Reports"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-jtl-jmeter-log-file-analysis","title":"JMeter Log File Analysis"}}},{"node":{"fields":{"slug":"/guides/load-testing/demo","title":"Demo"}}},{"node":{"fields":{"slug":"/guides/load-testing/deep-dive-samples-in-load-testing","title":"What are Samples in Load Testing?"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/incident-management","title":"Incident Management"}}},{"node":{"fields":{"slug":"/guides/load-testing/end-time-in-load-testing","title":"Understanding the Significance of 'End Time' in Load Testing"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/performance-budgets","title":"Performance Budgets & Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/maintenance-windows","title":"Maintenance Windows"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-timeline-analysis","title":"Timeline View"}}},{"node":{"fields":{"slug":"/guides/load-testing/erros-and-reponse-codes","title":"Errors and Response Codes"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/real-user-field-data","title":"Real-User Field Data (CrUX)"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/uploading-jmeter-files-step-by-step-guide","title":"Uploading JMeter Files to LoadFocus: A Step-by-Step Guide"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/multistep-api-checks","title":"Multistep API Checks"}}},{"node":{"fields":{"slug":"/guides/load-testing/geographical-test-location-in-load-testing","title":"Geographical Test Location in Load Testing"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/sitemap-import","title":"Sitemap Import"}}},{"node":{"fields":{"slug":"/guides/load-testing/getting-started","title":"Getting Started"}}},{"node":{"fields":{"slug":"/guides/load-testing/granularity-in-load-test-results-and-charts","title":"Granularity in Load Test Results and Chart Display"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/using-multiple-csv-files-with-jmeter-engines","title":"Using Multiple CSV Files with JMeter Engines in LoadFocus"}}},{"node":{"fields":{"slug":"/guides/load-testing/headers-and-manage-presets","title":"Headers and Header Presets"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check","title":"How to Create a New API Check"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/sla-slo-reports","title":"SLA & SLO Uptime Reports"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/snippets","title":"Snippets"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/ssl-certificate-monitoring","title":"SSL Certificate Monitoring"}}},{"node":{"fields":{"slug":"/guides/load-testing/how-to-url-query-parameters","title":"Query Parameters"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/status-pages","title":"Create a Public Status Page for Your Monitors"}}},{"node":{"fields":{"slug":"/guides/load-testing/http-methods-overview-load-testing","title":"HTTP Methods: An Overview"}}},{"node":{"fields":{"slug":"/guides/load-testing/how-to-run-new-load-test","title":"How to Run a New Load Test"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/tcp-monitors","title":"TCP Port Monitors"}}},{"node":{"fields":{"slug":"/guides/load-testing/implicit-grant-type-oauth-2-0","title":"Implicit Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/variables","title":"Variables"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-generators-hardware-infrastructure","title":"What are the hardware resources allocated to my account for load generators?"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-test-result-ai-analysis","title":"Load Testing Results AI Analysis"}}},{"node":{"fields":{"slug":"/guides/load-testing/page-speed-under-load-trends","title":"Page Speed Under Load Trends"}}},{"node":{"fields":{"slug":"/guides/load-testing/page-speed-under-load","title":"Page Speed Under Load"}}},{"node":{"fields":{"slug":"/guides/load-testing/password-credentials-grant-type-oauth-2-0","title":"Password Credentials Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/load-testing/performance-trend-load-test-results","title":"Performance Trend"}}},{"node":{"fields":{"slug":"/guides/load-testing/refresh-token-grant-type-oauth-2-0","title":"Refresh Token Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/load-testing/pass-fail-thresholds","title":"Pass/Fail Thresholds"}}},{"node":{"fields":{"slug":"/guides/load-testing/release-tags-and-run-annotations","title":"Release Tags and Run Annotations"}}},{"node":{"fields":{"slug":"/guides/load-testing/scheduled-load-tests","title":"Scheduled Load Tests"}}},{"node":{"fields":{"slug":"/guides/load-testing/share-load-test-reports","title":"Share Load Test Reports"}}},{"node":{"fields":{"slug":"/guides/load-testing/start-time-in-load-testing","title":"Understanding the Significance of Start Time in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/using-cookies","title":"Using Cookies"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-are-iterations-load-testing","title":"Mastering Iterations in Load Testing: A Deep Dive"}}},{"node":{"fields":{"slug":"/guides/load-testing/use-cases","title":"Use Cases"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-are-virtual-users-load-testing","title":"What are Virtual Users in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-delay-when-running-a-load-test","title":"What is Delay when running a Load Test?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-grant-type","title":"What is a Grant Type?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-duration-in-load-testing","title":"What is Duration in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-ramp-up-steps-in-load-testing","title":"What is Ramp Up Steps in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-oauth-2-0-authorization","title":"OAuth 2.0 Authorization"}}},{"node":{"fields":{"slug":"/guides/load-testing/white-label-report-branding","title":"Branded PDF Reports"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-test-run-id","title":"What is a Test Run Id?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-ramp-up-time-in-load-testing","title":"What is Ramp Up Time in Load Testing"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/discord","title":"Discord Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/azure-devops","title":"Azure DevOps"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/activate-deactivate","title":"Activate/Deactivate"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/email","title":"Email Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/circleci","title":"CircleCI"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/alert-channels","title":"Alert Channels"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/microsoft-teams","title":"Microsoft Teams Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/github-actions","title":"GitHub Actions"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/opsgenie","title":"Opsgenie Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/assertions","title":"Assertions"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/frequency","title":"Frequency"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/pagerduty","title":"PagerDuty Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/gitlab-ci-cd","title":"GitLab CI/CD"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/friendly-check-name","title":"Friendly Check Name"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/slack","title":"Slack Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/jenkins","title":"Jenkins"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/locations","title":"Locations"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/overview","title":"Integrating JMeter API Client with CI/CD Pipelines"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/webhook","title":"Webhook Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/mute-unmute","title":"Mute/Unmute"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/request-configuration","title":"Request Configuration"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/request-preview","title":"Request Preview"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/response-time-limits","title":"Response Time Limits"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/save-run","title":"Save and Run"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/retries","title":"Retries Before Alerting"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/webhook-channels","title":"Webhook Channel"}}}]}},"pageContext":{"id":"bf50fa00-2299-5d1f-8e5d-2e6e6ab6ec15","locale":"en-GB"}},"staticQueryHashes":["361965504","361965504","417421954","417421954","445494767","445494767"]}