关于linux:搞懂-ELK-并不是一件特别难的事

38次阅读

共计 15689 个字符,预计需要花费 40 分钟才能阅读完成。

本篇文章次要介绍 ELK 的一些框架组成,原理和实际,采纳的 ELK 本版为 7.7.0 版本。

ELK 介绍

ELK 简介

ELK 是 Elasticsearch、Logstash、Kibana 三大开源框架首字母大写简称(然而前期呈现的 Filebeat(beats 中的一种)能够用来代替 Logstash 的数据收集性能,比拟轻量级)。市面上也被成为 Elastic Stack。

Filebeat 是用于转发和集中日志数据的轻量级传送工具。Filebeat 监督您指定的日志文件或地位,收集日志事件,并将它们转发到 Elasticsearch 或 Logstash 进行索引。Filebeat 的工作形式如下:启动 Filebeat 时,它将启动一个或多个输出,这些输出将在为日志数据指定的地位中查找。对于 Filebeat 所找到的每个日志,Filebeat 都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到 libbeat,libbeat 将汇集事件,并将汇集的数据发送到为 Filebeat 配置的输入。

Logstash 是收费且凋谢的服务器端数据处理管道,可能从多个起源采集数据,转换数据,而后将数据发送到您最喜爱的“存储库”中。Logstash 可能动静地采集、转换和传输数据,不受格局或复杂度的影响。利用 Grok 从非结构化数据中派生出构造,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。

Elasticsearch 是 Elastic Stack 外围的分布式搜寻和剖析引擎,是一个基于 Lucene、分布式、通过 Restful 形式进行交互的近实时搜寻平台框架。Elasticsearch 为所有类型的数据提供近乎实时的搜寻和剖析。无论您是结构化文本还是非结构化文本,数字数据或天文空间数据,Elasticsearch 都能以反对疾速搜寻的形式无效地对其进行存储和索引。

Kibana 是一个针对 Elasticsearch 的开源剖析及可视化平台,用来搜寻、查看交互存储在 Elasticsearch 索引中的数据。应用 Kibana,能够通过各种图表进行高级数据分析及展现。并且能够为 Logstash 和 ElasticSearch 提供的日志剖析敌对的 Web 界面,能够汇总、剖析和搜寻重要数据日志。还能够让海量数据更容易了解。它操作简略,基于浏览器的用户界面能够疾速创立仪表板(Dashboard)实时显示 Elasticsearch 查问动静。

为什么要应用 ELK

日志次要包含系统日志、应用程序日志和平安日志。零碎运维和开发人员能够通过日志理解服务器软硬件信息、查看配置过程中的谬误及谬误产生的起因。常常剖析日志能够理解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

往往单台机器的日志咱们应用 grep、awk 等工具就能根本实现简略剖析,然而当日志被扩散的贮存不同的设施上。如果你治理数十上百台服务器,你还在应用顺次登录每台机器的传统办法查阅日志。这样是不是感觉很繁琐和效率低下。事不宜迟咱们应用集中化的日志治理,例如:开源的 Syslog,将所有服务器上的日志收集汇总。集中化治理日志后,日志的统计和检索又成为一件比拟麻烦的事件,个别咱们应用 grep、awk 和 wc 等 Linux 命令能实现检索和统计,然而对于要求更高的查问、排序和统计等要求和宏大的机器数量仍然应用这样的办法不免有点力不从心。

个别大型零碎是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题呈现时,大部分状况须要依据问题裸露的要害信息,定位到具体的服务器和服务模块,构建一套集中式日志零碎,能够进步定位问题的效率。

残缺日志零碎基本特征
  • 收集:可能采集多种起源的日志数据
  • 传输:可能稳固的把日志数据解析过滤并传输到存储系统
  • 存储:存储日志数据
  • 剖析:反对 UI 剖析
  • 正告:可能提供错误报告,监控机制

ELK 架构剖析

Beats + Elasticsearch + Kibana 模式

如上图所示,该 ELK 框架由 Beats(日志剖析咱们通常应用 Filebeat)+ Elasticsearch + Kibana 形成,这个框架比较简单,入门级的框架。其中 Filebeat 也能通过 module 对日志进行简略的解析和索引。并查看预建的 Kibana 仪表板。

该框架适宜简略的日志数据,个别能够用来玩玩,生产环境倡议接入 Logstash。

Beats + Logstash + Elasticsearch + Kibana 模式

