Просмотр журнала приложений Windows
Если настройками SQL Server предусмотрено использование журнала приложений Microsoft Windows, каждый сеанс SQL Server записывает новые события в этот журнал. В отличие от журнала ошибок SQL Server , новый журнал приложений не создается заново каждый раз при запуске экземпляра SQL Server.
Просмотр и управление журналом приложений Windows осуществляется с помощью средства просмотра событий Windows или средства просмотра журналов в среде SQL Server Management Studio.
С помощью средства просмотра событий можно просмотреть три журнала.
| Тип журнала Windows | Описание |
|---|---|
| Системный журнал | Регистрирует события, записанные компонентами операционной системы Windows. Например, отказ загрузки драйвера или другого системного компонента при запуске записывается в системный журнал. |
| Журнал безопасности | Регистрирует события безопасности, например неудавшиеся попытки входа в систему. Это помогает отследить изменения в системе безопасности и идентифицировать возможные «дыры». Например, попытка войти в систему регистрируется в журнале безопасности в зависимости от параметров аудита в диспетчере пользователей. |
Дополнительные сведения о средстве просмотра событий, управлении журналом приложений и данных, которые он представляет, см. в документации Windows.
Просмотр журнала приложений Windows
Просмотр журнала приложений Windows
SQL Server настроен для использования журнала приложений Windows, каждый сеанс SQL Server записывает в этот журнал новые события. В отличие от журнала ошибок SQL Server, новый журнал приложений не создается каждый раз при запуске экземпляра SQL Server.
В этой статье рассматриваются операционные системы Windows 10 и более поздних версий.
Просмотр журнала приложений Windows
- На панели поиска введите средство просмотра событий, а затем выберите классическое приложение Просмотр событий.
- В Просмотре событий разверните папку Журналы Windows и выберите журнал событий Приложение.
- События SQL Server определяются записью MSSQLSERVER (именованные экземпляры определяются с помощью MSSQL$instance_name>) в столбце Source. События агента SQL Server определяются записью SQLSERVERAGENT (для именованных экземпляров SQL Server, события агента SQL Server определяются с помощью SQLAgent$
> События службы Microsoft Search идентифицируются записью Microsoft Search. - Чтобы просмотреть журнал с другого компьютера, щелкните правой кнопкой мыши элемент Просмотр событий (локальных). Выберите пункт Подключение к другому компьютеру и заполните поля в диалоговом окне Выбор компьютера.
- При необходимости, чтобы отобразить только события SQL Server, в меню «Вид » выберите «Фильтр«. В списке Источник событий выберите MSSQLSERVER. Чтобы просмотреть только события агента SQL Server, вместо этого выберите SQLSERVERAGENT в списке источников событий.
- Чтобы просмотреть дополнительные сведения о событии, дважды щелкните событие.
Вертим логи как хотим ― анализ журналов в системах Windows

Пора поговорить про удобную работу с логами, тем более что в Windows есть масса неочевидных инструментов для этого. Например, Log Parser, который порой просто незаменим.
В статье не будет про серьезные вещи вроде Splunk и ELK (Elasticsearch + Logstash + Kibana). Сфокусируемся на простом и бесплатном.
Журналы и командная строка
До появления PowerShell можно было использовать такие утилиты cmd как find и findstr. Они вполне подходят для простой автоматизации. Например, когда мне понадобилось отлавливать ошибки в обмене 1С 7.7 я использовал в скриптах обмена простую команду:
findstr "Fail" *.log >> fail.txt
Она позволяла получить в файле fail.txt все ошибки обмена. Но если было нужно что-то большее, вроде получения информации о предшествующей ошибке, то приходилось создавать монструозные скрипты с циклами for или использовать сторонние утилиты. По счастью, с появлением PowerShell эти проблемы ушли в прошлое.
Основным инструментом для работы с текстовыми журналами является командлет Get-Content, предназначенный для отображения содержимого текстового файла. Например, для вывода журнала сервиса WSUS в консоль можно использовать команду:
Get-Content -Path 'C:\Program Files\Update Services\LogFiles\SoftwareDistribution.log' | Out-Host -Paging
Для вывода последних строк журнала существует параметр Tail, который в паре с параметром Wait позволит смотреть за журналом в режиме онлайн. Посмотрим, как идет обновление системы командой:
>Get-Content -Path "C:\Windows\WindowsUpdate.log" -Tail 5 -Wait

Смотрим за ходом обновления Windows.
Если же нам нужно отловить в журналах определенные события, то поможет командлет Select-String, который позволяет отобразить только строки, подходящие под маску поиска. Посмотрим на последние блокировки Windows Firewall:
Select-String -Path "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" -Pattern 'Drop' | Select-Object -Last 20 | Format-Table Line

Смотрим, кто пытается пролезть на наш дедик.
При необходимости посмотреть в журнале строки перед и после нужной, можно использовать параметр Context. Например, для вывода трех строк после и трех строк перед ошибкой можно использовать команду:
Select-String 'C:\Windows\Cluster\Reports\Cluster.log' -Pattern ' err ' ‑Context 3
Оба полезных командлета можно объединить. Например, для вывода строк с 45 по 75 из netlogon.log поможет команда:
Get-Content 'C:\Windows\debug\netlogon.log' | Select-Object -First 30 -Skip 45
Журналы системы ведутся в формате .evtx, и для работы с ними существуют отдельные командлеты. Для работы с классическими журналами («Приложение», «Система», и т.д.) используется Get-Eventlog. Этот командлет удобен, но не позволяет работать с остальными журналами приложений и служб. Для работы с любыми журналами, включая классические, существует более универсальный вариант ― Get-WinEvent. Остановимся на нем подробнее.
Для получения списка доступных системных журналов можно выполнить следующую команду:
Get-WinEvent -ListLog *

Вывод доступных журналов и информации о них.
Для просмотра какого-то конкретного журнала нужно лишь добавить его имя. Для примера получим последние 20 записей из журнала System командой:
Get-WinEvent -LogName 'System' -MaxEvents 20

Последние записи в журнале System.
Для получения определенных событий удобнее всего использовать хэш-таблицы. Подробнее о работе с хэш-таблицами в PowerShell можно прочитать в материале Technet about_Hash_Tables.
Для примера получим все события из журнала System с кодом события 1 и 6013.
Get-WinEvent -FilterHashTable @
В случае если надо получить события определенного типа ― предупреждения или ошибки, ― нужно использовать фильтр по важности (Level). Возможны следующие значения:
- 0 ― всегда записывать;
- 1 ― критический;
- 2 ― ошибка;
- 3 ― предупреждение;
- 4 ― информация;
- 5 ― подробный (Verbose).
Собрать хэш-таблицу с несколькими значениями важности одной командой так просто не получится. Если мы хотим получить ошибки и предупреждения из системного журнала, можно воспользоваться дополнительной фильтрацией при помощи Where-Object:
Get-WinEvent -FilterHashtable @ | Where-Object -FilterScript

Ошибки и предупреждения журнала System.
Аналогичным образом можно собирать таблицу, фильтруя непосредственно по тексту события и по времени.
Подробнее почитать про работу обоих командлетов для работы с системными журналами можно в документации PowerShell:
PowerShell ― механизм удобный и гибкий, но требует знания синтаксиса и для сложных условий и обработки большого количества файлов потребует написания полноценных скриптов. Но есть вариант обойтись всего-лишь SQL-запросами при помощи замечательного Log Parser.
Работаем с журналами посредством запросов SQL
Утилита Log Parser появилась на свет в начале «нулевых» и с тех пор успела обзавестись официальной графической оболочкой. Тем не менее актуальности своей она не потеряла и до сих пор остается для меня одним из самых любимых инструментов для анализа логов. Загрузить утилиту можно в Центре Загрузок Microsoft, графический интерфейс к ней ― в галерее Technet. О графическом интерфейсе чуть позже, начнем с самой утилиты.
О возможностях Log Parser уже рассказывалось в материале «LogParser — привычный взгляд на непривычные вещи», поэтому я начну с конкретных примеров.
Для начала разберемся с текстовыми файлами ― например, получим список подключений по RDP, заблокированных нашим фаерволом. Для получения такой информации вполне подойдет следующий SQL-запрос:
SELECT extract_token(text, 0, ' ') as date, extract_token(text, 1, ' ') as time, extract_token(text, 2, ' ') as action, extract_token(text, 4, ' ') as src-ip, extract_token(text, 7, ' ') as port FROM 'C:\Windows\System32\LogFiles\Firewall\pfirewall.log' WHERE action='DROP' AND port='3389' ORDER BY date,time DESC
Посмотрим на результат:

Смотрим журнал Windows Firewall.
Разумеется, с полученной таблицей можно делать все что угодно ― сортировать, группировать. Насколько хватит фантазии и знания SQL.
Log Parser также прекрасно работает с множеством других источников. Например, посмотрим откуда пользователи подключались к нашему серверу по RDP.
Работать будем с журналом TerminalServices-LocalSessionManager\Operational.
Не со всеми журналами Log Parser работает просто так ― к некоторым он не может получить доступ. В нашем случае просто скопируем журнал из %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx в %temp%\test.evtx.
Данные будем получать таким запросом:
SELECT timegenerated as Date, extract_token(strings, 0, '|') as user, extract_token(strings, 2, '|') as sourceip FROM '%temp%\test.evtx' WHERE EventID = 21 ORDER BY Date DESC

Смотрим, кто и когда подключался к нашему серверу терминалов.
Особенно удобно использовать Log Parser для работы с большим количеством файлов журналов ― например, в IIS или Exchange. Благодаря возможностям SQL можно получать самую разную аналитическую информацию, вплоть до статистики версий IOS и Android, которые подключаются к вашему серверу.
В качестве примера посмотрим статистику количества писем по дням таким запросом:
SELECT TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'T'), 'yyyy-MM-dd')) AS Date, COUNT(*) AS [Daily Email Traffic] FROM 'C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking\*.LOG' WHERE (event-id='RECEIVE') GROUP BY Date ORDER BY Date ASC
Если в системе установлены Office Web Components, загрузить которые можно в Центре загрузки Microsoft, то на выходе можно получить красивую диаграмму.

