内容采集系统(给出Elasticsearch+Logstash收集日志管理的第一件事,就是日志的收集)

优采云 发布时间: 2022-01-30 18:04

  内容采集系统(给出Elasticsearch+Logstash收集日志管理的第一件事,就是日志的收集)

  首先给个人绝对最好的工具:ELK

  弹性搜索+Logstash+Kibana

  采集日志

  日志管理的第一件事就是日志的采集。日志采集是开发者必备的技能。无论使用哪种开发语言或开发平台,日志采集插件都有很多选择。例如:

  .net平台,大家最喜欢的log4net,支持多种存储方式(文件、数据库)、多种格式、多种日志拆分方式。

  java平台的主流log4j、slf4j、logback有多种选择。

  日志采集的组件这里就不一一解释了。它们使用起来非常简单。在这里,我们将重点介绍采集日志时应注意的几点:

  1. 日志级别必须标准化

  级别描述 debug 调试信息 info 用于采集关注信息 warn 警告信息 error 错误信息

  许多开发工程师总是喜欢使用 info 级别来记录日志。一般组件的默认级别是info,默认会记录所有的info,但是debug信息发布后就不会记录了。这是一种懒惰的做法,但也是一种常见的做法。正确的做法是根据日志本身的特点来设置日志级别。其实标准的日志级别很重要:

  2.错误日志的内容一定要详细,info日志一定要简洁易懂

  操作过大型系统的人都知道,除了数据库存储,日志、图片、附件是存储的三大债权人。它们将占据非常非常大的空间。所有记录信息的日志都应该简洁易懂,以免浪费空间。. 对于错误级别的错误,必须详细记录,因为错误中的所有错误都必须在以后解决。

  为了对发生错误的场景有好的反馈,以上内容都要记录下来,越详细越好。

  3. 错误日志必须全局统一采集

  前面说过,错误日志不仅是我们需要关注的,也是我需要解决的问题。所有错误日志都非常重要。错误日志的采集必须全局统一采集。AOP是您最好的合作伙伴。如果你发现你的错误日志集合在每个类中,无处不在

  try

{

......

}

catch()

{

log.error("......")

}

  必须避免这种情况。无论您使用哪种语言,都可以全局处理错误处理,并且必须全局采集错误日志。

  管理日志

  每个开发人员都非常熟悉日志的采集。基本上,日志是根据日期保存的。在日常使用日志的时候,也有一些要求:

  1. 应该控制单个文件的大小

  因为大家都是按日期保存的,但是因为有些人不关注日志,所以经常看到有的系统的单个日志文件有几百M,有的甚至几G,但其实大家都很关心最近在处理问题。因此,控制单个日志文件的大小,对于日志性能和后续运维来说都是非常方便的。

  2. 日志易于浏览

  日志文件很小,易于浏览。最好通过网站直接访问日志,不用一波三折的登录服务器,10分钟下载,然后分析。

  3. 必须保证日志安全

  日志内容有时收录敏感信息,尤其是错误日志,直接抛出了系统的具体错误。因此,除了方便查看日志外,还需要保证日志文件的安全性。如果日志文件是html或者txt,请记得修改你的日志文件权限,让特定用户可以访问,不要随便打开,每个人都可以访问。

  4. 日志应该定期清理

  日志占用大量存储空间。太大的日志对存储性能也有一定的影响。应定期清理所有日志。

  当然,这并不确定。根据每个系统的情况制定清洁计划就足够了。

  如果每个人都是一个小网站,每个系统一台服务器,日志管理就简单了。如果系统高可用,后端使用负载均衡,日志存在当前服务器是不明智的。日志必须统一存储,因为负载均衡随时可能切换服务器。当发生故障时,您需要查找日志存在于哪个服务器也是浪费时间。日志文件也可通过以下方式获得:

  说到日志同步,就不得不提到Logstash日志组件。Logstash 是使用最广泛的日志采集组件,基于 java 平台。其实java平台的很多组件不需要懂java开发,简单配置就可以使用。

  Logstash 支持文件同步,也可以结合 rsyslog 进行文件同步。当然也支持通过tcp协议与第三方对接。一个好的合作伙伴当然是 Elasticsearch。Elasticsearch下面也会简单介绍。

  Logstash中文手册:点这里

  分析日志

  日志分析也是一个很大的概念。可能是运维和安全人员关心系统的所有日志,包括访问日志、系统监控日志等,但开发者更关心的是日志:

  因此,开发者对日志的要求比较简单,但如果处理不当,也会面临挑战。如果你想根据某些关键字查找日志,并且没有可靠的系统进行处理,那么你只能在 ctrl+f 或 find 命令中来回搜索你需要的信息。用过的人都知道,这绝对不是很好的体验。那么有没有一个很好的工具来处理这个问题?是的,这里有另外两个工具:

  Kibana 界面预览

  

  Elasticsearch+Logstash+Kibana就是传说中的ELK,应该是目前最流行的日志处理平台。

  Elasticsearch中文文档:点此ELK中文文档:点此

  结尾

  下面简单介绍一下我心目中的日志管理系统。整体流程如图所示:

  

  虽然推荐的工具都是java平台的工具,但是不管用哪个平台,日志处理的思路都是一样的。如果ELK只是作为日志管理工具,也可以应用到.net平台,不用二次开发也能很好用。使用ELK有一定的学习成本。如果你有时间,你可以在另一篇文章中讨论它。但是,这种学习成本可以忽略语言之间的差异。

  当然,如果你愿意使用脚本同步或者 rsyn 文件同步进行日志处理,也是可以的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线