该框架是在下面的框架的根底上引入了 Logstash,引入 Logstash 带来的益处如下:

  • 通 Logstash 具备基于磁盘的自适应缓冲零碎,该零碎将排汇传入的吞吐量,从而加重背压
  • 从其余数据源(例如数据库,S3 或消息传递队列)中提取
  • 将数据发送到多个目的地,例如 S3,HDFS 或写入文件
  • 应用条件数据流逻辑组成更简单的解决管道

Filebeat 联合 Logstash 带来的劣势:

  • 程度可扩展性,高可用性和可变负载解决:Filebeat 和 Logstash 能够实现节点之间的负载平衡,多个 Logstash 能够实现 Logstash 的高可用。
  • 音讯持久性与至多一次交付保障:应用 Filebeat 或 Winlogbeat 进行日志收集时,能够保障至多一次交付。从 Filebeat 或 Winlogbeat 到 Logstash 以及从 Logstash 到 Elasticsearch 的两种通信协议都是同步的,并且反对确认。Logstash 长久队列提供跨节点故障的爱护。对于 Logstash 中的磁盘级弹性,确保磁盘冗余十分重要。
  • 具备身份验证和有线加密的端到端平安传输:从 Beats 到 Logstash 以及从 Logstash 到 Elasticsearch 的传输都能够应用加密形式传递。与 Elasticsearch 进行通信时,有很多平安选项,包含根本身份验证,TLS,PKI,LDAP,AD 和其余自定义畛域。

当然在该框架的根底上还能够引入其余的输出数据的形式:比方:TCP,UDP 和 HTTP 协定是将数据输出 Logstash 的罕用办法(如下图所示):

Beats+ 缓存 / 音讯队列 + Logstash + Elasticsearch + Kibana 模式

在如上的根底上咱们能够在 Beats 和 Logstash 两头增加一些组件 Redis、Kafka、RabbitMQ 等,增加中间件将会有如下益处:

  • 升高对日志所在机器的影响,这些机器上个别都部署着反向代理或应用服务,自身负载就很重了,所以尽可能的在这些机器上少做事;
  • 如果有很多台机器须要做日志收集,那么让每台机器都向 Elasticsearch 继续写入数据,必然会对 Elasticsearch 造成压力,因而须要对数据进行缓冲,同时,这样的缓冲也能够肯定水平的爱护数据不失落;
  • 将日志数据的格式化与解决放到 Indexer 中对立做,能够在一处批改代码、部署,防止须要到多台机器下来批改配置。

ELK 部署

ELK 各个组件的网址能够在官网下载:https://www.elastic.co/cn/

或者在中文社区下载:https://elasticsearch.cn/down…

注:本次装置都是采纳压缩包的形式装置。

Filebeat 的装置介绍

原理

Filebeat 的工作形式如下:启动 Filebeat 时,它将启动一个或多个输出,这些输出将在为日志数据指定的地位中查找。对于 Filebeat 所找到的每个日志,Filebeat 都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到 Libbeat,Libbeat 将汇集事件,并将汇集的数据发送到为 Filebeat 配置的输入。

Filebeat 构造:由两个组件形成,别离是 inputs(输出)和 harvesters(收集器),这些组件一起工作来跟踪文件并将事件数据发送到您指定的输入,harvester 负责读取单个文件的内容。harvester 逐行读取每个文件,并将内容发送到输入。为每个文件启动一个 harvester。harvester 负责关上和敞开文件,这意味着文件描述符在 harvester 运行时放弃关上状态。如果在收集文件时删除或重命名文件,Filebeat 将持续读取该文件。这样做的副作用是,磁盘上的空间始终保留到 harvester 敞开。默认状况下,Filebeat 放弃文件关上,直到达到 close_inactive。

简略装置

本文采纳压缩包的形式装置,Linux 版本,Filebeat-7.7.0-linux-x86_64.tar.gz。

curl-L-Ohttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.0-linux-x86_64.tar.gz
tar -xzvf filebeat-7.7.0-linux-x86_64.tar.gz

配置示例文件:filebeat.reference.yml(蕴含所有未过期的配置项)

配置文件:filebeat.yml

启动命令:./filebeat -e

具体的原理、应用、实例见文:https://www.cnblogs.com/zsql/…

Logstash 的装置介绍

基本原理

Logstash 分为三个步骤:inputs(必须的)→ filters(可选的)→ outputs(必须的),inputs 生成工夫,filters 对其事件进行过滤和解决,outputs 输入到输入端或者决定其存储在哪些组件里。inputs 和 outputs 反对编码和解码。

