Я работаю над настройкой сервера syslog-ng для приема журналов из различных источников. Общая настройка будет следующей:
Device1
Device2 Syslog1
Device3 --> Load balancer --> Syslog2 --> Shared SAN storage
Device4 Syslog3
Device5
Я использую 514 / udp, и с этой настройкой я легко должен иметь HA и иметь возможность циклического перебора и распределения нагрузки. Меня беспокоит, как хранилище будет совместно использоваться и записываться на серверную часть. В идеале я бы хотел, чтобы на каждом устройстве был файл deviceX.log на день. Что произойдет, если syslog1 получит большой файл журнала с устройства1 и все еще записывает в device1.log, когда syslog2 получает небольшой файл журнала с устройства1 и начинает попытки записи в тот же файл в одно и то же время?
Я читал, что в Linux, если вы добавите файл и не откроете его в режиме «записи», вы никогда не получите ошибку защиты от записи. Я не уверен, как это делает системный журнал.
Итак, мои вопросы:
Приветствуются любые рекомендации. Заранее спасибо.
Я обнаружил, что любая кластерная файловая система, такая как GlusterFS, будет нормально работать для нескольких серверов, записывающих в один файл. Однако из-за имеющейся у меня инфраструктуры SAN это было невозможно. Поэтому я закончил тем, что писал файл в день для каждого кластера системного журнала.
Syslog1 --> 2012-07-29-sys01.log
Syslog2 --> 2012-07-29-sys02.log
Затем я использовал сценарий logmerge и cronjob, чтобы объединить файлы и отсортировать их по правильному времени. Приведенное ниже задание cron запускается на следующий день после завершения записи файлов.
/ локальный / bin / logmerge -f / журналы /
date -d yesterday +\%Y-\%m-\%d
-sys * .log | gzip -9 -c> / журналы /date -d yesterday +\%Y-\%m-\%d
.log.gz && rm -f / журналы /date -d yesterday +\%Y-\%m-\%d
-sys * .log
Не уверен, что вы используете для балансировщика нагрузки, но я бы порекомендовал вам настроить на балансировщике нагрузки какую-то «липкость», чтобы журналы Device1 всегда направлялись в Syslog1 и т. Д.
Это устранит вашу озабоченность по поводу файла журнала, но также предотвратит то, что я считаю такой же серьезной проблемой.
Меня беспокоит ваш пример, если бы было много записей журнала, переданных с Device1 в Syslog1, а затем меньшее число, переданное с Device1 в Syslog2, было бы тем, что Syslog2 мог бы вставлять более поздние сообщения системного журнала в неправильном порядке в ваш файл журнала.