Mikrotik - сбор логов в БД под Windows
#1963414
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на вложение:
Ссылка на вложение 2:
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
Подумал, что неплохо был собирать логи в БД, но не нашел внятного простого решения под Виндовс. Наверное, плохо искал. По сути, задача тривиальная - получить UDP пакет и отправить его содержимое в БД. Решил, что проще написать, чем искать что-то готовое. Сделано на Borland Turbo Delphi Explorer (тот самый, который распространялся бесплатно), BDS 2006. Если кто хочет, может взять исходник и перекомпилировать в чем-то современном. Протестировано на Windows Server 2003 x64, Windows 7 SP1 x64. Инструкция для пользователей. Распаковываем содержимое архива куда-нибудь, устанавливаем службу mtklggr.exe -install При необходимости в управлении службами меняем пользователя для запуска службы, следим, чтобы у этого пользователя были права на запись в каталог с экзешником (туда логи с ошибками будут сохраняться).Создаем ODBC источник к БД, в которой собираемся хранить логи Микротика. Важно! Источник в 64-битной системе надо делать 32-битный, поскольку прога 32-битная. Для этого надо запускать оснастку, находящуюся по следующему пути, C:\WINDOWS\SysWOW64\odbcad32.exe а не ту, которая в панели управления.Правим инишник: [mtk]
BindingIP=192.168.0.2 - интерфейс, на котором служба будет слушать Микротик
BindingPort=514 - порт, который будет слушать. 514 может быть занят системой, тогда забиваем свой. Эти два пункта надо забить в настройках логгинга Микротика[sql]
CSPattern=Provider=MSDASQL;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s Предполагаю, что шаблон строки подключения к БД править не надо. Если все-таки придется, соблюдаем последовательность подстановок: пароль, логин, источник.DataSource=mtk_sql10_32
UserID=mtku
Password=mtku Тут все понятно.Pattern=exec put_string @item = '%s' Пишем наш запрос на вставку данных. Хотим - insert, хотим - через процедуру, так грамотней.[sys]
HaltOnErrors=1 Если ошибки на стадии запуска службы, нефиг ей оставаться запущенной. Если на стадии обработки данных, она засрет диск логами. Ошибки читаем в файлике *.log в каталоге проги.ЭкзешникСорцы ... |
||||||||||||||||
:
Нравится:
Не нравится:
|
||||||||||||||||
06.03.2020, 15:23 |
|
Mikrotik - сбор логов в БД под Windows
#2939908
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
Ссылка на вложение 2:
|
|||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
Возникла потребность более гибко оперировать IP адресами в базе данных, пришлось дописать проект. Новое:
Все по-старому, как в первом посте. Распаковываем в каталог, правим ini, устанавливаем в систему как сервис. Так же и с ODBC соединением. БД: Создаем руками базу данных mtk2, скачиваем скрипт, запускаем, он делает все что надо. Если пользователь mtku на сервере есть, скрипт придется подправить. Исходники: Для быстрого парсинга строк был использован проект CachedTexts. Дефекатор считает его глючным говном Многие считают его сомнительным, но в данном случае после доработки напильником он отрабатывает что должен. В архиве немного подправленные исходники CachedTexts, пришлось закомментировать объявление типа TBytes, дописать в uses IDGlobals, закомментить еще пару строк, с которыми модуль не хотел компилироваться. Не забываем, что это BDS 2006. При конвертации в что-то современное учитываем, что строку лога от Микротика мы получаем однобайтную, так что всюду AnsiString и TByteString.AssingUTF8, а не просто Assign. А, прошлый раз забыл сказать, что LogFileUnit я нашел где-то в инете, автора не знаю, но спасибо ему за работу. Как это работает: fword. Это первое слово после слова MikroTik. Может быть одним из этого списка: <pptp-username>
ether8
ether9
filter
first
input:
nat
pppoe-out1:
proxy:
respond
username
TCP
the
user Это то, что нам не нужно. Но если мы в Микротике в правиле файрвола указываем префикс, то этот префикс попадет в это поле и по нему можно будет делать отбор.Читать и указывать айпишники в запросах придется через функции dbo.IP2Bin и dbo.Bin2IP. Кроме этих функций я набросал несколько процедурок, которые облегчат жизнь на первое время. Если понадобится что-то эдакое, посмотрите, как они написаны и сделаете свое. У меня сейчас открыт вот такой файлик, если мне что-то надо посмотреть, правлю параметры руками, выделаю нужную строчку и жму F5. Дата используется с условием "позже". Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Дату МикроТика в сервисе я не парсю, пользуюсь датой MS SQL сервера. ... |
|||||||||||||||||||
Если бы делать было бы так же легко, как знать, что надо делать...
:
Нравится:
Не нравится:
|
|||||||||||||||||||
14.04.2021, 14:18 |
|
Mikrotik - сбор логов в БД под Windows
#2939911
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
Ссылка на вложение 2:
Ссылка на вложение 3:
|
||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
Сорцы к Деде на ноутбук не влезают. Но мы впихнем! ... |
||||||||||||||||||||||
Если бы делать было бы так же легко, как знать, что надо делать...
:
Нравится:
Не нравится:
|
||||||||||||||||||||||
14.04.2021, 14:19 |
|
Mikrotik - сбор логов в БД под Windows
|
|||
---|---|---|---|
#18+
Благодарю Дефекатора, Попыхтета и Сандаля за помощь. ... |
|||
Если бы делать было бы так же легко, как знать, что надо делать...
:
Нравится:
Не нравится:
|
|||
14.04.2021, 14:28 |
|
Mikrotik - сбор логов в БД под Windows
|
|||
---|---|---|---|
#18+
f..h 14.04.2021, 14:18 Возникла потребность более гибко оперировать IP адресами в базе данных, пришлось дописать проект. Новое:
Все по-старому, как в первом посте. Распаковываем в каталог, правим ini, устанавливаем в систему как сервис. Так же и с ODBC соединением. БД: Создаем руками базу данных mtk2, скачиваем скрипт, запускаем, он делает все что надо. Если пользователь mtku на сервере есть, скрипт придется подправить. Исходники: Для быстрого парсинга строк был использован проект CachedTexts. Дефекатор считает его глючным говном Многие считают его сомнительным, но в данном случае после доработки напильником он отрабатывает что должен. В архиве немного подправленные исходники CachedTexts, пришлось закомментировать объявление типа TBytes, дописать в uses IDGlobals, закомментить еще пару строк, с которыми модуль не хотел компилироваться. Не забываем, что это BDS 2006. При конвертации в что-то современное учитываем, что строку лога от Микротика мы получаем однобайтную, так что всюду AnsiString и TByteString.AssingUTF8, а не просто Assign. А, прошлый раз забыл сказать, что LogFileUnit я нашел где-то в инете, автора не знаю, но спасибо ему за работу. Как это работает: fword. Это первое слово после слова MikroTik. Может быть одним из этого списка: <pptp-username>
ether8
ether9
filter
first
input:
nat
pppoe-out1:
proxy:
respond
username
TCP
the
user Это то, что нам не нужно. Но если мы в Микротике в правиле файрвола указываем префикс, то этот префикс попадет в это поле и по нему можно будет делать отбор.Читать и указывать айпишники в запросах придется через функции dbo.IP2Bin и dbo.Bin2IP. Кроме этих функций я набросал несколько процедурок, которые облегчат жизнь на первое время. Если понадобится что-то эдакое, посмотрите, как они написаны и сделаете свое. У меня сейчас открыт вот такой файлик, если мне что-то надо посмотреть, правлю параметры руками, выделаю нужную строчку и жму F5. Дата используется с условием "позже". Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Дату МикроТика в сервисе я не парсю, пользуюсь датой MS SQL сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 16:46 |
|
Mikrotik - сбор логов в БД под Windows
|
|||
---|---|---|---|
#18+
WildMage 14.04.2021, 16:46 f..h 14.04.2021, 14:18 Возникла потребность более гибко оперировать IP адресами в базе данных, пришлось дописать проект. Новое:
Все по-старому, как в первом посте. Распаковываем в каталог, правим ini, устанавливаем в систему как сервис. Так же и с ODBC соединением. БД: Создаем руками базу данных mtk2, скачиваем скрипт, запускаем, он делает все что надо. Если пользователь mtku на сервере есть, скрипт придется подправить. Исходники: Для быстрого парсинга строк был использован проект CachedTexts. Дефекатор считает его глючным говном Многие считают его сомнительным, но в данном случае после доработки напильником он отрабатывает что должен. В архиве немного подправленные исходники CachedTexts, пришлось закомментировать объявление типа TBytes, дописать в uses IDGlobals, закомментить еще пару строк, с которыми модуль не хотел компилироваться. Не забываем, что это BDS 2006. При конвертации в что-то современное учитываем, что строку лога от Микротика мы получаем однобайтную, так что всюду AnsiString и TByteString.AssingUTF8, а не просто Assign. А, прошлый раз забыл сказать, что LogFileUnit я нашел где-то в инете, автора не знаю, но спасибо ему за работу. Как это работает: fword. Это первое слово после слова MikroTik. Может быть одним из этого списка: <pptp-username>
ether8
ether9
filter
first
input:
nat
pppoe-out1:
proxy:
respond
username
TCP
the
user Это то, что нам не нужно. Но если мы в Микротике в правиле файрвола указываем префикс, то этот префикс попадет в это поле и по нему можно будет делать отбор.Читать и указывать айпишники в запросах придется через функции dbo.IP2Bin и dbo.Bin2IP. Кроме этих функций я набросал несколько процедурок, которые облегчат жизнь на первое время. Если понадобится что-то эдакое, посмотрите, как они написаны и сделаете свое. У меня сейчас открыт вот такой файлик, если мне что-то надо посмотреть, правлю параметры руками, выделаю нужную строчку и жму F5. Дата используется с условием "позже". Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Дату МикроТика в сервисе я не парсю, пользуюсь датой MS SQL сервера. ... |
|||
Если бы делать было бы так же легко, как знать, что надо делать...
:
Нравится:
Не нравится:
|
|||
14.04.2021, 21:48 |
|
Start [/forum-old/topic.php?fid=2&tid=44501&gotonew=1]: |
0ms |
get settings: |
1ms |
get forum list: |
3ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
31ms |
get topic data: |
15ms |
get first new msg: |
2ms |
get forum data: |
1ms |
get page messages: |
40ms |
update_topic_read_status (44501): 14.04.2021 21:48:16: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
4ms |
others: | 40ms |
total: | 139ms |
0 / 0 |