最近看到公司运维用了一些全链路追踪的东西,感觉很高大上,然而都是一些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
函数来实现服务的区分。
网友评论