Сборщик Otel получает ошибку соединения при отправке данных в программу подготовки данных opensearch

Я изучаю открытую телеметрию, собирая журналы и трассировки и отправляя их в экземпляр opensearch. Я использую примеры opensearch из документации opensearch, но, похоже, сталкиваюсь с проблемами, когда сборщик пытается отправить данные специалисту по подготовке данных. Я не уверен, что я делаю неправильно на данный момент.

Я использую файл компоновки Docker для запуска служб:

name: log-aggregation

services:
  opensearch:
    ports:
      - "9200:9200"
      - "9600:9600"
    networks:
      - log-aggregation
    image: docker.io/opensearchproject/opensearch:latest
    environment:
      "discovery.type": 'single-node'
      "plugins.security.disabled": 'true'
      OPENSEARCH_INITIAL_ADMIN_PASSWORD: <password>

  opensearch-dashboard:
    ports:
      - "5601:5601"
    networks:
      - log-aggregation
    build: ./opensearch/
    image: opensearch-dashboards-no-security
    environment:
      OPENSEARCH_HOSTS: "http://opensearch:9200"
      "server.ssl.enabled": "false"

  data-prepper:
    ports:
      - "4900:4900"
      - "21890:21890"
    networks:
      - log-aggregation
    image: docker.io/opensearchproject/data-prepper:latest
    volumes:
      - '.\opensearch\pipelines.yaml:/usr/share/data-prepper/pipelines/pipelines.yaml'
      - '.\opensearch\data-prepper-config.yaml:/usr/share/data-prepper/config/data-prepper-config.yaml'

  otel-collector:
    image: docker.io/otel/opentelemetry-collector:latest
    ports:
      - "4317:4317"
      - "4318:4318"
    networks:
      - log-aggregation
    command: ["--config=/etc/otel/config.yaml"]
    volumes:
      - "./opentelemetry/collector-config.yaml:/etc/otel/config.yaml"

networks:
  log-aggregation: {}

Docker-файл для образа opensearch-dashboards-no-security выглядит следующим образом:

FROM opensearchproject/opensearch-dashboards:latest
RUN /usr/share/opensearch-dashboards/bin/opensearch-dashboards-plugin remove securityDashboards       
COPY --chown=opensearch-dashboards:opensearch-dashboards opensearch_dashboards.yml /usr/share/opensearch-dashboards/config/

Я знаю, что это не подходит для производства. Это всего лишь тестовая установка для оценки. Я могу использовать панель мониторинга и экземпляр opensearch, как и ожидалось.

Я настраиваю сборщик отелей, используя следующую конфигурацию:

receivers:
  otlp:
    protocols:
      grpc:
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:

exporters:
  debug:
    verbosity: detailed
  otlp/data-prepper:
    endpoint: data-prepper:21890
    tls:
      insecure: true

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug, otlp/data-prepper]
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug, otlp/data-prepper]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug, otlp/data-prepper]
  telemetry:
    logs:
      level: "debug"

Средство подготовки данных настраивается со следующей конфигурацией (если не указывать опцию authentication, средство подготовки данных не должно требовать никаких настроек согласно их документации):

ssl: false

Затем я настраиваю эти конвейеры:

entry-pipeline:
  delay: "100"
  source:
    otel_trace_source:
      ssl: false
      authentication:
        unauthenticated:
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  sink:
    - pipeline:
        name: "raw-pipeline"
    - pipeline:
        name: "service-map-pipeline"
raw-pipeline:
  source:
    pipeline:
      name: "entry-pipeline"
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  processor:
    - otel_trace_raw:
  sink:
    - opensearch:
        hosts: ["http://opensearch:9200"]
        insecure: true
        index_type: trace-analytics-raw
service-map-pipeline:
  delay: "100"
  source:
    pipeline:
      name: "entry-pipeline"
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  processor:
    - service_map_stateful:
  sink:
    - opensearch:
        hosts: ["http://opensearch:9200"]
        insecure: true
        index_type: trace-analytics-service-map

Я могу запросить экземпляр средства подготовки данных, чтобы проверить, настроены ли конвейеры:

curl.exe localhost:4900/list
{"pipelines":[{"name":"entry-pipeline"},{"name":"service-map-pipeline"},{"name":"raw-pipeline"}]}

Но когда я отправляю тестовую трассировку сборщику отелей, я получаю лишь частичный успех в ответе:

