不知道大家在工作中有没碰到这样的问题:
1、线上某个请求突然特别慢,但又不知道是哪里慢;
2、某个请求突然返回500,也不知道是哪里出错了;
如果没有什么工具, 我们能做的是在服务器上找日志,做分析;如果机器比较多,还得一台一台定位和分析,效率低而且难度较高。
今天介绍一款利器:Skywalking,可以让大家快速解决上述场景下的问题。
Skywalking是一个 APM(应用性能管理)工具,可以完整、详细的追踪应用的调用情况,即可以看到每次请求访问多少次数据库、 Redis ,还有Curl请求,及每个请求的响应时间,以及是否执行出错;
Skywalking 可以快速定位系统中哪些调用导致系统变慢,也可以快速定位是哪里导致请求返回非200。
官方 地址 :
Skywalking Php是Php的实现,即可以跟踪Php编写的程序的调用情况。
官方地址:。
一、安装
1、安装 gcc
gcc必须4.9以上版本,我安装的是4.9的,具体安装步骤如下:
1、下载
mkdir -p / root /gcc
cd /root/gcc
wget -c
2、解压
tar jxf gcc-4.9.0.tar.bz2
cd gcc-4.9.0
3、预下载依赖源码包
./contrib/download_prerequisites
配置编译文件
./configure --prefix=/opt/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib # 机器是64位的,就不使用32位的包了,--disable-multilib
5、编译
make -j4 #如果有多核CPU尽量都用上,要编译很久
6、安装
make install
7、添加环境变量
echo 'export PATH=/opt/gcc/bin:$PATH' >> /etc/profile
8、生效变量
source /etc/profile
2、安装protobuf
下载地址:
注意,版本必须为 3.7.0 以上版本,我选择的是3.7.x
解压后进入代码根目录,执行以下命令
./autogen.sh
make && make install
3、安装gr pc
下 载地址:
解压后进入代码根目录后,执行以下命令:
git submodule update — ini t
make && make install
如出现错误
protoc: error while loading shared libraries: libprotobuf.so.18: cannot open shared object file: No such file or directory
请修改/etc/ld.so.conf加入动态库路径后执行ldconfig
如发现错误:Cannot handle hot-plugged CPUs
修改文件 src/core/lib/gpr/cpu_linux.cc 注释掉75行代码
if (static_cast
// gpr_log(GPR_ERROR, “Cannot handle hot-plugged CPUs”);
return 0;
}
4、安装其它库
安装 uuid-devel pkg-config 库
CentOS可以使用yum安装
5、配置grpc, protobuf,可以被SkyWaling php编译找到
cp /opt/grpc/third_party/protobuf/protobuf.pc /usr/lib64/pkgconfig/
cp /opt/grpc/libs/opt/pkgconfig/grpc++.pc /usr/lib64/pkgconfig/
cp /opt/grpc/libs/opt/pkgconfig/grpc.pc /usr/lib64/pkgconfig/
cp /opt/grpc/libs/opt/pkgconfig/gpr.pc /usr/lib64/pkgconfig/
6、编译Skywalking php
先编译php源代码
Skywalking要求Php的版本>=7.0以上,我在开发环境选择的是7.2.17。
再编译Skywalking Php,这里就不详述了,参考一般的扩展。
7、编译client
client是用来将Skywalking产生的跟踪文件上传到服务器。
先安装boost库
1、下载
选择 1.64.0
2、解压后运行
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2 install
然后编译client
cd src/report/
make
编译成功会产生report_client这个可执行文件。
7、配置
参考 :
在php.ini加入以下配置
extension=skywalking.so
skywalking.enable=1
skywalking.version = 6
skywalking.app_code = xxx
skywalking.grpc = 127.0.0.1:11800
启动client
./report_client 127.0.0.1:11800 /tmp/
第 二个参数为服务器地址;
第三个参数为文件保存路径,和php.ini保持一致。
左边是每一个调用,包括访问的curl、redis、mysql,右边是每个调用所耗时间,是不是很直观的就知道是哪里调用比较慢。
二、功能
Skywalking最新版本可以拦截以下调用:
1、Curl
标准curl库调用,即curl_exec之类的调用;
Yar_Client的调用;
2、Redis
Redis和RedisCluster的调用;
3、Mysql
可以拦截PDO和mysqli的调用;
相关文章
- 22 PHP 设计模式系列「命令模式(Command)」
- openssl 证书请求和自签名命令 req 详解
- curl 模拟 GET\POST 请求,以及 curl post 上传文件
- 看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了
- 「Laravel系列3.1」一个请求的前世今生
- 3分钟短文 | Linux 使用curl发起post请求的4个常用方式
- Java面试-如何获取客户端真实IP
- 前端架构师破局技能,NodeJS 落地 WebSocket 实践
- requests (一): 发送一个 json 格式的 post 请求
- 面试java开发被问“cookie、session、token”问题,教你搞懂
本站已关闭游客评论,请登录或者注册后再评论吧~