0

我有 8 个 Web 服务器和 8 个应用服务器,我需要在每个服务器上查找特定的文本字符串。

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

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

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

4

3 回答 3

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.

于 2012-11-29T12:30:25.367 回答
1

有可能的。我通过 ssh 执行此类任务。

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

现在您应该能够从监控计算机登录到目标计算机而无需密码。请通过尝试登录来验证这一点ssh <target computer>

如果这可行,您可以cat通过 ssh 连接将日志文件连接到本地 grep 命令,如下所示:

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

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

于 2012-11-29T12:42:45.497 回答
0

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

然后,使用http://sphinxsearch.com/在搜索方面提供帮助是有帮助的。

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

于 2012-11-29T12:26:58.397 回答