前戏:
运维人员需要对系统和业务日志进行精准把控,便于分析系统和业务状态。日志分布在不同的服务器上,传统的使用传统的方法依次登录每台服务器查看日志,既繁琐又效率低下。所以我们需要集中化的日志管理工具将位于不同服务器上的日志收集到一起, 然后进行分析展示。
市场上的产品
- 简单的 Rsyslog,Syslog-ng
- 商业化的 Splunk
- 开源的
- FaceBook 公司的 Scribe,
- Apache 的 Chukwa,
- Linkedin 的 Kafak,
- Cloudera 的 Fluentd,
- ELK
Splunk
是一款非常优秀的产品,但是它是商业产品,价格昂贵,让许多老板而却步.
ELK 协议栈介绍及体系结构
ELK
其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch
,Logstash
和 Kibana
。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK
协议栈
Elasticsearch
Elasticsearch
是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene
基础上的搜索引擎,使用Java
语言编写
主要特点 实时分析 分布式实时文件存储,并将每一个字段都编入索引 文档导向,所有的对象全部是文档 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)。接口友好,支持 JSON
Logstash
官方产品介绍:https://www.elastic.co/cn/products/logstash
Logstash
是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 (JordanSissel)
主要特点
- 几乎可以访问任何数据
- 可以和多种外部应用结合
- 支持弹性扩展
logstash可以采集任何格式的数据,当然我们这里主要是讨论采集系统日志,服务日志等日志类型数据。
Kibana
Kibana
是一款基于 Apache
开源协议,使用 JavaScript
语言编写,为 Elasticsearch
提供分析和可视化的 Web 平台。它可以在Elasticsearch
的索引中查找,交互数据,并生成各种维度的表图.
Filebeat
ELK
协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder
源代码开发,是对它的替代。在需要采集日志数据的 server
上安装Filebeat
,并指定日志目录或日志文件后,Filebeat
就能读取数据,迅速发送到Logstash
进行解析,亦或直接发送到 Elasticsearch
进行集中式存储和分析。
因为logstash消耗内存等资源太高,如果在要采集的服务上都安装logstash,这样对应用服务器的压力增加。所以我们要用轻量级的采集工具才更高效,更省资源。
beats是轻量级的日志收集处理工具,Beats占用资源少
- Packetbeat: 网络数据(收集网络流量数据)
- Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
- Filebeat: 文件(收集日志文件数据)
- Winlogbeat: windows事件日志(收集 Windows 事件日志数据)
- Auditbeat:审计数据 (收集审计日志)
- Heartbeat:运行时间监控 (收集系统运行时的数据)