Выполняем запрос и открываем получившуюся картинку…

Любуемся результатом.
Следует отметить, что после установки Log Parser в системе регистрируется COM-компонент MSUtil.LogQuery. Он позволяет делать запросы к движку утилиты не только через вызов LogParser.exe, но и при помощи любого другого привычного языка. В качестве примера приведу простой скрипт PowerShell, который выведет 20 наиболее объемных файлов на диске С.
$LogQuery = New-Object -ComObject "MSUtil.LogQuery" $InputFormat = New-Object -ComObject "MSUtil.LogQuery.FileSystemInputFormat" $InputFormat.Recurse = -1 $OutputFormat = New-Object -ComObject "MSUtil.LogQuery.CSVOutputFormat" $SQLQuery = "SELECT Top 20 Path, Size INTO '%temp%\output.csv' FROM 'C:\*.*' ORDER BY Size DESC" $LogQuery.ExecuteBatch($SQLQuery, $InputFormat, $OutputFormat) $CSV = Import-Csv $env:TEMP'\output.csv' $CSV | fl Remove-Item $env:TEMP'\output.csv' $LogQuery=$null $InputFormat=$null $OutputFormat=$null
Ознакомиться с документацией о работе компонента можно в материале Log Parser COM API Overview на портале SystemManager.ru.
Благодаря этой возможности для облегчения работы существует несколько утилит, представляющих из себя графическую оболочку для Log Parser. Платные рассматривать не буду, а вот бесплатную Log Parser Studio покажу.

