Я создал систему, которая должна собирать новые журналы apache с четырех машин каждый час, объединять их, обрабатывать и хранить. Для сбора новых журналов я написал кучу сценария cron, который читает строку уже отправленных строк и начинает отправлять только новые строки, а затем сохраняет новый номер строки. Это синхронизируется со сценарием слияния с использованием некоторых файлов .lock.
Хотя это работает достаточно хорошо, я хотел бы заменить эту систему более надежной системой с хорошей обработкой ошибок и, возможно, с автоматическим определением новых файлов журнала (они меняются каждый день). Есть ли что-нибудь, что я мог бы использовать для выполнения такой задачи? Спасибо!
Есть много решений для сбора / мониторинга журналов.
Некоторые из них: syslog, syslog-ng, logsurfer, splunk ... и я думаю, многое другое. Но я рекомендую syslog-ng.
Он очень настраиваемый (например, он может хранить журналы в базе данных, что иногда бывает очень полезно), эластичный и делает все, что вы хотите.
С syslog-ng и MongoDB вы можете делать довольно забавные вещи, используя mojology (простое приложение для просмотра сообщений системного журнала, хранящихся в MongoDB, которые регистрируются syslog-ng).
Вы можете использовать любое из этого программного обеспечения.
Zabbix может собирать журналы, но гораздо сложнее настроить то, что вы хотите.
Системный журнал - неплохая идея, но у sysylog-ng гораздо больше возможностей. Вот сравнение syslog и syslog-ng http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/features/comparison
Поэтому я бы выбрал syslog-ng :)
Я думаю, будет хорошей идеей использовать сервер системного журнала. Вы можете отправить все свои журналы на этот сервер и после этого обработать их. Системный журнал позволяет также определять фильтры и добавлять несколько пунктов назначения для регистрируемой информации.
Я не уверен, действительно ли syslog - подходящий инструмент для журналов apache.
На четырех веб-серверах я просто менял журналы один раз в час.
Затем с центрального сервера журналов я извлекал все журналы с помощью rsync и выполнял все «умные» вещи (слияние журналов и т. Д.) В одном центральном месте.
Есть хороший инструмент для агрегирования логов веб-серверов, написанный Дмитрием Котеровым. Он специально разработан для устранения некоторых недостатков решения syslog. Видеть http://en.dklab.ru/lib/dklab_logreplica/
Еще один хороший способ - использовать программное обеспечение для управления журналами, например splunk или logstash.