{
    "componentChunkName": "component---node-modules-shenhh-smooth-doc-src-templates-doc-js",
    "path": "/docs/languages/php/",
    "result": {"data":{"mdx":{"fields":{"pageType":"doc","title":"PHP 语言接入指南","editLink":"https://gitlab.corp.youdao.com/DevOPS/apm/docs/edit/master/pages/docs/languages/php.mdx"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"PHP 语言接入指南\",\n  \"section\": \"语言接入指南\",\n  \"slug\": \"/docs/languages/php/\",\n  \"order\": 6\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\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"php-语言-opentelemetry-接入指南\"\n  }, mdx(\"a\", {\n    parentName: \"h1\",\n    \"href\": \"#php-%E8%AF%AD%E8%A8%80-opentelemetry-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"PHP \\u8BED\\u8A00 OpenTelemetry \\u63A5\\u5165\\u6307\\u5357\"), mdx(\"p\", null, \"\\u672C\\u6587\\u6863\\u63D0\\u4F9B PHP \\u5E94\\u7528\\u63A5\\u5165 OpenTelemetry \\u7684\\u5B8C\\u6574\\u6307\\u5357\\uFF0C\\u5305\\u62EC\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\\u548C SDK \\u624B\\u52A8\\u63A5\\u5165\\u4E24\\u79CD\\u65B9\\u5F0F\\uFF0C\\u652F\\u6301 Laravel\\u3001Symfony \\u7B49\\u4E3B\\u6D41\\u6846\\u67B6\\u3002\"), mdx(\"h2\", {\n    \"id\": \"目录\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E7%9B%AE%E5%BD%95\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u76EE\\u5F55\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E6%A6%82%E8%BF%B0\"\n  }, \"\\u6982\\u8FF0\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E9%9B%B6%E4%BB%A3%E7%A0%81%E6%8E%A5%E5%85%A5%E6%8E%A8%E8%8D%90\"\n  }, \"\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\\uFF08\\u63A8\\u8350\\uFF09\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#sdk-%E6%89%8B%E5%8A%A8%E6%8E%A5%E5%85%A5\"\n  }, \"SDK \\u624B\\u52A8\\u63A5\\u5165\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90%E7%A4%BA%E4%BE%8B\"\n  }, \"\\u6846\\u67B6\\u96C6\\u6210\\u793A\\u4F8B\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E6%88%90\"\n  }, \"\\u6570\\u636E\\u5E93\\u96C6\\u6210\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E9%AB%98%E7%BA%A7%E9%85%8D%E7%BD%AE\"\n  }, \"\\u9AD8\\u7EA7\\u914D\\u7F6E\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5\"\n  }, \"\\u6700\\u4F73\\u5B9E\\u8DF5\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5\"\n  }, \"\\u6545\\u969C\\u6392\\u67E5\"))), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"概述\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E6%A6%82%E8%BF%B0\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6982\\u8FF0\"), mdx(\"h3\", {\n    \"id\": \"php-语言特性\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#php-%E8%AF%AD%E8%A8%80%E7%89%B9%E6%80%A7\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"PHP \\u8BED\\u8A00\\u7279\\u6027\"), mdx(\"p\", null, \"PHP \\u7684 OpenTelemetry \\u652F\\u6301\\u5177\\u6709\\u4EE5\\u4E0B\\u7279\\u70B9\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6210\\u719F\\u7A33\\u5B9A\"), \": API \\u548C SDK \\u5DF2\\u8FBE\\u5230\\u7A33\\u5B9A\\u7248\\u672C\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\"), \": \\u901A\\u8FC7 OpenTelemetry PHP \\u6269\\u5C55\\u5B9E\\u73B0\\u5B8C\\u5168\\u96F6\\u4FB5\\u5165\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u4E30\\u5BCC\\u7684\\u57CB\\u70B9\\u5E93\"), \": \\u652F\\u6301 30+ \\u4E3B\\u6D41 PHP \\u6846\\u67B6\\u548C\\u5E93\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Composer \\u652F\\u6301\"), \": \\u901A\\u8FC7 Composer \\u8F7B\\u677E\\u5B89\\u88C5\\u548C\\u7BA1\\u7406\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PSR \\u6807\\u51C6\"), \": \\u9075\\u5FAA PSR-3\\u3001PSR-7 \\u7B49 PHP \\u6807\\u51C6\")), mdx(\"h3\", {\n    \"id\": \"版本要求\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u7248\\u672C\\u8981\\u6C42\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PHP \\u7248\\u672C\"), \": 8.0+ (\\u63A8\\u8350 8.1+)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"OpenTelemetry PHP\"), \": v1.0.0+\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u81EA\\u52A8\\u57CB\\u70B9\"), \": PHP 8.0+\\uFF08\\u9700\\u8981 OpenTelemetry PHP \\u6269\\u5C55\\uFF09\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u652F\\u6301\\u67B6\\u6784\"), \": x86_64, arm64\")), mdx(\"h3\", {\n    \"id\": \"支持的信号\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E6%94%AF%E6%8C%81%E7%9A%84%E4%BF%A1%E5%8F%B7\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u652F\\u6301\\u7684\\u4FE1\\u53F7\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Traces\"), \": \\u5B8C\\u5168\\u652F\\u6301\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Metrics\"), \": \\u5B8C\\u5168\\u652F\\u6301\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Logs\"), \": \\u5B8C\\u5168\\u652F\\u6301\")), mdx(\"h3\", {\n    \"id\": \"适用场景\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u9002\\u7528\\u573A\\u666F\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Web \\u670D\\u52A1\\uFF08Laravel\\u3001Symfony\\u3001Slim\\uFF09\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5FAE\\u670D\\u52A1\\u67B6\\u6784\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"API \\u670D\\u52A1\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6570\\u636E\\u5E93\\u5E94\\u7528\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6D88\\u606F\\u961F\\u5217\\u5E94\\u7528\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"零代码接入推荐\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E9%9B%B6%E4%BB%A3%E7%A0%81%E6%8E%A5%E5%85%A5%E6%8E%A8%E8%8D%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\\uFF08\\u63A8\\u8350\\uFF09\"), mdx(\"p\", null, \"\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\\u662F PHP OpenTelemetry \\u6700\\u5F3A\\u5927\\u7684\\u7279\\u6027\\uFF0C\\u901A\\u8FC7 OpenTelemetry PHP \\u6269\\u5C55\\u548C\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\u5373\\u53EF\\u5B9E\\u73B0\\u81EA\\u52A8\\u57CB\\u70B9\\uFF0C\\u65E0\\u9700\\u4FEE\\u6539\\u4EFB\\u4F55\\u6E90\\u4EE3\\u7801\\u3002\"), mdx(\"h3\", {\n    \"id\": \"快速开始5-分钟\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B5-%E5%88%86%E9%92%9F\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5FEB\\u901F\\u5F00\\u59CB\\uFF085 \\u5206\\u949F\\uFF09\"), mdx(\"h4\", {\n    \"id\": \"1-安装-opentelemetry-php-扩展\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#1-%E5%AE%89%E8%A3%85-opentelemetry-php-%E6%89%A9%E5%B1%95\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"1. \\u5B89\\u88C5 OpenTelemetry PHP \\u6269\\u5C55\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u65B9\\u6CD5 1: \\u4F7F\\u7528 PECL \\u5B89\\u88C5\\uFF08\\u63A8\\u8350\\uFF09\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u5B89\\u88C5\\u5F00\\u53D1\\u73AF\\u5883\\u4F9D\\u8D56\\uFF08Linux\\uFF09\\nsudo apt-get install gcc make autoconf\\n\\n# \\u6216 macOS\\nbrew install gcc make autoconf\\n\\n# \\u5B89\\u88C5\\u6269\\u5C55\\npecl install opentelemetry\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u65B9\\u6CD5 2: \\u4F7F\\u7528 Linux \\u5305\\u7BA1\\u7406\\u5668\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"CentOS/RHEL (RPM)\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"yum update -y\\nyum install -y epel-release yum-utils\\nyum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm\\nyum-config-manager --enable remi-php81\\nyum install -y php php-pecl-opentelemetry\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Alpine Linux (APK)\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"echo \\\"@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing\\\" >> /etc/apk/repositories\\napk add php php81-pecl-opentelemetry@testing\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u542F\\u7528\\u6269\\u5C55\")), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"php.ini\"), \" \\u4E2D\\u6DFB\\u52A0\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ini\"\n  }, \"[opentelemetry]\\nextension=opentelemetry.so\\n\")), mdx(\"p\", null, \"\\u9A8C\\u8BC1\\u5B89\\u88C5\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"php -m | grep opentelemetry\\nphp --ri opentelemetry\\n\")), mdx(\"h4\", {\n    \"id\": \"2-安装-sdk-和自动埋点库\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#2-%E5%AE%89%E8%A3%85-sdk-%E5%92%8C%E8%87%AA%E5%8A%A8%E5%9F%8B%E7%82%B9%E5%BA%93\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"2. \\u5B89\\u88C5 SDK \\u548C\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\"), mdx(\"p\", null, \"\\u6839\\u636E\\u60A8\\u4F7F\\u7528\\u7684\\u6846\\u67B6\\u548C\\u5E93\\uFF0C\\u5B89\\u88C5\\u76F8\\u5E94\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5305\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u57FA\\u7840 SDK \\u548C OTLP Exporter\\ncomposer require open-telemetry/sdk\\ncomposer require open-telemetry/exporter-otlp\\n\\n# \\u6839\\u636E\\u60A8\\u7684\\u6846\\u67B6\\u9009\\u62E9\\uFF08\\u793A\\u4F8B\\uFF1ASlim Framework \\u548C PSR-18 HTTP \\u5BA2\\u6237\\u7AEF\\uFF09\\ncomposer require open-telemetry/opentelemetry-auto-slim\\ncomposer require open-telemetry/opentelemetry-auto-psr18\\n\\n# \\u5176\\u4ED6\\u5E38\\u7528\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\ncomposer require open-telemetry/opentelemetry-auto-psr15  # PSR-15\\ncomposer require open-telemetry/opentelemetry-auto-pdo    # PDO\\ncomposer require open-telemetry/opentelemetry-auto-redis  # Redis\\ncomposer require open-telemetry/opentelemetry-auto-guzzle # Guzzle\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u67E5\\u770B\\u6240\\u6709\\u53EF\\u7528\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\"), \"\\uFF1A\"), mdx(\"p\", null, \"\\u8BBF\\u95EE \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://packagist.org/packages/open-telemetry/\"\n  }, \"Packagist\"), \" \\u641C\\u7D22 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"opentelemetry-auto-*\"), \" \\u67E5\\u770B\\u5B8C\\u6574\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\u5217\\u8868\\u3002\"), mdx(\"h4\", {\n    \"id\": \"3-配置环境变量\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#3-%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"3. \\u914D\\u7F6E\\u73AF\\u5883\\u53D8\\u91CF\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u5FC5\\u9700\\u7684\\u73AF\\u5883\\u53D8\\u91CF\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u542F\\u7528\\u81EA\\u52A8\\u52A0\\u8F7D\\uFF08\\u5FC5\\u9700\\uFF09\\nexport OTEL_PHP_AUTOLOAD_ENABLED=true\\n\\n# \\u670D\\u52A1\\u4FE1\\u606F\\nexport OTEL_SERVICE_NAME=my-php-service\\nexport OTEL_SERVICE_VERSION=1.0.0\\nexport OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production\\n\\n# OTLP Exporter\\uFF08\\u5185\\u90E8\\u5E73\\u53F0\\uFF09\\nexport OTEL_EXPORTER_OTLP_ENDPOINT=http://uptrace-grpc.yodao.cn:80\\nexport OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf\\nexport OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\n\\n# Traces \\u914D\\u7F6E\\nexport OTEL_TRACES_EXPORTER=otlp\\nexport OTEL_TRACES_SAMPLER=parentbased_traceidratio\\nexport OTEL_TRACES_SAMPLER_ARG=0.1\\n\\n# \\u4F20\\u64AD\\u5668\\u914D\\u7F6E\\nexport OTEL_PROPAGATORS=baggage,tracecontext\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u6216\\u4F7F\\u7528 php.ini \\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"php.ini\"), \" \\u6587\\u4EF6\\u4E2D\\u6DFB\\u52A0\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ini\"\n  }, \"OTEL_PHP_AUTOLOAD_ENABLED=\\\"true\\\"\\nOTEL_SERVICE_NAME=my-php-service\\nOTEL_TRACES_EXPORTER=otlp\\nOTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf\\nOTEL_EXPORTER_OTLP_ENDPOINT=http://uptrace-grpc.yodao.cn:80\\nOTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\nOTEL_PROPAGATORS=baggage,tracecontext\\n\")), mdx(\"h4\", {\n    \"id\": \"4-启动应用\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#4-%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"4. \\u542F\\u52A8\\u5E94\\u7528\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u5C31\\u8FD9\\u4E48\\u7B80\\u5355\\uFF01\\u76F4\\u63A5\\u8FD0\\u884C\\u60A8\\u7684\\u5E94\\u7528\\u5373\\u53EF\\uFF0C\\u65E0\\u9700\\u4EFB\\u4F55\\u4EE3\\u7801\\u4FEE\\u6539\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# CLI \\u811A\\u672C\\nphp myapp.php\\n\\n# Web \\u670D\\u52A1\\u5668\\uFF08PHP-FPM\\u3001Apache\\u3001Nginx\\uFF09\\n# \\u6B63\\u5E38\\u542F\\u52A8\\u5373\\u53EF\\uFF0C\\u6269\\u5C55\\u4F1A\\u81EA\\u52A8\\u5DE5\\u4F5C\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u91CD\\u8981\\u63D0\\u793A\"), \"\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u65E0\\u9700\\u521B\\u5EFA\\u4EFB\\u4F55\\u521D\\u59CB\\u5316\\u6587\\u4EF6\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u65E0\\u9700\\u4FEE\\u6539\\u5E94\\u7528\\u4EE3\\u7801\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u53EA\\u9700\\u5B89\\u88C5\\u6269\\u5C55\\u548C Composer \\u5305\\uFF0C\\u914D\\u7F6E\\u73AF\\u5883\\u53D8\\u91CF\\u5373\\u53EF\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u2705 \\u6269\\u5C55\\u4F1A\\u81EA\\u52A8\\u68C0\\u6D4B\\u5DF2\\u5B89\\u88C5\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\u5E76\\u542F\\u7528\\u5B83\\u4EEC\")), mdx(\"p\", null, \"\\u5C31\\u8FD9\\u4E48\\u7B80\\u5355\\uFF01\\u60A8\\u7684\\u5E94\\u7528\\u73B0\\u5728\\u5DF2\\u7ECF\\u81EA\\u52A8\\u57CB\\u70B9\\u5E76\\u5F00\\u59CB\\u53D1\\u9001\\u9065\\u6D4B\\u6570\\u636E\\u4E86\\u3002\"), mdx(\"h3\", {\n    \"id\": \"工作原理\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5DE5\\u4F5C\\u539F\\u7406\"), mdx(\"p\", null, \"OpenTelemetry PHP \\u6269\\u5C55\\u901A\\u8FC7\\u6CE8\\u518C\\u89C2\\u5BDF\\u8005\\u51FD\\u6570\\uFF08observer functions\\uFF09\\u6765\\u5B9E\\u73B0\\u81EA\\u52A8\\u57CB\\u70B9\\u3002\\u6269\\u5C55\\u4F1A\\u5728\\u7C7B\\u548C\\u65B9\\u6CD5\\u6267\\u884C\\u524D\\u540E\\u6267\\u884C\\u8FD9\\u4E9B\\u51FD\\u6570\\uFF0C\\u81EA\\u52A8\\u521B\\u5EFA\\u548C\\u7BA1\\u7406 Span\\u3002\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u5173\\u952E\\u70B9\"), \"\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6269\\u5C55\\u5C42\"), \"\\uFF1AOpenTelemetry PHP \\u6269\\u5C55\\u63D0\\u4F9B\\u5E95\\u5C42\\u94A9\\u5B50\\u673A\\u5236\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\"), \"\\uFF1AComposer \\u5305\\u63D0\\u4F9B\\u5177\\u4F53\\u7684\\u57CB\\u70B9\\u903B\\u8F91\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u81EA\\u52A8\\u52A0\\u8F7D\"), \"\\uFF1A\\u901A\\u8FC7 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"OTEL_PHP_AUTOLOAD_ENABLED=true\"), \" \\u542F\\u7528\\u81EA\\u52A8\\u52A0\\u8F7D\\u673A\\u5236\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u96F6\\u4FB5\\u5165\"), \"\\uFF1A\\u65E0\\u9700\\u4FEE\\u6539\\u5E94\\u7528\\u4EE3\\u7801\\uFF0C\\u53EA\\u9700\\u5B89\\u88C5\\u548C\\u914D\\u7F6E\")), mdx(\"h3\", {\n    \"id\": \"支持的自动埋点库\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E6%94%AF%E6%8C%81%E7%9A%84%E8%87%AA%E5%8A%A8%E5%9F%8B%E7%82%B9%E5%BA%93\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u652F\\u6301\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\"), mdx(\"p\", null, \"\\u6839\\u636E\\u60A8\\u5B89\\u88C5\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\uFF0C\\u7CFB\\u7EDF\\u4F1A\\u81EA\\u52A8\\u68C0\\u6D4B\\u5E76\\u542F\\u7528\\u76F8\\u5E94\\u7684\\u57CB\\u70B9\\u3002\\u5E38\\u7528\\u5E93\\u5305\\u62EC\\uFF1A\"), mdx(\"h4\", {\n    \"id\": \"web-框架\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#web-%E6%A1%86%E6%9E%B6\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Web \\u6846\\u67B6\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Slim Framework\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-slim\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Laravel\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-laravel\"), \"\\uFF08\\u5982\\u53EF\\u7528\\uFF09\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Symfony\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-symfony\"), \"\\uFF08\\u5982\\u53EF\\u7528\\uFF09\")), mdx(\"h4\", {\n    \"id\": \"http-客户端\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#http-%E5%AE%A2%E6%88%B7%E7%AB%AF\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"HTTP \\u5BA2\\u6237\\u7AEF\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PSR-18\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-psr18\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PSR-15\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-psr15\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Guzzle\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-guzzle\"))), mdx(\"h4\", {\n    \"id\": \"数据库\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E6%95%B0%E6%8D%AE%E5%BA%93\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6570\\u636E\\u5E93\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PDO\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-pdo\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"MySQLi\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-mysqli\"), \"\\uFF08\\u5982\\u53EF\\u7528\\uFF09\")), mdx(\"h4\", {\n    \"id\": \"缓存\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E7%BC%93%E5%AD%98\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u7F13\\u5B58\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Redis\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-redis\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Memcached\"), \": \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open-telemetry/opentelemetry-auto-memcached\"), \"\\uFF08\\u5982\\u53EF\\u7528\\uFF09\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u67E5\\u770B\\u5B8C\\u6574\\u5217\\u8868\"), \"\\uFF1A\"), mdx(\"p\", null, \"\\u8BBF\\u95EE \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://packagist.org/packages/open-telemetry/\"\n  }, \"Packagist\"), \" \\u641C\\u7D22 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"opentelemetry-auto-*\"), \" \\u67E5\\u770B\\u6240\\u6709\\u53EF\\u7528\\u7684\\u81EA\\u52A8\\u57CB\\u70B9\\u5E93\\u3002\"), mdx(\"h3\", {\n    \"id\": \"环境变量详解\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%AF%A6%E8%A7%A3\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u73AF\\u5883\\u53D8\\u91CF\\u8BE6\\u89E3\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u670D\\u52A1\\u4FE1\\u606F\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u670D\\u52A1\\u540D\\u79F0\\uFF08\\u5FC5\\u9700\\uFF09\\nexport OTEL_SERVICE_NAME=my-php-service\\n\\n# \\u670D\\u52A1\\u7248\\u672C\\nexport OTEL_SERVICE_VERSION=1.0.0\\n\\n# \\u8D44\\u6E90\\u5C5E\\u6027\\uFF08\\u952E\\u503C\\u5BF9\\uFF0C\\u9017\\u53F7\\u5206\\u9694\\uFF09\\nexport OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production,service.namespace=backend\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"OTLP Exporter \\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u7AEF\\u70B9\\u5730\\u5740\\uFF08\\u5185\\u90E8\\u5E73\\u53F0\\uFF0CHTTP \\u534F\\u8BAE\\uFF09\\nexport OTEL_EXPORTER_OTLP_ENDPOINT=http://uptrace-grpc.yodao.cn:80\\n\\n# \\u534F\\u8BAE\\u7C7B\\u578B\\uFF08http/protobuf \\u6216 grpc\\uFF09\\nexport OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf\\n\\n# \\u8BF7\\u6C42\\u5934\\uFF08\\u5305\\u542B DSN\\uFF09\\nexport OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\n\\n# \\u8D85\\u65F6\\u65F6\\u95F4\\uFF08\\u6BEB\\u79D2\\uFF09\\nexport OTEL_EXPORTER_OTLP_TIMEOUT=10000\\n\\n# \\u538B\\u7F29\\uFF08gzip\\uFF0C\\u53EF\\u9009\\uFF09\\nexport OTEL_EXPORTER_OTLP_COMPRESSION=gzip\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u91CD\\u8981\\u63D0\\u793A\"), \"\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5185\\u90E8\\u5E73\\u53F0\\u63A8\\u8350\\u4F7F\\u7528 HTTP \\u534F\\u8BAE\\uFF08\\u7AEF\\u53E3 80\\uFF09\\uFF0C\\u517C\\u5BB9\\u6027\\u66F4\\u597D\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5982\\u679C\\u4F7F\\u7528 gRPC \\u534F\\u8BAE\\uFF0C\\u7AEF\\u70B9\\u5E94\\u4E3A \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"uptrace-grpc.yodao.cn:4317\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"DSN \\u683C\\u5F0F\\uFF1A\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"http://token@uptrace-grpc.yodao.cn/project?grpc=4317\"))), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Traces \\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# Exporter \\u7C7B\\u578B\\nexport OTEL_TRACES_EXPORTER=otlp\\n\\n# \\u91C7\\u6837\\u5668\\u7C7B\\u578B\\nexport OTEL_TRACES_SAMPLER=parentbased_traceidratio\\n\\n# \\u91C7\\u6837\\u7387\\uFF080.0 \\u5230 1.0\\uFF09\\nexport OTEL_TRACES_SAMPLER_ARG=0.1\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Metrics \\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# Exporter \\u7C7B\\u578B\\nexport OTEL_METRICS_EXPORTER=otlp\\n\\n# \\u5BFC\\u51FA\\u95F4\\u9694\\uFF08\\u6BEB\\u79D2\\uFF09\\nexport OTEL_METRIC_EXPORT_INTERVAL=60000\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Logs \\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# Exporter \\u7C7B\\u578B\\nexport OTEL_LOGS_EXPORTER=otlp\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u4F20\\u64AD\\u5668\\u914D\\u7F6E\"), \"\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u4F20\\u64AD\\u5668\\u7C7B\\u578B\\uFF08\\u9017\\u53F7\\u5206\\u9694\\uFF09\\nexport OTEL_PROPAGATORS=baggage,tracecontext\\n\")), mdx(\"h3\", {\n    \"id\": \"不同运行环境的配置\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E4%B8%8D%E5%90%8C%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E7%9A%84%E9%85%8D%E7%BD%AE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4E0D\\u540C\\u8FD0\\u884C\\u73AF\\u5883\\u7684\\u914D\\u7F6E\"), mdx(\"h4\", {\n    \"id\": \"php-cli\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#php-cli\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"PHP CLI\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u8BBE\\u7F6E\\u73AF\\u5883\\u53D8\\u91CF\\u540E\\u76F4\\u63A5\\u8FD0\\u884C\\nexport OTEL_PHP_AUTOLOAD_ENABLED=true\\nexport OTEL_SERVICE_NAME=my-php-service\\nexport OTEL_EXPORTER_OTLP_ENDPOINT=http://uptrace-grpc.yodao.cn:80\\nexport OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\n\\nphp myapp.php\\n\")), mdx(\"h4\", {\n    \"id\": \"php-fpm\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#php-fpm\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"PHP-FPM\"), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"php-fpm.conf\"), \" \\u6216 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"www.conf\"), \" \\u4E2D\\u8BBE\\u7F6E\\u73AF\\u5883\\u53D8\\u91CF\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ini\"\n  }, \"[www]\\nenv[OTEL_PHP_AUTOLOAD_ENABLED] = true\\nenv[OTEL_SERVICE_NAME] = my-php-service\\nenv[OTEL_EXPORTER_OTLP_ENDPOINT] = http://uptrace-grpc.yodao.cn:80\\nenv[OTEL_EXPORTER_OTLP_HEADERS] = uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\n\")), mdx(\"h4\", {\n    \"id\": \"apache\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#apache\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Apache\"), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"httpd.conf\"), \" \\u6216\\u865A\\u62DF\\u4E3B\\u673A\\u914D\\u7F6E\\u4E2D\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-apache\"\n  }, \"<VirtualHost *:80>\\n    SetEnv OTEL_PHP_AUTOLOAD_ENABLED true\\n    SetEnv OTEL_SERVICE_NAME my-php-service\\n    SetEnv OTEL_EXPORTER_OTLP_ENDPOINT http://uptrace-grpc.yodao.cn:80\\n    SetEnv OTEL_EXPORTER_OTLP_HEADERS \\\"uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\\"\\n</VirtualHost>\\n\")), mdx(\"h4\", {\n    \"id\": \"docker\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#docker\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Docker\"), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Dockerfile\"), \" \\u6216 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"docker-compose.yml\"), \" \\u4E2D\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, \"environment:\\n  - OTEL_PHP_AUTOLOAD_ENABLED=true\\n  - OTEL_SERVICE_NAME=my-php-service\\n  - OTEL_EXPORTER_OTLP_ENDPOINT=http://uptrace-grpc.yodao.cn:80\\n  - OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project?grpc=4317\\n\")), mdx(\"h3\", {\n    \"id\": \"验证零代码接入\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E9%AA%8C%E8%AF%81%E9%9B%B6%E4%BB%A3%E7%A0%81%E6%8E%A5%E5%85%A5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u9A8C\\u8BC1\\u96F6\\u4EE3\\u7801\\u63A5\\u5165\"), mdx(\"p\", null, \"\\u542F\\u52A8\\u5E94\\u7528\\u540E\\uFF0C\\u8BBF\\u95EE\\u60A8\\u7684\\u670D\\u52A1\\u7AEF\\u70B9\\uFF0C\\u7136\\u540E\\u5728 APM \\u5E73\\u53F0\\u67E5\\u770B\\u6570\\u636E\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Traces\"), \": \\u67E5\\u770B\\u8C03\\u7528\\u94FE\\u8DEF\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Metrics\"), \": \\u67E5\\u770B\\u8BF7\\u6C42\\u91CF\\u3001\\u5EF6\\u8FDF\\u7B49\\u6307\\u6807\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service Map\"), \": \\u67E5\\u770B\\u670D\\u52A1\\u62D3\\u6251\\u56FE\")), mdx(\"h4\", {\n    \"id\": \"快速验证\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E5%BF%AB%E9%80%9F%E9%AA%8C%E8%AF%81\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5FEB\\u901F\\u9A8C\\u8BC1\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u542F\\u52A8\\u5E94\\u7528\\nphp -d opentelemetry.enabled=1 -S localhost:8000\\n\\n# \\u5728\\u53E6\\u4E00\\u4E2A\\u7EC8\\u7AEF\\u53D1\\u9001\\u6D4B\\u8BD5\\u8BF7\\u6C42\\ncurl http://localhost:8000/\\n\\n# \\u7B49\\u5F85\\u51E0\\u79D2\\u540E\\uFF0C\\u5728 APM \\u5E73\\u53F0\\u67E5\\u770B\\u6570\\u636E\\n\")), mdx(\"h3\", {\n    \"id\": \"日志级别配置\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB%E9%85%8D%E7%BD%AE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u65E5\\u5FD7\\u7EA7\\u522B\\u914D\\u7F6E\"), mdx(\"p\", null, \"\\u53EF\\u4EE5\\u901A\\u8FC7\\u73AF\\u5883\\u53D8\\u91CF\\u8BBE\\u7F6E\\u65E5\\u5FD7\\u7EA7\\u522B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# \\u8BBE\\u7F6E\\u65E5\\u5FD7\\u7EA7\\u522B\\nexport OTEL_LOG_LEVEL=info  # none, error, warn, info, debug, verbose, all\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"sdk-手动接入\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#sdk-%E6%89%8B%E5%8A%A8%E6%8E%A5%E5%85%A5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"SDK \\u624B\\u52A8\\u63A5\\u5165\"), mdx(\"p\", null, \"SDK \\u624B\\u52A8\\u63A5\\u5165\\u63D0\\u4F9B\\u66F4\\u7CBE\\u7EC6\\u7684\\u63A7\\u5236\\u548C\\u81EA\\u5B9A\\u4E49\\u80FD\\u529B\\u3002\"), mdx(\"h3\", {\n    \"id\": \"安装依赖\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5B89\\u88C5\\u4F9D\\u8D56\"), mdx(\"p\", null, \"\\u4F7F\\u7528 Composer \\u5B89\\u88C5\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"composer require open-telemetry/api\\ncomposer require open-telemetry/sdk\\ncomposer require open-telemetry/exporter-otlp\\ncomposer require open-telemetry/instrumentation-http\\ncomposer require open-telemetry/instrumentation-pdo\\n\")), mdx(\"h3\", {\n    \"id\": \"基础初始化\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%9F%BA%E7%A1%80%E5%88%9D%E5%A7%8B%E5%8C%96\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u57FA\\u7840\\u521D\\u59CB\\u5316\"), mdx(\"h4\", {\n    \"id\": \"创建-opentelemetry-初始化文件\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E5%88%9B%E5%BB%BA-opentelemetry-%E5%88%9D%E5%A7%8B%E5%8C%96%E6%96%87%E4%BB%B6\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u521B\\u5EFA OpenTelemetry \\u521D\\u59CB\\u5316\\u6587\\u4EF6\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n// otel.php\\nrequire_once __DIR__ . '/vendor/autoload.php';\\n\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\SDK\\\\Resource\\\\ResourceInfoFactory;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\TracerProviderBuilder;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\Sampler\\\\ParentBased;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\Sampler\\\\TraceIdRatioBasedSampler;\\nuse OpenTelemetry\\\\Exporter\\\\Otlp\\\\OtlpExporter;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SpanProcessor\\\\BatchSpanProcessor;\\nuse OpenTelemetry\\\\SDK\\\\Common\\\\Attribute\\\\Attributes;\\n\\nfunction initOpenTelemetry(): void\\n{\\n    // \\u521B\\u5EFA Resource\\n    $resource = ResourceInfoFactory::emptyResource()\\n        ->merge(ResourceInfoFactory::defaultResource())\\n        ->merge(ResourceInfoFactory::create([\\n            'service.name' => $_ENV['OTEL_SERVICE_NAME'] ?? 'my-php-service',\\n            'service.version' => $_ENV['OTEL_SERVICE_VERSION'] ?? '1.0.0',\\n        ]));\\n\\n    // \\u521B\\u5EFA OTLP Exporter\\n    $exporter = new OtlpExporter([\\n        'endpoint' => $_ENV['OTEL_EXPORTER_OTLP_ENDPOINT'] ?? 'uptrace-grpc.yodao.cn:4317',\\n        'protocol' => $_ENV['OTEL_EXPORTER_OTLP_PROTOCOL'] ?? 'grpc',\\n        'headers' => [\\n            'uptrace-dsn' => $_ENV['OTEL_EXPORTER_OTLP_HEADERS'] ?? '',\\n        ],\\n    ]);\\n\\n    // \\u521B\\u5EFA\\u91C7\\u6837\\u5668\\n    $sampler = new ParentBased(\\n        new TraceIdRatioBasedSampler(\\n            (float)($_ENV['OTEL_TRACES_SAMPLER_ARG'] ?? 0.1)\\n        )\\n    );\\n\\n    // \\u521B\\u5EFA TracerProvider\\n    $tracerProvider = (new TracerProviderBuilder())\\n        ->setResource($resource)\\n        ->addSpanProcessor(new BatchSpanProcessor($exporter))\\n        ->setSampler($sampler)\\n        ->build();\\n\\n    // \\u6CE8\\u518C\\u5168\\u5C40 TracerProvider\\n    Globals::registerInitializer(function () use ($tracerProvider) {\\n        return $tracerProvider;\\n    });\\n}\\n\\n// \\u521D\\u59CB\\u5316\\ninitOpenTelemetry();\\n\")), mdx(\"h4\", {\n    \"id\": \"在应用中使用\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E5%9C%A8%E5%BA%94%E7%94%A8%E4%B8%AD%E4%BD%BF%E7%94%A8\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5728\\u5E94\\u7528\\u4E2D\\u4F7F\\u7528\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n// index.php\\nrequire_once __DIR__ . '/otel.php';\\n\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\n// \\u83B7\\u53D6 Tracer\\n$tracer = Globals::tracerProvider()->getTracer('my-service');\\n\\n// \\u521B\\u5EFA Span\\n$span = $tracer->spanBuilder('handle_request')\\n    ->setSpanKind(SpanKind::KIND_SERVER)\\n    ->startSpan();\\n\\n$scope = $span->activate();\\n\\ntry {\\n    // \\u4E1A\\u52A1\\u903B\\u8F91\\n    $span->setAttribute('http.method', 'GET');\\n    $span->setAttribute('http.url', '/');\\n    \\n    echo \\\"Hello, World!\\\";\\n    \\n    $span->setStatus(StatusCode::STATUS_OK);\\n} catch (\\\\Throwable $e) {\\n    $span->recordException($e);\\n    $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n    throw $e;\\n} finally {\\n    $span->end();\\n    $scope->detach();\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"traces---手动埋点\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#traces---%E6%89%8B%E5%8A%A8%E5%9F%8B%E7%82%B9\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Traces - \\u624B\\u52A8\\u57CB\\u70B9\"), mdx(\"h4\", {\n    \"id\": \"创建和使用-span\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E5%88%9B%E5%BB%BA%E5%92%8C%E4%BD%BF%E7%94%A8-span\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u521B\\u5EFA\\u548C\\u4F7F\\u7528 Span\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\nuse OpenTelemetry\\\\API\\\\Globals;\\n\\n$tracer = Globals::tracerProvider()->getTracer('my-service');\\n\\nfunction processOrder(string $orderId): void\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    \\n    $span = $tracer->spanBuilder('process_order')\\n        ->setSpanKind(SpanKind::KIND_INTERNAL)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $span->setAttribute('order.id', $orderId);\\n        $span->setAttribute('operation', 'process');\\n        \\n        $span->addEvent('order_validation_started');\\n        \\n        validateOrder($orderId);\\n        \\n        $span->addEvent('order_validated');\\n        \\n        chargePayment($orderId);\\n        \\n        $span->addEvent('payment_processed');\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        $span->setAttribute('order.success', true);\\n    } catch (\\\\Throwable $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"h4\", {\n    \"id\": \"context-传播\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#context-%E4%BC%A0%E6%92%AD\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Context \\u4F20\\u64AD\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\API\\\\Trace\\\\Propagation\\\\TraceContextPropagator;\\nuse OpenTelemetry\\\\API\\\\Context\\\\Propagation\\\\TextMapPropagatorInterface;\\n\\n// \\u83B7\\u53D6\\u5F53\\u524D Context\\n$propagator = TraceContextPropagator::getInstance();\\n$context = Globals::propagator()->extract([], $_SERVER);\\n\\n// \\u5728 HTTP \\u8BF7\\u6C42\\u4E2D\\u4F20\\u64AD Context\\nfunction makeHttpRequest(string $url): string\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    $span = $tracer->spanBuilder('http_request')\\n        ->setSpanKind(SpanKind::KIND_CLIENT)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $span->setAttribute('http.url', $url);\\n        $span->setAttribute('http.method', 'GET');\\n        \\n        // \\u6CE8\\u5165 Context \\u5230 HTTP headers\\n        $headers = [];\\n        Globals::propagator()->inject($headers);\\n        \\n        $ch = curl_init($url);\\n        curl_setopt($ch, CURLOPT_HTTPHEADER, array_map(\\n            fn($k, $v) => \\\"$k: $v\\\",\\n            array_keys($headers),\\n            $headers\\n        ));\\n        $response = curl_exec($ch);\\n        $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n        curl_close($ch);\\n        \\n        $span->setAttribute('http.status_code', $statusCode);\\n        $span->setStatus($statusCode >= 400 ? StatusCode::STATUS_ERROR : StatusCode::STATUS_OK);\\n        \\n        return $response;\\n    } catch (\\\\Throwable $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"metrics---指标采集\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#metrics---%E6%8C%87%E6%A0%87%E9%87%87%E9%9B%86\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Metrics - \\u6307\\u6807\\u91C7\\u96C6\"), mdx(\"h4\", {\n    \"id\": \"counter计数器\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#counter%E8%AE%A1%E6%95%B0%E5%99%A8\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Counter\\uFF08\\u8BA1\\u6570\\u5668\\uFF09\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\API\\\\Metrics\\\\MeterProviderInterface;\\nuse OpenTelemetry\\\\API\\\\Metrics\\\\CounterInterface;\\n\\n$meterProvider = Globals::meterProvider();\\n$meter = $meterProvider->getMeter('my-service');\\n\\n$requestCounter = $meter->createCounter(\\n    'http.server.requests',\\n    'total',\\n    'Total number of HTTP requests'\\n);\\n\\nfunction handleRequest(string $method, string $route, int $statusCode): void\\n{\\n    global $requestCounter;\\n    \\n    $requestCounter->add(1, [\\n        'http.method' => $method,\\n        'http.route' => $route,\\n        'http.status_code' => (string)$statusCode,\\n    ]);\\n}\\n\")), mdx(\"h4\", {\n    \"id\": \"histogram直方图\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#histogram%E7%9B%B4%E6%96%B9%E5%9B%BE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Histogram\\uFF08\\u76F4\\u65B9\\u56FE\\uFF09\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n$requestDuration = $meter->createHistogram(\\n    'http.server.duration',\\n    'ms',\\n    'HTTP request duration'\\n);\\n\\nfunction recordDuration(float $duration, string $method, string $route): void\\n{\\n    global $requestDuration;\\n    \\n    $requestDuration->record($duration, [\\n        'http.method' => $method,\\n        'http.route' => $route,\\n    ]);\\n}\\n\")), mdx(\"h4\", {\n    \"id\": \"updowncounter升降计数器\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#updowncounter%E5%8D%87%E9%99%8D%E8%AE%A1%E6%95%B0%E5%99%A8\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"UpDownCounter\\uFF08\\u5347\\u964D\\u8BA1\\u6570\\u5668\\uFF09\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n$activeConnections = $meter->createUpDownCounter(\\n    'http.server.active_connections',\\n    'connections',\\n    'Number of active HTTP connections'\\n);\\n\\nfunction connectionOpened(): void\\n{\\n    global $activeConnections;\\n    $activeConnections->add(1);\\n}\\n\\nfunction connectionClosed(): void\\n{\\n    global $activeConnections;\\n    $activeConnections->add(-1);\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"logs---日志集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#logs---%E6%97%A5%E5%BF%97%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Logs - \\u65E5\\u5FD7\\u96C6\\u6210\"), mdx(\"h4\", {\n    \"id\": \"集成-monolog\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E9%9B%86%E6%88%90-monolog\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u96C6\\u6210 Monolog\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse Monolog\\\\Logger;\\nuse Monolog\\\\Handler\\\\StreamHandler;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanContextInterface;\\nuse OpenTelemetry\\\\API\\\\Globals;\\n\\n// \\u521B\\u5EFA logger\\n$logger = new Logger('my-service');\\n$logger->pushHandler(new StreamHandler('php://stdout', Logger::INFO));\\n\\n// \\u6DFB\\u52A0 trace \\u4FE1\\u606F\\u5230\\u65E5\\u5FD7\\n$logger->pushProcessor(function ($record) {\\n    $span = Globals::tracerProvider()\\n        ->getTracer('my-service')\\n        ->spanBuilder('log')\\n        ->startSpan()\\n        ->getContext();\\n    \\n    if ($span->isValid()) {\\n        $record['extra']['trace_id'] = $span->getTraceId();\\n        $record['extra']['span_id'] = $span->getSpanId();\\n    }\\n    \\n    return $record;\\n});\\n\\n// \\u4F7F\\u7528\\u793A\\u4F8B\\nfunction example(): void\\n{\\n    global $logger;\\n    $logger->info('Processing request', [\\n        'user_id' => '12345',\\n        'action' => 'create',\\n    ]);\\n}\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"框架集成示例\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90%E7%A4%BA%E4%BE%8B\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6846\\u67B6\\u96C6\\u6210\\u793A\\u4F8B\"), mdx(\"h3\", {\n    \"id\": \"laravel-框架集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#laravel-%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Laravel \\u6846\\u67B6\\u96C6\\u6210\"), mdx(\"h4\", {\n    \"id\": \"使用-service-provider\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E4%BD%BF%E7%94%A8-service-provider\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4F7F\\u7528 Service Provider\"), mdx(\"p\", null, \"\\u521B\\u5EFA \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"app/Providers/OpenTelemetryServiceProvider.php\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nnamespace App\\\\Providers;\\n\\nuse Illuminate\\\\Support\\\\ServiceProvider;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\TracerProviderBuilder;\\nuse OpenTelemetry\\\\Exporter\\\\Otlp\\\\OtlpExporter;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SpanProcessor\\\\BatchSpanProcessor;\\n\\nclass OpenTelemetryServiceProvider extends ServiceProvider\\n{\\n    public function register(): void\\n    {\\n        $exporter = new OtlpExporter([\\n            'endpoint' => env('OTEL_EXPORTER_OTLP_ENDPOINT', 'uptrace-grpc.yodao.cn:4317'),\\n            'protocol' => env('OTEL_EXPORTER_OTLP_PROTOCOL', 'grpc'),\\n            'headers' => [\\n                'uptrace-dsn' => env('OTEL_EXPORTER_OTLP_HEADERS', ''),\\n            ],\\n        ]);\\n\\n        $tracerProvider = (new TracerProviderBuilder())\\n            ->addSpanProcessor(new BatchSpanProcessor($exporter))\\n            ->build();\\n\\n        Globals::registerInitializer(function () use ($tracerProvider) {\\n            return $tracerProvider;\\n        });\\n    }\\n}\\n\")), mdx(\"p\", null, \"\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"config/app.php\"), \" \\u4E2D\\u6CE8\\u518C\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"'providers' => [\\n    // ...\\n    App\\\\Providers\\\\OpenTelemetryServiceProvider::class,\\n],\\n\")), mdx(\"h4\", {\n    \"id\": \"使用-middleware\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E4%BD%BF%E7%94%A8-middleware\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4F7F\\u7528 Middleware\"), mdx(\"p\", null, \"\\u521B\\u5EFA \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"app/Http/Middleware/OpenTelemetryMiddleware.php\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nnamespace App\\\\Http\\\\Middleware;\\n\\nuse Closure;\\nuse Illuminate\\\\Http\\\\Request;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nclass OpenTelemetryMiddleware\\n{\\n    public function handle(Request $request, Closure $next)\\n    {\\n        $tracer = Globals::tracerProvider()->getTracer('laravel');\\n        \\n        $span = $tracer->spanBuilder('http.request')\\n            ->setSpanKind(SpanKind::KIND_SERVER)\\n            ->startSpan();\\n        \\n        $scope = $span->activate();\\n        \\n        try {\\n            $span->setAttribute('http.method', $request->method());\\n            $span->setAttribute('http.url', $request->fullUrl());\\n            $span->setAttribute('http.route', $request->route()?->getName());\\n            \\n            $response = $next($request);\\n            \\n            $span->setAttribute('http.status_code', $response->getStatusCode());\\n            $span->setStatus(StatusCode::STATUS_OK);\\n            \\n            return $response;\\n        } catch (\\\\Throwable $e) {\\n            $span->recordException($e);\\n            $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n            throw $e;\\n        } finally {\\n            $span->end();\\n            $scope->detach();\\n        }\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"symfony-框架集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#symfony-%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Symfony \\u6846\\u67B6\\u96C6\\u6210\"), mdx(\"h4\", {\n    \"id\": \"使用-event-subscriber\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E4%BD%BF%E7%94%A8-event-subscriber\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4F7F\\u7528 Event Subscriber\"), mdx(\"p\", null, \"\\u521B\\u5EFA \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"src/EventSubscriber/OpenTelemetrySubscriber.php\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nnamespace App\\\\EventSubscriber;\\n\\nuse Symfony\\\\Component\\\\EventDispatcher\\\\EventSubscriberInterface;\\nuse Symfony\\\\Component\\\\HttpKernel\\\\KernelEvents;\\nuse Symfony\\\\Component\\\\HttpKernel\\\\Event\\\\RequestEvent;\\nuse Symfony\\\\Component\\\\HttpKernel\\\\Event\\\\ResponseEvent;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nclass OpenTelemetrySubscriber implements EventSubscriberInterface\\n{\\n    private $spans = [];\\n\\n    public static function getSubscribedEvents(): array\\n    {\\n        return [\\n            KernelEvents::REQUEST => ['onKernelRequest', 8],\\n            KernelEvents::RESPONSE => ['onKernelResponse', -8],\\n        ];\\n    }\\n\\n    public function onKernelRequest(RequestEvent $event): void\\n    {\\n        if (!$event->isMainRequest()) {\\n            return;\\n        }\\n\\n        $request = $event->getRequest();\\n        $tracer = Globals::tracerProvider()->getTracer('symfony');\\n        \\n        $span = $tracer->spanBuilder('http.request')\\n            ->setSpanKind(SpanKind::KIND_SERVER)\\n            ->startSpan();\\n        \\n        $scope = $span->activate();\\n        \\n        $span->setAttribute('http.method', $request->getMethod());\\n        $span->setAttribute('http.url', $request->getUri());\\n        $span->setAttribute('http.route', $request->attributes->get('_route'));\\n        \\n        $this->spans[spl_object_id($request)] = ['span' => $span, 'scope' => $scope];\\n    }\\n\\n    public function onKernelResponse(ResponseEvent $event): void\\n    {\\n        $request = $event->getRequest();\\n        $response = $event->getResponse();\\n        $key = spl_object_id($request);\\n        \\n        if (!isset($this->spans[$key])) {\\n            return;\\n        }\\n        \\n        $span = $this->spans[$key]['span'];\\n        $scope = $this->spans[$key]['scope'];\\n        \\n        $span->setAttribute('http.status_code', $response->getStatusCode());\\n        $span->setStatus(\\n            $response->getStatusCode() >= 400 \\n                ? StatusCode::STATUS_ERROR \\n                : StatusCode::STATUS_OK\\n        );\\n        \\n        $span->end();\\n        $scope->detach();\\n        \\n        unset($this->spans[$key]);\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"slim-框架集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#slim-%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Slim \\u6846\\u67B6\\u96C6\\u6210\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse Slim\\\\Factory\\\\AppFactory;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nrequire __DIR__ . '/vendor/autoload.php';\\nrequire __DIR__ . '/otel.php';\\n\\n$app = AppFactory::create();\\n\\n// \\u6DFB\\u52A0 OpenTelemetry Middleware\\n$app->add(function ($request, $handler) {\\n    $tracer = Globals::tracerProvider()->getTracer('slim');\\n    \\n    $span = $tracer->spanBuilder('http.request')\\n        ->setSpanKind(SpanKind::KIND_SERVER)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $span->setAttribute('http.method', $request->getMethod());\\n        $span->setAttribute('http.url', (string)$request->getUri());\\n        \\n        $response = $handler->handle($request);\\n        \\n        $span->setAttribute('http.status_code', $response->getStatusCode());\\n        $span->setStatus(StatusCode::STATUS_OK);\\n        \\n        return $response;\\n    } catch (\\\\Throwable $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n});\\n\\n$app->get('/users/{id}', function ($request, $response, $args) {\\n    $tracer = Globals::tracerProvider()->getTracer('slim');\\n    $span = $tracer->spanBuilder('get_user')\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $span->setAttribute('user.id', $args['id']);\\n        \\n        // \\u4E1A\\u52A1\\u903B\\u8F91\\n        $user = getUser($args['id']);\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        return $response->withJson($user);\\n    } catch (\\\\Throwable $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n});\\n\\n$app->run();\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"数据库集成\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6570\\u636E\\u5E93\\u96C6\\u6210\"), mdx(\"h3\", {\n    \"id\": \"pdo-集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#pdo-%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"PDO \\u96C6\\u6210\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nfunction queryDatabase(string $query, array $params = []): array\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    \\n    $span = $tracer->spanBuilder('database.query')\\n        ->setSpanKind(SpanKind::KIND_CLIENT)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $pdo = new PDO(\\n            'mysql:host=localhost;dbname=mydb',\\n            'user',\\n            'password'\\n        );\\n        \\n        $span->setAttribute('db.system', 'mysql');\\n        $span->setAttribute('db.name', 'mydb');\\n        $span->setAttribute('db.statement', $query);\\n        \\n        $stmt = $pdo->prepare($query);\\n        $stmt->execute($params);\\n        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        return $result;\\n    } catch (\\\\PDOException $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"mysqli-集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#mysqli-%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"MySQLi \\u96C6\\u6210\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nfunction queryWithMysqli(string $query): array\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    \\n    $span = $tracer->spanBuilder('database.query')\\n        ->setSpanKind(SpanKind::KIND_CLIENT)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $mysqli = new mysqli('localhost', 'user', 'password', 'mydb');\\n        \\n        $span->setAttribute('db.system', 'mysql');\\n        $span->setAttribute('db.name', 'mydb');\\n        $span->setAttribute('db.statement', $query);\\n        \\n        $result = $mysqli->query($query);\\n        $rows = $result->fetch_all(MYSQLI_ASSOC);\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        return $rows;\\n    } catch (\\\\mysqli_sql_exception $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"mongodb-集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#mongodb-%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"MongoDB \\u96C6\\u6210\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse MongoDB\\\\Client;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nfunction queryMongoDB(string $collection, array $filter): array\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    \\n    $span = $tracer->spanBuilder('mongodb.query')\\n        ->setSpanKind(SpanKind::KIND_CLIENT)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $client = new Client('mongodb://localhost:27017');\\n        $db = $client->selectDatabase('mydb');\\n        $collection = $db->selectCollection($collection);\\n        \\n        $span->setAttribute('db.system', 'mongodb');\\n        $span->setAttribute('db.name', 'mydb');\\n        $span->setAttribute('db.collection', $collection);\\n        \\n        $result = $collection->find($filter)->toArray();\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        return $result;\\n    } catch (\\\\Exception $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"redis-集成\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#redis-%E9%9B%86%E6%88%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Redis \\u96C6\\u6210\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse Redis;\\nuse OpenTelemetry\\\\API\\\\Globals;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\SpanKind;\\nuse OpenTelemetry\\\\API\\\\Trace\\\\StatusCode;\\n\\nfunction getCache(string $key): ?string\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    \\n    $span = $tracer->spanBuilder('redis.get')\\n        ->setSpanKind(SpanKind::KIND_CLIENT)\\n        ->startSpan();\\n    \\n    $scope = $span->activate();\\n    \\n    try {\\n        $redis = new Redis();\\n        $redis->connect('127.0.0.1', 6379);\\n        \\n        $span->setAttribute('db.system', 'redis');\\n        $span->setAttribute('db.operation', 'GET');\\n        $span->setAttribute('db.redis.key', $key);\\n        \\n        $value = $redis->get($key);\\n        \\n        $span->setStatus(StatusCode::STATUS_OK);\\n        return $value;\\n    } catch (\\\\Exception $e) {\\n        $span->recordException($e);\\n        $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n        throw $e;\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"高级配置\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E9%AB%98%E7%BA%A7%E9%85%8D%E7%BD%AE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u9AD8\\u7EA7\\u914D\\u7F6E\"), mdx(\"h3\", {\n    \"id\": \"自定义采样策略\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%87%87%E6%A0%B7%E7%AD%96%E7%95%A5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u81EA\\u5B9A\\u4E49\\u91C7\\u6837\\u7B56\\u7565\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\Sampler\\\\SamplerInterface;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SamplingResult;\\n\\nclass CustomSampler implements SamplerInterface\\n{\\n    private array $alwaysSample = ['/checkout', '/payment'];\\n    private array $neverSample = ['/health', '/metrics'];\\n    \\n    public function shouldSample(\\n        ContextInterface $context,\\n        string $traceId,\\n        string $spanName,\\n        int $spanKind,\\n        array $attributes,\\n        array $links\\n    ): SamplingResult {\\n        // \\u603B\\u662F\\u91C7\\u6837\\n        foreach ($this->alwaysSample as $pattern) {\\n            if (str_contains($spanName, $pattern)) {\\n                return new SamplingResult(SamplingResult::RECORD_AND_SAMPLE);\\n            }\\n        }\\n        \\n        // \\u4ECE\\u4E0D\\u91C7\\u6837\\n        foreach ($this->neverSample as $pattern) {\\n            if (str_contains($spanName, $pattern)) {\\n                return new SamplingResult(SamplingResult::DROP);\\n            }\\n        }\\n        \\n        // \\u9ED8\\u8BA4\\u91C7\\u6837\\u7387 10%\\n        return (new TraceIdRatioBasedSampler(0.1))\\n            ->shouldSample($context, $traceId, $spanName, $spanKind, $attributes, $links);\\n    }\\n    \\n    public function getDescription(): string\\n    {\\n        return 'CustomSampler';\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"多-exporter-配置\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%A4%9A-exporter-%E9%85%8D%E7%BD%AE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u591A Exporter \\u914D\\u7F6E\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\Exporter\\\\Otlp\\\\OtlpExporter;\\nuse OpenTelemetry\\\\Exporter\\\\Zipkin\\\\ZipkinExporter;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SpanExporter\\\\ConsoleSpanExporter;\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SpanProcessor\\\\BatchSpanProcessor;\\n\\n// \\u521B\\u5EFA\\u591A\\u4E2A exporter\\n$otlpExporter = new OtlpExporter([\\n    'endpoint' => 'uptrace-grpc.yodao.cn:4317',\\n    'headers' => [\\n        'uptrace-dsn' => 'http://token@uptrace-grpc.yodao.cn/project?grpc=4317',\\n    ],\\n]);\\n\\n$zipkinExporter = new ZipkinExporter([\\n    'endpoint' => 'http://localhost:9411/api/v2/spans',\\n]);\\n\\n$consoleExporter = new ConsoleSpanExporter();\\n\\n// \\u6DFB\\u52A0\\u591A\\u4E2A\\u5904\\u7406\\u5668\\n$tracerProvider = (new TracerProviderBuilder())\\n    ->addSpanProcessor(new BatchSpanProcessor($otlpExporter))\\n    ->addSpanProcessor(new BatchSpanProcessor($zipkinExporter))\\n    ->addSpanProcessor(new BatchSpanProcessor($consoleExporter))\\n    ->build();\\n\")), mdx(\"h3\", {\n    \"id\": \"性能优化配置\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E9%85%8D%E7%BD%AE\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6027\\u80FD\\u4F18\\u5316\\u914D\\u7F6E\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\nuse OpenTelemetry\\\\SDK\\\\Trace\\\\SpanProcessor\\\\BatchSpanProcessor;\\n\\n$exporter = new OtlpExporter([\\n    'endpoint' => 'uptrace-grpc.yodao.cn:4317',\\n    'headers' => [\\n        'uptrace-dsn' => 'http://token@uptrace-grpc.yodao.cn/project?grpc=4317',\\n    ],\\n    'compression' => 'gzip',\\n    'timeout' => 10000,\\n]);\\n\\n$spanProcessor = new BatchSpanProcessor(\\n    $exporter,\\n    null, // Clock\\n    512,  // maxExportBatchSize\\n    5000, // scheduledDelayMillis\\n    2048, // maxQueueSize\\n    30000 // exportTimeoutMillis\\n);\\n\\n$tracerProvider = (new TracerProviderBuilder())\\n    ->addSpanProcessor($spanProcessor)\\n    ->build();\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"最佳实践\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6700\\u4F73\\u5B9E\\u8DF5\"), mdx(\"h3\", {\n    \"id\": \"1-context-传递\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#1-context-%E4%BC%A0%E9%80%92\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"1. Context \\u4F20\\u9012\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n// \\u2705 \\u6B63\\u786E\\uFF1A\\u5728\\u51FD\\u6570\\u8C03\\u7528\\u4E2D\\u4F20\\u9012 context\\nfunction processOrder(ContextInterface $context, string $orderId): void\\n{\\n    $tracer = Globals::tracerProvider()->getTracer('my-service');\\n    $span = $tracer->spanBuilder('process_order')\\n        ->setParent($context)\\n        ->startSpan();\\n    \\n    $newContext = $span->storeInContext($context);\\n    \\n    // \\u4F20\\u9012 context \\u7ED9\\u4E0B\\u6E38\\u51FD\\u6570\\n    validateOrder($newContext, $orderId);\\n    chargePayment($newContext, $orderId);\\n    \\n    $span->end();\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"2-错误处理\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#2-%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"2. \\u9519\\u8BEF\\u5904\\u7406\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n// \\u2705 \\u6B63\\u786E\\uFF1A\\u8BB0\\u5F55\\u9519\\u8BEF\\u5E76\\u8BBE\\u7F6E\\u72B6\\u6001\\ntry {\\n    processOrder($orderId);\\n    $span->setStatus(StatusCode::STATUS_OK);\\n} catch (\\\\Throwable $e) {\\n    $span->recordException($e);\\n    $span->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());\\n    throw $e;\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"3-资源管理\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#3-%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"3. \\u8D44\\u6E90\\u7BA1\\u7406\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"<?php\\n// \\u2705 \\u6B63\\u786E\\uFF1A\\u4F7F\\u7528 try-finally \\u786E\\u4FDD span \\u7ED3\\u675F\\nfunction operation(): void\\n{\\n    $span = $tracer->spanBuilder('operation')->startSpan();\\n    $scope = $span->activate();\\n    \\n    try {\\n        // \\u4E1A\\u52A1\\u903B\\u8F91\\n    } finally {\\n        $span->end();\\n        $scope->detach();\\n    }\\n}\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"故障排查\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u6545\\u969C\\u6392\\u67E5\"), mdx(\"h3\", {\n    \"id\": \"常见问题\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u5E38\\u89C1\\u95EE\\u9898\"), mdx(\"h4\", {\n    \"id\": \"1-数据未发送到后端\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#1-%E6%95%B0%E6%8D%AE%E6%9C%AA%E5%8F%91%E9%80%81%E5%88%B0%E5%90%8E%E7%AB%AF\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"1. \\u6570\\u636E\\u672A\\u53D1\\u9001\\u5230\\u540E\\u7AEF\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u6392\\u67E5\\u6B65\\u9AA4\"), \":\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u68C0\\u67E5\\u73AF\\u5883\\u53D8\\u91CF:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"echo $OTEL_SERVICE_NAME\\necho $OTEL_EXPORTER_OTLP_ENDPOINT\\n\")), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u68C0\\u67E5 PHP \\u6269\\u5C55\\u662F\\u5426\\u52A0\\u8F7D:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"php -m | grep opentelemetry\\n\")), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u542F\\u7528\\u8C03\\u8BD5\\u65E5\\u5FD7:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"export OTEL_LOG_LEVEL=debug\\n\")), mdx(\"h4\", {\n    \"id\": \"2-span-未关联\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#2-span-%E6%9C%AA%E5%85%B3%E8%81%94\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"2. Span \\u672A\\u5173\\u8054\"), mdx(\"p\", null, \"\\u786E\\u4FDD\\u6B63\\u786E\\u4F20\\u9012 context:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"$newContext = $span->storeInContext($context);\\ndownstreamFunction($newContext);\\n\")), mdx(\"h4\", {\n    \"id\": \"3-性能问题\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#3-%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"3. \\u6027\\u80FD\\u95EE\\u9898\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u964D\\u4F4E\\u91C7\\u6837\\u7387\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u589E\\u52A0\\u6279\\u91CF\\u5927\\u5C0F\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u4F7F\\u7528\\u5F02\\u6B65\\u5BFC\\u51FA\")), mdx(\"h3\", {\n    \"id\": \"调试技巧\"\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#%E8%B0%83%E8%AF%95%E6%8A%80%E5%B7%A7\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u8C03\\u8BD5\\u6280\\u5DE7\"), mdx(\"h4\", {\n    \"id\": \"启用详细日志\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E5%90%AF%E7%94%A8%E8%AF%A6%E7%BB%86%E6%97%A5%E5%BF%97\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u542F\\u7528\\u8BE6\\u7EC6\\u65E5\\u5FD7\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"export OTEL_LOG_LEVEL=debug\\n\")), mdx(\"h4\", {\n    \"id\": \"使用-console-exporter\"\n  }, mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"#%E4%BD%BF%E7%94%A8-console-exporter\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4F7F\\u7528 Console Exporter\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-php\"\n  }, \"use OpenTelemetry\\\\SDK\\\\Trace\\\\SpanExporter\\\\ConsoleSpanExporter;\\n\\n$tracerProvider = (new TracerProviderBuilder())\\n    ->addSpanProcessor(new BatchSpanProcessor(new ConsoleSpanExporter()))\\n    ->build();\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"下一步\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E4%B8%8B%E4%B8%80%E6%AD%A5\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u4E0B\\u4E00\\u6B65\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/getting-started/environment-variables/\"\n  }, \"\\u73AF\\u5883\\u53D8\\u91CF\\u914D\\u7F6E\"), \" - \\u4E86\\u89E3\\u6240\\u6709\\u914D\\u7F6E\\u9009\\u9879\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/advanced/sampling/\"\n  }, \"\\u9AD8\\u7EA7\\u914D\\u7F6E\"), \" - \\u6DF1\\u5165\\u4E86\\u89E3\\u91C7\\u6837\\u548C\\u6027\\u80FD\\u4F18\\u5316\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/uptrace/overview/\"\n  }, \"Uptrace \\u5E73\\u53F0\\u4F7F\\u7528\"), \" - \\u4E86\\u89E3\\u5982\\u4F55\\u4F7F\\u7528 Uptrace \\u5E73\\u53F0\")), mdx(\"h2\", {\n    \"id\": \"参考资源\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#%E5%8F%82%E8%80%83%E8%B5%84%E6%BA%90\",\n    \"aria-hidden\": true,\n    \"className\": \"anchor\"\n  }, mdx(\"svg\", {\n    \"aria-hidden\": \"true\",\n    height: \"16\",\n    version: \"1.1\",\n    viewBox: \"0 0 16 16\",\n    width: \"16\"\n  }, mdx(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"\\u53C2\\u8003\\u8D44\\u6E90\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://opentelemetry.io/docs/languages/php/\"\n  }, \"OpenTelemetry PHP Documentation\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://opentelemetry.io/docs/zero-code/php/\"\n  }, \"OpenTelemetry PHP Zero-Code\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/open-telemetry/opentelemetry-php\"\n  }, \"OpenTelemetry PHP GitHub\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://opentelemetry.io/docs/specs/semconv/\"\n  }, \"PHP Semantic Conventions\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#php-语言-opentelemetry-接入指南","title":"PHP 语言 OpenTelemetry 接入指南","items":[{"url":"#目录","title":"目录"},{"url":"#概述","title":"概述","items":[{"url":"#php-语言特性","title":"PHP 语言特性"},{"url":"#版本要求","title":"版本要求"},{"url":"#支持的信号","title":"支持的信号"},{"url":"#适用场景","title":"适用场景"}]},{"url":"#零代码接入推荐","title":"零代码接入（推荐）","items":[{"url":"#快速开始5-分钟","title":"快速开始（5 分钟）","items":[{"url":"#1-安装-opentelemetry-php-扩展","title":"1. 安装 OpenTelemetry PHP 扩展"},{"url":"#2-安装-sdk-和自动埋点库","title":"2. 安装 SDK 和自动埋点库"},{"url":"#3-配置环境变量","title":"3. 配置环境变量"},{"url":"#4-启动应用","title":"4. 启动应用"}]},{"url":"#工作原理","title":"工作原理"},{"url":"#支持的自动埋点库","title":"支持的自动埋点库","items":[{"url":"#web-框架","title":"Web 框架"},{"url":"#http-客户端","title":"HTTP 客户端"},{"url":"#数据库","title":"数据库"},{"url":"#缓存","title":"缓存"}]},{"url":"#环境变量详解","title":"环境变量详解"},{"url":"#不同运行环境的配置","title":"不同运行环境的配置","items":[{"url":"#php-cli","title":"PHP CLI"},{"url":"#php-fpm","title":"PHP-FPM"},{"url":"#apache","title":"Apache"},{"url":"#docker","title":"Docker"}]},{"url":"#验证零代码接入","title":"验证零代码接入","items":[{"url":"#快速验证","title":"快速验证"}]},{"url":"#日志级别配置","title":"日志级别配置"}]},{"url":"#sdk-手动接入","title":"SDK 手动接入","items":[{"url":"#安装依赖","title":"安装依赖"},{"url":"#基础初始化","title":"基础初始化","items":[{"url":"#创建-opentelemetry-初始化文件","title":"创建 OpenTelemetry 初始化文件"},{"url":"#在应用中使用","title":"在应用中使用"}]},{"url":"#traces---手动埋点","title":"Traces - 手动埋点","items":[{"url":"#创建和使用-span","title":"创建和使用 Span"},{"url":"#context-传播","title":"Context 传播"}]},{"url":"#metrics---指标采集","title":"Metrics - 指标采集","items":[{"url":"#counter计数器","title":"Counter（计数器）"},{"url":"#histogram直方图","title":"Histogram（直方图）"},{"url":"#updowncounter升降计数器","title":"UpDownCounter（升降计数器）"}]},{"url":"#logs---日志集成","title":"Logs - 日志集成","items":[{"url":"#集成-monolog","title":"集成 Monolog"}]}]},{"url":"#框架集成示例","title":"框架集成示例","items":[{"url":"#laravel-框架集成","title":"Laravel 框架集成","items":[{"url":"#使用-service-provider","title":"使用 Service Provider"},{"url":"#使用-middleware","title":"使用 Middleware"}]},{"url":"#symfony-框架集成","title":"Symfony 框架集成","items":[{"url":"#使用-event-subscriber","title":"使用 Event Subscriber"}]},{"url":"#slim-框架集成","title":"Slim 框架集成"}]},{"url":"#数据库集成","title":"数据库集成","items":[{"url":"#pdo-集成","title":"PDO 集成"},{"url":"#mysqli-集成","title":"MySQLi 集成"},{"url":"#mongodb-集成","title":"MongoDB 集成"},{"url":"#redis-集成","title":"Redis 集成"}]},{"url":"#高级配置","title":"高级配置","items":[{"url":"#自定义采样策略","title":"自定义采样策略"},{"url":"#多-exporter-配置","title":"多 Exporter 配置"},{"url":"#性能优化配置","title":"性能优化配置"}]},{"url":"#最佳实践","title":"最佳实践","items":[{"url":"#1-context-传递","title":"1. Context 传递"},{"url":"#2-错误处理","title":"2. 错误处理"},{"url":"#3-资源管理","title":"3. 资源管理"}]},{"url":"#故障排查","title":"故障排查","items":[{"url":"#常见问题","title":"常见问题","items":[{"url":"#1-数据未发送到后端","title":"1. 数据未发送到后端"},{"url":"#2-span-未关联","title":"2. Span 未关联"},{"url":"#3-性能问题","title":"3. 性能问题"}]},{"url":"#调试技巧","title":"调试技巧","items":[{"url":"#启用详细日志","title":"启用详细日志"},{"url":"#使用-console-exporter","title":"使用 Console Exporter"}]}]},{"url":"#下一步","title":"下一步"},{"url":"#参考资源","title":"参考资源"}]}]}}},"pageContext":{"id":"4bda5b4b-7e5b-598c-8eb0-be3ae22ccc06"}},
    "staticQueryHashes": ["1122327541","1339625561","148928582","2007862104","2140385554","3442269102","4275725850"]}