可能的重复:
Splunk 的替代品?
这个已经讨论过了,但是已经几个月了,所以可能是时候重新审视它了:
郑重声明,Splunk 非常棒。但是定价完全超出了我们的考虑范围(当我今天与 Splunk 交谈时,系统索引 5GB/天的数据的成本超过 30,000 美元。)
这比我们在 SQL Server 上花费的钱(成倍数)多,比我们在服务器机架上花费的钱数(成倍数)多,等等。
splunk 销售团队是正确的(30,000 美元,我们获得的价值和功能比我们花同样的钱构建自己的系统要多),但这并不重要。splunk 成本太高了(成倍增加)。
Soooooo,我们在环顾四周!
有没有人在那里构建类似 splunk 的系统?
我们的基本需求:
我们目前需要索引 3-5gb/天,但需要能够扩展到 10gb/天或更多。我们不需要很多历史记录(30 天就可以了)。
我们使用 Windows 2008 和 2003 服务器。
谢谢你的想法!
更新:我们花了两周时间研究商业和开源选项。我们的结论:写我们自己的(我们是一家软件公司……我们知道如何写东西)。我们在 mongodb 和 .NET 上构建了一个很棒的系统,它在大约一个工程周内为我们提供了我们需要的 MongoDB 功能。我们现在已经完成了我们的实施。我们使用两台 Mongodb 服务器(主从),能够记录和索引任意数量的日志数据(5GB/天、15GB/天等),仅受磁盘空间的限制。
更新至更新(2012 年 12 月):我们继续使用我们的 mongodb 解决方案,而且效果很好!如果我们今天要构建它,我们会强烈考虑在 elasticsearch 之上构建它。
观察:这个空间需要一个固定价格为 1000-3000 美元的可靠解决方案。商业公司使用的许可模型基于“挤奶数据中心操作员”模型。那是他们的权利(当然!),但它留下了一个巨大的空间让某人进入他们下面。我的猜测是,再过一两年,将会有一个很好的开源解决方案,它会真正可用。
感谢大家的投入(即使是自我推销)。
您如何分析来自 UNIX/Linux 机器的日志文件?我们运行数百台服务器,它们都直接或通过 syslog 生成自己的日志文件。我正在寻找一个不错的解决方案来汇总这些并挑选出重要的事件。这个问题分为 3 个部分:
1) 消息传输
经典的方法是使用 syslog 将消息记录到远程主机。这对于登录到 syslog 的应用程序很有效,但对于写入本地文件的应用程序不太有用。解决方案可能包括让应用程序登录到连接到程序的 FIFO 以使用 syslog 发送消息,或者通过编写一些内容来 grep 本地文件并将输出发送到中央 syslog 主机。然而,如果我们不厌其烦地编写工具来将消息导入系统日志,我们是否会更好地用 Facebook 的Scribe 之类的东西来替换整个系统,它比系统日志提供更多的灵活性和可靠性?
2)消息聚合
日志条目似乎属于两种类型之一:每主机和每服务。Per-host 消息是发生在一台机器上的消息;考虑磁盘故障或可疑登录。Per-service 消息出现在大多数或所有运行服务的主机上。例如,我们想知道 Apache 何时发现 SSI 错误,但我们不希望 100 台机器出现相同的错误。在所有情况下,我们只希望看到每种类型的消息中的一个:我们不希望有 10 条消息说同一个磁盘发生故障,并且我们不希望每次遇到损坏的 SSI 时都收到一条消息。
解决此问题的一种方法是在每个主机上将多个相同类型的消息聚合为一个,将这些消息发送到中央服务器,然后将相同类型的消息聚合为一个整体事件。SER可以做到这一点,但使用起来很尴尬。即使经过几天的摆弄,我也只能进行基本的聚合,并且不得不不断查找 SER 用于关联事件的逻辑。这是强大但棘手的东西:我需要一些我的同事可以在最短的时间内拿起和使用的东西。SER 规则不符合该要求。
3) 生成警报
当有趣的事情发生时,我们如何告诉我们的管理员?邮寄群组收件箱?注入Nagios?
那么,你是如何解决这个问题的?我不指望盘子上有答案;我可以自己解决细节问题,但就什么是常见问题进行一些高层讨论会很棒。目前,我们正在使用 cron 作业、系统日志以及谁知道还有什么可以找到事件的大杂烩。这不是可扩展的、可维护的或灵活的,因此我们错过了很多我们不应该的东西。
更新:我们已经在使用 Nagios 进行监控,这对于检测到的主机/测试服务/等非常有用,但对于抓取日志文件不太有用。我知道 Nagios 有日志插件,但我对比每个主机警报更具可扩展性和层次性的东西感兴趣。
我试图弄清楚其他人如何实现他们的日志管理系统。
我有 20-30 个 Linux 服务器和一些 Windows 机器(其中大部分是虚拟的)。我们使用大量 Perl 和 Bash 脚本来完成大部分自动化工作,我正在尝试标准化它们的日志记录。
我一直在寻找 log4perl 和 log4sh 来记录脚本,并使用 syslog-ng 来获取集中式日志服务器上的所有日志。我还阅读了 splunk,尽管听起来企业版非常昂贵,而且我可能会超过所有服务器的免费许可限制。
我见过其他工具,如 swatch 和 logcheck,但我不太确定所有这些部分如何组合在一起......任何建议将不胜感激!
我有两台Linux服务器。我是管理员,我日常工作的一部分是检查所有日志中是否有错误或奇怪的消息。所以,每天早上我都会检查:
在服务器 #1 上:
/var/log/syslog
/var/www/example.com/error.log
/var/log/redis.log
...and so on
Run Code Online (Sandbox Code Playgroud)
在服务器 #2 上:
/var/log/syslog
/var/lib/mysql_error.log
/var/lib/mysql_slow.log
Run Code Online (Sandbox Code Playgroud)
通过终端打开每个文件非常无聊且效率低下。是否有一些工具可以从所有服务器收集日志并将它们显示在一个地方?
linux ×3
log-files ×2
logging ×2
syslog ×2
automation ×1
datacenter ×1
monitoring ×1
scripting ×1
splunk ×1
unix ×1