在Windows上同时监控多个日志文件(通过ssh)?

时间:2008-09-20 01:10:07

标签: windows logging terminal monitoring

我使用了poderosa(一个.NET终端应用程序)来监控多个linux / solaris服务器上的日志。这个应用程序目前没有得到维护,我遇到了一些问题。

我想知道其他用户如何同时实时监控多个日志(如tail -f logfile中所示)。我希望能够选择/级联几个ssh尾巴。

谢谢

7 个答案:

答案 0 :(得分:7)

你可以直接ssh到一台服务器,并从那里使用mutitail来拖尾所有其他服务器上的日志。

答案 1 :(得分:1)

您可以使用Putty Connection Manager向PuTTy添加标签。然后SSH两次进入机器并来回切换。

Tutorial on Setting it Up

答案 2 :(得分:1)

Ssh到其中一个服务器,在其上运行屏幕。然后,您可以将屏幕分成多个窗口,每个窗口都可以

ssh serverX tail -f /path/to/log/file

这种方法的一个附带优点是,每次连接时都不必重新启动尾部 - 相反,您只需重新连接到正在运行的屏幕会话。

答案 3 :(得分:1)

从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 ;
}

然后从您的shell中定义您要遵循的日志:

[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:退出activate-followers功能后,您必须终止所有剩余的作业。您可能希望手动执行此操作,因为所提供的功能会对所有后台作业执行强制终止

注3:这假设一个类似unix的工作环境,你可以通过安装cygwin获得

谁说你不能用shellcript做lisp; - )

答案 4 :(得分:1)

您可以在旁边的日志中查看。

我创建的Java工具,能够使用SSH读取本地和远程日志文件。它使用起来相当简单。

更多解释:https://github.com/pschweitz/insidelog/wiki

只需下载与您的操作系统相对应的版本,或Java Runtime中的本机jar版本可执行文件(需要java 8_40或更高版本):

https://github.com/pschweitz/insidelog/releases

您可以找到完整的文档(也可以在Github的页面中嵌入)

答案 5 :(得分:0)

首先出现在我脑海中的两个选项。

选择你喜欢的SSH应用程序(putty,ssh in cygwin等)并登录机器 1.每个日志的SSH(根据您的应用程序在您的机器或选项卡上打开许多窗口)
2. SSH一次并使用screen

答案 6 :(得分:0)

如果您确实需要同时查看两个日志,并且标签不可用,则可以安装名为LogResolveMerge.pl的perl脚本。它将两个日志合并在一起,并将输出转储到STDOUT。但是,这将是资源密集型的,如果您打算使用日志,那么它可能不会太有效。