为了账号安全,请及时绑定邮箱和手机立即绑定

【ELK 实施与部署(一)】

标签:
Java

1 ELK概述

1.1 前言

在服务器日常运维工作中,对系统和业务日志的处理很重要。通常,日志被分散存储在不同的路径或者不同的设备上,这时候就需要集中化的日志管理。而集中化管理日志后,日志的统计和检索又是一件需要考虑的事情。对日志进行集中化管理,将所有设备上的日志信息收集并汇总,得到的完整日志数据有啥作用呢?

  • 1、信息查找:通过检索日志,可以定位bug,为找出解决方案提供帮助。

  • 2、服务诊断:通过日志统计、分析,了解服务器的负荷和运行状态,可以找出耗时耗能的请求从而进行优化等等。

  • 3、数据分析:格式化之后的日志,可以进行数据分析,得出有意义的信息。

开源的实时日志分析 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 的架构图如下:

webp

  • 首先使用 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 并解压进入文件夹。

webp

选择红色框中的版本,右键复制下载地址,然后使用 wget 下载。

  • wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.0.tar.gz

webp

等待下载完成之后,使用 tar 解压,并进入文件夹内部。

webp

主要文件夹包含 bin、data、lib、config 等。其中 bin 包含了一写可执行脚本文件,data 是用于存储数据的,lib 是一些系统所依赖的 jar 文件,config 包含一些配置文件。

(2)测试是否安装成功,运行最基本的 Logstash 管道:

  • bin/logstash -e 'input { stdin { } } output { stdout {} }'

启动成功之后,可以在控制台输入任何内容,他都会输出相同的内容。

webp

至此,Logstash 的安装和使用完成~

2.2 Logstash 使用配置文件的方式运行

刚刚是通过命令行方式运行的,下面我们来试试通过配置文件运行 Logstash。

首先创建一个 logstash.conf 的配置文件放在 logstash-5.6.0 目录下,内容为:

input {    stdin {
    }
}
output {    stdout {
    }
}

然后在终端上运行,其中 -f 表示指定使用的配置文件运行:

  • bin/logstash -f logstash.conf

webp

2.3 Logstash基本原理

Logstash 管道有两个必需的元素,输入和输出,以及一个可选元素,过滤器。输入插件从源获取数据,过滤器插件根据指定的内容修改数据,输出插件将数据写入目标。如下图:

webp

Logstash 事件处理管道有三个阶段:输入 过滤器 输出。输入生成事件,过滤器修改它们,并将输出发送到其他地方。

输入:采集各种样式、大小和来源的数据。

  • 数据往往以各种各样的形式,或分散或集中地存在于很多系统中。 Logstash 支持 各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从我们的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

webp

过滤器:实时解析和转换数据。

  • 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

    • 利用 Grok 从非结构化数据中派生出结构

    • 从 IP 地址破译出地理坐标

    • 将 PII 数据匿名化,完全排除敏感字段

    • 简化整体处理,不受数据源、格式或架构的影响

Logstash 的 过滤器库 丰富多样,拥有无限可能。

webp



作者:苍云横渡
链接:https://www.jianshu.com/p/297f6316de42


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消