Интерфейс Log Parser Studio.
Основной особенностью здесь является библиотека, которая позволяет держать все запросы в одном месте, без россыпи по папкам. Также сходу представлено множество готовых примеров, которые помогут разобраться с запросами.
Вторая особенность ― возможность экспорта запроса в скрипт PowerShell.
В качестве примера посмотрим, как будет работать выборка ящиков, отправляющих больше всего писем:
Выборка наиболее активных ящиков.
При этом можно выбрать куда больше типов журналов. Например, в «чистом» Log Parser существуют ограничения по типам входных данных, и отдельного типа для Exchange нет ― нужно самостоятельно вводить описания полей и пропуск заголовков. В Log Parser Studio нужные форматы уже готовы к использованию.
Помимо Log Parser, с логами можно работать и при помощи возможностей MS Excel, которые упоминались в материале «Excel вместо PowerShell». Но максимального удобства можно достичь, подготавливая первичный материал при помощи Log Parser с последующей обработкой его через Power Query в Excel.
Приходилось ли вам использовать какие-либо инструменты для перелопачивания логов? Поделитесь в комментариях.
Системы управления базами данных
Получение событий с Microsoft SQL Server возможно реализовать двумя способами:
- через события Windows events;
- через ODBC коллектор.
Настройка получения событий через windows events.
Включение аудита MS SQL Server:
- Запустите Microsoft SQL Server Management Studio.
- В окне подключения к базе данных укажите название экземпляра и введите учетные данные (см. рисунок 1).
Рисунок 1 — Подключение к базе данных - В панели Object explorer перейдите во вкладку Security → Audits. По правому щелчку мыши выберите опцию New Audit. (см. рисунок 2).
Рисунок 2 — Создание аудита - В открывшейся вкладке Create Audit укажите название аудита в поле Audit name. В качестве Audit destination выберите Application Log, нажмите ОК (см. рисунок 3).
Рисунок 3 — Настройка аудита - В панели Object explorer перейдите во вкладку Security → Server Audit Specification. По правому щелчку мыши выберите опцию New Server Audit Specification. (см. рисунок 4).
Рисунок 4 — Создание спецификации аудита - В открывшейся вкладке Create Server Audit Specification укажите название спецификации аудита в поле Name. В поле Audit выберите ранее созданный аудит из выпадающего списка. В поле Actions выберите типы событий для отслеживания, нажмите ОК (см. рисунок 5).
Рисунок 5 — Настройка спецификации аудита
Создание учетной записи windows:

