1 ELK概述
1.1 前言
在服务器日常运维工作中,对系统和业务日志的处理很重要。通常,日志被分散存储在不同的路径或者不同的设备上,这时候就需要集中化的日志管理。而集中化管理日志后,日志的统计和检索又是一件需要考虑的事情。对日志进行集中化管理,将所有设备上的日志信息收集并汇总,得到的完整日志数据有啥作用呢?
1、信息查找:通过检索日志,可以定位bug,为找出解决方案提供帮助。
2、服务诊断:通过日志统计、分析,了解服务器的负荷和运行状态,可以找出耗时耗能的请求从而进行优化等等。
开源的实时日志分析 ELK 平台能够完美的解决上述的痛点,ELK 是由 ElasticSearch、Logstash 和 Kiabana 三个开源工具构成,在这里我们还将用到 Filebeat 这个开源工具,这四个都是 Elastic 旗下的产品。下面简单介绍一下:
Filebeat:Filebeat 是一种轻量型日志采集器,用于转发和汇总日志与文件。当将数据发送到 Logstash 时,Filebeat 使用背压敏感协议,以考虑更多的数据量。如果 Logstash 正在忙于处理数据,则可以让 Filebeat 知道减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续运行。
Logstash:Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到“存储库”Elasticsearch 中。
ElasticSearch:ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
Kibana:Kibana 是一个基于浏览器页面的 Elasticsearch 前端展示工具。 它可以在 Elasticsearch 中对数据进行视觉探索和实时分析。
1.2 ELK 架构
最简单的一个安装 ELK 的架构图如下:
首先使用 Filebeat 获取服务器上的日志。当启动 Filebeat 时,它将启动一个或多个 prospectors(检测者),查找服务器上指定的日志文件,作为日志的源头等待输出到 Logstash。
然后 Logstash 将 Filebeat 输入的日志文件进行处理(Filebeat 其实就是Logstash 的一个输入插件 beats),接着讲处理好的日志文件输出到 Elasticsearch 进行处理。
再接着 Elasticsearch 得到 Logstash 的数据之后进行相应的搜索存储操作。将写入的数据处理成可以被检索和聚合等,以便于搜索操作。
最后 Kibana 通过 Elasticsearch 提供的 API 将日志信息可视化的操作。
2 Logstash 安装与使用
根据上边的架构图,虽然应该是先安装 Filebeat 的,但是 Filebeat 只是 Logstash的一个输入插件 beats,Logstash 具有很多输入插件,例如:标准输入插件stdin、文件输入插件 file 等等。
2.1 Logstash 安装与测试
(1)首先确保 JDK 版本为 1.8 以上,然后 下载 Logstash 并解压进入文件夹。
选择红色框中的版本,右键复制下载地址,然后使用 wget
下载。
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.0.tar.gz
等待下载完成之后,使用 tar
解压,并进入文件夹内部。
主要文件夹包含 bin、data、lib、config 等。其中 bin 包含了一写可执行脚本文件,data 是用于存储数据的,lib 是一些系统所依赖的 jar 文件,config 包含一些配置文件。
(2)测试是否安装成功,运行最基本的 Logstash 管道:
bin/logstash -e 'input { stdin { } } output { stdout {} }'
启动成功之后,可以在控制台输入任何内容,他都会输出相同的内容。
至此,Logstash 的安装和使用完成~
2.2 Logstash 使用配置文件的方式运行
刚刚是通过命令行方式运行的,下面我们来试试通过配置文件运行 Logstash。
首先创建一个 logstash.conf 的配置文件放在 logstash-5.6.0 目录下,内容为:
input { stdin { } } output { stdout { } }
然后在终端上运行,其中 -f
表示指定使用的配置文件运行:
bin/logstash -f logstash.conf
2.3 Logstash基本原理
Logstash 管道有两个必需的元素,输入和输出,以及一个可选元素,过滤器。输入插件从源获取数据,过滤器插件根据指定的内容修改数据,输出插件将数据写入目标。如下图:
Logstash 事件处理管道有三个阶段:输入 过滤器 输出。输入生成事件,过滤器修改它们,并将输出发送到其他地方。
输入:采集各种样式、大小和来源的数据。
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。 Logstash 支持 各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从我们的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
过滤器:实时解析和转换数据。
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
利用 Grok 从非结构化数据中派生出结构
从 IP 地址破译出地理坐标
将 PII 数据匿名化,完全排除敏感字段
简化整体处理,不受数据源、格式或架构的影响
Logstash 的 过滤器库 丰富多样,拥有无限可能。
作者:苍云横渡
链接:https://www.jianshu.com/p/297f6316de42
共同学习,写下你的评论
评论加载中...
作者其他优质文章