LINUX.ORG.RU

Какой либой лучше паковать логи?


1

1

Чем паковать логи? Имеем процесс который пишет логи в огромных объемах. Например, 200k строк в секунду. Сейчас они пишутся в очередь в SHM, а оттуда отельный процес пишет в запакованные файлики. Пакуем при помощи zlib. В общем, более-менее ничего, но сейчас упаковка логов занимает больше ЦПУ, чем работа приложения. Может есть другие алгоритмы упаковки, более заточенные на логи?

Пример лога:

13-12-18 23:45:13.217 pcrf_core_W0[13200] NOTI ##> GxCCR-U e2e:04827D0A f:sohugw02_02.gx.yota.ru n:264 sess:sohugw02_02.gx.yota.ru;773840480;195710;91396 ?sub:250110100657234 ?ip:[10.191.187.234] ev:EVENT_USAGE_REPORT mk:777:o:2537 ?loc:25011386A101
13-12-18 23:45:13.217 pcrf_core_W2[13203] NOTI ##> GxCCR-U e2e:04827D0B f:sohugw02_02.gx.yota.ru n:2651 sess:sohugw02_02.gx.yota.ru;729280576;195454;87245 ?sub:250110100115939 ?ip:[10.191.95.99] ev:EVENT_USAGE_REPORT mk:777:o:0 ?loc:250113879101
13-12-18 23:45:13.217 pcrf_core_W3[13206] NOTI ##> GxCCR-U e2e:0482BFB0 f:sohugw02_02.gx.yota.ru n:3492 sess:sohugw02_02.gx.yota.ru;577081332;193630;100343 ?sub:250110100201883 ?ip:[10.191.145.30] ev:EVENT_USAGE_REPORT mk:777:o:0 ?loc:250113866F05
13-12-18 23:45:13.217 pcrf_core_W1[13202] NOTI ##> GxCCR-U e2e:04827D0C f:sohugw02_02.gx.yota.ru n:6643 sess:sohugw02_02.gx.yota.ru;648271027;195358;86213 ?sub:250110100304677 ?ip:[10.191.177.113] ev:EVENT_USAGE_REPORT mk:777:o:0 ?loc:25011386DC00
13-12-18 23:45:13.217 pcrf_core_W4[13208] NOTI ##> GxCCR-U e2e:A9818A28 f:sohugw02_02.gx.yota.ru n:791 sess:sohugw02_02.gx.yota.ru;767759213;191613;38853 ?sub:250110100129205 ?ip:[10.191.166.253] ev:EVENT_USAGE_REPORT mk:777:o:0 ?loc:250113878404

Ответ на: комментарий от vromanov

Непакованное можно на ramdisk писать.

Vit ★★★★★
()
Ответ на: комментарий от vromanov

А потом окажетсья что этот десереалитор надо делать под винды, солярис и мак. Люди ведь захотят посмотреть логи

Не ты, так кто-нибудь другой начнёт приучать админов к эпохе systemd

mashina ★★★★★
()
Ответ на: комментарий от vromanov

Hi Colleague! I was working for one big 3-letters company when I have similar problem. We was getting abot 6 to 8 TB (yea terabytes) gzipped logs daily. Not from single node, corse :) Solution was : do not handle logs locally, send them over syslog proto to cluster of syslog servers. That servers pack the logs every hour, give them proper name and submit to central storage. To parse the logs out team was using parallel utility and other DIY scripts :)

Hope it helps.

PS: I heard that they considerig special product for this, but I can't comment on it< I'm not longer with 'em. PPS: Nu nety u menya russki buckvy on this laptop, naproc' netu :-(

anonymous
()
Ответ на: комментарий от anonymous

Nu nety u menya russki buckvy on this laptop, naproc' netu :-(

Родная раскладка должна быть зашита в днк.

mashina ★★★★★
()
Ответ на: комментарий от anonymous

Правильная идея, если бы у нас был большой цод и все сервера в нем. Но у нас куча серверов расскиданых по стране от СПб до Владивостока. У нас есть принцип, что система должна успешно работать в случае падения международных линков. В этом случае централизованный сервер для логов не подходит.

vromanov ★★
() автор топика
Ответ на: комментарий от vromanov

У нас есть принцип, что система должна успешно работать в случае падения международных линков. В этом случае централизованный сервер для логов не подходит.

Никто же не заставляет слать сразу именно на центральный сервер, достаточно всего лишь вынести накопитель логов с рабочей машины. Дальше, если нужен централизованный сервер, то можно лениво досылать туда данные с промежуточных накопителей по факту наличия линка.

mashina ★★★★★
()
Ответ на: комментарий от vromanov

у нас куча серверов расскиданых по стране от СПб до Владивостока. У нас есть принцип, что система должна успешно работать в случае падения международных линков. В этом случае централизованный сервер для логов не подходит.

централизованный сервер для логов не подходит.

Врёшь, школьник. Это у меня объекты, раскиданные по всей стране. Данные пишутся с тысяч объектов и централизованная модель как нельзя лучше подходит, если разработка централизована. А если разработчики дебилы, то ничем не поможешь.

ziemin ★★
()
Ответ на: комментарий от mashina

Нет смысла. Зачем еще один сервер? Проще паковать локально. Сейчас есть быстрые алгоритмы. Ну и еще немного доточим формат логов.

vromanov ★★
() автор топика
Ответ на: комментарий от ziemin

не вижу связи между централизацей разработки и централизацией модели. Ну и забавно, когда меня обзывают школьником :). Батюшка, вы сколько лет разрабатываете?

vromanov ★★
() автор топика
Ответ на: комментарий от vromanov

Ну и забавно, когда меня обзывают школьником :)

«Школьник» в интернетах давным дакно не коррелируется с возрастом. Я имел в виду развитие мозга. А если тебе многалет, то тем хуже для тебя.

ziemin ★★
()

Например, 200k строк в секунду. Сейчас они пишутся в очередь в SHM, а оттуда отельный процес пишет в запакованные файлики. Пакуем при помощи zlib

так и пакуйте. Размер окна поменьше сделайте, байт 512.

emulek
()
Ответ на: комментарий от vromanov

Еще раз - записи бывают СОВСЕМ разного формата. В общем случае свести их к одному бинарному формату нельзя.

«совсем» это не разговор. Если 80% данных имеют 2..20 форматов, о уже есть смысл так парсить. А остальное хранить as is.

emulek
()
Ответ на: комментарий от ziemin

НО, в случае БД, эти операции размазаны по каждой записи.

это и плохо, ибо ТСу нужно БЫСТРО писать, а делать анализ он может не спеша.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.