Развертывание Collector
Режимы развертывания
Collector может быть развернут, как автономный агент или шлюз.
Для наглядности на графиках ниже показаны режимы в настройке Kubernetes, но эти же режимы можно использовать и за пределами Kubernetes.
Развертывание в виде агента
В качестве агента, Collector разворачивается либо вместе с приложением, либо на том же хосте, что и приложение. Он может получать телеметрические данные и дополнять их, например, тегами или информацией об инфраструктуре.
Развертывание в виде шлюза
В качестве шлюза один или несколько экземпляров Collector могут быть развернуты как отдельные сервисы. Этот Collector может быть развернут дополнительно, например, для кластера, региона или центра обработки данных. Балансировщик нагрузки может помочь масштабировать независимо работающие экземпляры Collector.
Также можно комбинировать эти режимы развертывания и объединять экземпляры 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 вручную
- Загрузите astromkey-otel-collector для вашей операционной системы с GitHub.
- Распакуйте архивный файл.
- Настройте нужную конфигурацию и сохраните ее в
otel-collector-config.yaml. - Запустите исполняемый файл
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 доступны в
- Реестр контейнеров GitHub (GHCR)
ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector:0.37.0
- Реестр контейнеров Amazon Elastic (Amazon ECR)
public.ecr.aws/astromkey/astromkey-otel-collector:0.37.0
- Реестр контейнеров Docker Hub
astromkey/astromkey-otel-collector:0.37.0