- В панели управления Windows откройте консоль Computer Management (Управление компьютером).
- В консоли откройте раздел System Tools (Служебные программы) → Local Users and Groups (Локальные пользователи и группы) → Users (Пользователи).
- В контекстном меню раздела Users (Пользователи) выберите функцию New User (Новый пользователь) для создания нового пользователя (см. рисунок 6). Рисунок 6 — Создание пользователя
- В открывшемся окне New User (Новый пользователь) введите следующие денные (см. рисунок 7):
- В поле Name (Имя) ввести имя нового пользователя.
- В поле Password (Пароль) установить пароль и подтвердить его в поле Confirm Password (Подтвердить).
При необходимости выставить настройки в пунктах:
- User cannot change password (Запретить смену пароля пользователем).
- Password never expires (Срок действия пароля неограничен).
- Для создания пользователя с заданными параметрами нажать кнопку Create.

Рисунок 7 — Настройка параметров пользователя
Предоставление пользователю прав доступа к журналу событий:
- В консоли Computer Management (Управление компьютером) откройте раздел System Tools (Служебные программы) → Local Users and Groups (Локальные пользователи и группы) → Groups (Группы).
- Выберите в списке группу Event Log Readers (Читатели журнала событий).
- Откройте правой кнопкой мыши контекстное меню группы Event Log Readers (Читатели журнала событий) и выберите пункт Add To Group (Добавить в группу). Откроется окно Event Log Readers Properties (Свойства: Читатели журнала событий).
- Для добавления пользователя в группу:
- Нажать кнопку Add (Добавить).
- В открывшемся окне Select Users (Выбор: Пользователи) выбрать в списке ранее созданного пользователя и добавить его в группу, нажав кнопку ОК.
- Для сохранения введенных настроек в окне Event Log Readers Properties (Свойства: Читатели журнала событий) нажмите кнопку OK.
Добавление новой конфигурации в коллектор:
Передача событий в Платформу Радар осуществляется через eventlog_collector. Ниже приведены настройки с описанием для добавления в config.yaml:
eventlog_collector: &eventlog_collector id: "eventlog_collector" channel: ['Application'] query: "*[System[Provider[@Name='Имя экземпляра СУБД>']]]" batch_size: 31 timeout: 3 poll_interval: 1 read_from_last: false resolve_sid: false log_level: "INFO" worker_count: 1 remote: enabled: true user: "" password: "" domain: "." remote_servers: [""] auth_method: "Negotiate" encoding: change_to_utf8: true original_encoding: "cp1251"
В качестве данных для подключения необходимо использовать созданную ранее учетную запись. В поле query мы указываем запрос для получения событий только от настраиваемого источника.
Настройка получения событий через odbc коллектор.
Включение аудита MS SQL Server:
- Запустите Microsoft SQL Server Management Studio.
- В окне подключения к базе данных укажите название экземпляра и введите учетные данные (см. рисунок 8).
Рисунок 8 — Подключение к базе данных - В панели Object explorer перейдите во вкладку Security → Audits. По правому щелчку мыши выберите опцию New Audit. (см. рисунок 9).
Рисунок 9 — Создание аудита - В открывшейся вкладке Create Audit укажите название аудита в поле Audit name. В качестве Audit destination выберите Application Log, нажмите ОК (см. рисунок 10).
Рисунок 10 — Настройка аудита - В панели Object explorer перейдите во вкладку Security → Server Audit Specification. По правому щелчку мыши выберите опцию New Server Audit Specification. (см. рисунок 11).
Рисунок 11 — Создание спецификации аудита - В открывшейся вкладке Create Server Audit Specification укажите название спецификации аудита в поле Name. В поле Audit выберите ранее созданный аудит из выпадающего списка. В поле Actions выберите типы событий для отслеживания, нажмите ОК (см. рисунок 12).
Рисунок 12 — Настройка спецификации аудита
Установка ODBC драйвера:
- С официального сайта скачайте ODBC Driver for SQL Server.
- Установите скачанный драйвер на сервер с коллектором.
Добавление новой конфигурации в коллектор:
Передача событий в Платформу Радар осуществляется через odbc_collector. Ниже приведены настройки с описанием для добавления в config.yaml:
odbc_collector: &odbc_collector id: "odbc_collector" poll_interval: 5 read_from_last: true connection_string: "server=IP-адрес сервера с СУБД;port=1433;driver=;database=master;Encrypt=Optional;UID=;PWD=" sql: > SELECT CAST(DATEDIFF_BIG(ns, '1970-01-01 00:00:00.0000000', event_time) AS BIGINT) as epoch, event_time, action_id, succeeded, session_id, class_type, session_server_principal_name, server_principal_name, server_principal_sid, database_principal_name, target_server_principal_name, target_server_principal_sid, target_database_principal_name, server_instance_name, database_name, schema_name, object_name, statement, additional_information, transaction_id FROM fn_get_audit_file ('C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\*.sqlaudit', default, default) WHERE CAST(DATEDIFF_BIG(ns, '1970-01-01 00:00:00.0000000', event_time) AS BIGINT) > ?; bookmark_field: "epoch"
В поле connection_string укажите:
- IP-адрес сервера с СУБД
- Порт для подключения к базе данных
- Название драйвера Примечание: Название драйвера можно узнать, запустив Administrative Tools → ODBC Data Sources (64-bit) во вкладке Drivers (поле Name)


