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

Настроить 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. Настройте получение событий.

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

Создайте сервисного пользователя, в разрешении выберите роль member или reader и область доступа Проекты. Создавать пользователей может Владелец аккаунта или пользователи с ролью 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. Настроить получение событий

  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> — URL для обращения к API логов. Список URL можно посмотреть в инструкции Список URL;
    • <access_key> — значение поля Access key из S3-ключа;
    • <secret_key> — значение поля Secret key из S3-ключа.

    Добавить <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={}
    ...