Eventlog To Syslog Translator - Разработка прекращена!

Сервис для считывания сообщений журнала событий Windows и передачи их на сервер Syslog.

Архив программы: e2slt.7z

Архив исходного кода: e2slt_src.zip

Репозиторий кода: git://e2slt.git.sourceforge.net/gitroot/e2slt/e2slt

Версия: 1.1.3-2009.09.02

Лицензия: GPLv3

Зависимости: libiconv

Установка

  1. Разархивировать прилагаемый файл в удобное место, например, в %SystemDrive%\Program Files.
  2. В командной строке из каталога, куда была разархивирована программа, выполнить следующие команды:
    > e2slt.exe /r
    Service installed succesfully.
  3. Внести необходимые поправки в файл e2slt.ini, а именно добавить адрес(а) серверов syslog. По-умолчанию настроен только сервер localhost, что в большинстве случаев не является правильным. Формат записей о серверах:
    <IP-адрес>:<протокол>:<порт>

    Например, 192.168.0.1:UDP:514. Также есть возможность настройки перекодирования сообщений с помощью библиотеки libiconv. Для её включения необходимо установить параметр Need секции Convert в 1 и указать (в формате libiconv) соответствующие кодировки параметрами from и to.

  4. Запустить сервис. Это можно сделать как из оснастки Windows «Службы и приложения», так и через командную строку:
    > e2slt.exe /u
    Service started successfully.

