---
title: 'Grafana Alloy'
sidebar_label: 'Grafana Alloy'
description: 'Как настроить Grafana Alloy для получения событий в свою инфраструктуру'
sidebar_position: 4
---

import Formbricks from '@theme/MDXComponents/Formbricks';
import IssueS3Key from '@site/docs/_partials/common/issue-s3-key.mdx';

# Grafana Alloy

[Grafana Alloy](https://grafana.com/docs/alloy/latest/) — агент для сбора и передачи метрик, логов и трейсов.
Grafana Alloy является гибким и высокопроизводительным дистрибутивом [OpenTelemetry Collector](https://opentelemetry.io/ecosystem/distributions/).
Агент совместим с OpenTelemetry и Prometheus — наиболее распространенными форматами стандартов наблюдаемости.

Grafana Alloy использует компонент [otel-colector/awscloudwatchreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.128.0/receiver/awscloudwatchreceiver/logs.go#L278), который получает логи из метода [FilterLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_FilterLogEvents.html) Amazon CloudWatch API.
Список всех компонентов Grafana Alloy можно посмотреть в инструкции [Choose a Grafana Alloy component](https://grafana.com/docs/alloy/latest/collect/choose-component/) официальной документации Grafana.

1. [Добавьте сервисного пользователя](#add-service-user).
2. [Выдайте пользователю S3-ключ](#issue-s3-key).
3. [Установите агент](#install-agent).
4. [Настройте агент для получения событий](#configure-agent-to-receive-events).

## 1. Добавить сервисного пользователя \{#add-service-user}

[Добавьте сервисного пользователя](/access-control/manage/add-user.mdx#add-service-user) с разрешением в области доступа **Проекты** и ролью:

* [`member`](/access-control/role-reference.mdx#member) или [`logs.admin`](/logs/manage-access.mdx#logs-admin) для доступа на чтение и запись логов;
* [`logs.write`](/logs/manage-access.mdx#logs-writer) для доступа на запись логов;
* [`reader`](/access-control/role-reference.mdx#reader) или [`logs.viewer`](/logs/manage-access.mdx#logs-viewer) только для чтения логов.

Добавлять пользователей может [Владелец аккаунта](/access-control/user-types.mdx#account-owner) или пользователи с ролью [`iam.admin`](/access-control/role-reference.mdx#iam-admin).

## 2. Выдать S3-ключ пользователю \{#issue-s3-key}

<IssueS3Key />

## 3. Установить агент \{#install-agent}

Используйте инструкцию [Install Grafana Alloy](https://grafana.com/docs/alloy/latest/set-up/install/) официальной документации Grafana Alloy.

## 4. Настроить агент для получения событий \{#configure-agent-to-receive-events}

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

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

   ```bash
   nano /etc/alloy/config.alloy
   ```

3. Добавьте в файле `config.alloy` конфигурацию для получения событий с помощью компонента [otelcol.receiver.awscloudwatch](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.receiver.awscloudwatch/). Пример конфигурации:

   ```bash
   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](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.receiver.awscloudwatch/):

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

* aргументы компонента [loki.process](https://grafana.com/docs/alloy/latest/reference/components/loki/loki.process/):

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

2. Запустите Alloy:

   ```bash
   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](/api/urls/);
   * `<access_key>` — значение поля **Access key** из S3-ключа, который вы [выдали пользователю](#issue-s3-key);
   * `<secret_key>` — значение поля **Secret key** из S3-ключа, который вы [выдали пользователю](#issue-s3-key).

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

   * через переменные среды окружения, подробнее в инструкции [Using environment variables to globally configure AWS SDKs and tools](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) документации Amazon;
   * или через файлы `config` и `credentials`, подробнее в инструкции [Using shared config and credentials files to globally configure AWS SDKs and tools](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) документации Amazon.

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

   ```bash
   ...
   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={}
   ...
   ```

<Formbricks />
