Перейти к основному содержимому

Grafana Alloy

Последнее изменение:

Grafana Alloy — агент для сбора и передачи метрик, логов и трейсов. Grafana Alloy является гибким и высокопроизводительным дистрибутивом OpenTelemetry Collector. Агент совместим с OpenTelemetry и Prometheus — наиболее распространенными форматами стандартов наблюдаемости.

Grafana Alloy использует компонент otel-colector/awscloudwatchreceiver, который получает логи из метода FilterLogEvents Amazon CloudWatch API. Список всех компонентов Grafana Alloy можно посмотреть в инструкции Choose a Grafana Alloy component официальной документации Grafana.

  1. Добавьте сервисного пользователя.
  2. Выдайте пользователю S3-ключ.
  3. Установите агент.
  4. Настройте агент для получения событий.

1. Добавить сервисного пользователя

Добавьте сервисного пользователя с разрешением в области доступа Проекты и ролью:

Добавлять пользователей может Владелец аккаунта или пользователи с ролью iam_admin.

2. Выдать S3-ключ пользователю

Пользователи с доступом в панель управления могут выдавать себе S3-ключи, но мы рекомендуем создавать сервисных пользователей и выдавать S3-ключи им.

Выдавать S3-ключи другим пользователям может только Владелец аккаунта или пользователь с ролью iam_admin. Сервисный пользователь не может получить S3-ключ самостоятельно, потому что у него нет доступа в панель управления — ему должен выдать ключ Владелец аккаунта или iam_admin.

Для каждого проекта необходимо создавать отдельный ключ. На один проект можно выпустить несколько ключей.

  1. В панели управления в верхнем меню нажмите Аккаунт.

  2. Перейдите в раздел с нужным типом пользователей:

  3. Откройте страницу пользователя → вкладка Доступ .

  4. В блоке S3-ключи нажмите Добавить ключ.

  5. Введите имя ключа.

  6. Выберите проект, для которого будет работать ключ.

  7. Нажмите Сгенерировать. Будет сгенерировано два значения:

    • Access key — Access Key ID, идентификатор ключа;
    • Secret key — Secret Access Key, секретный ключ.
  8. Нажмите Скопировать и сохраните ключ — после закрытия окна его нельзя будет просмотреть.

3. Установить агент

Используйте инструкцию Install Grafana Alloy официальной документации Grafana Alloy.

4. Настроить агент для получения событий

  1. Откройте CLI.

  2. Создайте файл конфигурации config.alloy:

    nano /etc/alloy/config.alloy
  3. Добавьте в файле config.alloy конфигурацию для получения событий с помощью компонента otelcol.receiver.awscloudwatch. Пример конфигурации:

    logging {
    level = "info"
    format = "logfmt"
    }

    otelcol.receiver.awscloudwatch "logs" {
    region = "<pool>"

    logs {
    groups {
    named {
    group_name = "<log_group_name>"
    names = "<log_stream_names>"
    }
    }
    }

    output {
    logs = [otelcol.exporter.loki.default.input]
    }
    }

    otelcol.exporter.loki "default" {
    forward_to = [loki.process.parse_json.receiver]
    }

    loki.process "parse_json" {

    stage.json {
    expressions = {
    source = "<key>",
    }
    }

    stage.output {
    source = "<key>"
    }

    forward_to = [loki.echo.default.receiver]

    }

    loki.echo "default" {}

Укажите:

  • aргументы компонента otelcol.receiver.awscloudwatch:

    • <pool>пул, например ru-9;
    • <log_group_name> — имя группы логов, например s/lbaas/Loabalancer-1;
    • опционально: <log_stream_names> — список стримов, из которых нужно получать события, например [http-c48d78e2-6f49-43b5-80b7-2f2b8e5f669d].
  • aргументы компонента loki.process:

    • <key> — поле событий, например body. Из поля, которое указано в параметре stage.json, будет извлекаться значение для обработки. Значение поля, которое указано в параметре stage.output, будет отправляться в вывод после обработки.
  1. Запустите Alloy:

    docker run \
    -v /etc/alloy/config.alloy:/etc/alloy/config.alloy \
    -p 12345:12345 \
    -e AWS_ENDPOINT_URL=<log_endpoint> \
    -e AWS_ACCESS_KEY=<access_key> \
    -e AWS_SECRET_KEY=<secret_key> \
    grafana/alloy:latest \
    run --server.http.listen-addr=0.0.0.0:12345 \
    --storage.path=/var/lib/alloy/data \
    --stability.level experimental \
    /etc/alloy/config.alloy

    Укажите:

    Добавить <log_endpoint>, <access_key> и <secret_key> в контейнер можно любым способом:

    Пример вывода в stdout:

    ...
    ts=2025-10-14T06:07:03.637492043Z level=info component_path=/ component_id=loki.echo.default receiver=loki.echo.default entry="{\"client\":\"204.76.203.219:41942\" ... }" entry_timestamp=2025-10-14T05:50:35.549Z labels="{exporter=\"OTLP\"}" structured_metadata={}
    ts=2025-10-14T06:07:03.637503251Z level=info component_path=/ component_id=loki.echo.default receiver=loki.echo.default entry="{\"client\":\"204.76.203.18:45864\" ... }" entry_timestamp=2025-10-14T05:54:58.753Z labels="{exporter=\"OTLP\"}" structured_metadata={}
    ...