Ключи командной строки

  • /i Установить сервис
  • /r Удалить сервис
  • /u Запустить сервис
  • /d Остановить сервис
  • /c+ Показать консоль отладочных сообщений
  • /c- Скрыть консоль отладочных сообщений
  • /z Показывать консоль отладочных сообщений при запуске (этот ключ имеет смысл использовать только как параметр запуска сервиса, добавив его к командной строке в параметре ImagePath.
  • /v Показать версию программы

FIXME

  • Соединение TCP не закрывается после отправки сообщения (Oleg) (1.1-2009.03.05).
  • Отключение отсылки сообщений по типу события не работает (1.1.1-2009.03.31).
  • Переполнение массива E2SLT::SLog:mappings при установке значений аудита (Vitaliy) (1.1.2-2009.05.19).
  • Ошибка вычисления приоритета (MechanicalBear) (1.1.3-2009.09.02).

TODO

  • Добавить функцию определения адреса сервера Syslog как по IP, так и по имени хоста (1.1-2009.03.05).
  • Добавить фильтр про источникам сообщений - чьи отсылать, чьи нет.

Окружение текущей сборки

  • Windows XP Professional
  • MinGW (5.1.4)
  • Codelite (1.0.2893)
  • libiconv (1.9.2.1747)

Дискуссия

Oleg, 03.03.2009 07:11

Программка как раз то что доктор прописал… и у меня задачка посылать логи через stunnel, и для этого нужно использовать протокол TCP, но к сожалению сдесь этот функционал тоже хромает :( «A connect request was made on an already connected socket.» вот такие ошибки сыпятся…. беглым взглядом просмотрел исходники и не нашел вызов функции disconnect после connect, предлогаю добавить в FIXME :)

Blake-R, 05.03.2009 13:18
Спасибо за bug-report. Код поправил (версия от 2009.03.05).
Vitaliy, 07.05.2009 19:54

Тестировал много Windows-клиентов для Syslog сервера, этот оказался самый применимый в моей ситуации, но к сожалению не обошлось без проблем. В общем то-ли я чего-то не то делаю, то-ли гдето в коде ошибка. Если настроить секцию [Security] то все правильно отправляется на Syslog сервер, но если добавить скажем секцию [System], то события из журнала Security на сервер не отправляются, в то время как из журнала System все аккуратно доставляется. Консоль отладки показывает только соббщение о том что в журнале появилось новое сообщение (New event for eventlog #0) но на сервер не отправляет. Привожу данные с консоли отладки: Searching eventlogs…

      Application: disabled
      Internet Explorer: disabled
      Kaspersky Event Log: disabled
      Security: enabled
              SUCCESS: 202
              AUDIT_FAILURE: 202
              AUDIT_SUCCESS: 202
              ERROR_TYPE: 106
              INFORMATION_TYPE: 202
              WARNING_TYPE: 138
      Eventlog added.
      System: enabled
              SUCCESS: 195
              AUDIT_FAILURE: 163
              AUDIT_SUCCESS: 163
              ERROR_TYPE: 99
              INFORMATION_TYPE: 195
              WARNING_TYPE: 131
      Eventlog added.

Search ended. Parse servers…

      Server line: 192.168.2.220:UDP:514
              IP: 192.168.2.220
              Protocol: 17
              Port: 514
              Added successfully.

Parse ended. New event for eventlog #0 New event for eventlog #0 New event for eventlog #1

      Addition strings:
              Help and Support
              stop
      EventMessageFile = C:\WINDOWS\System32\netevent.dll;C:\WINDOWS\System32\

ws03res.dll;C:\WINDOWS\System32\w03a2409.dll

      Libraries:
              C:\WINDOWS\System32\netevent.dll
              C:\WINDOWS\System32\ws03res.dll
              C:\WINDOWS\System32\w03a2409.dll
      "The Help and Support service was successfully sent a stop control."

Message successfully sent to server #0. New event for eventlog #0 New event for eventlog #1

      Addition strings:
              Help and Support
              stopped
      EventMessageFile = C:\WINDOWS\System32\netevent.dll;C:\WINDOWS\System32\

ws03res.dll;C:\WINDOWS\System32\w03a2409.dll

      Libraries:
              C:\WINDOWS\System32\netevent.dll
              C:\WINDOWS\System32\ws03res.dll
              C:\WINDOWS\System32\w03a2409.dll
      "The Help and Support service entered the stopped state."

Message successfully sent to server #0.

      Addition strings:
              Help and Support
              start
      EventMessageFile = C:\WINDOWS\System32\netevent.dll;C:\WINDOWS\System32\

ws03res.dll;C:\WINDOWS\System32\w03a2409.dll

      Libraries:
              C:\WINDOWS\System32\netevent.dll
              C:\WINDOWS\System32\ws03res.dll
              C:\WINDOWS\System32\w03a2409.dll
      "The Help and Support service was successfully sent a start control."

Message successfully sent to server #0.

      Addition strings:
              Help and Support
              running
      EventMessageFile = C:\WINDOWS\System32\netevent.dll;C:\WINDOWS\System32\

ws03res.dll;C:\WINDOWS\System32\w03a2409.dll

      Libraries:
              C:\WINDOWS\System32\netevent.dll
              C:\WINDOWS\System32\ws03res.dll
              C:\WINDOWS\System32\w03a2409.dll
      "The Help and Support service entered the running state."

Message successfully sent to server #0. New event for eventlog #0

Blake-R, 19.05.2009 16:33

Исправлено (1.1.2-2009.05.19)

MechanicalBear, 02.09.2009 13:04

а как настроить уровень и источник ошибок приходящих в syslog?

Blake-R, 02.09.2009 13:08

Через .ini-файл. Пример идёт в комплекте.

MechanicalBear, 02.09.2009 13:21

почему то мне все сообщения приходят уровня err или alert.. что можно с этим сделать?

2009-09-02 15:09:34 Hang alert win-dist Hang (0x03ea): Зависшее приложение mmc.exe, версия 5.2.3790.3959, зависший модуль hungapp, версия 0.0.0.0, адрес 0×00000000.

MechanicalBear, 02.09.2009 13:23

как сделать чтобы незначительные сообщения приходили с соответствующим уровнем

Blake-R, 02.09.2009 13:38

Приведите свой файл конфигурации.

MechanicalBear, 02.09.2009 13:44

ini

[Servers]
192.168.151.10:UDP:514=true

[Convert]
Need=1
From=CP1251
To=UTF-8

[Application]
Enabled=1
SUCCESS=User.Info
;AUDIT_FAILURE=User.Security
;AUDIT_SUCCESS=User.Security
ERROR_TYPE=User.Error
INFORMATION_TYPE=User.Info
WARNING_TYPE=User.Warn

[Directory Service]
Enabled=1
SUCCESS=User.Info
;AUDIT_FAILURE=User.Security
;AUDIT_SUCCESS=User.Security
ERROR_TYPE=User.Error
INFORMATION_TYPE=User.Info
WARNING_TYPE=User.Warn

[DNS Server]
Enabled=1
SUCCESS=User.Info
;AUDIT_FAILURE=User.Security
;AUDIT_SUCCESS=User.Security
ERROR_TYPE=User.Error
INFORMATION_TYPE=User.Info
WARNING_TYPE=User.Warn

[File Replication Service]
Enabled=1
SUCCESS=User.Info
;AUDIT_FAILURE=User.Security
;AUDIT_SUCCESS=User.Security
ERROR_TYPE=User.Error
INFORMATION_TYPE=User.Info
WARNING_TYPE=User.Warn

[Internet Explorer]
Enabled=1
SUCCESS=User.Info
;AUDIT_FAILURE=User.Security
;AUDIT_SUCCESS=User.Security
ERROR_TYPE=User.Error
INFORMATION_TYPE=User.Info
WARNING_TYPE=User.Warn

[Security]
Enabled=0

[System]
Enabled=1
SUCCESS=Daemon.Info
#AUDIT_FAILURE=
#AUDIT_SUCCESS=
ERROR_TYPE=Daemon.Error
INFORMATION_TYPE=Daemon.Info
WARNING_TYPE=Daemon.Warn''
MechanicalBear, 02.09.2009 13:45
_< не могу понять как здесь вставлять правильно код…
Blake-R, 02.09.2009 13:58

Перед каждой строкой вставлять два пробела.

Blake-R, 02.09.2009 13:59

Хм… Все уровни выставлены корректно. А какой программой принимаете сообщения? Мне подозрительно, что принимающая сторона «знает» о содержимом события:

2009-09-02 15:09:34 Hang alert win-dist Hang (0x03ea): Зависшее приложение mmc.exe, версия 5.2.3790.3959, зависший модуль hungapp, версия 0.0.0.0, адрес 0×00000000.

MechanicalBear, 02.09.2009 14:04

syslog-ng-2.1.4

Blake-R, 02.09.2009 14:10

Какой используется шаблон? У меня …

"$FULLDATE $FULLHOST <$FACILITY.$PRIORITY> $MSG\n"

… всё показывает правильно

MechanicalBear, 02.09.2009 14:16

syslog-ng.conf

destination d_mysql {
      sql(
              type(mysql)
              host("mysql-server")
              username("syslog")
              password("syslog")
              database("syslog")
              table("logs")
              columns("host", "facility", "priority", "level", "tag", "datetime", "program", "msg", "seq")
              values("$HOST_FROM", "$FACILITY", "$PRIORITY", "$LEVEL", "$TAG", "$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC", "$PROGRAM", "$MSG", "$SEQNUM")
              indexes("host", "facility", "priority", "datetime", "program", "seq")
      );
};

в текстовом логе вид следующий

Sep  2 15:09:34 win-gu-dist Hang (0x03ea): Зависшее приложение mmc.exe, версия 5.2.3790.3959, зависший модуль hungapp, версия 0.0.0.0, адрес 0x00000000.

что как бы не отображает сути..

MechanicalBear, 02.09.2009 14:22
id host facility priority level tag datetime program msg seq counter fo lo
111471 win-gu-dist c alert alert 61 2009-09-02 15:09:34 Hang Hang (0x03ea): Зависшее приложение mmc.exe, версия 5.2.3790.3959, зависший модуль hungapp, версия 0.0.0.0, адрес 0×00000000. 0 1 NULL NULL

если бы с этим разобраться - было бы очень здорово..

Blake-R, 02.09.2009 14:32

И что же тогда означает facility = c? Попробуйте изменить формат вывода обычного файлового лога на тот, что я указал ранее.

MechanicalBear, 02.09.2009 14:45
2009 Sep  2 16:44:43 win-gu-dist <c.alert> Hang (0x03ea): Зависшее приложение mmc.exe, версия 5.2.3790.3959, зависший модуль hungapp, версия 0.0.0.0, адрес 0x00000000.
Blake-R, 02.09.2009 14:52

Не знаю такого facility 'c'. А ведь в сообщении передаётся числовой код… Ладно, проблема ясна. Однако, в ближайшее время исправить наверное не получится - нет под руками Windows.

Blake-R, 02.09.2009 16:52

Исправил в 1.1.3-2009.09.02

MechanicalBear, 03.09.2009 10:13

Спасибо!

Vitaliy, 30.09.2009 18:20

Здравствуйте. Обнаружил вот такую закономерность: При включении журнала Security процесс services.exe увеличивает занимаемую память с 3-4Мб до размера файла журнала безопасности C:\WINDOWS\system32\config\SecEvent.Evt У меня установлен размер 100Мб - соответственно services.exe увеличивается до ~100Мб. Остановка сервиса e2slt.exe не приводит к высвобождению занимаемой процессом services.exe памяти, а вот очистка файла журнала приводит к освобождению памяти. По мере увеличения журнала, увеличивается и services.exe Не знаю, относить-ли это к проблемам у Microsoft или e2slt.exe что-то не то делает? Конечно, нет необходимости иметь такой большой файла журнала безопасности, но на всякий случай его лучше делать побольше - вдруг Syslog сервер по какой-то причине будет недоступен, и останется только разбирать логи на локальной машине.

Blake-R, 01.10.2009 08:19

Сам e2slt использует только стандартные функции WinAPI для доступа к журналам, поэтому в данном случае его вина исключена. Единственно, что могу сказать по данному поводу… Из-за особенностей реализации журнала, не всегда срабатывают функции перехода на последние записи. Поэтому, при запуске e2slt считывает журнал начиная со старых записей и заканчивая новыми. Возможно в этот момент services.exe и считывает все страницы журнала в память (ведь в нормальном состоянии в памяти хранится только одна-две страницы журнала).

Понаблюдайте, по-возможности, за дальнейшим поведением services.exe и его расходом памяти - если не перезапускать e2slt «лишний» раз, скорее всего, Windows выгрузит неопрашиваемые страницы журнала из памяти?

У меня опрос журнала Security включен и вот результаты расхода памяти процессом services.exe по серверам: 15MB, 21MB, 19MB, 46MB, 4MB, 21MB, 136MB, 39MB, 23MB, 55MB, 3MB, 30MB. При этом размеры журналов на всех серверах 16MB.

Илья Рачков, 28.10.2009 19:10

Добрый вечер! Не могу прицепить библиотеку libiconv2.dll - при попытке настроить конвертацию сообщений мой любимый koi8-r выдает

Program is working.
New event for eventlog #0
        Addition strings:
                pzmSyslog
                Теперь русские буквы
        EventMessageFile = C:\work\pzmSyslog\Debug\pzmSyslog.exe
        Libraries:
                C:\work\pzmSyslog\Debug\pzmSyslog.exe
        "pzmSyslog: Теперь русские буквы"
Error in C:/Projects/cpp/e2slt/E2SLT.cpp:488 CIconv::iconv - Failed, disabling conversion.
Error in C:/Projects/cpp/e2slt/E2SLT.cpp:492 send - Система обнаружила недопустимый указатель адреса при попытке использовать в вызове аргумент указателя.
Рачков Илья, 28.10.2009 20:49

Ну все, тонкость с конвертацией я нашел :) В чем ее суть: обычно, библиотека iconv знает про несколько русских кодировок кои-8: KOI-8, KOI8, KOI8R, KOI8-R но в конкретной сборке под Win (версия 1.9.2.1747) ничего не известно про вариант наименования кодировки «KOI8R», поэтому, в момент исполнения (CIconv.cpp:19) возвращается -1 и устанавливается флаг «не смогли провести конвертацию».

...
if ( iconv( h, &string, &length, &converting, &length2 ) == (size_t)-1 )
...

Если же указать в качестве кодировки «KOI8-R», то все работает.

...
[Convert]
Need=1
From=CP1251
To=KOI8-R
...

Спасибо!

Vitaliy, 01.12.2009 13:17

Здравствуйте. Имеется вопрос: а можно сделать так, чтобы e2slt в сообщение еще имя пользователя писал?

Например при перезапуске службы в EventViewer пишется еще имя пользователя который инициировал данное действие.

Можно-ли это как-нибудь организовать? :-)

