---
title: 'Добавить пользовательские логи'
sidebar_label: 'Добавить логи'
description: 'Как добавить пользовательские события в сервис Логи'
sidebar_position: 2
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'

# Добавить пользовательские логи

Автоматически логи собираются для [балансировщика нагрузки](/cloud-servers/load-balancers/manage/logs.mdx) и [облачных баз данных](/managed-databases/), для которых включено логирование.
Но вы можете добавить любые пользовательские логи в сервис Логи из своего хранилища.

Добавить логи можно с помощью:

* [AWS CLI](/logs/tools/aws-cli.mdx);
* или [SDK-клиента](/logs/tools/sdk-client.mdx).

Вы также можете настроить инструмент [Fluent Bit](/logs/tools/fluent-bit.mdx) или [Vector](/logs/tools/vector.mdx) и добавлять логи с их помощью.

Добавить логи можно в существующую группу логов и стрим событий или в новую группу логов и стрим.
Подробнее о группах и стримах в подразделе [Принцип работы](/logs/about-logs.mdx#principle-of-operation) инструкции [Общая информация о сервисе Логи](/logs/about-logs.mdx).

<Tabs queryString="add-logs">
  <TabItem value="sdk-client">
    <TabItemLabel>
      SDK-клиент
    </TabItemLabel>

    <Tabs>
      <TabItem value="python">
        <TabItemLabel>
          Python
        </TabItemLabel>

        1. Создайте или откройте файл скрипта клиента.

        2. Если группы логов для добавления событий нет, добавьте в скрипт код для создания новой группы:

           ```python
           response = client.create_log_group(logGroupName = <log_group_name>)
           ```

           Укажите `<log_group_name>` — имя группы логов, например `user-log-group`.

        3. Если стрима событий для добавления событий нет, добавьте в скрипт код для создания нового стрима:

           ```python
           response = client.create_log_stream(
               logGroupName=<log_group_name>,
               logStreamName=<log_stream_name>
           )
           ```

           Укажите:

           * `<log_group_name>` — имя группы логов, например `user-log-group`;
           * `<log_stream_name>` — имя стрима событий, например `user-log-stream`.

        4. Добавьте в скрипт код для добавления событий:

           ```python
           messages = [<message>, <message>]
               
           cur_time = int(time.time() * 1000) 

           log_events = []
           for message in messages:
                       log_events.append({
                           'timestamp': cur_time,
                           'message': message
                       })

           log_events = [
               {
                   'timestamp': cur_time,
                   'message': message
               }
           ]
                   
           kwargs = {
               'logGroupName': <log_group_name>,
               'logStreamName': <log_stream_name>,
               'logEvents': log_events
           }

           response = self.client.put_log_events(**kwargs)
           ```

           Укажите:

           * `<messages>` — сообщения событий;
           * `<log_group_name>` — имя группы логов, например `user-log-group`.
             В эту группу добавятся события.
             Список существующих групп логов можно посмотреть [панели управления](https://my.selectel.ru/logs/default/logs);
           * `<log_stream_name>` — имя стрима событий, например `user-log-stream`.
             В этот стрим добавятся события.
             Список существующих стримов событий можно посмотреть [панели управления](https://my.selectel.ru/logs/default/logs).

        5. Запустите скрипт.
      </TabItem>

      <TabItem value="go">
        <TabItemLabel>
          Go
        </TabItemLabel>

        1. Создайте или откройте файл скрипта клиента.

        2. Если группы логов для добавления событий нет, добавьте в скрипт код для создания новой группы:

           ```go
           resp, err := client.CreateLogGroup(ctx, &logs.CreateLogGroupInput{
               LogGroupName: aws.String("<log_group_name>"),
           })
           ```

           Укажите `<log_group_name>` — имя группы логов, например `user-log-group`.

        3. Если стрима событий для добавления событий нет, добавьте в скрипт код для создания нового стрима:

           ```go
           resp, err = client.CreateLogStream(context.TODO(), &cloudwatchlogs.CreateLogStreamInput{
               LogGroupName:  aws.String("<log_group_name>"),
               LogStreamName: aws.String("<log_stream_name>"),
           })
           ```

           Укажите:

           * `<log_group_name>` — имя группы логов, например `user-log-group`;
           * `<log_stream_name>` — имя стрима событий, например `user-log-stream`.

        4. Добавьте в скрипт код для добавления событий:

           ```go
           messages := []string{"<message>", "<message>"}

           curTime := time.Now().UnixMilli()

           var logEvents []cloudwatchlogs.InputLogEvent
           for _, msg := range messages {
               logEvents = append(logEvents, cloudwatchlogs.InputLogEvent{
                   Timestamp: aws.Int64(curTime),
                   Message:   aws.String(msg),
               })
           }

           input := &cloudwatchlogs.PutLogEventsInput{
               LogGroupName:  aws.String("<log_group_name>"),
               LogStreamName: aws.String("<log_stream_name>"),
               LogEvents:     logEvents,
           }

           resp, err := client.PutLogEvents(context.TODO(), input)
           if err != nil {
               fmt.Printf("Ошибка при отправке логов: %v\n", err)
               return
           }

           fmt.Printf("Логи успешно отправлены. NextSequenceToken: %s\n", *resp.NextSequenceToken)
           ```

           Укажите:

           * `<messages>` — сообщения событий;
           * `<log_group_name>` — имя группы логов, например `user-log-group`.
             В эту группу добавятся события
             Список существующих групп логов можно посмотреть [панели управления](https://my.selectel.ru/logs/default/logs);
           * `<log_stream_name>` — имя стрима событий, например `user-log-stream`.
             В этот стрим добавятся события.
             Список существующих стримов событий можно посмотреть [панели управления](https://my.selectel.ru/logs/default/logs).

        5. Запустите скрипт.
      </TabItem>
    </Tabs>
  </TabItem>

  <TabItem value="aws-cli">
    <TabItemLabel>
      AWS CLI
    </TabItemLabel>

    1. Если группы логов для добавления событий нет, создайте новую группу:

       ```bash
       aws logs create-log-group --log-group-name <log_group_name>
       ```

       Укажите `<log_group_name>` — имя группы логов, например `user-log-group`.

    2. Если стрима событий для добавления событий нет, создайте новый стрим:

       ```bash
       aws logs create-log-stream --log-group-name <log_group_name> --log-stream-name <log_stream_name>
       ```

       Укажите:

       * `<log_group_name>` — имя группы логов, в которую нужно добавить события, например `user-log-group`;
       * `<log_stream_name>` — имя стрима событий, в который нужно добавить события, например `user-log-stream`.

    3. Добавьте события в стрим событий и группу логов:

       ```bash
       aws logs put-log-events --log-group-name <log_group_name> --log-stream-name <log_stream_name> --log-events timestamp=<timestamp>,message="<message>"
       ```

       Укажите:

       * `<log_group_name>` — имя группы логов, в которую нужно добавить события, например `user-log-group`.
         Список существующих групп логов можно посмотреть с помощью команды `aws logs describe-log-groups` или в [панели управления](https://my.selectel.ru/logs/default/logs);
       * `<log_stream_name>` — имя стрима событий, в который нужно добавить события, например `user-log-stream`.
         Список существующих стримов событий можно посмотреть с помощью команды `aws logs describe-log-streams --log-group-name <log_group_name>` или в [панели управления](https://my.selectel.ru/logs/default/logs);
       * `<timestamp>` — время события в формате `timestamp`;
       * `<message>` — сообщение события.
  </TabItem>
</Tabs>
