Подтвердить что ты не робот

Лучший способ объединить несколько файлов журнала с нескольких серверов

Мне нужен простой способ контролировать несколько файлов текстовых журналов, распространяемых на нескольких серверах HP-UX. Это сочетание текстовых и XML файлов журналов из нескольких распределенных устаревших систем. В настоящее время мы просто ssh для серверов и используем tail -f и grep, но это не масштабируется, когда у вас много журналов для отслеживания.

Поскольку журналы находятся в разных форматах и ​​просто файлы в папках (автоматически поворачиваются, когда они достигают определенного размера), мне нужно как собирать их удаленно, так и анализировать каждый по-разному.

Моя первоначальная мысль заключалась в том, чтобы создать простой процесс демона, который я могу запускать на каждом сервере, используя специальный считыватель файлов для каждого типа файла для его анализа в общий формат, который можно экспортировать по сети через сокет. Другая программа-зритель, работающая локально, будет подключаться к этим сокетам и отображать анализируемые журналы в некотором простом графическом интерфейсе с вкладками или агрегироваться в консоли.

Какой формат журнала я должен попробовать преобразовать, если я должен его реализовать таким образом?

Есть ли еще какой-то другой способ? Должен ли я попытаться перевести файлы журнала в формат log4j для использования с Chainsaw или есть лучшие зрители журналов, которые могут подключаться к удаленным сокетам? Могу ли я использовать BareTail, как предложено в еще одном вопросе журнала? Это не массовая распределенная система

4b9b3361

Ответ 1

Параметры:

  • Используйте SocketAppender для отправки всех журналов на 1 сервер напрямую. (Это может серьезно помешать работе и добавить одну точку отказа.)
  • Используйте сценарии для агрегирования данных. Я использую scp, ssh и ключи аутентификации, чтобы позволить моим скриптам получать данные со всех серверов без приглашений на входе.

Ответ 2

Вероятно, самое легкое решение для просмотра в режиме реального времени - использовать оболочку танцора в параллельном режиме с хвостом -f:

dsh -Mac -- tail -f /var/log/apache/*.log
  • -a для всех имен машин, которые вы определили в ~/.dsh/machines.list
  • -c - для одновременного запуска хвоста
  • -M добавляет имя хоста к каждой строке вывода.

Ответ 3

Мы используем простую оболочку script, как показано ниже. Очевидно, вам придется немного настроить его, чтобы рассказать о разных именах файлов и решить, в каком окне искать, но вы получаете основную идею. В нашем случае мы обрабатываем файл в одном месте на нескольких ящиках. Для этого требуется аутентификация ssh через сохраненные ключи вместо ввода паролей.

#!/bin/bash
FILE=$1
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do
     ssh $box tail -f $FILE &
done

Относительно комментария Майка Фанка о невозможности убить хвост с помощью ^ C, я храню вышеуказанное в файле multitails.sh и добавили следующее к концу. Это создает файл kill_multitails.sh который вы запускаете, когда вы закончите хвост, а затем он удаляет себя.

# create a bash script to kill off 
# all the tails when you're done
# run kill_multitails.sh when you're finished

echo '#!/bin/sh' > kill_multitails.sh
chmod 755 kill_multitails.sh
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids
perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids
cat kill_multitails_ids >> kill_multitails.sh
echo "echo 'running ps for it'" >> kill_multitails.sh
echo "ps -awx | grep $FILE" >> kill_multitails.sh
echo "rm kill_multitails.sh" >> kill_multitails.sh
rm kill_multitails_ids


wait

Ответ 4

Logscape - как splunk без ценника

Ответ 5

multitail или

" chip - это локальный и удаленный инструмент анализа и мониторинга журналов для системных администраторов и разработчиков.
Он обертывает черты swatch, tee, tail, grep, ccze и mail в один, с некоторыми дополнениями "

Eg.

chip -f -m0 = 'RUN' -s0 = 'red' -m1 = '. *' -s1 user1 @remote_ip1: '/var/log/log1/var/log/log2/var/log/log3 user2 @remote_ip2: '/var/log/log1/var/log/log2/var/log/log3' | egrep "RUN | == > /"

Вкратце будет выделено красным цветом появление шаблона -m0, предварительная фильтрация шаблона "RUN | == > /" из всех файлов журнала.

Ответ 6

Я написал vsConsole именно для этой цели - легкий доступ к файлам журналов, а затем добавил мониторинг приложений и отслеживание версий. Хотелось бы узнать, что вы думаете об этом. http://vs-console.appspot.com/

Ответ 7

Awstats предоставляет perl script, который может объединить несколько файлов журнала Apache вместе. Этот script хорошо масштабируется, так как область памяти очень низкая, файлы журналов никогда не загружаются в память. Я знаю, что si не совсем то, что вам нужно, но, возможно, вы можете начать с этого script и адаптировать его для своих нужд.

Ответ 8

Вы можете использовать различные приемники, доступные с помощью Chainsaw (VFSLogFilePatternReceiver, чтобы обрезать файлы через ssh, SocketReceiver, UDPReceiver, CustomSQLDBReceiver и т.д.), а затем агрегировать журналы в одну вкладку, изменив идентификатор табуляции по умолчанию или создав "настраиваемую лог-панель выражения" 'путем предоставления выражения, которое соответствует событиям на различных вкладках источника.

Ответ 9

gltail - визуализация трафика сервера, событий и статистики в реальном времени с помощью Ruby, SSH и OpenGL с нескольких серверов

Ответ 10

XpoLog для Java