Logstash 管道中的每个 input 阶段都在本人的线程中运行。将写事件输出到内存(默认)或磁盘上的核心队列。每个管道工作线程从该队列中取出一批事件,通过配置的 filter 解决该批事件,而后通过 output 输入到指定的组件存储。管道解决数据量的大小和管道工作线程的数量是可配置的。

简略装置

下载地址 1:https://www.elastic.co/cn/dow…

下载地址 2:https://elasticsearch.cn/down…

这里须要装置 JDK,我应用的是 Elasticsearch 7.7.0 自带的 JDK:

解压即装置:

tar -zxvf logstash-7.7.0.tar.gz

来个 Logstash 版本的 HelloWorld:

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

Elasticsearch 的装置介绍

根本介绍

Elasticsearch(ES)是一个基于 Lucene 构建的开源、分布式、RESTful 接口的全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜寻,ES 可能横向扩大至数以百计的服务器存储以及解决 PB 级的数据。能够在极短的工夫内存储、搜寻和剖析大量的数据。

基本概念有:Cluster 集群、Node 节点、Index 索引、Document 文档、Shards & Replicas 分片与正本等。

Elasticsearch 的劣势:

  • 分布式:横向扩大非常灵活;
  • 全文检索:基于 Lucene 的弱小的全文检索能力;
  • 近实时搜寻和剖析:数据进入 ES,可达到近实时搜寻,还可进行聚合剖析;
  • 高可用:容错机制,主动发现新的或失败的节点,重组和从新均衡数据;
  • 模式自在:ES 的动静 mapping 机制能够自动检测数据的构造和类型,创立索引并使数据可搜寻;
  • RESTful API:JSON + HTTP。
Linux 零碎参数设置

1、设置系统配置

ulimit #临时批改,切换到该用户 es,ulimit -n 65535 
/etc/security/limits.conf #永恒批改 es -  nofile  65535
ulimit -a #查看以后用户的资源限度

2、禁用 sawpping

形式一:

swapoff -a #长期禁用所有的 swap 文件
vim /etc/fstab #正文掉所有的 swap 相干的行,永恒禁用

形式二:

cat /proc/sys/vm/swappiness #查看该值
sysctl vm.swappiness=1 #长期批改该值为 1
vim /etc/sysctl.conf #批改文件 永恒失效
vm.swappiness = 1 #如果有该值,则批改该值,若没有,则追加该选项,sysctl - p 失效命令

形式三:

 配置 elasticsearch.yml 文件,增加如下配置:bootstrap.memory_lock: true
GET _nodes?filter_path=**.mlockall  #查看如上配置是否胜利

留神:如果试图调配比可用内存更多的内存,mlockall 可能会导致 JVM 或 shell 会话退出!

3、配置文件描述符

ulimit -n 65535  #长期批改
vim /etc/security/limits.conf #永恒批改
es         soft    nproc     65535
es         hard    nproc     65535

4、配置虚拟内存

sysctl -w vm.max_map_count=262144 #长期批改该值
vim /etc/sysctl.conf #永恒批改
vm.max_map_count=262144

5、配置线程数

ulimit -u 4096 #长期批改
vim /etc/security/limits.conf #永恒批改
Elasticsearch 装置

Elasticsearch 是须要其余用户启动的,所以须要先创立一个新的用户 ELK:

groupadd  elastic
useradd elk -d /data/hd05/elk -g elastic
echo '2edseoir@' | passwd elk --stdin

下载:https://elasticsearch.cn/down…

也能够去官网下载 wget:https://artifacts.elastic.co/…

 解压:tar -zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz
建设软链接:ln –s elasticsearch-7.7.0 es

目录介绍:

$ES_HOME:/data/hd05/elk/elasticsearch-7.7.0
bin: $ES_HOME/bin  #ES 启动命令和插件装置命令
conf:$ES_HOME/conf #elasticsearch.yml 配置文件目录
data:$ES_HOME/data  #对应的参数 path.data,用于寄存索引分片数据文件
logs:$ES_HOME/logs  #对应的参数 path.logs,用于寄存日志
jdk:$ES_HOME/jdk  #自带反对该 ES 版本的 JDK
plugins:$ES_HOME/jplugins #插件寄存目录
lib:$ES_HOME/lib #寄存依赖包,比方 Java 类库
modules:$ES_HOME/modules #蕴含所有的 ES 模块

配置自带的 Java 环境:

