PHP OpenTracing + Jaeger: 服务未在 Jaeger 中显示

4
我尝试将 OpenTracing + Jaeger 应用于我的 PHP 项目,并按照此处的 "入门" 示例进行操作 https://github.com/jonahgeorge/jaeger-client-php。跟踪器、跨度和作用域已成功创建,但是 Jaeger 没有看到我的服务。
下面是我的 .php 和 docker-compose.yml 文件:
<?php

require_once __DIR__ . '/vendor/autoload.php';

use Jaeger\Config;
use OpenTracing\GlobalTracer;

class OpenTracing
{
    public function __construct()
    {
            $config = new Config(
                [
                    'sampler' => [
                        'type' => 'const',
                        'param' => true,
                    ],
                    'logging' => true,
                    'local_agent' => [
                        'reporting_host' => 'localhost',
                        'reporting_port' => 5775
                    ]
                ],
                'test.service'
            );
            $config->initializeTracer();

            $tracer = GlobalTracer::get();

            $parent = $tracer->startActiveSpan('parent');
            sleep(1);
            $child = $tracer->startActiveSpan('child');
            $child->close();
            sleep(3);
            $parent->close();
    }
}

version: '3'
services:
  jaeger:
    image: jaegertracing/all-in-one:1.6
    container_name: as-jaeger
    ports:
      - "5775:5775/udp"
      - "6831:6831/udp"
      - "6832:6832/udp"
      - "5778:5778"
      - "16686:16686"
      - "14268:14268"
      - "9411:9411"
    environment:
      - COLLECTOR_ZIPKIN_HTTP_PORT=9411
1个回答

3

'reporting_host' 必须不是 'localhost',而是 'jaeger',就像在 docker-compose.yml 文件中调用服务一样。

'reporting_host' => 'jaeger',

此外,我需要在所有操作后添加 $tracer->flush();,它会关闭所有实体并在后台通过 UDP 发送数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接