监控多个日志文件的最佳方式

Best way of monitoring multiple log files

我需要知道什么是监控适合我需要的多个日志文件的最佳工具。

我需要什么:

我收集了一些工具,它们是:

  1. multitail,一个简单的多日志文件查看器,但我更喜欢更好的图形 UI
  2. lnav,好像是multitail,但是不知道这两者有什么优缺点
  3. FrontTail,我觉得这个比前两个好很多
  4. GrayLog,我用过一次,搜索或者过滤功能都很好,但是是别人设置的,不知道设置会不会复杂
  5. LogStash,我从来没有用过,但是很多人说很好,但是设置容易吗?

这些日志的来源:

我终于找到了适合我需要的那个。

我正在分享这个,以防有人想使用相同的解决方案。

感谢sourav19,我听从了您的建议,尽管我花了 8-10 个小时来安装和配置所有内容,但这确实是我想要的。

我不得不购买一个 Digital Ocean droplet,花了我 20 美元来获得 4 GB 的 RAM,但我认为它比购买其他太贵的日志监控应用程序便宜得多。

在安装 docker 之前,我们必须启用 Virtual Private Cloud (VPC),我们将为我们的 docker 容器使用提供的 IP 地址,因此它们可以通过以下方式相互通信this article.

我用的是docker化的ELK,link是here

我们需要做的就是将 docker 化的 ELK 克隆到我们的服务器,然后进入克隆的文件夹,构建 Dockerfile

docker run -p 5601:5601 -p 9200:9200  -p 5044:5044 \
-v /var/log:/var/lib/elasticsearch --name elk sebp/elk

然后,打开kibana,在网站中,HTTP://your_site:5601

之后,将Filebeat安装到其他有你要监控的日志文件的服务器上,这个Filebeat会把日志发送到Kibana,按照这个instructions, and then configure it here.

如果一切正常,我们将在 Kibana 中看到日志。

如果您希望偶尔扫描单个主机上的多个日志文件,那么 lnav 应该很适合。

  • Send and monitor multiple log files at once

lnav 直接处理主机上的日志文件,它不是使用文件的服务。它还能够同时监控多个日志并将消息整理到一个视图中。 (注意:上面@xav 的评论说 lnav 不解析文件,这是不正确的,我不知道他们从哪里得到这种印象。)

  • Support real-time viewing

lnav 在大多数操作中以“实时”方式工作。它总是轮询文件以获取新数据。例如,如果有一个搜索活动,任何新数据将在加载时被搜索。

  • Better graphical User Interface whenever possible

lnav 是一个基于文本的用户界面,但它仍然是 quite friendly。有联机帮助、制表符完成、语法高亮、命令预览等。

  • Capable of searching or filtering the logs

可以使用与 perl 兼容的正则表达式 (PCRE) 按时间 and/or 按日志级别搜索和 filtered 日志。加载新数据时会自动应用过滤器。下一个版本 v0.9.1 将使用 SQL 表达式进行过滤。

您还可以使用 SQLite SQL 来分析日志消息。例如,如果要查找从 Apache web 访问日志传输的字节数最大的 URI,可以执行:

SELECT cs_uri_stem, max(sc_bytes) AS max_bytes
   FROM access_log
   GROUP BY cs_uri_stem
   ORDER BY max_bytes desc
  • Setup with minimum effort whenever possible

lnav 有 several log formats builtin and will auto-detect the correct format for a given log file. If a format is not supported, you can write a JSON file that describes the format。使用 lnav 几乎总是 运行:

的问题
$ lnav /path/to/logs/