PHP 全链路追踪 Molten

最近看到公司运维用了一些全链路追踪的东西,感觉很高大上,然而都是一些java的项目在用,php已经救不了中国人了。于是简单搜了下PHP有没有类似的东西,果然发现了Molten。

Molten可以认为是phptrace的的升级版,增加了可视化分布式等等等等的功能吧,主要用了phptrace的信息收集这块。

看下Molten能干啥吧

molten追踪php核心调用库运行时信息并且按照zipkin/optracing格式输出信息。
可以追踪`curl,pdo,mysqli,redis,mongodb,memcached` 这么多的运行信息。

灰常牛逼啊,你可以直接看到你耗时比较久的接口的运行信息,调用信息,一眼就能看到哪个地方拖累了你。是不是真的6

接下来安装。直接参考官方的安装,此处略过。

接下来配置,官方说的很清楚了,此处贴上我的配置

[molten]
extension="/usr/lib/php/extensions/no-debug-non-zts-20131226/molten.so"
molten.enable="1"
molten.service_name="local"
molten.tracing_cli=1
molten.open_report=1
molten.sampling_type=2
molten.sampling_rate=1
molten.notify_uri="http://127.0.0.1:9411/zipkin/"
molten.sink_http_uri="http://127.0.0.1:9411/api/v1/spans"
molten.sink_type=4
molten.sink_log_path="/project/molten/logs/"

重新启动fpm后。进入molten的源码目录的example目录。执行sh run.sh前提是装了java环境或者docker环境。打开浏览器http://127.0.0.1:9411/zipkin/就可以看到信息了。

来一段代码

curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
phpinfo();

再看zipkin就有了数据,点进去就看到具体的调用信息了。


image.png

Tip:
好像file_get_contents追踪不到
由于很多场景都是同一个PHP环境都是运行了很多项目,改php.ini还是有很多不方便。可以在入口文件通过ini_set函数来实现服务的区分。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,301评论 19 139
  • 在各大厂分布式链路跟踪系统架构对比中已经介绍了几大框架的对比,如果想用免费的可以用zipkin和pinpoint还...
    欢醉阅读 5,928评论 2 2
  • 0 问题背景 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不...
    七寸知架构阅读 39,609评论 8 91
  • “高级”朋友 容我先解释一下什么是高级朋友,即不仅可以闲扯,还可以交流想法。 生活中低级朋友随处可见,而同他们只适...
    仙剑李逍遥阅读 2,425评论 2 0
  • 唯有爱与包容,才可治愈心灵。 ——题记 0 周灵对自己没有花的生活,也觉得很自然。 她家的房子,虽然带着一个有点小...
    点壹阅读 3,561评论 3 3