第十部分: Go微服务 - 集中化日志
本文介绍我们的Go微服务基于Logrus、Docker Gelf日志驱动以及Loggly服务(Logging as a Service)的日志策略。
- Logrus: Go语言中的结构化、可插拔日志功能。
- Docker Gelf日志驱动器: 是一种方便的格式,可以被很多工具理解,例如Graylog, Logstash, Fluentd等等。
- Loggly: 这是一个日志数据管理的SaaS解决方案。使用它可以将日志从整个基础设施的深处带到一个可以跟踪活动和分析趋势的地方。最重要的是,Loggly是一种托管服务,你不需要任何额外的硬件或软件就可以使用Loggly,并且可以动态根据操作进行扩展。
简介
日志。你根本不知道你会失去多少, 直到你这样做。为你的团队制定关于记录什么,什么时候记录以及如何记录,可能是产生可维护应用程序的关键因素之一。然后,微服务就发生了。
虽然对于单体应用来说处理一些日志文件通常都是可管理的(虽然存在例外...), 但考虑到对于基于微服务的应用程序来说,同样可能使用数百个甚至数千个服务容器来产生日志。如果没有一个搜集和汇总日志的解决方案,基本上考虑不了变得更大的时候的问题了。
谢天谢地,很多聪明人已经想到这一点 - 叫做ELK的著名栈可能就是开源社区中最著名的一个。它是ElasticSearch, LogStash和Kibana构成的Elastic Stack(ELK), 推荐可以在驻机和云主机上使用。然而ELK的文章遍地都是,所以本文我们基于四个部分来探索集中日志记录解决方案LaaS:
- Logrus: Go语言的日志框架。
- Docker Gelf驱动器: Greylog Extended Log格式的日志驱动器。
- Gelftail: 本文中将要构建的轻量级日志聚合器。
- Loggly: 一个LaaS提供商。 提供类似的管理和作用日志数据作为类似服务的能力。
解决方案概览
源代码
https://github.com/walkerqiao...
1. Logrus - Go语言日志API
2. Docker Gelf驱动器
3. 日志集合和使用Gelftail进行日志聚合
4. Loggly
总结
本文我们看了集中化日志方面的东西 - 为什么它很重要,如何对Go微服务进行格式化日志,如何使用容器编排里边的日志驱动器在日志状态上传到LaaS提供商之前对日志进行预处理。
下一节,是时候使用Netflix Hystrix为我们微服务添加断路器和弹性(resilience)。
中英文对照
- 日志即服务: Logging as a Service(LaaS).
- ELK: Electic Search、LogStash、Kibana三个首字母组合。通常三个配合使用,构成ELK协议栈。
参考链接
- Logrus: Go语言中的结构化、可插拔日志功能。
- Elastic Stack: 集中化、转换和储存你的数据。是一个开源的、服务端数据处理流水线,它同时从多个源中采集数据,转换它,然后将它发送到你最喜欢的Stash中(对于我们来说自然是Elastic Search)。
- Kibana: Kibana可以让你可视化你的Elastic Search(弹性搜索)数据,并浏览Elastic Stack,这样你就可以了解为什么在凌晨两点的时候被分页来理解雨季对你季度数字的影响。
- ElasticSearch: Elastic Stack的核心。具有解决不断壮大用例的分布式、RESTful搜索和分析引擎能力。作为Elastic Stack的核心,它集中化存储数据,因此你可以发现预期和发现意外情况。
- Docker Gelf日志驱动器: 是一种方便的格式,可以被很多工具理解,例如Graylog, Logstash, Fluentd等等。
- Loggly: 这是一个日志数据管理的SaaS解决方案。使用它可以将日志从整个基础设施的深处带到一个可以跟踪活动和分析趋势的地方。最重要的是,Loggly是一种托管服务,你不需要任何额外的硬件或软件就可以使用Loggly,并且可以动态根据操作进行扩展。
- 英文第10部分
- 系列文章首页
- 下一节
有疑问加站长微信联系(非本文作者)