Одновременный мониторинг нескольких файлов журналов (по ssh) в Windows?
-
01-07-2019 - |
Вопрос
Я использовал poderosa (приложение .NET terminal) для мониторинга журналов на нескольких серверах linux / solaris.В настоящее время это приложение НЕ поддерживается, и у меня возникло несколько проблем с ним.
Мне интересно, что делают другие пользователи, чтобы одновременно отслеживать несколько журналов в режиме реального времени (как в файле журнала tail -f).Я хотел бы иметь возможность табулировать / каскадировать несколько хвостов ssh.
Спасибо
Решение
Вы могли бы использовать Менеджер соединений Putty чтобы добавить выступы в шпаклевку.Затем дважды подключитесь к компьютеру по SSH и перемещайтесь туда-сюда.
Другие советы
Вы могли бы просто подключиться по ssh к одному серверу и использовать мутный хвост оттуда следить за логами на всех других серверах.
Подключитесь по Ssh к одному из серверов, запустите на нем screen.Затем вы можете разделить экран на несколько окон, и в каждом из них выполните следующие действия
ssh serverX tail -f /path/to/log/file
Дополнительным преимуществом этого метода является то, что вам не нужно перезапускать tails каждый раз при подключении - вместо этого вы можете просто повторно подключиться к сеансу запущенного экрана.
Из bash вы можете (сохранить в ~/.bashrc
или что-то в этом роде):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
А затем из вашей командной строки определите журналы, которым вы хотите следовать:
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
Теперь активируйте подписчиков:
[dsm@localhost:~]$ activate-followers test1 test2 test3
Чтобы выйти из этой функции, используйте CTRL+C
, и чтобы остановить фоновые процессы , используйте:
[dsm@localhost:~]$ stop-followers
ПРИМЕЧАНИЕ 1:Это предполагает, что для ваших ящиков настроена аутентификация по открытому ключу.
ПРИМЕЧАНИЕ 2:Вам нужно будет завершить все задания, которые остались запущенными после выхода из функции активировать подписчиков.Возможно, вы захотите сделать это вручную, поскольку предоставленная функция выполняет принудительное уничтожение ВСЕХ фоновых заданий
ПРИМЕЧАНИЕ 3:Это предполагает работающую unix-подобную среду, которую вы можете получить, установив cygwin
Кто сказал, что вы не можете использовать lisp в shellscript ;-)
Вы можете оформить заказ в личном кабинете.
Созданный мной Java-инструмент, способный читать локальные и удаленные файлы журналов с помощью SSH.Он довольно прост в использовании.
Еще несколько объяснений: https://github.com/pschweitz/insidelog/wiki
Просто загрузите версию, соответствующую вашей операционной системе, или исполняемый файл собственной версии jar в вашей среде выполнения Java (требуется java 8_40 или выше).:
https://github.com/pschweitz/insidelog/releases
Вы можете найти полную документацию (встроенную в страницу Github, а также на ней).
Два варианта, которые первыми приходят мне в голову.
Выберите ваше любимое SSH-приложение (putty, ssh в cygwin и т.д.) и войдите в систему.
1.SSH для каждого журнала (на вашем компьютере открыто множество окон или вкладок в зависимости от вашего приложения)
2.Используйте SSH один раз и используйте экран.
Если вам действительно нужно было просматривать оба журнала одновременно, а о вкладках не могло быть и речи, вы могли бы установить perl-скрипт под названием LogResolveMerge.pl.Он объединит два журнала вместе и выведет выходные данные в стандартный вывод.Однако это будет ресурсоемким, и если ваше намерение состоит в том, чтобы закрывать журналы, скорее всего, это будет не слишком эффективно.