powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вынос прикладных логов из БД
5 сообщений из 5, страница 1 из 1
вынос прикладных логов из БД
    #39850326
sbk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sbk
Гость
Добрый день.

Есть прикладное приложение на БД Oracle (хранимые pl/sql процедурки), осуществляющее запись определенных сообщений (прикладных логов) в прикладные таблицы.

Какие можно предложить способы по выносу записи прикладных логов с БД (при этом предполагается, что архитектура приложения не измениться - по прежнему логика на БД), при этом не слишком уронив текущую производительность:
- запись по db-link непосредственно в приемник,
- запись в файлы с последующим асинхронным чтением (logstash и пр.) и отправкой на приемник,
- запись в AQ очереди с последующим асинхронным вычитыванием и отправкой на приемник,
- отправка сообщений через rest-api,
- сохранение записи в текущие таблицы с настройкой репликации оперативных данных на удаленный приемник (например OGG) и удалением архивных данных (партиций) на источнике

Что еще?

Хотелось бы получить вариант при котором исходное приложение, отправившее сообщение, не дожидалось факта того получил ли его приемник или нет (независимо от того куда оно будет писать файл, таблица, web сервер и пр.), а продолжало свою работу.
...
Рейтинг: 0 / 0
вынос прикладных логов из БД
    #39850337
Фотография rf_mail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
вынос прикладных логов из БД
    #39850383
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно в syslog писать, а на syslog-сервере бигдату прикрутить :)
...
Рейтинг: 0 / 0
вынос прикладных логов из БД
    #39850386
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потеря сообщений была не критична и была такая система:
1. прикладное ПО вызывало PLOG, который писал в buffered AQ (PLOG был допилен для этого)
2. было несколько процессов, читающих AQ, и вызывающих rsyslog через UTL_TCP (кол-во процессов регулировалось настройкой в прикладной таблице)
3. дальше был logstash, ElasticSearch, Kibana (ELK), куда шли логи и с серверов приложений, что в одном месте можно было видеть клиентские запросы end-to-end. Java-программисты были обучены использовать Execution Context ID (ECID), который присутствовал во всех логах, а также v$session.ecid, v$active_session_history.ecid, что на любой вопрос, почему такая-то операция работала дольше обычного, поддержка могла по логам определять проблемное место (DB/AppServer). А дальше уже команда, отвечающая за конкретный компонент по ECID могла смотреть детально, в чем причина медленной работы.
4. вызов PLOG также добавлял в сообщение мета-атрибуты (некоторые из sys_context('USERENV') и ECID))

Не успел реализовать:
1. покрытие клиентского уровня (JavaScript) и генерации ECID на клиенте с последующей отправкой данных в микро-сервис логирования и пробросом ECID по всем остальным уровням стэка.
2. поддержка ECID в фоновых заданиях DBMS_SCHEDULER через соответствующий context:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> exec dbms_session.set_context('E2E_CONTEXT', 'ECID_UID', sys_guid())

PL/SQL procedure successfully completed.

SQL> select ecid from v$session where sid=sys_context('userenv', 'sid');

ECID
----------------------------------------------------------------
903B113E3E61530FE053DB1F13AC1B06


3. Автоматическое сохранение данных ASH по ECID, работавших более определенного времени, определенного владельцем сервиса, в отдельную БД (Performance Data Warehouse, которая являлась и AWR Warehouse ).
4. Автоматическая классификация сохраненных "долгих" ECID и известных проблем (ASH имеет SQL_ID. Все запросы по оптимизации в Jira тоже имели SQL_ID => Можно автоматически привязывать ECID/Jira Issue, чтобы оставлять для ручного разбора только новые проблемы)

Были какие-то костыли на случай на случай того, что AQ не будет успевать разбираться в виде либо отключения логирования автоматически, либо переключения на non-buffered запись.
В непромышленных средах разработчик мог указать параметром в прикладной таблице, чтобы использовалась запись логов в таблицу PLOG для удобства отладки.

buffered AQ использовались по двум причинам:
1. производительность
2. минимизация нагрузки на БД, создаваемой подсистемой логирования
...
Рейтинг: 0 / 0
вынос прикладных логов из БД
    #39850392
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sbkЕсть прикладное приложение на БД Oracle (хранимые pl/sql процедурки),
осуществляющее запись определенных сообщений (прикладных логов) в прикладные таблицы.Что вас сейчас не устраивает в имеющемся решении?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вынос прикладных логов из БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]