澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:实施与部署,Heka配置讲解

2019-12-01 作者:澳门新萄京官方网站   |   浏览(200)

基于Heka,ElasticSearch和Kibana的分布式后端日志架构

目前主流的后端日志都采用的标准的elk模式(Elasticsearch,Logstash,Kinaba),分别负责日志存储,收集和日志可视化。

不过介于我们的日志文件多样,分布在各个不同的服务器,各种不同的日志,为了日后方便二次开发定制。所以采用了Mozilla仿照Logstash使用golang开源实现的Heka。

原文地址:

声明:原创文章,转载请注明出处。http://www.jianshu.com/u/e02df63eaa87

整体架构图

采用Heka,ElasticSearch和Kibana后的整体架构如下图所示
澳门新萄京官方网站 1

:Ubuntu 16.04

1、Logstash使用

Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用。

Heka篇

  • 【ELK 实施与部署Logstash 和 Filebeat 的安装与使用
  • 【ELK 实施与部署Elasticsearch 与 Kibana 的安装与使用以及和 Logstash 的连接
1.1 Logstash安装(JDK 1.8环境下)

下载Logstash 2.3.4,并解压。

简介

Heka对日志的处理流程为输入 分割 解码 过滤 编码 输出。单个Heka服务内部的数据流了通过Heka定义的Message数据模型在各个模块内进行流转。

heka内置了常用的大多数模块插件,比如

  • 输入插件有Logstreamer Input可以将日志文件作为输入源,

  • 解码插件Nginx Access Log Decoder可以将nginx访问日志解码为标准的键值对数据交给后边的模块插件进行处理。

得益于输入输出的灵活配置,可以将分散各地的Heka收集到的日志数据加工后统一输出到日志中心的Heka进行统一编码后交给ElasticSearch存储。

1 ELK概述

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

  • 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 中对数据进行视觉探索和实时分析。

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

澳门新萄京官方网站 2

  • 首先使用 Filebeat 获取服务器上的日志。当启动 Filebeat 时,它将启动一个或多个 prospectors,查找服务器上指定的日志文件,作为日志的源头等待输出到 Logstash。
  • 然后 Logstash 将 Filebeat 输入的日志文件进行处理(Filebeat 其实就是Logstash 的一个输入插件 beats),接着讲处理好的日志文件输出到 Elasticsearch 进行处理。
  • 再接着 Elasticsearch 得到 Logstash 的数据之后进行相应的搜索存储操作。将写入的数据处理成可以被检索和聚合等,以便于搜索操作。
  • 最后 Kibana 通过 Elasticsearch 提供的 API 将日志信息可视化的操作。
1.2 Logstash配置

配置logstash.conf

input {
    file {
        type => "log-file"
        path => "/root/test/log/log.log"
    }
 }
output {
    stdout { 
            codec => rubydebug  
    }
}

其中input为Logstash的输入源,当前配置是监控root/test/log/log.log文件,并将该日志类型置为log-file
其中output为Logstash的输出源,当前配置为直接输出到终端。

安装

澳门新萄京官方网站:实施与部署,Heka配置讲解。源码安装的方式较为繁琐这里就不再介绍,有需要可以参考官网文档。

这里我们的linux发行版用的centos所以使用rpm包的安装方式。

下载rpm安装包

 

1

wget https://github.com/mozilla-services/heka/releases/download/v0.10.0/heka-0_10_0-linux-amd64.rpm

使用rpm -i heka-0_10_0-linux-amd64.rpm进行安装。

安装后执行 hekad -version输出版本号即安装成功。

2 Logstash 安装与使用

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

  • Logstash 5.6 官方文档地址
  • Logstash 输入插件

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

澳门新萄京官方网站 3

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

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

澳门新萄京官方网站 4

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

澳门新萄京官方网站 5

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

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

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

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

澳门新萄京官方网站 6

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

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

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

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

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

  • bin/logstash -f logstash.conf

澳门新萄京官方网站 7

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

澳门新萄京官方网站 8

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

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

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

澳门新萄京官方网站 9

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

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

    • 利用 Grok 从非结构化数据中派生出结构
    • 从 IP 地址破译出地理坐标
    • 将 PII 数据匿名化,完全排除敏感字段
    • 简化整体处理,不受数据源、格式或架构的影响

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

澳门新萄京官方网站 10

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

  • 尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供 众多输出选择,我们可以将数据发送到指定的地方,并且能够灵活地解锁众多下游用例。

澳门新萄京官方网站 11

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

1.3 Logstash启动
./bin/logstash -f logstash.conf

