Настройка отправки событий бакета OBS на внешний syslog-сервер

С помощью этой инструкции вы сможете настроить отправку событий платформенного сервиса на внешний приемник.

В качестве платформенного сервиса будет использоваться Object Storage (OBS). В роли приемника — внешний syslog-сервер.

По аналогии можно отправлять события из других платформенных сервисов, которые интегрируются с сервисом Simple Message Notification.

Шаги по настройке:

  1. Создание SMN-топика.

  2. Привязка SMN-топика к событиям бакета OBS.

  3. Создание функции в FunctionGraph по отправке событий из SMN-топика на внешний syslog-сервер.

Также с помощью дополнительной инструкции Отправка сообщений на сервер в облаке Advanced можно настроить отправку событий не на внешний приемник, а на сервер в облаке Advanced.

Шаг 1. Создание SMN-топика

Simple Message Notification (SMN) — сервис для настройки email- и HTTP/HTTPS-уведомлений по принципу «publish/subscribe». В SMN есть две роли:

  • издатель — публикует сообщения в топике;

  • подписчик — получает сообщения из топиков.

Топик — это набор сообщений и точка доступа, через которую издатель и подписчик взаимодействуют друг с другом.

Чтобы создать топик:

  1. Войдите в консоль управления Advanced:

  2. Чтобы открыть список сервисов, нажмите Service List.

  3. В списке сервисов в разделе Application выберите Simple Message Notification.

  4. В меню слева перейдите в раздел Topic Management → Topics.

  5. В правом верхнем углу нажмите Create Topic.

  6. В поле Topic Name введите название топика.

  7. В поле Display Name введите отображаемое имя отправителя сообщения.

  8. В поле Enterprise Project выберите корпоративный проект, которому будет принадлежать топик.

  9. Нажмите OK.

Топик создан. Перейдите к следующему шагу.

Шаг 2. Привязка SMN-топика к событиям бакета OBS

Object Storage (OBS) — сервис хранения и управления объектным хранилищем данных.

Чтобы привязать SMN-топик к событиям бакета OBS:

  1. В списке всех сервисов в разделе Storage выберите Object Storage Service.

  2. Нажмите на название бакета, события которого нужно отправлять на syslog-сервер. При необходимости создайте новый бакет.

  3. В меню слева перейдите в раздел Basic Configurations → Event Notification.

  4. Нажмите Create.

  5. В поле Name введите название уведомления.

  6. В поле Events отметьте все события — ObjectCreated и ObjectRemoved.

  7. В поле Notification Method сначала выберите проект, в котором находится SMN-топик, а затем выберите сам SMN-топик, который вы создали ранее.

  8. Нажмите OK.

SMN-топик привязан к событиям бакета OBS.

Шаг 3. Создание функции отправки событий на внешний syslog-сервер

FunctionGraph (FG) позволяет размещать и запускать код в бессерверной среде. Функция запускается при срабатывании триггера, определенного пользователем.

Чтобы создать и настроить функцию, которая отправляет syslog-сообщения на внешний syslog-сервер:

  1. В списке всех сервисов в разделе Computing выберите FunctionGraph.

  2. В меню слева перейдите в раздел Functions → Function List.

  3. В правом верхнем углу нажмите Create Function.

  4. В поле Function name введите название функции.

  5. В поле Enterprise Project выберите корпоративный проект, которому будет принадлежать функция.

  6. В поле Runtime выберите Python 3.6.

  7. Оставшиеся параметры оставьте по умолчанию и нажмите Create Function.

  8. В онлайн-редакторе на вкладке Code вставьте Python-код:

    # -*- coding:utf-8 -*-
    import json
    import logging
    import logging.handlers
    
    def handler (event, context):
      my_logger = logging.getLogger('MyLogger')
      my_logger.setLevel(logging.DEBUG)
    
      handler = logging.handlers.SysLogHandler(address = ('10.10.1.10',514))
    
      my_logger.addHandler(handler)
      my_logger.debug(event)
    
      print("success")
    
      return {
          "statusCode": 200,
          "isBase64Encoded": False,
          "body": "OK",
          "headers": {
              "Content-Type": "application/json"
          }
      }
    

    IP-адрес 10.10.10.10 и порт 514 замените на IP-адрес и порт вашего syslog-сервера.

  9. Чтобы сохранить код, в правом верхнем углу нажмите Save.

  10. Чтобы привязать функцию к SMN-топику, нужно создать и настроить триггер. Для этого переключитесь на вкладку Triggers и нажмите Create Trigger.

  11. В поле Trigger Type выберите сервис Simple Message Notification (SMN).

  12. В поле Topic Name выберите топик, созданный на первом шаге.

  13. Нажмите OK.

Настройка отправки событий сервиса OBS на внешний syslog-сервер завершена.

Отправка сообщений на сервер в облаке Advanced

Если syslog-сообщения нужно отправлять на сервер/коллектор, который расположен в облаке Advanced, привяжите созданную функцию к виртуальной сети VPC:

  1. В списке всех сервисов в разделе Management & Deployment выберите Identity and Access Management.

  2. В меню слева перейдите в раздел Agencies.

  3. В правом верхнем углу нажмите Create Agency.

  4. В поле Agency Name введите название агентства.

  5. В поле Agency Type выберите Cloud Service.

  6. В поле Cloud Service выберите сервис FunctionGraph.

  7. Нажмите Next.

  8. Отметьте права VPC Admin. Для удобства можно воспользоваться поиском в правом верхнем углу.

  9. Нажмите Next.

  10. Нажмите OK и Finish.

  11. В списке всех сервисов в разделе Computing выберите FunctionGraph.

  12. В меню слева перейдите в раздел Functions → Function List.

  13. Нажмите на название ранее созданной функции.

  14. Перейдите на вкладку Configuration.

  15. В поле Agency выберите ранее созданное агентство.

  16. Активируйте параметр VPC Access.

  17. В поле VPC выберите виртуальную сеть, в которой расположен целевой syslog-сервер.

  18. В поле Subnet выберите подсеть, в которой расположен целевой syslog-сервер.

  19. В правом верхнем углу нажмите Save.

Настройка завершена.

Запустили Evolution free tier
для Dev & Test
Получить