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

Параметры журналирования сервера системы Центральный Пульт задаются в файле /etc/saymon/logger.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

{
  "categories": {
    "Default": "Info",
    "MyActor": "Error",
    "MyOtherActor": "Debug"
  }
  ...
}
Раздел/Параметр Описание

categories.<название-категории>

Указание минимального уровня журналирования для указанной категории.

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

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

  • "Silent",

  • "Info",

  • "Warn",

  • "Error",

  • "Debug"

channels

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

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

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

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

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

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

  • session - информация об открытии/закрытии пользовательской сессии,

  • audit - информация об изменениях в системе,

  • faults - информация об ошибках при доступе к системе.

  • default – канал для сообщений, которые не подходят в другие каналы,

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

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

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

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

      // Отправка записей журнала в Kafka
      {
        "type": "kafka",
        "options": {
          "server": "localhost:9092",
          "topic": "LOG_SESSION"
        }
      }
    ],
    ...
}
По умолчанию, в системе определён канал default. Указывать его настройки в файле конфигурации нужно только если требуется изменить его стандартное поведение (отправка сообщений в консоль на сервере).
Раздел/Параметр Описание

channels.<назвзание-канала>.type

Тип транспортного модуля. Возможные типы модулей:

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

  • udp,

  • kafka,

  • console.

channels.<назвзание-канала>.options

Настройки транспортного модуля. Зависят от его типа.

common

"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.

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

Сервер системы Центральный Пульт производит ротацию логов с помощью logrotate.

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

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

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

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

  • Журнал системы Центральный Пульт

  • Журнал MongoDB

/var/log/saymon/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}
/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 только один раз для всего процесса ротации, а не для каждого журнала.