Центр удаленного доступа  (08.07.2020)
Протоколирование отладочных сообщений

Поддерживается 2 вида протоколирования:

  • в локальный системный журнал (journalctl)
  • отправка на syslog сервер (как локальный, так и внешний)

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

Для "ручного" включения полного протоколирования отладочных сообщений, необходимо добавить ключи запуска для требуемого приложения:

  • -DebugMessageToJournal - протоколирование в локальный системный журнал
  • -DebugMessageToSyslog host[:port] [-udp | -tcp | -ssl] - протоколирование на syslog сервер.

Для отбора из системного журнала отладочных сообщений, которые бы попали в Отладочный монитор в случае работы сервиса на Windows, можно использовать фильтрацию по аттрибуту SYSLOG_SDID=DebugMessage (без данной фильтрации будут отобраны сообщения от любых приложений/служб с данного хоста), а также указать другие критерии отбора.

       
  • Пример отбора сообщений с подробным выводом в удобочитаемом виде:
    journalctl -o verbose SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
    
  • Пример отбора сообщений для дальнейшей загрузки полученного файла в Отладочный монитор, или отправки в службу поддержки:
    journalctl -o export SYSLOG_SDID=DebugMessage --since="2017-09-13 15:00:00"
    

Настройка Отладочного монитора, запущенного на Windows, в качестве syslog сервера, описана с статье Использование отладочного монитора.

Также стоит отметить, что по умолчанию в ОС все сообщения отправленные в системный журнал, автоматически попадают и на локальный syslog сервер (служба rsyslog). В свою очередь, rsyslog может быть настроен на пересылку локальных сообщений на некий внешний syslog сервер.

Это дает дополнительную возможность пересылать отладочные сообщения с Linux в Отладочный монитор, который запущен на Windows. Для этого можно добавить конфиг-файл (с любым именем, но расширением.conf) в каталог конфигов rsyslog ("/etc/rsyslog.d/") со следующим содержанием:

template(name="SyslogProtocol23FormatFromCEE" type="list") {
  constant(value="<")
  property(name="pri")
  constant(value=">1 ")
  property(name="timestamp" dateFormat="rfc3339")
  constant(value=" ")
  property(name="hostname")
  constant(value=" ")
  property(name="programname")
  constant(value=" ")
  property(name="$!_PID")
  constant(value=" ")
  property(name="$!SYSLOG_MESSAGE_ID")
  constant(value=" [")
  property(name="$!SYSLOG_SDID")
  constant(value="@77737676")
  constant(value=" ModuleName=\"")
  property(name="$!MODULENAME")
  constant(value="\" TID=\"")
  property(name="$!TID")
  constant(value="\" Sender=\"")
  property(name="$!SENDER")
  constant(value="\"] ")
  property(name="$bom")
  property(name="$!MESSAGE")
  constant(value="\n")
}

if $inputname == "imjournal" then {
  if $!SYSLOG_SDID == "DebugMessage" then {
    action(type="omfwd" Target="192.168.1.50" protocol="tcp" Port="514" TCP_Framing="octet-counted" Template="SyslogProtocol23FormatFromCEE")
  }
}