前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Skywalking Php系统一:介绍&安装

Skywalking Php系统一:介绍&安装

作者头像
心平气和
发布2020-09-11 11:25:22
4.1K0
发布2020-09-11 11:25:22
举报

不知道大家在工作中有没碰到这样的问题:

1、线上某个请求突然特别慢,但又不知道是哪里慢;

2、某个请求突然返回500,也不知道是哪里出错了;

如果没有什么工具, 我们能做的是在服务器上找日志,做分析;如果机器比较多,还得一台一台定位和分析,效率低而且难度较高。

今天介绍一款利器:Skywalking,可以让大家快速解决上述场景下的问题。

Skywalking是一个 APM(应用性能管理)工具,可以完整、详细的追踪应用的调用情况,即可以看到每次请求访问多少次数据库、Redis,还有Curl请求,及每个请求的响应时间,以及是否执行出错;

Skywalking 可以快速定位系统中哪些调用导致系统变慢,也可以快速定位是哪里导致请求返回非200。

官方地址:http://skywalking.apache.org/

Skywalking Php是Php的实现,即可以跟踪Php编写的程序的调用情况。

官方地址:https://github.com/SkyAPM/SkyAPM-php-sdk。

一、安装

1、安装gcc

gcc必须4.9以上版本,我安装的是4.9的,具体安装步骤如下:

代码语言:javascript
复制
1、下载
mkdir -p /root/gcc

cd /root/gcc

wget -c http://mirror.koddos.net/gcc/releases/gcc-4.9.0/gcc-4.9.0.tar.bz2

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

下载地址:https://github.com/protocolbuffers/protobuf

注意,版本必须为 3.7.0 以上版本,我选择的是3.7.x

解压后进入代码根目录,执行以下命令

./autogen.sh

make && make install

3、安装grpc

下 载地址:https://github.com/grpc/grpc

解压后进入代码根目录后,执行以下命令:

git submodule update --init

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<unsigned>(cpu) >= gpr_cpu_num_cores()) { // 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库

代码语言:javascript
复制
1、下载 https://www.boost.org/users/history/
选择 1.64.0


2、解压后运行

./bootstrap.sh --with-libraries=all --with-toolset=gcc

./b2 install

然后编译client

cd src/report/

make

编译成功会产生report_client这个可执行文件。

7、配置

参考 :

https://github.com/SkyAPM/SkyAPM-php-sdk/blob/master/docs/install-agent.md

在php.ini加入以下配置

代码语言:javascript
复制
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的调用;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、安装gcc
    • 3、安装grpc
      • 4、安装其它库
        • 5、配置grpc, protobuf,可以被SkyWaling php编译找到
          • 6、编译Skywalking php
            • 7、编译client
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档