- Название базы данных
- Учетные данные для подключения к БД
В разделе с SQL запросом необходимо указать путь к файлам с событиями аудита.
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\*.sqlaudit
В данном случае коллектор будет читать все найденные файлы аудита по адресу C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\
PostgreSQL
Для настройки логирования событий из БД PostrgreSQL выполните шаги:
-
В командной строке сервера выполните команду
psql -U -c 'SHOW config_file'
log_destination = 'syslog' logging_collector = off syslog_facility = 'LOCAL0' syslog_ident = 'postgres' syslog_sequence_numbers = on syslog_split_messages = off client_min_messages = log log_min_messages = info log_min_error_statement = info log_checkpoints = off log_connections = on log_disconnections = on log_duration = off log_error_verbosity = default log_hostname = on log_line_prefix = 'pgmessage: %m %a %u %d %r %i %e ' log_statement = 'mod' lc_messages = 'en_US.UTF-8'
nano /etc/rsyslog.d/10-pgsql.conf if $programname == 'postgres' then @@rsyslog:4000
Настройка ODBC PostgreSQL
- В конфигурационном файле /var/app/data/postgresql.conf настройте тип логирования (csvlog) и включите logging_collector .
log\_destination = 'csvlog' logging\_collector = on client\_min\_messages = log log\_min\_messages = info log\_min\_error\_statement = info log\_checkpoints = off log\_connections = on log\_disconnections = on log\_duration = off log\_error\_verbosity = default log\_hostname = on log\_line\_prefix = 'pgmessage: %m %a %u %d %r %i %e ' log\_statement = 'mod' lc\_messages = 'en\_US.UTF-8'
CREATE TABLE postgres_log ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text, PRIMARY KEY (session_id, session_line_num) );
COPY postgres_log FROM '/var/app/data/pg_log/postgresql-2020-09-01_000000.csv' WITH csv;

