有没有分布式 grep 的解决方案?
故事是这样的:我有一堆 Web 服务器,想要查询它们的应用程序日志(如果有必要的话,我会使用 tomcat)。我不想将文件复制到公共存储中,它们太大,网络成本高,存储成本也高,所以我想将它们保存在相同的 Web 服务器上。因此,即使是 haddop+hive 或类似的解决方案也行不通。
所以我正在寻找的可能是本地代理,我可以将 grep 请求发送到所有主机并返回结果。
有类似的东西吗?
- 无需通过网络复制文件
- 没有公共存储
- 无法在 Web 服务器上安装 Hadoop...我就是无法...
- 查找文本文件
谢谢!
顺便说一句,我问了同样的问题http://scale.metaoptimize.com/questions/87/distributed-grep但由于某种原因,当我尝试查看该问题时,服务器一直为我提供 500 次访问,因此我在这里重新发布。
答案1
答案2
尝试一下可能会很有趣gnu并行,也许是这样的:
将服务器放入文件中servers.txt
。然后:
parallel --sshlogins servers.txt "grep foo logfile"
我自己还没尝试过。
答案3
我使用 GNU Parallel 来完成这类任务。
echo "fgrep -Rl <MyQuery> /var/log/" | parallel --onall --slf servers.txt
答案4
你可以尝试 MCollectivehttp://puppetlabs.com/mcollective
其网站的描述是:
Marionette Collective 又名 MCollective 是一个用于构建服务器编排或并行作业执行系统的框架。我们主要将其用作在服务器集群上以编程方式执行系统管理操作的一种方式。在这方面,我们与 Func、Fabric 或 Capistrano 等工具处于同一领域。我们尝试在设计此系统时跳出思维定式,不依赖中央清单和 SSH 等工具,我们不仅仅是花哨的 SSH“for 循环”。
它是一个高度复杂的编排系统,如果您只需要执行一些简单的日志 grep,它可能会超出您的需求。