Настроить 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={}
...