Подробнее о переносе описано в Руководстве PostgreSQL
Проверьте наличие драйвера и его название, оно пригодится при настройке ConnectionString в ODBC-модуле NXLog Рисунок 13 — Настройка ODBC
Настройка ODBC-модуля NXLog
Строка для ODBC-подключения:
Module im\_odbc ConnectionString Driver=;Server=;Port=;Database=Database\_name;UID=Username;PWD=password;
Driver — имя драйвера ODBC из п.5 — PostgreSQL ODBC Driver(UNICODE) или PostgreSQL ODBC Driver(ANSI).
Server — имя сервера PostgreSQL.
Port — порт, используемый для подключения к серверу PostgreSQL (default 5432).
Database — имя базы данных PostgreSQL.
Uid и Pwd — Uid (идентификатор пользователя) и Pwd (пароль) для подключения.
Oracle Database
Настройка источника Oracle Database на отправку событий с помощью Oracle Audit.
Настройку источника нужно выполнять от имени учетной записи root, поддерживающей в настраиваемом экземпляре СУБД роль sysadmin с привилегиями sysdba и sysoper:
- Подключитесь с помощью sqlplus локально, выполнив команду: sqlplus / as sysdba
- Выполните команду: alter session set «_ORACLE_SCRIPT»=true;
- Проверьте параметры аудита командой: show parameter audit
- Выполните команду установки журнала аудита OS: ALTER SYSTEM SET audit_trail=OS SCOPE=SPFILE;
- Выключите СУБД командой: Shutdown
- Включите СУБД командой: Startup
- Проверьте параметры аудита командой: show parameter audit Убедитесь, что audit_trail принял значение OS.
Запишите значение audit_file_dest , оно понадобится при настройке отправки сообщений для параметра File . - Выполните команду: ALTER SYSTEM SET audit_sys_operations=true SCOPE=SPFILE;
- Установите важность событий командой: alter system set audit_syslog_level=’local5.info’ scope=spfile sid=’*’;
- Выполните команду ALTER SYSTEM SET audit_trail=DB, EXTENDED SCOPE=SPFILE;
- Выполните последовательно команды:
Shutdown Startup show parameter audit

