Настроить 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. Добавить сервисного пользователя
Добавьте сервисного пользователя, в разрешении выберите роль member или reader и область доступа Проекты.
Добавлять пользователей может Владелец аккаунта или пользователи с ролью iam_admin.
2. Выдать S3-ключ пользователю
Пользователи с доступом в панель управления могут выдавать себе S3-ключи, но мы рекомендуем создавать сервисных пользователей и выдавать S3-ключи им.
Выдавать S3-ключи другим пользователям может только Владелец аккаунта или пользователь с ролью iam_admin.
Сервисный пользователь не может получить S3-ключ самостоятельно, потому что у него нет доступа в панель управления — ему должен выдать ключ Владелец аккаунта или iam_admin.
Для каждого проекта необходимо создавать отдельный ключ. На один проект можно выпустить несколько ключей.
-
В панели управления в верхнем меню нажмите Аккаунт.
-
Перейдите в раздел с нужным типом пользователей:
- Пользователи — для пользователей с доступом в панель управления;
- Сервисные пользователи — для сервисных пользователей.
-
Откройте страницу пользователя → вкладка Доступ .
-
В блоке S3-ключи нажмите Добавить ключ.
-
Введите имя ключа.
-
Выберите проект, для которого будет работать ключ.
-
Нажмите Сгенерировать. Будет сгенерировано два значения:
- Access key — Access Key ID, идентификатор ключа;
- Secret key — Secret Access Key, секретный ключ.
-
Нажмите Скопировать и сохраните ключ — после закрытия окна его нельзя будет просмотреть.
3. Настроить получение событий
-
Откройте CLI.
-
Создайте файл конфигурации
config.alloy:nano /etc/alloy/config.alloy -
Укажите в файле
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, будет отправляться в вывод после обработки.
-
Запустите 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>в контейнер можно любым способом:- через переменные среды окружения, подробнее в инструкции Using environment variables to globally configure AWS SDKs and tools документации Amazon;
- или через файлы
configиcredentials, подробнее в инструкции Using shared config and credentials files to globally configure AWS SDKs and tools документации Amazon.
Пример вывода в 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={}
...