docker-compose PHP로 DatadogAPM을 사용해보십시오.
11449 단어 docker-composePHPDatadog
준비
우선
htps : // 기주 b. 이 m/다른 g/d dt 라세 php/bぉb/마s r/도 cs/갓친 g_s r d. md
을 바탕으로 진행합니다.
(컨테이너에 dd-trace-php를 미리 설정하는 것은 일단 후회로···)
위 문서에는
mkdir dd-trace
cd dd-trace
curl -L https://github.com/DataDog/dd-trace-php/archive/v0.2.5.tar.gz | tar x --strip-components=1
phpize # generate files needed to build PHP extension
./configure
make
sudo make install
하지만 curl 명령을 실행하면 x 옵션이 없으면 오류로 화나므로이 줄 만
curl -L https://github.com/DataDog/dd-trace-php/archive/v0.2.5.tar.gz | tar xz --strip-components=1
와 z 옵션을 더해 실행하면 좋을 것 같은 느낌이었습니다.
(컨테이너에 따라서는 Make 커멘드 사용할 수 없을지도 모르기 때문에, 「yum install make」라든가로 넣어 두어 주세요)
"Enabling the extension"에 쓰여있다.
dd.ini
extension=ddtrace.so
설정을 추가하는 것을 잊지 마십시오. "/etc/php.d/"다음에 추가하여
php -m | grep ddtrace
이 명령으로 확인하십시오. 이 근처는 문서대로 진행해 나가면 OK.
지난번 설정한 docker-compose.yml을 사용합니다.
docker-compose.yml
hogehoge:
image: hogehoge
container_name: hogehoge
volumes:
- /etc/localtime:/etc/localtime:ro
- ./httpd/vhosts.conf:/etc/httpd/conf.d/vhosts.conf
- ./admin/:/var/www/
links:
- dd-agent:dd-agent
depends_on:
- dd-agent
dd-agent:
container_name: dd-agent
image: datadog/docker-dd-agent
environment:
- API_KEY=[API_KEY]
- DD_APM_ENABLED=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /proc/mounts:/host/proc/mounts:ro
- /sys/fs/cgroup:/host/sys/fs/cgroup:ro
ports:
- "8126:8126/tcp"
APM을 사용하는 경우 Datadog Agent 측
DD_APM_ENABLED=true
이 설정을 잊지 마십시오.
endpoint 설정
Advanced APM Setup 에 쓰여진 Manual Instrumentation 및
dd-trace-php 에 쓰여진 Using the tracer를 바탕으로 그것 같은 샘플을 만들어 보자.
그렇지만, 그대로는 움직이지 않아 일부 바꾸지 않으면 안 되는 곳의 설명.
DDTrace/Transport/Http.php 의 DEFAULT_ENDPOINT가 localhost를 향하고 있으므로 Datadog Agent를 향하도록 한다.
DDtrace/Transport/Http.php
final class Http implements Transport
{
const DEFAULT_ENDPOINT = 'http://localhost:8126/v0.3/traces';
/**
* @var Encoder
*/
private $encoder;
/**
* @var array
*/
private $headers = [];
/**
* @var array
*/
private $config;
/**
* @var LoggerInterface
*/
private $logger;
public function __construct(Encoder $encoder, LoggerInterface $logger = null, array $config = [])
{
$this->encoder = $encoder;
$this->logger = $logger ?: new NullLogger();
$this->config = array_merge([
'endpoint' => self::DEFAULT_ENDPOINT,
], $config);
$this->setHeader('Datadog-Meta-Lang', 'php');
$this->setHeader('Datadog-Meta-Lang-Version', \PHP_VERSION);
$this->setHeader('Datadog-Meta-Lang-Interpreter', \PHP_SAPI);
$this->setHeader('Datadog-Meta-Tracer-Version', Version\VERSION);
}
구현을 보면 config가 array_merge이므로 엔드 포인트를 전달하면 좋을 것 같습니다.
AdvancedAPMSetup 및 dd-trace-php의 sampleMerge 한 사람
<?php
use DDTrace\Tracer;
use DDTrace\Transport\Http;
use DDTrace\Encoders\Json;
use OpenTracing\GlobalTracer;
use DDTrace\Tags;
use DDTrace\Types;
$tracer = new Tracer(
new Http(
new Json(),
null,
[
'endpoint' => 'http://dd-agent:8126/v0.3/traces',
]
)
);
GlobalTracer::set($tracer);
$scope = GlobalTracer::get()->startActiveSpan("web.request");
$span = $scope->getSpan();
$span->setResource('testResource');
$span->setTag(Tags\SPAN_TYPE, Types\WEB_SERVLET);
$span->setTag('http.method', 'testMethod');
$span->finish();
GlobalTracer::get()->flush();
Http와 Json은
use DDTrace\Transport\Http;
use DDTrace\Encoders\Json;
이 녀석들을 use해서 사용할 수 있도록 한다.
그리고는 위에 쓴 대로 endpoint를 Datadog Agent의 이름으로 재기록한다.
그래서,
우선 무사동한 모양.
DatadogAPM이 대응하고 있는 framework 사용하면 분명 보다 편하게 할 수 있을 것.
※ API_KEY 본 사람은 슈퍼 봐주세요
Reference
이 문제에 관하여(docker-compose PHP로 DatadogAPM을 사용해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiroelza/items/7b800f3d0b87cd660b33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)