APM性能监测工具skywalking——k8s从入门到高并发系列教程(十三)

        为了找出响应速度慢,超时失败率高的接口,并定位出性能瓶颈的卡壳所在,我们需要一个apm性能监测工具。php是一个单进程的语言,性能卡壳主要就在于myql、redis、memcache等数据库操作以及curl等微服务调用过程,我们需要一个工具,能够帮助我们系统的看到整个接口的请求——响应过程,找出过程中的耗时点,有针对性的做出优化。skywalking是国产开源的apm性能管理工具,本教程在前面内容的基础上,基于k8s搭建一个自己的skywalking服务端,ui工具以及php的skywalking agent

mysql

我们的skywalking使用外部mysql作为数据存储仓库

mysql存储卷

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-datanamespace: datacenter
spec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: local-pathvolumeMode: Filesystem

myql deployment中用环境变量指定时区和root密码,root密码来自于k8s配置的密钥

apiVersion: apps/v1
kind: Deployment
metadata:labels:k8s.kuboard.cn/layer: dbk8s.kuboard.cn/name: mysqlname: mysqlnamespace: datacenter
spec:selector:matchLabels:k8s.kuboard.cn/layer: dbk8s.kuboard.cn/name: mysqltemplate:metadata:labels:k8s.kuboard.cn/layer: dbk8s.kuboard.cn/name: mysqlspec:containers:- env:- name: TZvalue: Asia/ShanghaienvFrom:- secretRef:name: passwordsimage: 'mysql:8.0'name: mysqlports:- containerPort: 3306name: mysqlprotocol: TCPvolumeMounts:- mountPath: /var/lib/mysqlname: volume-3k3ahvolumes:- name: volume-3k3ahpersistentVolumeClaim:claimName: mysql-data

skywalking-oap

skywalking连接mysql,需要自己下载mysql的jar包放到/skywalking/ext-libs 目录中,我这里使用共享数据卷的方式放入。在环境变量中配置连接方式为mysql以及mysql的连接信息从k8s的密钥中读取,时区设置一下

apiVersion: apps/v1
kind: Deployment
metadata:labels:k8s.kuboard.cn/layer: monitork8s.kuboard.cn/name: skywalkingname: skywalkingnamespace: promethues
spec:selector:matchLabels:k8s.kuboard.cn/layer: monitork8s.kuboard.cn/name: skywalkingtemplate:metadata:labels:k8s.kuboard.cn/layer: monitork8s.kuboard.cn/name: skywalkingspec:containers:- env:- name: TZvalue: Asia/Shanghai- name: SW_STORAGEvalue: mysqlenvFrom:- secretRef:name: skywalking-dbimage: 'apache/skywalking-oap-server:9.0.0'name: skywalkingports:- containerPort: 12800name: sky-httpprotocol: TCP- containerPort: 11800name: sky-grpcprotocol: TCPvolumeMounts:- mountPath: /skywalking/ext-libsname: volume-r8etcvolumes:- name: volume-r8etcpersistentVolumeClaim:claimName: skywalking-jars

skywalking-ui

        skywalking-ui是skywalking的界面展示工具,需要连接到skywalking才能使用,环境变量中设置一下时区

apiVersion: apps/v1
kind: Deployment
metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: skywalking-uiname: skywalking-uinamespace: promethues
spec:selector:matchLabels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: skywalking-uitemplate:metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: skywalking-uispec:containers:- env:- name: SW_OAP_ADDRESSvalue: 'http://skywalking:12800'- name: TZvalue: Asia/Shanghaiimage: 'apache/skywalking-ui:8.9.0'name: skywalking-uiports:- containerPort: 8080name: skywalking-uiprotocol: TCP

php-agent

skywalking php客户端的编译需要依赖cargo 和 rust 环境 以及libcurl库

cargo和rust

export RUSTUP_HOME=/tmp/rustup && \
export CARGO_HOME=/tmp/cargo && \
curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path && \
ln -s $CARGO_HOME/bin/rustup /usr/local/bin/rustup && \
ln -s $CARGO_HOME/bin/rustc /usr/local/bin/rustc && \
ln -s $CARGO_HOME/bin/cargo /usr/local/bin/cargo && \
ln -s $CARGO_HOME/bin/rustfmt /usr/local/bin/rustfmt

libcurl

apt install -y libcurl4-openssl-dev

安装skywalking

rustup default stable && pecl install skywalking

skywaling的php配置文件内容如下

extension=skywalking
skywalking.enable = ${PHP_SKYWALKING_ENABLE}
skywalking.service = ${APP_NAME}
skywalking.oap_version = 9.0.0
skywalking.grpc_address = ${PHP_SKYWALKING_SERVER_ADDR}
skywalking.log_level = ${PHP_SKYWALKING_LOG_LEVEL}
skywalking.log_path = ${PHP_SKYWALKING_LOG_FILE}
skywalking.sample_n_per_3_secs = ${PHP_SKYWALKING_SAMPLE_PER_SECS}
skywalking.curl_response_enable = 1

具体内容从环境变量中读取

apiVersion: v1
data:PHP_SKYWALKING_ENABLE: 'On'PHP_SKYWALKING_LOG_FILE: /tmp/skywalking_agent.logPHP_SKYWALKING_LOG_LEVEL: INFOPHP_SKYWALKING_SERVER_ADDR: 'skywalking.promethues:11800'PHP_SKYWALKING_WORKER_THREADS: '1'PHP_SKYWALKING_SAMPLE_PER_SECS: '3'
kind: ConfigMap
metadata:name: test-api-envnamespace: test-project1

skywalking 的 php agent通过 sky的grpc端口 11800 发送链路追踪数据。skywalking连接mysql存储这些数据,skywalking-ui 调用 sky的http端口 12800 查询数据做成报表。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部