На выходе должны появиться сообщения (см. рисунок 14). Рисунок 14 — Вывод сообщений
Донастройте параметры аудита:
AUDIT ALTER SYSTEM BY ACCESS; AUDIT DELETE ON SYS.AUD$ BY ACCESS; AUDIT DELETE ON SYS.FGA_LOG$ BY ACCESS; AUDIT EXECUTE ON SYS.DBMS_FGA BY ACCESS; AUDIT INSERT ON SYS.AUD$ BY ACCESS; AUDIT INSERT ON SYS.FGA_LOG$ BY ACCESS; AUDIT SELECT ON SYS.DBA_USERS BY ACCESS; AUDIT SELECT ON SYS.LINK$ BY ACCESS; AUDIT SELECT ON SYS.USER_DB_LINKS BY ACCESS; AUDIT SELECT ON SYS.USER_HISTORY$ BY ACCESS; AUDIT SYSTEM AUDIT BY ACCESS; AUDIT TABLE BY ACCESS; AUDIT UPDATE ON SYS.AUD$ BY ACCESS; AUDIT UPDATE ON SYS.FGA_LOG$ BY ACCESS;
- создайте файл с конфигурацией для rsyslog: nano /etc/rsyslog.d/oracle_audit.conf
- настройте чтение из файла:
input(type="imfile" File=".xml" PersistStateInterval="100" Tag="oracle_audit_trail:" Severity="info" Facility="local5" startmsg.regex="" ) local5.* @@:2770
Oracle MySQL
Для настройки источника Oracle MySQL выполните следующие шаги:
-
Установите модуль аудита MariaDB, последовательно выполнив команды:
wget http://mirror.mephi.ru/mariadb/mariadb-10.1.45/bintar-linux-x86_64/mariadb-10.1.45-linux-x86_64.tar.gz sudo tar -xzf mariadb-10.5.5-linux-x86_64.tar.gz sudo install mariadb-10.1.45-linux-x86_64/lib/plugin/server_audit.so /usr/lib/mysql/plugin sudo install mariadb-10.5.5-linux-x86_64/lib/plugin/server_audit.so /usr/lib/mysql/plugin Sudo mysql INSTALL PLUGIN server_audit SONAME 'server_audit.so'; SHOW PLUGINS; Set Global server_audit_logging=on; EXIT;
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Добавляем настройки plugin-load=server_audit=server_audit.so server_audit_logging=on server_audit_events=connect,query,table,query_ddl,query_dml,query_dcl server_audit_output_type = SYSLOG server_audit_syslog_facility = LOG_SYSLOG server_audit_file_path = /var/log/mysql/audit.log
``` SHOW VARIABLES LIKE '%audit%'; EXIT; ```
Далее необходимо настроить rsyslogd. Для этого:
- Создайте файл с конфигурацией для rsyslog: sudo nano /etc/rsyslog.d/20-mysql.conf
- Запишите в созданный файл следующие значения:
template (name="radar" type="string" string="%TIMESTAMP. date-rfc3339% %HOSTNAME% %syslogtag%%$.suffix%%msg. sp-if-no-1st-sp%%msg%") :syslogtag, contains, "mysql" @@:4005;radar
Orcale NetListener
Для настройки источника Oracle NetListener выполните следующие шаги:
- Запустите LSNRCTL командой: LSNRCTL
- Определите экземпляр используемой службы Oracle NetListener командой: show current_listener
- После выполнения команды отобразится имя экземпляра СУБД.
- Для смены используемого экземпляра используется команда: set current_listener.
- Проверьте статус журналирования: show log_status
- Если для параметра log_status указано OFF, включите журналирование: set log_status on save_config reload
- Для отправки событий через rsyslog, узнайте путь к лог-файлам командой: show log_directory Он понадобится для следующего этапа настройки в параметре File.
- Создайте конфигурационный файл для rsyslog: sudo nano /etc/rsyslog.d/oracle_netlistener.conf
- Настройте чтение из файла:
module(load="imfile" mode="inotify") #PollingInterval="10") #mode="inotify") input(type="imfile" File="//log.xml" PersistStateInterval="100" Tag="oracle_netlistener:" Severity="info" Facility="local3" readMode="2" )local3.* @@:2771