集群环境下APM接入PHP服务

集群环境下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链路已经上传到观测云
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值