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

优采云 发布时间: 2021-11-22 00:25

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

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

  Elasticsearch+Logstash+Kibana

  采集日志

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

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

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

  日志采集的组成部分这里不做说明。用法非常简单。这里重点说明一下,我们在采集日志时应该注意的几点:

  1. 日志级别必须标准化

  级别描述 debug 调试信息 info 用于采集感兴趣的信息 warn 警告信息 error 错误信息

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

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

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

  为了对当时发生错误的场景有一个很好的反馈,上面的内容应该记录下来,越详细越好。

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

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

  try

{

......

}

catch()

{

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

}

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

  管理日志

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

  1. 需要控制单个文件的大小

  因为大家都是按日期保存的,但是因为有些人不注意日志,经常看到有的系统单个日志文件有几百兆,有的甚至有几千兆。其实大家都在关注最新的问题。日志,所以控制单个日志文件的大小对于日志性能和后期运维非常方便。

  2. 日志应该易于浏览

  日志文件便于年轻人浏览。最好直接通过URL访问日志,而不是一波三折的登陆服务器。下载并再次分析需要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人工客服


线