Blake-R, 01.12.2009 13:28

Можно-то можно, только я прекратил разработку (у меня теперь и Windows-то не имеется ни дома, ни на работе). Так что решение - только правка исходных кодов и пересборка программы.

Vitaliy, 01.12.2009 14:15

Жаль :-( но вопрос исчерпан. :-)

Vitaliy, 01.12.2009 14:29

А может за пару пива сделаешь? ;-) Или другое удобное разумное вознаграждение. Очень надо.

Blake-R, 01.12.2009 14:45

Может быть в течении декабря посмотрю. Если будет желание разобраться - надо добавить вызов функции LookupAccountSid с параметром lpSid равным record→UserSidOffset в случае, если record→UserSidLength > 0, скажем, после 379 строки. А затем результат Lookup'а добавить в переменную syslogMessage (увеличить длину в строке 441 (syslogMessageLen), а также добавить полученное имя пользователя в функции _snprintf строки 449).

Vitaliy, 01.12.2009 14:32

Средства разработки поствлю какие скажежшь, по RDP пущу к компу.

Enter your comment
 
 
projects/e2slt.txt · Последние изменения: 01.12.2009 13:27 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
State, county clerk county clerk of court records View Hawaii.
смесители grohe купить.
фондю Vinzer
Кредит кредитный калькулятор автокредит Сбербанка России