1.5 日志监控

区别于指标监控,日志监控采集日志数据(文本类型),并将这些数据汇总到日志存储和搜索引擎中,提供日志检索的 Web 接入。指标监控的对象通常都是数字,而日志监控的对象是文本数据,这就要求存储系统具备文本检索功能。

日志监控不仅可以用于性能问题定位,还可以用于数据统计和故障告警。例如,在某个时间段内的程序输出日志中,若异常数(如果是Java编程,则匹配Exception关键字)超过阈值,则发出告警。

如图1-6所示展现了目前业内比较流行的日志监控黄金组合,当然,每个组件都有一些替代方案。

图1-6

下面对如图1-6所示的组件进行简单介绍。

◎ Fluentd主要负责日志采集,其他开源组件还有Filebeat、Flume、Fluent Bit等,也有一些应用集成 Log4g等日志组件直接输出日志。

◎ Kafka主要负责数据整流合并,避免突发日志流量直接冲击Logstash,业内也有用Redis替换Kafka的方案。

◎ Logstash负责日志整理,可以完成日志过滤、日志修改等功能。

◎ Elasticsearch负责日志存储和日志检索,自带分布式存储,可以将采集的日志进行分片存储。为保证数据高可用,Elasticsearch引入多副本概念,并通过Lucene实现日志的索引和查询。

◎ Kibana是一个日志查询组件,负责日志展现,主要通过Elasticsearch的HTTP接口展现日志。

除了自建日志系统,公有云还提供了日志存储和分析功能,以及一些SaaS日志服务,例如日志易等。本书主要介绍性能监控相关的内容,对于日志监控不会详细阐述,只分享日志监控方案。