【问题标题】:Simultaneously monitoring multiple log files (over ssh) on Windows?在 Windows 上同时监控多个日志文件(通过 ssh)?
【发布时间】:2010-09-11 12:33:35
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: windows logging terminal monitoring


    【解决方案1】:

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

    Tutorial on Setting it Up

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 听起来很有用,但我不应该在 linux/solaris 服务器上安装任何软件。
      • multitail 将在 ssh 上运行。 multitail -l 'ssh host tail -f file1' -l 'ssh host tail -f file2
      【解决方案3】:

      我首先想到的两个选项。

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

      【讨论】:

      • 谢谢。听起来它很有用,除了我不应该在 linux/solaris 服务器上安装任何软件。我需要我的 Windows XP 盒子中的解决方案。
      【解决方案4】:

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

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

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

      【讨论】:

      • 谢谢。听起来它很有用,除了我不应该在 linux/solaris 服务器上安装任何软件。我需要我的 Windows XP 盒子中的解决方案。
      【解决方案5】:

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

      【讨论】:

      • 感谢 perl 脚本。我可以在其他场景中使用它。
      【解决方案6】:

      从 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 获得它

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

      【讨论】:

        【解决方案7】:

        您可以在'side log中结帐。

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

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

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

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-14
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        相关资源
        最近更新 更多