4

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

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

谢谢你

4

7 回答 7

7

您可以只 ssh 到一台服务器,然后从那里使用mutitail来跟踪所有其他服务器上的日志。

于 2008-09-20T01:17:52.880 回答
1

您可以使用Putty Connection Manager将选项卡添加到 PuTTy。然后通过 SSH 进入机器两次并来回切换。

设置教程

于 2008-09-20T01:12:29.413 回答
1

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

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

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

于 2008-09-20T01:19:52.797 回答
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

要退出函数 useCTRL+C并停止后台进程,请使用:

[dsm@localhost:~]$ stop-followers

注意 1:假设您的盒子已经设置了公钥认证。

注意 2:您必须在退出 activate-followers 功能后终止所有仍在运行的作业。您可能需要手动执行此操作,因为提供的功能会对所有后台作业进行强力终止

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

谁说你不能在 shellscript 中做 lisp ;-)

于 2008-09-24T08:50:16.533 回答
1

您可以在'side log 中结帐。

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

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

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

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

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

于 2016-06-25T12:50:56.120 回答
0

我首先想到的两个选项。

选择您最喜欢的 SSH 应用程序(putty、cygwin 中的 ssh 等)并登录机器。
1. 每个日志的 SSH(在您的机器上打开许多窗口或选项卡,具体取决于您的应用程序)
2. SSH 一次并使用screen

于 2008-09-20T01:18:19.603 回答
0

如果您确实需要同时查看两个日志,并且选项卡是不可能的,您可以安装一个名为 LogResolveMerge.pl 的 perl 脚本。它将两个日志合并在一起,并将输出转储到 STDOUT。但是,这将是资源密集型的,如果您的意图是 tail -f 日志,它可能不会太有效。

于 2008-09-20T01:20:03.047 回答