linux安装sky-php-agent(skywalking php agent)

安装php扩展

1
2
3
4
5
cd /data
curl -Lo v3.3.2.tar.gz https://github.com/SkyAPM/SkyAPM-php-sdk/archive/v3.3.2.tar.gz
tar zxvf v3.3.2.tar.gz
cd SkyAPM-php-sdk-3.3.2
/www/server/php/73/bin/phpize && ./configure --with-php-config=/www/server/php/73/bin/php-config && make && make install

我这里用的是宝塔,所以这里的路径是宝塔安装的PHP的路径

安装go解析器和依赖

因为sky-php-agent目前8.0版本,使用了go,默认情况下,linux系统没有安装go,所以需要先进行安装。我这里用的是centos7,其他系统可以用相应的命令进行安装

1
yum install go

因为目前go的grpc依赖的地址发生了变化,所以,如果此时直接进行后续的安装,会出现错误
go: google.golang.org/[email protected]: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
所以,我们需要先变更一下依赖安装的方式

1
2
3
4
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPRIVATE=.gitlab.com,.gitee.com
go env -w GOSUMDB=off
go env -w GOSUMDB="sum.golang.google.cn"

安装sky-php-agent

1
2
3
go build -o sky-php-agent cmd/main.go
chmod +x sky-php-agent
cp sky-php-agent /usr/local/bin

修改php.ini配置,并重启php-fpm

在php.ini的最下面增加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; 加载skywalking扩展
extension=skywalking.so

; 启用skywalking
skywalking.enable = 1

; 设置skywalking的版本 (5 or 6 or 7 or 8)
skywalking.version = 8

; 设置当前受控端服务器在skywalking的标识
skywalking.app_code = MyProjectName

; 默认sock文件路径为 /tmp/sky-agent.sock
; 无论是不是变更默认路径,都要确保php对该路径有可读写权限*
skywalking.sock_path=/www/server/php/73/var/run/sky-agent.sock

添加sky-php-agent启动服务

1
2
cd /usr/lib/systemd/system
vim sky-php-agent.service

将如下内容复制进去,并保存

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=The SkyWalking PHP-Agent Process Manager
After=syslog.target network.target

[Service]
Type=simple
# grpc的地址是skywalking服务地址,且确保受控服务器能够访问。socket路径为php.ini配置文件中的sock文件路径
ExecStart=/usr/local/bin/sky-php-agent --grpc=172.18.89.134:11800 --sky-version=8 --socket=/www/server/php/73/var/run/sky-agent.sock
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用刚刚添加的服务

1
systemctl enable sky-php-agent.service

启动服务

1
systemctl start sky-php-agent

查看服务状态

1
systemctl status sky-php-agent -l

停止服务

1
systemctl stop sky-php-agent