<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%98%D0%98_%D0%B2_Kubernetes</id>
	<title>Сквозная наблюдаемость приложений ИИ в Kubernetes - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%98%D0%98_%D0%B2_Kubernetes"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%98%D0%98_%D0%B2_Kubernetes&amp;action=history"/>
	<updated>2026-05-02T13:08:54Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%98%D0%98_%D0%B2_Kubernetes&amp;diff=6135&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: «Современные приложения всё чаще разрабатываются на базе архитектуры микросервисов, кот...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%D0%98%D0%98_%D0%B2_Kubernetes&amp;diff=6135&amp;oldid=prev"/>
		<updated>2026-01-29T20:23:54Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Современные приложения всё чаще разрабатываются на базе архитектуры микросервисов, кот...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Современные приложения всё чаще разрабатываются на базе архитектуры микросервисов, которые обычно развёртываются в среде '''Kubernetes'''. AI‑агенты и приложения, как правило, встраиваются в один или несколько таких микросервисов. Распределенные трассировки подобных систем создаёт сложности при мониторинге, диагностике неполадок и оптимизации производительности множества взаимосвязанных сервисов. Ключ-АСТРОМ упрощает решение этих задач, обеспечивая комплексную сквозную наблюдаемость приложений, работающих в '''Kubernetes'''.&lt;br /&gt;
&lt;br /&gt;
== Что вы узнаете ==&lt;br /&gt;
В этом руководстве мы:&lt;br /&gt;
&lt;br /&gt;
* Настроим рабочую среду;&lt;br /&gt;
* Разберём, как платформа Ключ-АСТРОМ обеспечивает сквозную наблюдаемость AI‑приложений в '''Kubernetes'''.&lt;br /&gt;
&lt;br /&gt;
В качестве основного механизма мы будем использовать [[OpenTelemetry]]/[[OpenLLMetry]] для передачи специфичных для '''GenAI''' телеметрических данных (трассировок и метрик — таких как модели, токены, задержки и затраты) в Ключ-АСТРОМ.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|ЕдиныйАгент дополняет это, предоставляя полный контекст '''Kubernetes''' и приложений (состояние инфраструктуры, обнаружение рабочих нагрузок/процессов, логи, видимость на уровне кода, уязвимости), а также сопоставляя трассировки '''OTEL''' с сервисами, проблемами и аналитическими данными Ключ-АСТРОМ ИИ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Конфигурация ==&lt;br /&gt;
1. Настройте свою среду&lt;br /&gt;
&lt;br /&gt;
* Убедитесь, что в вашей среде '''Kubernetes''' включена функция [[Начало работы с полной наблюдаемостью Kubernetes (развертывание полного стека в облаке)|Full-Stack Observability]].&lt;br /&gt;
* Включить обнаружение сервисов v2 для '''Kubernetes'''.&lt;br /&gt;
&lt;br /&gt;
2. Разверните коллектор Ключ-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
Для производственных нагрузок рекомендуется также направлять трафик [[OpenLLMetry]] через [[Collector Ключ-АСТРОМ|коллектор OpenTelemetry]]. Коллектор предоставляет функции [[Примеры данных|выборки]], которые помогают контролировать стоимость данных '''OpenTelemetry'''.&lt;br /&gt;
&lt;br /&gt;
* Сохраните следующий YAML-файл конфигурации как &amp;lt;code&amp;gt;values.yaml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|mode: deployment&lt;br /&gt;
&lt;br /&gt;
image:&lt;br /&gt;
&lt;br /&gt;
  repository: ghcr.io/astromkey/astromkey-otel-collector/astromkey-otel-collector&lt;br /&gt;
&lt;br /&gt;
  tag: 0.33.0&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
  name: astromkey-otel-collector&lt;br /&gt;
&lt;br /&gt;
extraEnvs:&lt;br /&gt;
&lt;br /&gt;
- name: DT_API_TOKEN&lt;br /&gt;
&lt;br /&gt;
  valueFrom:&lt;br /&gt;
&lt;br /&gt;
    secretKeyRef:&lt;br /&gt;
&lt;br /&gt;
      name: astromkey-otelcol-dt-api-credentials&lt;br /&gt;
&lt;br /&gt;
      key: DT_API_TOKEN&lt;br /&gt;
&lt;br /&gt;
- name: DT_ENDPOINT&lt;br /&gt;
&lt;br /&gt;
  valueFrom:&lt;br /&gt;
&lt;br /&gt;
    secretKeyRef:&lt;br /&gt;
