Развертывание Collector

Материал из Документация Ключ-АСТРОМ
Версия от 16:31, 1 октября 2025; IKuznetsov (обсуждение | вклад) (Новая страница: «== Режимы развертывания == '''Collector''' может быть [https://opentelemetry.io/docs/collector/quick-start/ развернут], к...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Режимы развертывания

Collector может быть развернут, как автономный агент или шлюз.

Для наглядности на графиках ниже показаны режимы в настройке Kubernetes, но эти же режимы можно использовать и за пределами Kubernetes.

Развертывание в виде агента

В качестве агента, Collector разворачивается либо вместе с приложением, либо на том же хосте, что и приложение. Он может получать телеметрические данные и дополнять их, например, тегами или информацией об инфраструктуре.

Image4070.png

Развертывание в виде шлюза

В качестве шлюза один или несколько экземпляров Collector могут быть развернуты как отдельные сервисы. Этот Collector может быть развернут дополнительно, например, для кластера, региона или центра обработки данных. Балансировщик нагрузки может помочь масштабировать независимо работающие экземпляры Collector.

Image4071.png


Также можно комбинировать эти режимы развертывания и объединять экземпляры Collector в цепочку. Учитывайте это при развертывании Collector в крупных средах.

Варианты развертывания

Ключ-АСТРОМ Collector можно развернуть на следующих платформах:

  • Kubernetes
  • Docker
  • Windows, macOS, and Linux
  • Linux installer packages

Kubernetes

Для Kubernetes Ключ-АСТРОМ Collector можно развернуть следующими способами:

  • OpenTelemetry Kubernetes Operator
  • Helm
  • Raw manifest

Подробности доступа к Ключ-АСТРОМ

Перед развертыванием Collector вам необходимо настроить необходимые секреты Kubernetes для данных доступа Ключ-АСТРОМ.

Используйте kubectl для создания секретов Kuberenetes для данных экспорта Ключ-АСТРОМ. Замените плейсхолдеры (обозначенные фигурными скобками) фактическими значениями URL-адреса экспорта и токена API.

kubectl create secret generic astromkey-otelcol-dt-api-credentials --from-literal=DT_ENDPOINT={ENDPOINT_URL_HERE} --from-literal=DT_API_TOKEN={API_TOKEN_HERE}

Варианты развертывания Kubernetes

В следующих примерах конфигураций используется ограничение ресурсов в 512 мегабайт. Возможно, вам потребуется скорректировать значение resources.limits.memory в соответствии с вашим конкретным вариантом использования.

OpenTelemetry Operator
Предустановка

Если вы ещё не установили OpenTelemetry Operator, сначала убедитесь, что установлен cert-manager. После этого вы можете развернуть Operator с помощью следующей команды kubectl:

kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.135.0/opentelemetry-operator.yaml

После установки разверните Ключ-АСТРОМ Collector в режиме шлюза или агента, используя один из следующих примеров конфигурации. Сохраните его как crd-astromkey-collector.yaml и разверните с помощью kubectl apply.

Определение пользовательского ресурса

CRD-файл Operator Kubernetes можно найти на GitHub.

Развертывание в качестве шлюза (Deployment)

apiVersion: opentelemetry.io/v1beta1

kind: OpenTelemetryCollector

metadata:

  name: astromkey-otel

spec:

  envFrom:

  - secretRef:

      name: astromkey-otelcol-dt-api-credentials

  env:

  - name: MY_POD_IP

    valueFrom:

      fieldRef:

        fieldPath: status.podIP

  mode: "deployment"

  image: "ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0"

  resources:

    limits:

      memory: 512Mi

  config:

    receivers:

      otlp:

        protocols:

          grpc:

            endpoint: ${env:MY_POD_IP}:4317

          http:

            endpoint: ${env:MY_POD_IP}:4318

    exporters:

      otlphttp:

        endpoint: "${env:DT_ENDPOINT}"

        headers:

          Authorization: "Api-Token ${env:DT_API_TOKEN}"

    service:

      pipelines:

        traces:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        metrics:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        logs:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

Развертывание в качестве агента (DaemonSet)

apiVersion: opentelemetry.io/v1beta1

kind: OpenTelemetryCollector

metadata:

  name: astromkey-otel

spec:

  envFrom:

  - secretRef:

      name: astromkey-otelcol-dt-api-credentials

  env:

  - name: MY_POD_IP

    valueFrom:

      fieldRef:

        fieldPath: status.podIP

  mode: "daemonset"

  image: "ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0"

  resources:

    limits:

      memory: 512Mi

  config:

    receivers:

      otlp:

        protocols:

          grpc:

            endpoint: ${env:MY_POD_IP}:4317

          http:

            endpoint: ${env:MY_POD_IP}:4318

    exporters:

      otlphttp:

        endpoint: "${env:DT_ENDPOINT}"

        headers:

          Authorization: "Api-Token ${env:DT_API_TOKEN}"

    service:

      pipelines:

        traces:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        metrics:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        logs:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

Helm

Выберите один из распространенных режимов развертывания Ключ-АСТРОМ Collector.

Представленные ниже диаграммы Helm используются для настройки alternateConfig Collector. При использовании этой записи конфигурация диаграммы Helm по умолчанию, а также возможно присутствующий объект config, будут проигнорированы.

Развертывание в качестве шлюза (Deployment)

Сохраните следующую конфигурацию YAML в values-deployment.yaml

mode: deployment

image:

  repository: ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector

  tag: 0.37.0

command:

  name: astromkey-otel-collector

extraEnvs:

- name: DT_API_TOKEN

  valueFrom:

    secretKeyRef:

      name: astromkey-otelcol-dt-api-credentials

      key: DT_API_TOKEN

- name: DT_ENDPOINT

  valueFrom:

    secretKeyRef:

      name: astromkey-otelcol-dt-api-credentials

      key: DT_ENDPOINT

resources:

  limits:

    memory: 512Mi

alternateConfig:

  extensions:

    health_check:

      endpoint: "${env:MY_POD_IP}:13133"

  receivers:

    otlp:

      protocols:

        grpc:

          endpoint: ${env:MY_POD_IP}:4317

        http:

          endpoint: ${env:MY_POD_IP}:4318

    filelog: null

  exporters:

    otlphttp:

      endpoint: "${env:DT_ENDPOINT}"

      headers:

        Authorization: "Api-Token ${env:DT_API_TOKEN}"

  service:

    extensions: [health_check]

    pipelines:

      traces:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

      metrics:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

      logs:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

Выполните следующие команды для настройки и установки чартов Helm.

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts

helm repo update

helm upgrade -i astromkey-collector open-telemetry/opentelemetry-collector -f values-deployment.yaml

Развертывание в качестве агента (DaemonSet)

Сохраните следующую конфигурацию YAML в values-daemonset.yaml

mode: daemonset

image:

  repository: ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector

  tag: 0.37.0

command:

  name: astromkey-otel-collector

extraEnvs:

- name: DT_API_TOKEN

  valueFrom:

    secretKeyRef:

      name: astromkey-otelcol-dt-api-credentials

      key: DT_API_TOKEN

- name: DT_ENDPOINT

  valueFrom:

    secretKeyRef:

      name: astromkey-otelcol-dt-api-credentials

      key: DT_ENDPOINT

resources:

  limits:

    memory: 512Mi

alternateConfig:

  extensions:

    health_check:

      endpoint: "${env:MY_POD_IP}:13133"

  receivers:

    otlp:

      protocols:

        grpc:

          endpoint: ${env:MY_POD_IP}:4317

        http:

          endpoint: ${env:MY_POD_IP}:4318

  exporters:

    otlphttp:

      endpoint: "${env:DT_ENDPOINT}"

      headers:

        Authorization: "Api-Token ${env:DT_API_TOKEN}"

  service:

    extensions: [health_check]

    pipelines:

      traces:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

      metrics:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

      logs:

        receivers: [otlp]

        processors: []

        exporters: [otlphttp]

Выполните следующие команды для настройки и установки чартов Helm.

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts

helm repo update

helm upgrade -i astromkey-collector open-telemetry/opentelemetry-collector -f values-daemonset.yaml

Raw manifest
Service

Используйте следующую конфигурацию kubectl apply для настройки определений служб и настройки правильных портов.

apiVersion: v1

kind: Service

metadata:

  name: astromkey-otel-collector

spec:

  internalTrafficPolicy: Cluster

  ipFamilies:

  - IPv4

  ipFamilyPolicy: SingleStack

  ports:

  - name: jaeger-compact

    port: 6831

    protocol: UDP

    targetPort: 6831

  - name: jaeger-grpc

    port: 14250

    protocol: TCP

    targetPort: 14250

  - name: jaeger-thrift

    port: 14268

    protocol: TCP

    targetPort: 14268

  - appProtocol: grpc

    name: otlp

    port: 4317

    protocol: TCP

    targetPort: 4317

  - name: otlp-http

    port: 4318

    protocol: TCP

    targetPort: 4318

  - name: zipkin

    port: 9411

    protocol: TCP

    targetPort: 9411

  selector:

    app.kubernetes.io/instance: astromkey-otel-collector

    app.kubernetes.io/name: astromkey-otel-collector

  sessionAffinity: None

  type: ClusterIP

ConfigMap

Создайте ConfigMap, применив следующую конфигурацию kubectl apply для настройки конфигурации Collector.

apiVersion: v1

kind: ConfigMap

metadata:

  name: astromkey-otel-collector-config

data:

  otel-collector-config: |

    receivers:

      otlp:

        protocols:

          grpc:

            endpoint: ${env:MY_POD_IP}:4317

          http:

            endpoint: ${env:MY_POD_IP}:4318

    exporters:

      otlphttp:

        endpoint: "${env:DT_ENDPOINT}"

        headers:

          Authorization: "Api-Token ${env:DT_API_TOKEN}"

    service:

      pipelines:

        traces:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        metrics:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

        logs:

          receivers: [otlp]

          processors: []

          exporters: [otlphttp]

Manifest

Примените следующую конфигурацию манифеста kubectl apply для создания развертывания Ключ-АСТРОМ Collector в режиме шлюза.

apiVersion: apps/v1

kind: Deployment

metadata:

  name: astromkey-otel-collector

spec:

  selector:

    matchLabels:

      app.kubernetes.io/name: astromkey-otel-collector

  replicas: 1

  template:

    metadata:

      labels:

        app.kubernetes.io/instance: astromkey-otel-collector

        app.kubernetes.io/name: astromkey-otel-collector

    spec:

      #You may have to configure RBAC to grant proper permissions for enriching data

      #serviceAccountName: astromkey-otel-collector

      containers:

        - name: astromkey-otel-collector

          args: ["--config", "/conf/otel-collector-config.yaml"]

          env:

            - name: MY_POD_IP

              valueFrom:

                fieldRef:

                  apiVersion: v1

                  fieldPath: status.podIP

            - name: DT_ENDPOINT

              valueFrom:

                secretKeyRef:

                  name: astromkey-otelcol-dt-api-credentials

                  key: DT_ENDPOINT

            - name: DT_API_TOKEN

              valueFrom:

                secretKeyRef:

                  name: astromkey-otelcol-dt-api-credentials

                  key: DT_API_TOKEN

          image: ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0

          resources:

            limits:

              memory: 512Mi

          ports:

            - containerPort: 8888 # Default endpoint for querying metrics of prometheus exporter.

          volumeMounts:

            - name: astromkey-otel-collector-config

              mountPath: /conf

      volumes:

        - configMap:

            name: astromkey-otel-collector-config

            items:

              - key: otel-collector-config

                path: otel-collector-config.yaml

          name: astromkey-otel-collector-config

Docker

Выполните следующую команду, чтобы загрузить образ Ключ-АСРОМ Collector:

docker pull ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0

Затем убедитесь, что файл конфигурации Collector существует в текущей рабочей директории, и запустите образ Collector с помощью следующей команды:

docker run -v $(pwd)/otel-collector-config.yaml:/etc/otelcol/otel-collector-config.yaml ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0 --config=/etc/otelcol/otel-collector-config.yaml

Параметр -v сопоставляет локальный файл конфигурации с заданным путем контейнера, который впоследствии передается параметру --config.

Обязательно сопоставьте все необходимые сетевые порты с параметром -p. Например, если вы принимаете запросы OTLP gRPC на порту по умолчанию, необходимо указать порт 4317. Для OTLP по HTTP укажите порт 4318.

Docker Compose

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

version: "3"

services:

  collector:

    image: ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0

    command: ["--config=/etc/otelcol/otel-collector-config.yaml"]

    volumes:

      - ./otel-collector-config.yaml:/etc/otelcol/otel-collector-config.yaml

    ports:

      - "4317:4317"   # OTLP gRPC

      - "4318:4318"   # OTLP HTTP

В примере выше ports настроены для gRPC и HTTP. Измените список портов в соответствии с вашим конкретным вариантом использования.

Windows, macOS и Linux

Чтобы установить исполняемый файл Collector вручную

  1. Загрузите astromkey-otel-collector для вашей операционной системы с GitHub.
  2. Распакуйте архивный файл.
  3. Настройте нужную конфигурацию и сохраните ее в otel-collector-config.yaml.
  4. Запустите исполняемый файл astromkey-otel-collector и передайте путь к файлу конфигурации с помощью параметра --config.
./astromkey-otel-collector --config=$(pwd)/otel-collector-config.yaml

Пакеты установщиков Linux

astromkey также предоставляет установочные пакеты DEB и RPM для систем Linux на архитектурах x86-64 и ARM64.

Требуемая система инициализации

Для пакетов установки требуется, чтобы Systemd была активной системой инициализации.

Чтобы развернуть Collector с помощью установочного пакета, загрузите astromkey-otel-collector для вашей операционной системы с GitHub и установите его, используя права root и следующие команды.

Замените следующие два заполнителя в командах их фактическим содержимым:

  • <VERSION> с тегом версии загрузки
  • <ARCH> с тегом архитектуры системы (то есть, x86_64или arm64) загрузки

Debian (.deb)

apt-get update

dpkg -i astromkey-otel-collector_<VERSION>_Linux_<ARCH>.deb

Red Hat (.rpm)

yum update

rpm -ivh astromkey-otel-collector_<VERSION>_Linux_<ARCH>.rpm

Конфигурация сервиса

При первом запуске служба может не запуститься, если файл конфигурации ещё не установлен. По умолчанию сборщик пытается найти файл в папке /etc/astromkey-otel-collector/config.yaml.

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

systemctl restart astromkey-otel-collector

Статус обслуживания

Чтобы просмотреть текущий статус службы Collector, выполните следующую команду с правами root:

systemctl status astromkey-otel-collector

Чтобы проверить вывод службы Collector, выполните следующую команду с правами root:

journalctl -u astromkey-otel-collector

Реестры образов контейнеров

Образы контейнеров для дистрибутива Ключ-АСТРОМ OpenTelemetry Collector доступны в