监控多个日志文件的最佳方式
Best way of monitoring multiple log files
我需要知道什么是监控适合我需要的多个日志文件的最佳工具。
我需要什么:
- 一次发送并监控多个日志文件
- 支持实时查看
- 尽可能改进图形用户界面
- 能够搜索或过滤日志
- 尽可能以最少的努力进行设置
我收集了一些工具,它们是:
- multitail,一个简单的多日志文件查看器,但我更喜欢更好的图形 UI
- lnav,好像是multitail,但是不知道这两者有什么优缺点
- FrontTail,我觉得这个比前两个好很多
- GrayLog,我用过一次,搜索或者过滤功能都很好,但是是别人设置的,不知道设置会不会复杂
- LogStash,我从来没有用过,但是很多人说很好,但是设置容易吗?
这些日志的来源:
- gridpane.com 日志
- nginx访问日志
- nginx 错误日志
- PHP 错误日志
- MySQL查询日志
- MySQL 错误日志
我终于找到了适合我需要的那个。
我正在分享这个,以防有人想使用相同的解决方案。
感谢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/
我需要知道什么是监控适合我需要的多个日志文件的最佳工具。
我需要什么:
- 一次发送并监控多个日志文件
- 支持实时查看
- 尽可能改进图形用户界面
- 能够搜索或过滤日志
- 尽可能以最少的努力进行设置
我收集了一些工具,它们是:
- multitail,一个简单的多日志文件查看器,但我更喜欢更好的图形 UI
- lnav,好像是multitail,但是不知道这两者有什么优缺点
- FrontTail,我觉得这个比前两个好很多
- GrayLog,我用过一次,搜索或者过滤功能都很好,但是是别人设置的,不知道设置会不会复杂
- LogStash,我从来没有用过,但是很多人说很好,但是设置容易吗?
这些日志的来源:
- gridpane.com 日志
- nginx访问日志
- nginx 错误日志
- PHP 错误日志
- MySQL查询日志
- MySQL 错误日志
我终于找到了适合我需要的那个。
我正在分享这个,以防有人想使用相同的解决方案。
感谢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/