Конфигурация журналирования сервера

Конфигурация журналирования сервера

Конфигурация журналирования сервера ​

Параметры журналирования сервера системы SmartDCIM задаются в файле /etc/saymon/logger.json.

Параметры журналирования ​

Ниже приведён пример настроек журналирования для сервера системы SmartDCIM.

json
{
  // Категории журнала
  "categories": {
    "Default": "Info"
  },
  // Каналы журналирования
  "channels": {
    // Канал 'default' предназначен для сообщений, которые не подходят к другим каналам (Общий канал)
    "default": [
      {
        "type": "console",
        "options": {
          "level": "debug",
          "stderrLevels": [
            "error"
          ],
          "colorize": false,
          "prettyPrint": true
        }
      }
    ],
    // Канал 'session' предназначен для сообщений о сессии пользователей (Частный канал)
    "session": [
      // Пример 1: отправка записей журнала на сервер по протоколу UDP
      // {
      //   type: 'udp',
      //   options: {
      //     server: 'localhost:514'
      //   }
      // },
      //
      // Пример 2: отправка записей журнала на сервер Kafka
      // {
      //   type: 'kafka',
      //   options: {
      //     server: 'localhost:9092',
      //     topic: 'LOG_SESSION'
      //   }
      // }
    ],
    // Канал 'audit' предназначен для сообщений об изменении параметров системы (Частный канал)
    "audit": [],
    // Канал 'faults' предназначен для сообщений об ошибках при доступе к системе (Частный канал)
    "faults": []
  }
}

categories ​

json
{
  "categories": {
    "Default": "Info",
    "MyActor": "Error",
    "MyOtherActor": "Debug"
  }
  ...
}
Раздел/ПараметрОписание
categories.<название-категории>
Указание минимального уровня журналирования для указанной категории.

Существует специальная категория, "Default", которая настраивает уровень журналирования по умолчанию.

Возможные уровни журналирования:

"Silent",

"Info",

"Warn",

"Error",

"Debug"

| | Существует специальная категория, "Default", которая настраивает уровень журналирования по умолчанию. | | | Существует специальная категория, "Default", которая настраивает уровень журналирования по умолчанию. | | |

channels ​

В этом разделе можно определить настройки каналов журналирования.

Журналирование в системе SmartDCIM разделяет все записи журналов на каналы. Каждый канал представляет собой определённый способ обработки записей журналов.

Сообщения системы безопасности можно отправлять в разные каналы. Каждый канал может содержать несколько транспортных модулей (механизмов доставки в соответствующую систему обработки, например udp или kafka) для доставки сообщения одновременно в несколько систем.

Например, сообщения об ошибках можно отправлять в канал "faults", который будет их перенаправлять одновременно в консоль и во внешнюю систему (например в syslog сервер).

json
{
  "channels": {
    "faults": [
      {
        "type": "console",
        "options": {
          "level": "debug"
        }
      },
      {
        "type": "udp",
        "options": {
          "server": "localhost:514"
        }
      }
    ]
  }
}

В системе определены 4 тематических канала:

  • session - информация об открытии/закрытии пользовательской сессии,
  • audit - информация об изменениях в системе,
  • faults - информация об ошибках при доступе к системе.
  • default – канал для сообщений, которые не подходят в другие каналы,

По умолчанию, в системе определён только канал default. Этот канал отправляет сообщения в консоль на сервере.

Все сообщения, отправленные в канал, который не был определён, игнорируются.

Для каждого канала можно определить несколько транспортных модулей для одновременной доставки сообщений в несколько систем хранения и обработки.

json
channels {
    ...
    "session": [
      // Отправка записей журнала на сервер через UDP
      {
        "type": "udp",
        "options": {
          "server": "localhost:514"
        }
      },

      // Отправка записей журнала в Kafka
      {
        "type": "kafka",
        "options": {
          "server": "localhost:9092",
          "topic": "LOG_SESSION"
        }
      }
    ],
    ...
}

NOTE

По умолчанию, в системе определён канал default . Указывать его настройки в файле конфигурации нужно только если требуется изменить его стандартное поведение (отправка сообщений в консоль на сервере).

Раздел/ПараметрОписание
channels.<назвзание-канала>.type
Тип транспортного модуля. Возможные типы модулей:

null (отключает журналирование),

udp,

kafka,

console.

| | channels.<назвзание-канала>.options | Настройки транспортного модуля. Зависят от его типа. |

common ​

json
"common": {
  "resolveRemoteIp": true
},
Раздел/ПараметрОписание
common.resolveRemoteIp
Если выставить этот параметр в значение true, то система будет автоматически определять имя клиента через DNS и включать его к сообщениям Журнала безопасности.

Эта настройка может повлиять на производительность системы журналирования и должна включаться только при особой необходимости. По умолчанию этот функционал отключён.

| | Эта настройка может повлиять на производительность системы журналирования и должна включаться только при особой необходимости. По умолчанию этот функционал отключён. | | | Эта настройка может повлиять на производительность системы журналирования и должна включаться только при особой необходимости. По умолчанию этот функционал отключён. | | |

udp ​

Раздел/ПараметрОписание
options.server
Адрес UDP сервера.

Система принимает следующие форматы адреса:

<ip-address|hostname>:<port>

<ip-address|hostname>

<port>

|

kafka ​

Раздел/ПараметрОписание
options.server
Адрес сервера Kafka.

Система принимает следующие форматы адреса:

<ip-address|hostname>:<port>

<ip-address|hostname>

<port>

| | options.topic | Топик Kafka, в который отправляется событие. |

console ​

Раздел/ПараметрОписание
options.level
Минимальный уровень сообщений, которые выводятся на консоль. По умолчанию 'debug'
options.stderrLevels
Список уровней журналирования, сообщения на которых нужно выводить в stderr, а не в stdout. Например ['error', 'debug', 'info']. По умолчанию, список пустой.
options.colorize
Выделять уровни записей журнала цветом. По умолчанию false.
options.prettyPrint
Форматировать сообщения в консоли. По умолчанию true.

Параметры ротации логов ​

Сервер системы SmartDCIM производит ротацию логов с помощью logrotate.

Конфигурация ротации журналов сервера системы SmartDCIM выполняется в файле /etc/logrotate.d/saymon.

Конфигурация logrotate имеет следующую структуру:

text
<путь до файлов журнала> {
    параметры конфигурации
}

Ниже приведена стандартная конфигурация logrotate на сервере для системы SmartDCIM и MongoDB.

  • Журнал системы SmartDCIM
  • Журнал MongoDB
text
/var/log/saymon/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}
text
/var/log/mongodb/*.log {
    daily
    rotate 30
    compress
    dateext
    missingok
    notifempty
    sharedscripts
    copytruncate
}

В таблице указаны используемые параметры logrotate:

ПараметрОписание
dailyЕжедневная ротация.
missingokПродолжать ротацию без ошибки, если отсутствует один из файлов.
rotate NДлительность хранения файлов в днях.
compressАрхивация файлов в формат .gzip.
delaycompressНе архивировать последний журнал до следующего цикла ротации.
notifemptyНе производить ротацию журнала, если он пуст.
copytruncateПисать журнал в один файл, урезая его после каждого шага ротации.
sharedscriptsВыполнять скрипты prescript и postscript только один раз для всего процесса ротации, а не для каждого журнала.