使用说明 点击这里 wuguiyunwei.com

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

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

  • 性能稳健,不错过任何检测信号
    • 无论在任何环境中,随时都潜伏着应用程序中断的风险。Filebeat 能够读取并转发日志行,如果出现中断,还会在一切恢复正常后,从中断前停止的位置继续开始。
  • 让复杂的事情简单化
    • Filebeat 内置的多种模块(auditd、Apache、NGINX、System 和 MySQL)可实现对常见日志格式的一键收集、解析和可视化,并自带了常见的 Kibana 仪表板。
  • 部署到容器
    • 部署 Filebeat 在独立的容器或是同一个宿主机上,都可收集宿主机上面所有容器的日志。
    • 通过挂载共享的磁盘卷,Filebeat 即可读取所有的这些日志文件。
    • 或是借助 Docker JSON 驱动,Filebeat 即可通过 Docker prospector 来收集您容器的日志。
    • 如果还要更简单?为 Docker 准备的 Autodiscovery 可以让我们根据一个条件来开启 Filebeat 的特定模块,或是收集指定目录的日志。
  • 防止管道过载
    • 当将数据发送到 Logstash 或 Elasticsearch 时,Filebeat 使用背压敏感协议,以考虑更多的数据量。
    • 如果 Logstash 正在忙于处理数据,则可以让 Filebeat 知道减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续运行。

澳门新萄京官方网站 12

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

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

澳门新萄京官方网站 13

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

  • wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.0-linux-x86_64.tar.gz

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

  • tar -xvf filebeat-5.6.0-linux-x86_64.tar.gz

澳门新萄京官方网站 14

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

澳门新萄京官方网站 15

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

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

澳门新萄京官方网站 16

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

  • ./filebeat -e -c filebeat.yml -d "publish"

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

澳门新萄京官方网站 17

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

input { beats { port => "5044" }}output { stdout { codec => rubydebug }}

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

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

  • bin/logstash -f logstash.conf --config.test_and_exit
  • --config.test_and_exit 选项将解析配置文件并报告任何出现错误的错误。

澳门新萄京官方网站 18

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

  • bin/logstash -f logstash.conf --config.reload.automatic
  • --config.reload.automatic 选项启用自动配置重新加载,这样就不必在每次修改配置文件时停止和重新启动 Logstash。

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

Logstash:

澳门新萄京官方网站 19

Filebeat:

澳门新萄京官方网站 20

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

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

1.4 Logstash使用
  • 首先启动Logstash服务
  • 启动打印日志的程序,并将日志输出到root/test/log/log.log
  • 观察Logstash终端的输出,可以看到Logstash抓取到了监控路径下的日志,并进行处理和输出。
{
       "message" => "[INFO][uid:1491031249][name:Gloria Harrison][ip:36.59.236.198][date:2017-04-01T15:20:49.703 0800]",
      "@version" => "1",
    "@timestamp" => "2017-04-01T07:20:50.644Z",
          "path" => "/root/test/log/log.log",
          "host" => "0.0.0.0",
          "type" => "log-file"
}
{
       "message" => "[INFO][uid:14910312497][name:Ralph Martinez][ip:36.58.103.37][date:2017-04-01T15:20:49.704 0800]",
      "@version" => "1",
    "@timestamp" => "2017-04-01T07:20:50.645Z",
          "path" => "/root/test/log/log.log",
          "host" => "0.0.0.0",
          "type" => "log-file"
}

2、Elasticsearch使用

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.1 Elasticsearch安装(JDK 1.8环境下)

下载elasticsearch 2.3.4,并解压。

2.2 Elasticsearch配置

配置config/elasticsearch.yml

# host设置
network.host: 172.17.203.210
2.3 Elasticsearch常用插件安装
  • head :是集群管理工具、数据可视化、增删改查工具。
# 安装命令
./bin/plugin install mobz/elasticsearch-head

访问路径:http://localhost:9200/_plugin/head/

  • kopf:是一个ElasticSearch的管理工具,它也提供了对ES集群操作的API。
# 安装命令
./bin/plugin install lmenezes/elasticsearch-kopf

访问路径:http://localhost:9200/_plugin/kopf/

  • hq:对于ElasticSearch实例和集群进行监视和管理Web应用程序。
# 安装命令
./bin/plugin install royrusso/elasticsearch-HQ

访问路径:http://localhost:9200/_plugin/hq/

2.4 Elasticsearch启动
./bin/elasticsearch -d -p pid
2.5 Elasticsearch使用
  • 澳门新萄京官方网站 21

    HQ插件

3、Kibana使用

Kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面。

logstash index将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索,通过Kibana 来结合自定义搜索进行页面展示。

3.1 Kibana安装(JDK 1.8环境)

下载kibana 4.5.2,并解压。

3.2 Kibana配置
# Kibana is served by a back end server. This controls which port to use. Web界面的端口号

port: 5601

# The host to bind the server to. Web访问的host

host: "127.0.0.1"

# The Elasticsearch instance to use for all your queries. ES的访问路径

elasticsearch_url: elasticsearch.url: "http://127.0.0.1:9200"
3.3 Kibana启动
nohup ./bin/kibana &
3.4 Kibana使用
3.4.1 访问Kibana地址

127.0.0.1:5601

3.4.2 创建index pattern
  • Index contains time-based events:ES索引带有时间列
  • Use event times to create index names
    如果这2个都不选的情况下,可以直接添加ES的索引名字。

澳门新萄京官方网站 22

Kibana展示

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:实施与部署,Heka配置讲解

关键词: