是否可以连接到多个服务器并在日志中搜索文本?

时间:2012-11-29 12:23:37

标签: linux

我有8个网络服务器和8个应用服务器,每个服务器需要找到一个特定的文本字符串。

通常我会通过putty连接到服务器并在下面输入以搜索该文本:

grep "XMemcached network layout exception" /logs/handle1.log

无论如何我可以通过脚本自动执行此操作,因此它会自动连接到这些服务器并搜索这些单词吗?这可能吗?

3 个答案:

答案 0 :(得分:1)

登录其中一台服务器并执行类似

的操作

for host in web1 web2 web3 [...] app1 app2 app3 [...]; do ssh $host grep "XMemcached network layout exception" /logs/handle1.log | sed "s/^/$host: /"; done

这只是一个基本的一次性脚本;如果您发现自己反复做这类事情,请考虑安装clusterssh

答案 1 :(得分:1)

有可能。我在ssh上做了这样的任务。

设置没有密码但带有证书的ssh身份验证。在启动grep命令的(监视)计算机上,需要使用ssh-keygen生成ssh密钥。这将在~/.ssh/文件夹中为您创建密钥对。私人的,秘密的,另一个是公共的。您需要将公钥复制到要搜索日志的每台目标计算机。您可以使用scp将文件复制到目标计算机。然后登录目标计算机并将公钥文件的内容附加到文件~/.ssh/authorized_keys

现在,您应该能够在没有密码的情况下从监控计算机登录目标计算机。 请尝试使用ssh <target computer>登录来验证这一点。

如果这样可行,您只需通过与本地grep命令的ssh连接cat日志文件,如下所示:

echo `ssh <user>@<target computer> "cat <log file>"` | grep <search term>

这只是一个解决方案,非常容易且快速建立。 使用此解决方案,您始终可以使用本地监控计算机,并仅检索要搜索的日志文件。 一个更舒适的解决方案可能是编写一个小的bash脚本。

答案 2 :(得分:0)

我个人喜欢RabbitMQ将盒子连接在一起这样的事情。

然后,使用http://sphinxsearch.com/帮助搜索方面很有帮助。

就个人而言,我会将所有日志通过兔子传输到中央搜索服务器。如果搜索流量很大,可能会使用几个框。