tocdepth

2

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

С помощью этой инструкции можно настроить отправку событий сервиса Object Storage (OBS) на внешний syslog-сервер.

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

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

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

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

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

  4. Если syslog-сервер находится в облаке Advanced, привяжите функцию к VPC.

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

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

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

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

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

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

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

  2. В списке сервисов выберите Simple Message Notification.

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

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

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

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

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

  8. Нажмите OK.

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

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

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

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

  1. В списке сервисов выберите 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. В списке сервисов выберите 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.0.0.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.0.0.10 и порт 514 замените на IP-адрес и порт вашего syslog-сервера.

    Для работы с syslog в Python-библиотеке используется протокол UDP.

    Примечание

    Если в качестве syslog-сервера используется rsyslog, включите imudp — модуль приема данных по UDP, который по умолчанию отключен. Чтобы включить модуль:

    1. Откройте конфигурационный файл /etc/rsyslog.conf.

    2. Раскомментируйте строки с подключением модуля imudp и его конфигурацию:

      # provides UDP syslog reception
      module(load="imudp")
      input(type="imudp" port="514")
      

      Порт 514 замените на актуальный.

    3. Перезапустите syslog командой:

      systemctl restart syslog
      
  9. Чтобы сохранить код, нажмите File → Save.

  10. Переключитесь на вкладку Configuration и перейдите в раздел Triggers.

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

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

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

  14. Нажмите OK.

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

Шаг 4. Если syslog-сервер находится в облаке Advanced, привяжите функцию к VPC

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

  1. В списке сервисов выберите 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. В списке сервисов выберите FunctionGraph.

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

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

  14. На вкладке Configuration перейдите в раздел Permissions.

  15. В списке Configuration Agency выберите ранее созданное агентство и нажмите Save.

  16. Перейдите в раздел Network.

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

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

  19. В поле Subnet выберите подсеть, из которой функция будет динамически получать IP-адрес во время обращения к syslog.

    Примечание

    Убедитесь, что для этой подсети в группе безопасности syslog-сервера открыт UDP-порт, который указан в функции. Например:

    ../_images/s__syslog__server-sg.png
  20. Нажмите Save.

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

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