- tocdepth
2
Отправка событий бакета OBS на внешний syslog-сервер
С помощью этой инструкции можно настроить отправку событий сервиса Object Storage (OBS) на внешний syslog-сервер.
Следуя примеру на этой странице, можно настроить отправку событий и из других сервисов, совместимых с сервисом Simple Message Notification.
Шаги по настройке:
Создайте функцию в FunctionGraph по отправке событий из SMN-топика на внешний syslog-сервер.
Если syslog-сервер находится в облаке Advanced, привяжите функцию к VPC.
Шаг 1. Создайте SMN-топик
Simple Message Notification (SMN) — сервис для настройки email- и HTTP/HTTPS-уведомлений по принципу «publish/subscribe». В SMN есть две роли:
издатель — публикует сообщения в топике;
подписчик — получает сообщения из топиков.
Топик — это набор сообщений и точка доступа, через которую издатель и подписчик взаимодействуют друг с другом.
Чтобы создать топик:
Войдите в консоль управления Advanced:
В списке сервисов выберите Simple Message Notification.
В меню слева перейдите в раздел
.В правом верхнем углу нажмите Create Topic.
В поле Topic Name введите название топика.
В поле Display Name введите отображаемое имя отправителя сообщения.
В поле Enterprise Project выберите корпоративный проект, которому будет принадлежать топик.
Нажмите OK.
Топик создан. Перейдите к следующему шагу.
Шаг 2. Привяжите SMN-топик к событиям бакета OBS
Object Storage — сервис хранения и управления объектным хранилищем данных.
Чтобы привязать SMN-топик к событиям бакета OBS:
В списке сервисов выберите Object Storage Service.
Нажмите на название бакета, события которого нужно отправлять на syslog-сервер. При необходимости создайте новый бакет.
В меню слева перейдите в раздел
.Нажмите Create.
В поле Name введите название уведомления.
В поле Events отметьте все события — ObjectCreated и ObjectRemoved.
В поле Notification Method сначала выберите проект, в котором находится SMN-топик, а затем выберите сам SMN-топик, который вы создали ранее.
Нажмите OK.
SMN-топик привязан к событиям бакета OBS.
Шаг 3. Создайте функцию отправки событий на внешний syslog-сервер
FunctionGraph (FG) позволяет размещать и запускать код в бессерверной среде. Функция запускается при срабатывании триггера, определенного пользователем.
Чтобы создать и настроить функцию, которая отправляет syslog-сообщения на внешний syslog-сервер:
В списке сервисов выберите FunctionGraph.
В меню слева перейдите в раздел
.В правом верхнем углу нажмите Create Function.
В поле Function name введите название функции.
В поле Enterprise Project выберите корпоративный проект, которому будет принадлежать функция.
В поле Runtime выберите Python 3.6.
Оставшиеся параметры оставьте по умолчанию и нажмите Create Function.
В онлайн-редакторе на вкладке 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, который по умолчанию отключен. Чтобы включить модуль:Откройте конфигурационный файл
/etc/rsyslog.conf
.Раскомментируйте строки с подключением модуля
imudp
и его конфигурацию:# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514")
Порт
514
замените на актуальный.Перезапустите syslog командой:
systemctl restart syslog
Чтобы сохранить код, нажмите
.Переключитесь на вкладку Configuration и перейдите в раздел Triggers.
Чтобы привязать функцию к SMN-топику, нужно создать и настроить триггер. Для этого нажмите Create Trigger.
В поле Trigger Type выберите Simple Message Notification (SMN).
В поле Topic Name выберите топик, созданный на первом шаге.
Нажмите OK.
Настройка отправки событий сервиса OBS на внешний syslog-сервер завершена.
Шаг 4. Если syslog-сервер находится в облаке Advanced, привяжите функцию к VPC
Если события нужно отправлять на syslog-сервер, расположенный в облаке Advanced, привяжите созданную функцию к виртуальной сети VPC, в которой расположен целевой сервер:
В списке сервисов выберите Identity and Access Management.
В меню слева перейдите в раздел Agencies.
В правом верхнем углу нажмите Create Agency.
В поле Agency Name введите название агентства.
В поле Agency Type выберите Cloud Service.
В поле Cloud Service выберите сервис FunctionGraph.
Нажмите Next.
Отметьте права VPC Admin. Можно воспользоваться поиском в правом верхнем углу.
Нажмите Next.
Нажмите OK и Finish.
В списке сервисов выберите FunctionGraph.
В меню слева перейдите в раздел
.Нажмите на название ранее созданной функции.
На вкладке Configuration перейдите в раздел Permissions.
В списке Configuration Agency выберите ранее созданное агентство и нажмите Save.
Перейдите в раздел Network.
Активируйте параметр VPC Access.
В поле VPC выберите виртуальную сеть, в которой расположен целевой syslog-сервер.
В поле Subnet выберите подсеть, из которой функция будет динамически получать IP-адрес во время обращения к syslog.
Примечание
Убедитесь, что для этой подсети в группе безопасности syslog-сервера открыт UDP-порт, который указан в функции. Например:
Нажмите Save.
Настройка завершена.
для Dev & Test