Vim ~/.bashrc
############ 往后面增加如下内容 ######################
export JAVA_HOME=/data/hd05/elk/es/jdk
export PATH=JAVAHOME/bin:PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:/lib/tools.jar

jvm.options 文件阐明:

 配置 Java 参数
一种是通过批改 /data/hd05/elk/elasticsearch-7.7.0/config/jvm.options 文件批改 JVM 参数,一个应用过一个变量 ES_JAVA_OPTS 来申明 JVM 参数
/data/hd05/elk/elasticsearch-7.7.0/config/jvm.options 介绍:8:-Xmx2g  #示意只适宜 Java 8
8-:-Xmx2g  #示意适宜高于 Java 8 的版本
8-9:-Xmx2g #示意适宜 Java 8,和 Java 9

通过变量 ES_JAVA_OPTS 来申明 JVM 参数:

 例如:export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

配置 config/jvm.options:

[elk@lgh config]$ cat  jvm.options  | egrep -v '^$|#'                 
-Xms2g
-Xmx2g
8-13:-XX:+UseConcMarkSweepGC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly
14-:-XX:+UseG1GC
14-:-XX:G1ReservePercent=25
14-:-XX:InitiatingHeapOccupancyPercent=30
-Djava.io.tmpdir=${ES_TMPDIR}
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=data
-XX:ErrorFile=logs/hs_err_pid%p.log
8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
8:-Xloggc:logs/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m
9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m

配置加密通信证书:

生成证书:

 办法一:./bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass "password"

查看 config 目录,有 elastic-certificates.p12 文件生成:

办法二:

./bin/elasticsearch-certutil ca  #创立集群认证机构,须要交互输出明码
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12  #为节点颁发证书,与下面明码一样
执行./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password 并输出第一步输出的明码 
执行./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password 并输出第一步输出的明码 
将生成的 elastic-certificates.p12、elastic-stack-ca.p12 文件挪动到 config 目录下

配置 config/elasticsearch.yml:

[elk@lgh config]$ cat  elasticsearch.yml  | egrep -v '^$|#'
cluster.name: my_cluster
node.name: lgh01
node.data: true
node.master: true
path.data: /data/hd05/elk/elasticsearch-7.7.0/data
path.logs: /data/hd05/elk/elasticsearch-7.7.0/logs
network.host: 192.168.110.130
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.110.130","192.168.110.131","192.168.110.132","192.168.110.133"]
cluster.initial_master_nodes: ["lgh01","lgh02","lgh03"]
cluster.routing.allocation.cluster_concurrent_rebalance: 32
cluster.routing.allocation.node_concurrent_recoveries: 32
cluster.routing.allocation.node_initial_primaries_recoveries: 32
http.cors.enabled: true
http.cors.allow-origin: '*'
#上面的是配置 x -pack 和 tsl/ssl 加密通信的
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
bootstrap.memory_lock: false   #CentOS 6 须要配置
bootstrap.system_call_filter: false #CentOS 6 须要配置

而后通过 scp 到其余的节点,批改下面的 node.name 和 node.master 参数,而后要删除 data 指标,不然会存在报错。

而后应用./bin/elasticsearch -d 后盾启动 elasticsearch,去掉 - d 则是前端启动 Elasticsearch。

而后./bin/elasticsearch-setup-passwords interactive 配置默认用户的明码:(有如下的交互),能够应用 auto 主动生成。

[elk@lgh elasticsearch-7.7.0]$ ./bin/elasticsearch-setup-passwords interactive
Enter password for the elasticsearch keystore : 
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
1qaz@WSXChanged password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]

而后能够登录 http://192.168.110.130:9200/ 须要输出明码,输出 elastic/passwd 即可登录。

head 插件装置

Head 官网:https://github.com/mobz/elast…

Nodejs 下载:https://nodejs.org/zh-cn/down…

官网阐明,Elasticsearch 7 有三种形式应用 head 插件,这里我只试过两种:

第一种:应用谷歌浏览器 head 插件,这个间接在谷歌浏览器下面装置插件就能够应用了。

第二种:应用 head 服务(把 head 当做一个服务来应用),装置如下:

#Running with built in server
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/

如果在如上的装置过程中报错,能够尝试下这个命令再持续装置 npm install phantomjs-prebuilt@2.1.16 –ignore-scripts。

Kibana 的装置介绍

下载地址:https://elasticsearch.cn/down…

也能够去官网下载。

解压后批改 kibana.yml 文件:

[elk@lgh config]$ cat kibana.yml  | egrep -v "^$|#"
server.port: 5601
server.host: "0.0.0.0"
server.name: "my-kibana"
elasticsearch.hosts: ["http://192.168.110.130:9200","http://192.168.110.131:9200","http://192.168.110.132:9200"]
elasticsearch.preserveHost: true
kibana.index: ".kibana"
elasticsearch.username: "elastic"
elasticsearch.password: "password"   #或者应用 keystore 的保留的明码 "${ES_PWD}"
./bin/kibana 启动。

拜访网址:http://192.168.110.130:5601/,并应用 elastic/password 登录。

实例剖析

当初咱们弄一个 Beats+ 缓存 / 音讯队列 + Logstash + Elasticsearch + Kibana 的实例:

两头组件咱们应用 Kafka,咱们看下 Filebeat 把 Kafka 作为 output 的官网:https://www.elastic.co/guide/…

这里要留神 Kafka 的版本,我试过两个都是极其的版本,坑了本人一把。如果你曾经有 kafka 集群了,我这里装置的是一个单机版本(1.1.1):

数据集咱们采纳 Apache 的日志格局,下载地址:https://download.elastic.co/d…

日志格局如下:

[elk@lgh ~]$ tail -3 logstash-tutorial.log 
86.1.76.62 - - [04/Jan/2015:05:30:37 +0000] "GET /projects/xdotool/ HTTP/1.1" 200 12292 "http://www.haskell.org/haskellwiki/Xmonad/Frequently_asked_questions" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0"
86.1.76.62 - - [04/Jan/2015:05:30:37 +0000] "GET /reset.css HTTP/1.1" 200 1015 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0"
86.1.76.62 - - [04/Jan/2015:05:30:37 +0000] "GET /style2.css HTTP/1.1" 200 4877 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0"

首先咱们配置 Filebeat 的配置文件 filebeat.yml:

#=========================== Filebeat inputs =============================
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
- type: log
  # Change to true to enable this input configuration.
  enabled: true
  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /data/elk/logstash-tutorial.log  #这里应用的是 apache 的日志格局
    #- c:programdataelasticsearchlogs*
  # Exclude lines. A list of regular expressions to match. It drops the lines that are
  # matching any regular expression from the list.
  #exclude_lines: ['^DBG']
  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list.
  #include_lines: ['^ERR', '^WARN']
  # Exclude files. A list of regular expressions to match. Filebeat drops the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #exclude_files: ['.gz$']
  # Optional additional fields. These fields can be freely picked
  # to add additional information to the crawled log files for filtering
  #fields:
  #  level: debug
  #  review: 1
  ### Multiline options
  # Multiline can be used for log messages spanning multiple lines. This is common
  # for Java Stack Traces or C-Line Continuation
  # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
  #multiline.pattern: ^[
  # Defines if the pattern set under pattern should be negated or not. Default is false.
  #multiline.negate: false
  # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
  # that was (not) matched before or after or as long as a pattern is not matched based on negate.
  # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
  #multiline.match: after
#================================ Outputs =====================================
output.kafka:
  hosts: ["192.168.110.130:9092"]   #配置 kafka 的 broker
  topic: 'filebeat_test'   #配置 topic 名字
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

而后应用命令后盾启动:

cd filebeat-7.7.0-linux-x86_64 && nohup ./filebeat -e &

接下来咱们配置 Logstash 的配置文件:

cd logstash-7.7.0/ && mkidr conf.d
cd conf.d
vim apache.conf 
################apache.conf 文件中填入如下内容 ##############################
input {
        kafka{
                bootstrap_servers => "192.168.110.130:9092"
                topics => ["filebeat_test"]
                group_id => "test123"
                auto_offset_reset => "earliest"
        }
    }
filter {
json
        {source => "message"}
        grok {match => { "message" => "%{COMBINEDAPACHELOG}"}
        remove_field => "message"
    }
}
output {stdout { codec => rubydebug}
    elasticsearch {hosts => ["192.168.110.130:9200","192.168.110.131:9200","10.18.126.224:9200","192.168.110.132:9200"]
                    index => "test_kakfa"
                    user => "elastic"
                    password => "${ES_PWD}"
                }
}

而后后盾启动 Logstash 命令:

cd logstash-7.7.0/ && nohup ./bin/logstash -f conf.d/apache.conf &

而后咱们查看 Elasticsearch 集群查看该索引。

接下来咱们登录到 Kibana 查看该索引的剖析。

原文链接:https://www.cnblogs.com/zsql/…

正文完
 0