&lt;br /&gt;
      name: astromkey-otelcol-dt-api-credentials&lt;br /&gt;
&lt;br /&gt;
      key: DT_ENDPOINT&lt;br /&gt;
&lt;br /&gt;
resources:&lt;br /&gt;
&lt;br /&gt;
  limits:&lt;br /&gt;
&lt;br /&gt;
    memory: 512Mi&lt;br /&gt;
&lt;br /&gt;
alternateConfig:&lt;br /&gt;
&lt;br /&gt;
  extensions:&lt;br /&gt;
&lt;br /&gt;
    health_check:&lt;br /&gt;
&lt;br /&gt;
      endpoint: &amp;quot;${env:MY_POD_IP}:13133&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  processors:&lt;br /&gt;
&lt;br /&gt;
    cumulativetodelta:&lt;br /&gt;
&lt;br /&gt;
      max_staleness: 25h&lt;br /&gt;
&lt;br /&gt;
    k8sattributes:&lt;br /&gt;
&lt;br /&gt;
      extract:&lt;br /&gt;
&lt;br /&gt;
        metadata:&lt;br /&gt;
&lt;br /&gt;
          - k8s.pod.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.pod.uid&lt;br /&gt;
&lt;br /&gt;
          - k8s.pod.ip&lt;br /&gt;
&lt;br /&gt;
          - k8s.deployment.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.replicaset.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.statefulset.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.daemonset.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.job.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.cronjob.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.namespace.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.node.name&lt;br /&gt;
&lt;br /&gt;
          - k8s.cluster.uid&lt;br /&gt;
&lt;br /&gt;
          - k8s.container.name&lt;br /&gt;
&lt;br /&gt;
        annotations:&lt;br /&gt;
&lt;br /&gt;
          - from: pod&lt;br /&gt;
&lt;br /&gt;
            key_regex: metadata.astromkey.com/(.*)&lt;br /&gt;
&lt;br /&gt;
            tag_name: $$1&lt;br /&gt;
&lt;br /&gt;
          - from: pod&lt;br /&gt;
&lt;br /&gt;
            key: metadata.astromkey.com&lt;br /&gt;
&lt;br /&gt;
            tag_name: metadata.astromkey.com&lt;br /&gt;
&lt;br /&gt;
      pod_association:&lt;br /&gt;
&lt;br /&gt;
        - sources:&lt;br /&gt;
&lt;br /&gt;
          - from: resource_attribute&lt;br /&gt;
&lt;br /&gt;
            name: k8s.pod.name&lt;br /&gt;
&lt;br /&gt;
          - from: resource_attribute&lt;br /&gt;
&lt;br /&gt;
            name: k8s.namespace.name&lt;br /&gt;
&lt;br /&gt;
        - sources:&lt;br /&gt;
&lt;br /&gt;
          - from: resource_attribute&lt;br /&gt;
&lt;br /&gt;
            name: k8s.pod.ip&lt;br /&gt;
&lt;br /&gt;
        - sources:&lt;br /&gt;
&lt;br /&gt;
          - from: resource_attribute&lt;br /&gt;
&lt;br /&gt;
            name: k8s.pod.uid&lt;br /&gt;
&lt;br /&gt;
        - sources:&lt;br /&gt;
&lt;br /&gt;
          - from: connection&lt;br /&gt;
&lt;br /&gt;
    transform:&lt;br /&gt;
&lt;br /&gt;
      error_mode: ignore&lt;br /&gt;
&lt;br /&gt;
      trace_statements: &amp;amp;astromkey_transformations&lt;br /&gt;
&lt;br /&gt;
        # Set attributes taken from k8s metadata.&lt;br /&gt;
&lt;br /&gt;
        - context: resource&lt;br /&gt;
