集群环境下APM接入PHP服务
前提:
- 构建k8s集群
- 安装Docker
1 构建php-demo服务
构建dockerfile
首先构建一个简单的apache的php服务,我们采用dockerfile构建镜像
FROM php:7.4-apache
RUN a2enmod rewrite
COPY index.php /var/www/html/index.php
CMD ["apache2-foreground"]
其中index.php如下
<?php
echo "Hello, this is a simple PHP app for DataDog APM testing!<br>";
// 模拟数据库查询
usleep(rand(100, 1000));
echo "Simulated a database query delay.<br>";
?>
构建业务yaml文件
php-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-datadog-demo
spec:
replicas: 1
selector:
matchLabels:
app: php-datadog-demo
template:
metadata:
labels:
app: php-datadog-demo
spec:
containers:
- name: php
image: xxxx/test:v2 //这里用将业务镜像推送到仓库,下文会介绍具体操作步骤
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
php-service.yaml
将服务暴露出来
apiVersion: v1
kind: Service
metadata:
name: php-datadog-demo-service
spec:
selector:
app: php-datadog-demo
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
部署demo应用
kubectl apply -f php-deployment.yaml
2 PHP接入APM
将datadog的探针打入业务镜像并设置环境变量将数据吐给datakit agent,环境变量DD_AGENT_HOST设置dk的IP,DD_TRACE_AGENT_PORT设置dk的端口
- tracer链接:https://github.com/DataDog/dd-trace-php/releases
- datadog-setup.php链接:https://docs.datadoghq.com/tracing/trace_collection/automatic_instrumentation/dd_libraries/php/#install-the-extension
Dockerfile
FROM php:7.4-apache
# 复制Datadog追踪器安装包
COPY datadog-php-tracer-1.3.0.x86_64.tar.gz /root/
COPY datadog-setup.php /root/datadog-setup.php
# 设置环境变量
ENV RELEASE_URL_PREFIX=file:///root/datadog-php-tracer-1.3.0.x86_64.tar.gz \
DD_AGENT_HOST=172.24.155.91 \
DD_TRACE_AGENT_PORT=9529
# 安装Datadog tracer
RUN tar -xzf /root/datadog-php-tracer-1.3.0.x86_64.tar.gz -C /root/ \
&& php /root/datadog-setup.php --php-bin=all \
&& rm /root/datadog-php-tracer-1.3.0.x86_64.tar.gz
# 启用Apache模块
RUN a2enmod rewrite
# 复制应用文件
COPY index.php /var/www/html/index.php
# 设置容器启动后执行的命令
CMD ["apache2-foreground"]
将Dockerfile打包成镜像,并打标签push到docker hub
docker build -t php-test:latest .
docker tag php-test:latest xxx/test:v2
docker push xxx/test:v2
在第1步骤中的php-deployment.yaml的image中填写该镜像
重新部署业务应用
kubectl apply -f php-deployment.yaml
3 安装部署Datakit
下载datakit.yaml
wget https://static.guance.com/datakit/datakit.yaml
修改dataway的token为自己空间token,并开启ddtrace,statsd采集器
kubectl apply -f datakit.yaml
4 验证
通过端口转发访问
kubectl port-forward service/php-datadog-demo-service 8080:80
curl http://localhost:8080
可以看到结果trace链路已经上传到观测云