molten:PHP 应用透明链路追踪工具

本文和大家分享的主要是php中应用透明链路追踪工具molten相关内容,一起来看看吧,希望对大家学习php有所帮助。
molten
molten是应用透明链路追踪工具。
molten追踪php核心调用库运行时信息并且按照zipkin/optracing格式输出信息。
molten提供多种sapi, 多种采样类型, 上报追踪状态, 模块控制和多种数据落地 类型等功能。
依赖于molten很容易构建基于php语言的 分布式全链路追踪系统 目前已经运行在生产环境上千台机器上。
目录
安装
以下是你需要做的安装molten在你的系统上。
phpize
./configuremake && make install
make install 复制 molten.so 到确切的位置, 但是你还需要开启模块在php配置中,编辑你自己的php.ini或者添加molten.ini在 /etc/php5/conf.d , 并且添加如下内容: extension=molten.so 。
在 ./configure 阶段, 你也可以添加 --enable-zipkin-header=yes 支持zipkin B3 header。
快速开始
cd examplesh run.sh
在浏览器中打开 http://127.0.0.1:9411/zipkin/ , 能够看见链路信息。
如果你认为上述太简单,你可以做下面的操作。
cd examplesh complex.sh
怎么样,是不是很酷。
注意 如果没有看到详细信息,那么EndTime选项中添加1小时。
配置
基础配置
molten.enable 1开启0关闭, 默认 1 。
molten.service_name 设置应用服务名, 默认 default 。
molten.tracing_cli 1追踪cli模式下信息, 0关闭, 默认 0 。
采样配置
molten.sampling_type 类型类型, 1采样率控制, 2通过每分钟request数, 默认是 1 。
molten.sampling_request 采样类型是请求数采样,每分钟的采样请求数, 默认是 10 。
molten.sampling_rate_base 采样类型是采样率时,每个请求的采样几率, 默认是 256 。
控制模块配置
molten.notify_uri 通知管理中心的uri。
上报模块配置
上报模块使用和数据模块相同的输出类型。
molten.report_interval 数据模块调用间隔, 默认 60 。
molten.report_limit 数据上报请求上限, 默认 100 。
数据模块
molten.sink_type 数据落地类型, 1 写入文件, 文件地址依赖 molten.sink_log_path , 2 写入到标准输出, 3 写入到syslog中, 4 通过curl发送, 发送地址依赖 molten.sink_http_uri .
molten.output_type 输出全部追踪块(span)( 1 ) 或者一行输出一个块( 2 )。
molten.sink_log_path 写入文件地址。
molten.sink_http_uri 发送http地址。
molten.sink_syslog_unix_socket 发送日志到syslog udp unixdomain日志收集源中。
追踪块配置
molten.span_format 追踪块格式(span), 不同的追踪系统选择 zipkin 或者 opentracing 。
验证
php -d extension=molten.so -d molten.enable=1 -d molten.sink_type=2 -d molten.tracing_cli=1 -d molten.sampling_rate=1 -r ’$c=curl_init("http://localhost:12345");curl_exec($c);’
可以看到如下输出:
[{"traceId":"%s","name":"php_curl","version":"php-4","id":"1.1","parentId":"1","timestamp":%d,"duration":%d,"annotations":[{"value":"cs","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}},{"value":"cr","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}}],"binaryAnnotations":[{"key":"http.url","value":"http:\/\/localhost:12345\/","endpoint":{"serviceName":"%s","ipv4":"%s"}},{"key":"error","value":"Failed
connect to localhost:12345; Connection
refused","endpoint":{"serviceName":"%s","ipv4":"%s"}}]},{"traceId":"%s","name":"cli","version":"php-4","id":"1","timestamp":%d,"duration":%d,"annotations":[{"value":"sr","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}},{"value":"ss","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}}],"binaryAnnotations":[{"key":"path","value":"-","endpoint":{"serviceName":"%s","ipv4":"%s"}}]}]
功能
从上述配置中,你可以看到我们提供的功能。
拦截器
molten 拦截 curl,pdo,mysqli,redis,mongodb,memcached扩展,构建运行时追踪信息. 支持全链路追踪功能, molten 替换了curl_exec,curl_setopt,curl_setopt_array函数, 并且在请求中添加了链路头(x-w-traceid, x-w-spanid and so on)。
定制化的链路格式, 支持两个流行格式( zipkin 和 opentracing )。
采样
两种不同的采样方式并且能够通过控制模块进行修改。
数据落地
molten当前支持3种数据落地方式,标准输出,文件,http。并且能够选择输出的位置。
控制
使用http协议控制探针的行为。
查看molten的状态, 通过GET方法请求 http://domain/molten/status 。
输出内容如下,已经适配了 prometheus 格式。
# HELP molten_request_all Number of all request.# TYPE molten_request_all counter
molten_request_all %d# HELP molten_request_capture Number of request be capture.# TYPE molten_request_capture counter
molten_request_capture %d# HELP molten_sampling_type the type of sampling.# TYPE molten_sampling_type gauge
molten_sampling_type %d# HELP molten_sampling_rate the rate of sampling.# TYPE molten_sampling_rate gauge
molten_sampling_rate %d# HELP molten_sampling_request the request be capture one min.# TYPE molten_sampling_request gauge
molten_sampling_request %d
修改molten采样方式, 使用POST方法请求 http://domain/molten/status 。
数据是json格式,字段和配置项中的含义是一致的。
{"enable":1,"samplingType":2,"samplingRate":20,"samplingRequest":100}
上报
上报模块能够记录,molten并没有采样样到的关键数据信息。

来源:Github

时间: 2024-10-18 03:52:04

molten:PHP 应用透明链路追踪工具的相关文章

一文读懂链路追踪

背景介绍 在微服务横行的时代,服务化思维逐渐成为了程序员的基本思维模式,但是,由于绝大部分项目只是一味地增加服务,并没有对其妥善管理,当接口出现问题时,很难从错综复杂的服务调用网络中找到问题根源,从而错失了止损的黄金时机. 而链路追踪的出现正是为了解决这种问题,它可以在复杂的服务调用中定位问题,还可以在新人加入后台团队之后,让其清楚地知道自己所负责的服务在哪一环. 除此之外,如果某个接口突然耗时增加,也不必再逐个服务查询耗时情况,我们可以直观地分析出服务的性能瓶颈,方便在流量激增的情况下精准合理

阿里云发布链路追踪服务Tracing Analysis

摘要: 近日,在杭州云栖大会上,阿里云发布了链路追踪服务Tracing Analysis,成本是自建链路追踪系统的1/5或更少,可为分布式应用的开发者提供完整的调用链路还原.调用请求量统计.链路拓扑.应用依赖分析等工具,帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率. 近日,在杭州云栖大会上,阿里云发布了链路追踪服务Tracing Analysis,成本是自建链路追踪系统的1/5或更少,可为分布式应用的开发者提供完整的调用链路还原.调用请求量统计.链路拓扑.应

链路追踪和应用性能监控有哪些区别?

概要 阿里云上最近推出了一款新产品 链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率. 分布式应用环境下的链路追踪,并不是一个新话题.在早些时间,阿里云产品 业务实时监控服务 也有类似功能推出.那么链路追踪和业务实时监控服务在产品功能层面到底有什么样的区别和联系?本文将给出概要说明. 以下从产品定位,接入方式,以及使用成本 三个方面来比较 业务实时监控服务 和 链路追踪两款产品. 产品定位 从功能定位上看,业务实时监控服务定位于重量级的应用性能

阿里云产品专家解读链路追踪(Tracing Analysis)

摘要: 概要 阿里云上最近推出了一款新产品 链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率. 分布式应用环境下的链路追踪,并不是一个新话题.在早些时间,阿里云产品 业务实时监控服务 也有类似功能推出. 阿里云上最近推出了一款新产品链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率,并省去用户搭建各类链路监控应用(Jaeger, Zipkin等)和相关存储服务(Hbase, ElasticSea

[系列] go-gin-api 路由中间件 - Jaeger 链路追踪(五)

概述 首先同步下项目概况: 上篇文章分享了,路由中间件 - 捕获异常,这篇文章咱们分享:路由中间件 - Jaeger 链路追踪. 啥是链路追踪? 我理解链路追踪其实是为微服务架构提供服务的,当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪. 咱们先看一张图: 这张图的调用链还比较清晰,咱们想象一下,随着服务的越来越多,服务与服务之间调用关系也越来越多,可能就会发展成下图的情况. 这调用关系真的是... 看到这,我的内心是崩溃的. 那么问

基于 SkyWalking 实现服务链路追踪

SkyWalking简介 SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集.分析.聚合以及可视化数据.SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统.SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计 SkyWalking 在逻辑上分为四部分:探针.平台后端.存储和用户界面.其架构图如下:

分布式链路追踪系统预研第二篇

本文为博主原创文章,未经博主允许不得转载. 在上篇随笔后,分布式链路在缓慢推进.一直没什么兴致写,zipkin使用elasticsearch作为数据完全是可行的.但是揉合这两者,就存在两种方案: 第一种,保持zipkin,替换掉存储.即保持zipkin架构,替换掉默认数据存储,改用elasticsearch作为存储.这完全是可行的,但是做出来的也仅仅是一个分布式链路追踪系统.zipkin官方有相应的多数据源的实现源码,有兴趣大家可以自行去git上看. 由于我们想要的不只是分布式链路追踪系统,我们

基于zipkin分布式链路追踪系统预研第一篇

分布式服务追踪系统起源于Google的论文“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”(译文可参考此处),Twitter的zipkin是基于此论文上线较早的分布式链路追踪系统了,而且由于开源快速被各社区所研究,也诞生了很多的版本. 在这里也是对zipkin进行研究,先贴出Twitter zipkin结构图. 结构比较简单,大概流程为: Trace数据的收集至Scribe(Facebook开源的日志传输通路)或

zipkin分布式链路追踪系统

基于zipkin分布式链路追踪系统预研第一篇 分布式服务追踪系统起源于Google的论文“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”(译文可参考此处),Twitter的zipkin是基于此论文上线较早的分布式链路追踪系统了,而且由于开源快速被各社区所研究,也诞生了很多的版本. 在这里也是对zipkin进行研究,先贴出Twitter zipkin结构图. 结构比较简单,大概流程为: Trace数据的收集至Scr