Java-Python-Django社区ELK文集

【ELK 实施与部署(一)】Logstash 和 Filebea

2018-08-17  本文已影响1人  苍云横渡

原文地址:https://www.cloudcrossing.xyz/post/55/

【测试环境】:Ubuntu 16.04


1 ELK概述

1.1 前言

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

开源的实时日志分析 ELK 平台能够完美的解决上述的痛点,ELK 是由 ElasticSearch、Logstash 和 Kiabana 三个开源工具构成,在这里我们还将用到 Filebeat 这个开源工具,这四个都是 Elastic 旗下的产品。下面简单介绍一下:

1.2 ELK 架构

最简单的一个安装 ELK 的架构图如下:


2 Logstash 安装与使用

根据上边的架构图,虽然应该是先安装 Filebeat 的,但是 Filebeat 只是 Logstash的一个输入插件 beats,Logstash 具有很多输入插件,例如:标准输入插件stdin、文件输入插件 file 等等。

2.1 Logstash 安装与测试

(1)首先确保 JDK 版本为 1.8 以上,然后 下载 Logstash 并解压进入文件夹。

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

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

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

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

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

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

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

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

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

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

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

2.3 Logstash基本原理

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

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

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

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

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

输出:选择存储库,导出数据。

另外,Logstash 的输入和输出支持编解码器,使我们能够在数据进入或退出流水线时对其进行编码或解码,而无需使用单独的过滤器。也就是说,其实 Logstash 是一个 input–decode –filter–encode–output 的数据流!


3 使用 Filebeat 将日志行发送到 Logstash

在创建 Logstash 管道之前,可以配置 Filebeat 以将日志行发送到 Logstash(当然也可以发送到 Elasticsearch )。Filebeat 是一个轻量型日志采集器,他可以从服务器上的文件中收集日志,并将这些日志转发到 Logstash 实例进行处理。

3.1 为什么使用 Filebeat

3.2 Filebeat 的安装与使用

注意:在实际开发和生产环境中,Filebeat 一般和 Logstash 运行在不同的机器上,本文中 Logstash 和 Filebeat 在同一台机器上运行。

(1)下载Filebeat,并解压进入文件夹。

右键红色框复制下载地址,通过 wget 下载:

接着使用 tar 解压并进入文件夹:

(2)修改配置文件,将要收集日志的服务器(这里是本机)和 Filebeat 连接起来。位于 Filebeat 安装目录中的 filebeat.yml 文件,修改需要检测的服务器的日志文件位置(改完先别退出 vim)。

PS:如果要想收集 Tomcat 的日志文件,修改检测路径为 Tomcat 的日志文件位置即可,注意要开启 Tomcat

(3)修改配置文件将 Filebeat 和 Logstash 连接起来。同样是修改 filebeat.yml
文件,将 output.elasticsearch 注释掉,并打开 Logstash 的注释,修改之后内容如下:

(4)启动 Filebeat。在数据源机器上使用以下命令运行 Filebeat:

Filebeat 将尝试在端口 5044 上连接。直到 Logstash 探测到活动的 Beats 插件开始,该端口将不会有任何内容(会显示拒绝 connection refused)。因此,您看到的有关无法在该端口上连接的任何消息是正常的。如果配置成功的话,就会去读取你指定的日志文件,如下:

(5)修改 Logstash 的配置文件,将 Filebeat 设置为输入。修改前边创建的 logstash.conf 文件(新建一个终端,Filebeat 启动的终端不要关),修改后的配置文件如下:

input {
 beats {
    port => "5044"
 }
}

output {
  stdout {
    codec => rubydebug
  }
}

这里将 beats(就是Filebeat)插件作为输入插件,端口号为 5044。通过标准输出插件将数据显示在控制台中,其中 rubydebug 就是一种 Codec,一般也只用在 stdout 插件中,作为配置测试或者调试的工具。

验证配置是否正确,运行以下命令:

配置文件通过后,使用以下命令启动 Logstash:

配置成功之后,如果 Tomcat 服务器有日志更新,在 Logstash 和 Filebeat 都会显示出来。这个时候 Filebeat 也不会在报错,因为已经在 5044 端口和 Logstash
建立了连接。

Logstash:

Filebeat:

至此,Logstash 和 Filebeat 的安装与使用,以及他们的连接已经完成!


参考链接:Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用

上一篇下一篇

猜你喜欢

热点阅读