Как добавить теги в процесс для Jaeger span

#python #jaeger #open-telemetry

Вопрос:

Я использую Python3.8 с библиотеками opentelemetry, и я могу создать несколько базовых диапазонов. Мне нужно добавить теги для того, чтобы серверный процессор выбирал их. Например, что-то вроде «hostname».

Чтобы это произошло, мне нужно каким-то образом добавить теги в процесс. Я не могу понять, как это сделать.

Моя трассировка выглядит так

     "process": {
        "serviceName": "xxxxx"
    },
    "spans": [
        {```
I need something like
```{
    "process": {
        "serviceName": "xxxxx",
        "tags": [
            {
                "key": "jaeger.version",
                "vType": "STRING",
                "vStr": "Go-2.29.1"
            },
            {
                "key": "hostname",
                "vType": "STRING",
                "vStr": "xxxxxx"            
 

Вот как я инициализирую свой трассировщик и экспортер

                 TracerProvider(
                    resource=Resource.create({SERVICE_NAME: "xxxx","service.instance.id":"1","host.name":"xxxx"})
                    )
                )
        trace.set_attribute("hostname","018.zeus.run")

        tracer = trace.get_tracer(__name__)

        jaeger_exporter = JaegerExporter(
        agent_host_name='xxxxx',
        agent_port=6831,
        collector_endpoint='http://xxxxx:14268/api/traces?format=jaeger.thrift'
        )
 

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу добавить теги в процесс?

Ответ №1:

Я полагаю, что это ошибка с библиотекой-экспортером, которую вы используете. В идеале thrift-exporter должен преобразовать атрибуты ресурса в теги процесса, как указано в спецификации. Вот источник, экземпляр которого Process создается с помощью ServiceName, и он не отображает остальные атрибуты ресурса в виде тегов, но jaeger-proto-grpc exporter правильно отображает их. Пожалуйста, создайте проблему здесь https://github.com/open-telemetry/opentelemetry-python .