curl.exe -i http://localhost:4318/v1/traces -H 'Content-Type: application/json' -d '@opentelemetry/span.json'  
HTTP/1.1 200 OK
Content-Type: application/json
Date: Sun, 21 Jul 2024 11:15:49 GMT
Content-Length: 21

{"partialSuccess":{}}

и ошибка подключения received goaway and there are no active streams в логах:

2024-07-21T11:06:49.213Z        info    zapgrpc/zapgrpc.go:176  [core] [Channel #3 SubChannel #6]Subchannel created     {"grpc_log": true}
2024-07-21T11:06:49.213Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3]Channel Connectivity change to CONNECTING    {"grpc_log": true}
2024-07-21T11:06:49.213Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3 SubChannel #6]Subchannel Connectivity change to CONNECTING   {"grpc_log": true}
2024-07-21T11:06:49.213Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3 SubChannel #6]Subchannel picks a new address "10.89.1.14:21890" to connect   {"grpc_log": true}
2024-07-21T11:06:49.213Z       info    zapgrpc/zapgrpc.go:176  [pick-first-lb] [pick-first-lb 0xc00074b620] Received SubConn state update: 0xc00074b6b0, {ConnectivityState:CONNECTING ConnectionError:<nil>}  {"grpc_log": true}
2024-07-21T11:06:49.269Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3 SubChannel #6]Subchannel Connectivity change to READY        {"grpc_log": true}
2024-07-21T11:06:49.269Z       info    zapgrpc/zapgrpc.go:176  [pick-first-lb] [pick-first-lb 0xc00074b620] Received SubConn state update: 0xc00074b6b0, {ConnectivityState:READY ConnectionError:<nil>}       {"grpc_log": true}
2024-07-21T11:06:49.269Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3]Channel Connectivity change to READY {"grpc_log": true}
2024-07-21T11:07:04.348Z       info    zapgrpc/zapgrpc.go:176  [core] [Channel #3 SubChannel #6]Subchannel Connectivity change to IDLE {"grpc_log": true}
2024-07-21T11:07:04.348Z       info    zapgrpc/zapgrpc.go:176  [transport] [client-transport 0xc000ba2248] Closing: connection error: desc = "received goaway and there are no active streams" {"grpc_log": true}
2024-07-21T11:07:04.348Z       info    zapgrpc/zapgrpc.go:176  [transport] [client-transport 0xc000ba2248] loopyWriter exiting with error: connection error: desc = "received goaway and there are no active streams"  {"grpc_log": true}

Порт средства подготовки данных кажется правильным. Когда я настраиваю любой другой код, например 21892 (который я видел в других вопросах), вместо этого сборщик получает ошибку connection refused.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, пример немного устарел. Я просмотрел журналы экземпляра Data Prepper и обнаружил два предупреждения. Хотя я по-прежнему получаю ошибку соединения после переключения процессоров, перезапуска контейнеров и повторной отправки тестовой трассировки сборщику, теперь тестовая трассировка появляется в opensearch через несколько секунд.

Журналы подготовки данных:

2024-07-23T16:53:10,348 [main] WARN  org.opensearch.dataprepper.plugin.DefaultPluginFactory - Plugin name 'service_map_stateful' is deprecated and will be removed in the next major release. Consider using the updated plugin name 'service_map'.
024-07-23T16:53:10,573 [main] WARN  org.opensearch.dataprepper.plugin.DefaultPluginFactory - Plugin name 'otel_trace_raw' is deprecated and will be removed in the next major release. Consider using the updated plugin name 'otel_traces'.

конвейеры.yaml:

entry-pipeline:
  delay: "100"
  source:
    otel_trace_source:
      ssl: false
      authentication:
        unauthenticated:
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  sink:
    - pipeline:
        name: "raw-pipeline"
    - pipeline:
        name: "service-map-pipeline"
raw-pipeline:
  source:
    pipeline:
      name: "entry-pipeline"
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  processor:
-    - otel_trace_raw:
+    - otel_traces:
  sink:
    - opensearch:
        hosts: ["http://opensearch:9200"]
        insecure: true
        index_type: trace-analytics-raw
service-map-pipeline:
  delay: "100"
  source:
    pipeline:
      name: "entry-pipeline"
  buffer:
    bounded_blocking:
      buffer_size: 10240
      batch_size: 160
  processor:
-    - service_map_stateful:
+    - service_map:
  sink:
    - opensearch:
        hosts: ["http://opensearch:9200"]
        insecure: true
        index_type: trace-analytics-service-map

Другие вопросы по теме