&lt;br /&gt;
          statements:&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;job&amp;quot;) where IsString(attributes[&amp;quot;k8s.job.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.job.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.job.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;cronjob&amp;quot;) where IsString(attributes[&amp;quot;k8s.cronjob.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.cronjob.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.cronjob.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;daemonset&amp;quot;) where IsString(attributes[&amp;quot;k8s.daemonset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.daemonset.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.daemonset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;statefulset&amp;quot;) where IsString(attributes[&amp;quot;k8s.statefulset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.statefulset.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.statefulset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;replicaset&amp;quot;) where IsString(attributes[&amp;quot;k8s.replicaset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.replicaset.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.replicaset.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.kind&amp;quot;], &amp;quot;deployment&amp;quot;) where IsString(attributes[&amp;quot;k8s.deployment.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            - set(attributes[&amp;quot;k8s.workload.name&amp;quot;], attributes[&amp;quot;k8s.deployment.name&amp;quot;]) where IsString(attributes[&amp;quot;k8s.deployment.name&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
            # remove the delete statements if you want to preserve these attributes&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.deployment.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.replicaset.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.statefulset.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.daemonset.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.cronjob.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;k8s.job.name&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Set attributes from metadata specified in astromkey and set through the astromkey Operator.&lt;br /&gt;
&lt;br /&gt;
        # For more info: &amp;lt;nowiki&amp;gt;https://docs.astromkey.com/docs/shortlink/k8s-metadata-telemetry-enrichment&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        - context: resource&lt;br /&gt;
&lt;br /&gt;
          statements:&lt;br /&gt;
&lt;br /&gt;
            - merge_maps(attributes, ParseJSON(attributes[&amp;quot;metadata.astromkey.com&amp;quot;]), &amp;quot;upsert&amp;quot;) where IsMatch(attributes[&amp;quot;metadata.astromkey.com&amp;quot;], &amp;quot;^\\{&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            - delete_key(attributes, &amp;quot;metadata.astromkey.com&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
      metric_statements: *astromkey_transformations&lt;br /&gt;
&lt;br /&gt;
      log_statements: *astromkey_transformations&lt;br /&gt;
&lt;br /&gt;
  receivers:&lt;br /&gt;
&lt;br /&gt;
    otlp:&lt;br /&gt;
&lt;br /&gt;
      protocols:&lt;br /&gt;
&lt;br /&gt;
        grpc:&lt;br /&gt;
&lt;br /&gt;
          endpoint: ${env:MY_POD_IP}:4317&lt;br /&gt;
&lt;br /&gt;
        http:&lt;br /&gt;
&lt;br /&gt;
          endpoint: ${env:MY_POD_IP}:4318&lt;br /&gt;
&lt;br /&gt;
    filelog: null&lt;br /&gt;
&lt;br /&gt;
  exporters:&lt;br /&gt;
&lt;br /&gt;
    otlphttp:&lt;br /&gt;
&lt;br /&gt;
      endpoint: &amp;quot;${env:DT_ENDPOINT}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      headers:&lt;br /&gt;
&lt;br /&gt;
        Authorization: &amp;quot;Api-Token ${env:DT_API_TOKEN}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  service:&lt;br /&gt;
&lt;br /&gt;
    extensions: [health_check]&lt;br /&gt;
&lt;br /&gt;
    pipelines:&lt;br /&gt;
&lt;br /&gt;
      traces:&lt;br /&gt;
&lt;br /&gt;
        receivers: [otlp]&lt;br /&gt;
&lt;br /&gt;
        processors: [k8sattributes, transform]&lt;br /&gt;
&lt;br /&gt;
        exporters: [otlphttp]&lt;br /&gt;
&lt;br /&gt;
      metrics:&lt;br /&gt;
&lt;br /&gt;
        receivers: [otlp]&lt;br /&gt;
&lt;br /&gt;
        processors: [k8sattributes, transform, cumulativetodelta]&lt;br /&gt;
&lt;br /&gt;
        exporters: [otlphttp]&lt;br /&gt;
&lt;br /&gt;
      logs:&lt;br /&gt;
&lt;br /&gt;
        receivers: [otlp]&lt;br /&gt;
&lt;br /&gt;
        processors: [k8sattributes, transform]&lt;br /&gt;
&lt;br /&gt;
        exporters: [otlphttp]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Выполните следующие команды для настройки и установки коллектора '''OpenTelemetry'''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|helm repo add open-telemetry &amp;lt;nowiki&amp;gt;https://open-telemetry.github.io/opentelemetry-helm-charts&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
helm repo update&lt;br /&gt;
&lt;br /&gt;
helm upgrade -i astromkey-collector open-telemetry/opentelemetry-collector -f values.yaml&lt;br /&gt;
|}&lt;br /&gt;
3. Инструментируйте свой код&lt;br /&gt;
&lt;br /&gt;
* Создайте токен Ключ-АСТРОМ, чтобы '''OpenLLMetry''' мог передавать данные в ваш клиент Клюс-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
Для создания токена Ключ-АСТРОМ&lt;br /&gt;
&lt;br /&gt;
# В Ключ-АСТРОМ перейдите в раздел '''Токены доступа'''. &amp;lt;br /&amp;gt;Чтобы найти '''Токены доступа''', нажмите '''Ctrl/Cmd+K''' для поиска и выберите '''Токены доступа'''.&lt;br /&gt;
# В разделе '''Токены доступа''' выберите '''Сгенерировать новый токен'''.&lt;br /&gt;
# Введите имя для вашего нового токена.&lt;br /&gt;
# Предоставьте своему новому токену следующие права доступа:&lt;br /&gt;
# Найдите и выберите все следующие области применения.&lt;br /&gt;
#* '''Метрики приема''' (&amp;lt;code&amp;gt;metrics.ingest&amp;lt;/code&amp;gt;)&lt;br /&gt;
#* '''Логи загрузки''' (&amp;lt;code&amp;gt;logs.ingest&amp;lt;/code&amp;gt;)&lt;br /&gt;
#* '''Приём трассировок OpenTelemetry''' (&amp;lt;code&amp;gt;openTelemetryTrace.ingest&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Выберите '''Сгенерировать токен'''.&lt;br /&gt;
# Скопируйте сгенерированный токен в буфер обмена. Сохраните токен в менеджере паролей для дальнейшего использования.&lt;br /&gt;
&lt;br /&gt;
* Инициализируйте '''OpenLLMetry''' токеном для сбора всех соответствующих '''KPI'''.&lt;br /&gt;
&lt;br /&gt;
Способ инициализации фреймворка зависит от языка программирования.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Python&lt;br /&gt;
!Node.js&lt;br /&gt;
|-&lt;br /&gt;
|Backend‑компонент Ключ-АСТРОМ работает исключительно с дельта‑значениями и требует соответствующей временно́й агрегации. Убедитесь, что ваш экспортер метрик настроен соответствующим образом, либо установите переменную окружения &amp;lt;code&amp;gt;[https://opentelemetry.io/docs/specs/otel/metrics/sdk_exporters/otlp/ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE]&amp;lt;/code&amp;gt; в значение &amp;lt;code&amp;gt;DELTA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Мы можем использовать '''OpenTelemetry''' для автоинструментации, которая собирает трейсы и метрики ваших AI‑нагрузок — в частности, [https://github.com/traceloop/openllmetry/tree/main OpenLLMetry], который можно установить с помощью следующей команды:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|pip install traceloop-sdk&lt;br /&gt;
|}&lt;br /&gt;
После этого добавьте следующий код в начало вашего основного файла.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|from traceloop.sdk import Traceloop&lt;br /&gt;
&lt;br /&gt;
headers = { &amp;quot;Authorization&amp;quot;: &amp;quot;Api-Token &amp;lt;YOUR_DT_API_TOKEN&amp;gt;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Traceloop.init(&lt;br /&gt;
&lt;br /&gt;
    app_name=&amp;quot;&amp;lt;your-service&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    api_endpoint=&amp;quot;https://&amp;lt;YOUR_ENV&amp;gt;.live.astromkey.com/api/v2/otlp&amp;quot;, # or OpenTelemetry Collector URL&lt;br /&gt;
&lt;br /&gt;
    headers=headers&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
|}&lt;br /&gt;
|Мы можем использовать '''OpenTelemetry''' для автоматической инструментации, которая собирает трассировки и метрики ваших рабочих нагрузок ИИ, в частности [https://github.com/traceloop/openllmetry/tree/main OpenLLMetry], который можно установить с помощью следующей команды:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|npm i @opentelemetry/exporter-trace-otlp-proto @traceloop/node-server-sdk&lt;br /&gt;
|}&lt;br /&gt;
После этого добавьте следующий код в начало вашего основного файла.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|import {OTLPTraceExporter} from &amp;quot;@opentelemetry/exporter-trace-otlp-proto&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
import * as traceloop from &amp;quot;@traceloop/node-server-sdk&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const exporter = new OTLPTraceExporter({&lt;br /&gt;
&lt;br /&gt;
    url: &amp;quot;https://&amp;lt;YOUR_ENV&amp;gt;.live.astromkey.com/api/v2/otlp&amp;quot;, // or OpenTelemetry Collector URL&lt;br /&gt;
&lt;br /&gt;
    headers: { Authorization: &amp;quot;Api-Token &amp;lt;YOUR_DT_API_TOKEN&amp;gt;&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
traceloop.initialize({&lt;br /&gt;
&lt;br /&gt;
  appName: &amp;quot;&amp;lt;your-service&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  exporter: exporter&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
|}&lt;br /&gt;
В настоящее время '''OpenLLMetry''' для '''Node.js''' не поддерживает метрики.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>