区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载导读Zipkin Tracer 是 EOSIO 将 nodeos 运行链路交易提交、区块接收、SHiP 数据推送等以分布式追踪 Span 的形式上报给 Zipkin 为主体结合 chain_plugin、net_plugin、state_history_plugin 等源码完整讲解telemetry-url、telemetry-service-name、telemetry-timeout-us三个参数的用法、nodeos 启停方式、典型 Trace 形态以及各模块的埋点位置。读完本文你将能独立为本地或远程 Zipkin 服务接入 nodeos 的遥测数据并读懂 Zipkin UI 中的每一类 Span。一、Zipkin 与 EOSIO 的遥测架构Zipkin 是一套分布式追踪系统用于采集并检索服务架构中的时序数据帮助排查延迟问题它既能收集各组件上报的追踪信息也提供查询与可视化能力Zipkin UI。在 EOSIO 中Zipkin serviceZipkin 服务本身可以安装在本机也可以部署在远程节点Zipkin tracerEOSIO 侧的追踪组件负责把 Span 发送给 Zipkin 服务。从源码调用关系看Zipkin tracer 的配置入口位于 plugins/chain_plugin/chain_plugin.cppfc::zipkin_config::init调用即 EOSIO 是通过核心chain_plugin向用户暴露该能力的这正对应原文档所述EOSIO makes available Zipkin tracer through the core chain_plugin。底层fc::zipkin_config的实现在libraries/fc本仓库中以子模块形式引入当前目录为空占位因此对发送机制的理解以官方文档与各插件调用点为依据。二、如何启用 Zipkin Tracer启用方式非常简单在启动 nodeos 时为chain_plugin设置telemetry-url参数即可开启 tracer。相关参数在 chain_plugin.cpp 中以 boost::program_options 注册共三个参数说明默认值telemetry-urlZipkin 服务的 URL例如本机部署时为http://127.0.0.1:9411/api/v2/spans无不设置则 tracer 不启用telemetry-service-name随每个 Span 发送的 ZipkinlocalEndpoint.serviceName用于在 Zipkin UI 中标识服务来源nodeostelemetry-timeout-us可选参数指定发送 Zipkin Span 的超时时间微秒200000即 200 毫秒2.1 三个参数的语义细节结合源码与文档逐条展开telemetry-url唯一必填项。设置后 chain_plugin 启动阶段才会调用fc::zipkin_config::init(...)见 chain_plugin.cpp。URL 必须指向 Zipkin 的 v2 Span 接收端点/api/v2/spans。官方文档给出的本机示例http://127.0.0.1:9411/api/v2/spans。Zipkin 默认监听9411端口若服务部署在远程主机将该地址替换为远程主机地址即可。telemetry-service-name控制 Zipkin Span 中localEndpoint.serviceName字段该字段决定 Span 在 Zipkin UI 中归入哪个服务名下。源码中其默认值被固定为字符串nodeoschain_plugin.cpp因此即使不显式设置Span 也会以nodeos为服务名展示。telemetry-timeout-us控制单次 HTTP POST 的允许耗时上限微秒默认200000200ms。超过该时间即视为发送失败。2.2 实际的 nodeos 启动命令示例本机已运行 Zipkin 服务时的完整启动方式chain_plugin是 nodeos 默认加载的插件直接传参即可nodeos \ --data-dir ./data \ --config-dir ./config \ --telemetry-url http://127.0.0.1:9411/api/v2/spans \ --telemetry-service-name nodeos \ --telemetry-timeout-us 200000其中--telemetry-url与--telemetry-timeout-us的完整说明文本与源码注册内容完全一致见 chain_plugin.cpp可借助nodeos --help查看--telemetry-url arg Send Zipkin spans to url. e.g. http://127.0.0.1:9411/api/v2/spans --telemetry-service-name arg Zipkin localEndpoint.serviceName sent with each span --telemetry-timeout-us arg Timeout for sending Zipkin span.2.3 除 chain_plugin 外的同款入口rodeos cloner_plugin从源码看Zipkin 遥测入口不止 nodeos 一处programs/rodeos的cloner_plugin同样注册了telemetry-url等参数并在启动时调用fc::zipkin_config::init(...)、关闭时调用fc::zipkin_config::shutdown()见 programs/rodeos/cloner_plugin.cpp。这意味着 rodeos 的区块克隆/流式处理链路同样可接入 Zipkin 观测。三、Span 发送机制与容错行为原文档明确描述了 tracer 的发送模型这是理解后续 Trace 形态的关键异步发送Zipkin tracer 通过独立线程以 HTTP POST 请求向 Zipkin 服务发送 Span数据格式为JSON。因此遥测上报不会阻塞 nodeos 主链处理逻辑。超时控制每次 HTTP POST 允许的耗时由telemetry-timeout-us决定默认 200000 微秒 200ms超时即判定本次发送失败。熔断机制连续 9 次发送失败将自动禁用 Zipkin tracer直到 nodeos 守护进程重启才会恢复。这意味着当 Zipkin 服务不可达或网络异常时nodeos 不会无限重试拖垮自身而是静默关闭遥测以自保。关闭节点时chain_plugin 会调用zipkin_config::shutdown()完成清理见 chain_plugin.cpp确保 tracer 线程与连接资源被正确释放。四、启用后可观察到的典型 Trace一旦 tracer 启用Zipkin UI 中会出现按事务/区块维度组织的分布式追踪。原文档给出了四类典型示例均取自真实运行的 Zipkin 界面截图图片位于 docs/01_nodeos/06_logging/20_third_party_logging/4.1 提交交易Submitted transaction当客户端通过 RPC 接口提交交易时产生提交交易Trace4.2 处理交易Processed transaction交易进入链处理流程后产生处理交易Trace4.3 区块接受Block accepted节点接受并验证新区块时产生区块接受Trace4.4 SHiP 推送SHiP Accepted状态历史State History插件通过 SHiP 协议向订阅者推送区块数据时产生SHiP 接受Trace五、源码级埋点位置这些 Trace 从哪来原文档展示了四类 Trace 的结果而埋点位置散落在不同插件的源码中这里逐一对应便于读者在阅读代码或排查问题时快速定位5.1 交易提交与处理chain_pluginchain_plugin在push_transaction与send_transaction两个 RPC 路径上均创建了追踪链收到 HTTP 请求时创建根 Trace 与首个 Spanfc_create_trace_with_id(Transaction, trx_id)fc_create_span(trx_trace, HTTP Received)并打上trx_id、method如push_transaction标签交易处理完成后再挂载Processed子 Span附加block_num、block_time、elapsed耗时纳秒、status交易状态等标签若处理异常则打error标签记录异常信息见 chain_plugin.cpp 与 chain_plugin.cpp。这正好对应上述提交交易与处理交易两类 Trace一个 Trace 从 HTTP 接收一直延伸到区块打包完成elapsed标签可直接用于延迟分析。5.2 区块接受net_pluginnet_plugin在收到对端节点广播的区块accepted_block回调时创建Block根 Trace 与AcceptedSpan附加block_id、block_num、block_time标签见 plugins/net_plugin/net_plugin.cpp对应区块接受Trace。5.3 SHiP 推送state_history_pluginstate_history_plugin在向订阅者发送get_blocks_result时若fc::zipkin_config::is_enabled()为真则创建BlockTrace 与SHiP-SendSpan附加block_id、block_num、block_time标签见 plugins/state_history_plugin/state_history_plugin.cpp对应SHiP 推送Trace。从上述埋点可以推断Zipkin 遥测覆盖了 RPC 入站chain_plugin、P2P 出块/同步net_plugin、状态历史分发state_history_plugin三大核心路径Span 命名HTTP Received、Processed、Accepted、SHiP-Send与截图中的 Trace 层级一一对应。六、日常使用与排障建议确认 tracer 是否生效检查 Zipkin UI 中服务列表是否出现nodeos对应telemetry-service-name。若未出现先确认telemetry-url端点可达curl -X POST http://zipkin-host:9411/api/v2/spans -d []应返回 202。超时参数调优高负载场景下若 Span 频繁发送失败可适当调大telemetry-timeout-us反之若 Zipkin 与 nodeos 同机且网络极佳可调小以更快暴露问题。注意熔断恢复前提连续 9 次失败后 tracer 被禁用只有重启 nodeos 才会重新启用。因此若 Zipkin 短暂宕机后恢复必须重启 nodeos 才能恢复遥测这是设计上的既定行为非 Bug。分析延迟在 Zipkin UI 中点击任一 Trace观察HTTP Received → Processed各 Span 的耗时源码中的elapsed标签即为交易处理耗时即可快速定位是 RPC 排队、wasm 执行还是落库环节引入延迟。总结Zipkin Tracer 为 EOSIO 提供了开箱即用的分布式追踪能力只需在 nodeos 启动参数中设置telemetry-url即可让 chain_plugin、net_plugin、state_history_plugin 等模块将交易提交、区块接受、SHiP 推送等关键路径以 JSON Span 的形式异步上报至 Zipkin并通过telemetry-service-name、telemetry-timeout-us控制服务标识与发送超时。结合 20_zipkin_tracer.md 文档、chain_plugin.cpp 中的参数注册与埋点以及 10_deep_mind_logger.md 所代表的另一类链上日志观测手段开发者可以构建起从交易到区块的完整可观测体系。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO nodeos 日志与追踪配置完全指南从 logging.json 到 Deep-mind 与 ZipkinEOSIO nodeos 日志与追踪配置完全指南从 logging.json 到 Deep mind 与 Zipkin nodeos 是 EOSIO 智能合约区块链Home Assistant SmartTub 主过滤循环配置指南2 个参数把过滤排进夜间低谷Home Assistant SmartTub 主过滤循环配置指南2 个参数把过滤排进夜间低谷 Home Assistant 的 SmartTub 集成提供了文档教程智能家居物联网Apache APISIX zipkin 插件实战指南基于 Zipkin API 规范的分布式链路追踪接入与配置详解Apache APISIX zipkin 插件实战指南基于 Zipkin API 规范的分布式链路追踪接入与配置详解 导读 zipkin 插件是 ApacheAPI网关后端云原生微服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
机械创新设计大赛作品集制作指南:从内容骨架到PDF输出避坑 简介:这是一份机械创新设计大赛获奖作品集,收录了多所高校在助老助残辅具领域的代表性参赛方案,适合机械设计、工业设计及康复工程相关专业的学生与指导教师参考。PDF 共 1 个文件,约 982KB,内容以参赛作品图文方案和设… · 2026/9/23 23:44:23
USDT多链收款平台:一套SDK打通TRC20/ERC20/BEP20/Polygon 简介:这是一套面向开发者与支付系统集成方的 USDT 收款接口服务资源,聚焦 Tron(波场)生态,提供 USDT-TRC20 与 TRX 的完整收款方案,适合需要为平台快速接入加密货币支付、又希望降低对接成本的技术人员。资… · 2026/9/24 0:18:33
结构化数据实战指南:JSON-LD与微数据选型与避坑 1. 这不是“加个标签”那么简单:微数据和结构化数据到底在解决什么问题? 你有没有遇到过这样的场景:自己辛辛苦苦写了一篇关于“北京故宫门票预约指南”的HTML页面,图文并茂、逻辑清晰、SEO关键词也埋得恰到好处,结果… · 2026/9/24 0:18:33
针织品瑕疵检测数据集:YOLOv9标注样本库实战指南 简介:这是一份面向目标检测学习与纺织工业质检场景的针织品瑕疵检测数据集,采用YOLOv9标注格式,适合需要快速搭建瑕疵识别模型的开发者或研究人员。数据包共105个文件,其中52张JPG原图与52个对应的TXT标注文件一一匹配,… · 2026/9/24 0:18:08
肝癌影像AI诊断实战:从DICOM到模型训练的医疗影像处理指南 简介:肝癌影像AI诊断项目代码包,面向医疗影像研究与深度学习开发者(尤其是相关课题的学生或算法工程师),提供一套基于Python的肝癌医学影像分析与诊断流程。环境基于Anaconda Python 3.6,依赖TensorFlow 1.… · 2026/9/24 0:18:08
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44