ELK 最详细安装及介绍

组件介绍:

Elasticsearch:

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

Logstash:

  • 主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

Kibana:

  • 是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持,它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Kafka:

  • 数据缓冲队列。作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
    • 1.发布和订阅记录流,类似于消息队列或企业消息传递系统。
    • 2.以容错持久的方式存储记录流。
    • 3.处理记录发生的流。

Filebeat:

  • 隶属于Beats,轻量级数据收集引擎。基于原先 Logstash-fowarder的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择,目前Beats包含四种工具:
    • 1.Packetbeat(搜集网络流量数据)
    • 2.Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据。通过从操作系统和服务收集指标,帮助您监控服务器及其托管的服务。)
    • 3.Filebeat(搜集文件数据)
    • 4.Winlogbeat(搜集 Windows 事件日志数据)

实验环境:

主机 服务
172.16.3.225/21 Elasticsearch、zookeeper、kafka、Logstash/kibana
172.16.3.226/21 Elasticsearch、zookeeper、kafka
172.16.3.227/21 Elasticsearch、zookeeper、kafka
172.16.5.55/21 filebeat、Nginx

相关软件包下载地址:

实验步骤:

节点:172.16.3.225、172.16.3.226、172.16.3.227
将安装所需的软件包分别放到三台服务器上:

[root@k8s-master01 ~]# ls /usr/local/src/
elasticsearch-6.5.4.tar.gz          kafka_2.11-2.0.0.tgz              master.zip
filebeat-6.5.4-linux-x86_64.tar.gz  kibana-6.5.4-linux-x86_64.tar.gz  node-v4.4.7-linux-x64.tar.gz
jdk-8u211-linux-x64.tar.gz          logstash-6.5.4.tar.gz             phantomjs-2.1.1-linux-x86_64.tar.bz2

1、安装JDK,因为es运行依赖jdk

[root@k8s-master01 ~]# echo '
172.16.3.225 elk01
172.16.3.226 elk02
172.16.3.227 elk03
' >> /etc/hosts
[root@k8s-master01 ~]# tar zxf /usr/local/src/jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@k8s-master01 ~]# mv /usr/local/jdk1.8.0_211/ /usr/local/java
[root@k8s-master01 ~]# echo 'JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
' >> /etc/profile
[root@k8s-master01 ~]# source /etc/profile
[root@k8s-master01 ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

2、安装并配置ES

2.1、创建运行es的普通用户

[root@k8s-master01 ~]# useradd elk
[root@k8s-master01 ~]# echo "xxx" | passwd --stdin elk

2.2、安装配置ES

[root@k8s-master01 ~]# tar zxf /usr/local/src/elasticsearch-6.5.4.tar.gz -C /usr/local/
[root@k8s-master01 ~]# echo '
cluster.name: qf01-elk    # 集群名称,各节点配成相同的集群名称。
node.name: elk01          # 节点名称,各节点配置不同。   [!!各节点不同]。  节点二改为elk02、节点三改为elk03
node.master: true         # 指示某个节点是否符合成为主节点的条件。
node.data: true           # 指示节点是否为数据节点。数据节点包含并管理索引的一部分。
path.data: /data/elasticsearch/data    # 数据存储目录
path.logs: /data/elasticsearch/logs    # 日志存储目录
bootstrap.memory_lock: true            # 内存锁定,是否禁用交换
bootstrap.system_call_filter: false    # 系统调用过滤器。
network.host: 172.16.3.225     # 绑定节点IP 、 此处修改成当前自己主机的IP
http.port: 9200           # rest api端口。
discovery.zen.ping.unicast.hosts: ["172.16.3.225:9300","172.16.3.226:9300","172.16.3.227:9300"]    # 提供其他Elasticsearch 服务节点的单点广播发现功能
discovery.zen.minimum_master_nodes: 2    # 集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数>量。
discovery.zen.ping_timeout: 150s         # 节点在发现过程中的等待时间。
discovery.zen.fd.ping_retries: 10        # 节点发现重试次数。
client.transport.ping_timeout: 60s
http.cors.enabled: true        # 是否允许跨源 REST 请求,用于允许head插件访问ES
http.cors.allow-origin: "*"    # 允许的源地址
' >> /usr/local/elasticsearch-6.5.4/config/elasticsearch.yml

2.3、设置JVM堆大小

[root@k8s-master01 ~]# sed -i 's/-Xms1g/-Xms6g/' /usr/local/elasticsearch-6.5.4/config/jvm.options
[root@k8s-master01 ~]# sed -i 's/-Xmx1g/-Xmx6g/' /usr/local/elasticsearch-6.5.4/config/jvm.options

注意:1.确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。
2.如果系统内存足够大,将堆内存最大和最小值设置为31G,因为有一个32G性能瓶颈问题。
3.堆内存大小不要超过系统内存的50%

2.4、创建es数据及日志存储目录

[root@k8s-master01 ~]# mkdir -pv /data/elasticsearch/data
[root@k8s-master01 ~]# mkdir -pv /data/elasticsearch/logs

2.5、修改安装目录及存储目录权限

[root@k8s-master01 ~]# chown -R elk.elk /data/elasticsearch
[root@k8s-master01 ~]# chown -R elk.elk /usr/local/elasticsearch-6.5.4/

3、系统优化

3.1、增加最大文件打开数

[root@k8s-master01 ~]# echo "* - nofile 65536" >>/etc/security/limits.conf

3.2、增加最大进程数

[root@k8s-master01 ~]# echo '* soft nofile 819200' >> /etc/security/limits.conf 
[root@k8s-master01 ~]# echo '* hard nofile 819200' >> /etc/security/limits.conf 
[root@k8s-master01 ~]# echo '* soft nproc 2048' >> /etc/security/limits.conf 
[root@k8s-master01 ~]# echo '* hard nproc 4096' >> /etc/security/limits.conf 
[root@k8s-master01 ~]# echo '* hard memlock unlimited' >> /etc/security/limits.conf 
[root@k8s-master01 ~]# echo '* soft memlock unlimited' >> /etc/security/limits.conf 

3.3、增加最大内存映射数

[root@k8s-master01 ~]# echo "vm.max_map_count=262144" >> /etc/sysctl.conf
[root@k8s-master01 ~]# sysctl -p

3.4、启动ES

[root@k8s-master01 ~]# su - elk -s /bin/bash
[elk@k8s-master01 ~]$ cd /usr/local/elasticsearch-6.5.4/bin/
[elk@k8s-master01 bin]$ nohup ./elasticsearch &

测试一下elk是否正常:http://172.16.3.225:9200/、http://172.16.3.226:9200/、http://172.16.3.227:9200/

出现如下结果说明没有问题
ELK 最详细安装及介绍

3.5、查看集群状态:

[root@k8s-master01 config]# curl 172.16.3.225:9200/_cluster/health?pretty
{
  "cluster_name" : "qf01-elk",      # 集群名称
  "status" : "green",               # 集群状态,分为green、yellow和red
  "timed_out" : false,
  "number_of_nodes" : 3,            # 集群的节点数。
  "number_of_data_nodes" : 3,       # 集群的数据节点数。
  "active_primary_shards" : 0,      # 集群中所有活跃的主分片数。
  "active_shards" : 0,              # 集群中所有活跃的分片数。
  "relocating_shards" : 0,          # 当前节点迁往其他节点的分片数量,通常为0,当有节点加入或者退出时该值会增加
  "initializing_shards" : 0,        # 正在初始化的分片。
  "unassigned_shards" : 0,          # 未分配的分片数,通常为0,当有某个节点的副本分片丢失该值就会增加
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,    # 是指主节点创建索引并分配shards等任务,如果该指标数值一直未减小代表集群存在不稳定因素
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0 # 集群分片健康度,活跃分片数占总分片数比例
}

3.6、查看master是谁:

[root@k8s-master01 config]# curl 172.16.3.225:9200/_cat/master
6rDALlC-SbOG0_O85fU-VQ 172.16.3.225 172.16.3.225 elk01

3.7、查看所有node:

[root@k8s-master01 config]# curl 172.16.3.225:9200/_cat/nodes
172.16.3.225  4 99 1 0.00 0.08 0.09 mdi * elk01     # *代表master
172.16.3.227 14 59 1 0.00 0.06 0.07 mdi - elk03
172.16.3.226 14 59 1 0.00 0.07 0.08 mdi - elk02

4、安装es可视化插件head监控

此插件提供有好的界面,实现基本信息的查看,rest请求的模拟,数据的检索

head插件不需要在所有的机器上安装,安装一台上即可,因为一台安装了他就会获取到整个集群

4.1、安装node,因为head插件依赖于node

[root@k8s-master01 ~]# tar zxf /usr/local/src/node-v4.4.7-linux-x64.tar.gz -C /usr/local/
[root@k8s-master01 ~]# echo '
NODE_HOME=/usr/local/node-v4.4.7-linux-x64
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
' >> /etc/profile
[root@k8s-master01 ~]# source /etc/profile
[root@k8s-master01 ~]# node --version
v4.4.7

4.2、下载head插件

[root@k8s-master01 ~]# unzip /usr/local/src/master.zip -d /usr/local/

4.3、安装grunt

[root@k8s-master01 ~]# cd /usr/local/elasticsearch-head-master/
[root@k8s-master01 elasticsearch-head-master]# npm install -g grunt-cli
[root@k8s-master01 elasticsearch-head-master]# grunt --version
grunt-cli v1.3.2

4.4、修改head源码

[root@k8s-master01 elasticsearch-head-master]# vim /usr/local/elasticsearch-head-master/Gruntfile.js 
 94                 connect: {
 95                         server: {
 96                                 options: {
 97                                         port: 9100,
 98                                         base: '.',
 99                                         keepalive: true,    # 注意这里需要有个逗号分开
100                                         hostname: '*'   # 添加一行内容
101                                 }
102                         }
103                 }
[root@k8s-master01 elasticsearch-head-master]# vim /usr/local/elasticsearch-head-master/_site/app.js 
4374                         this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.16.3.225:9200";

注:这里原本是http://localhost:9200,如果head和ES不在同一台节点,注意修改成ES的ip地址,如果在同一台机器可以不修改

4.5、下载head必要的文件

[root@k8s-master01 elasticsearch-head-master]# mkdir /tmp/phantomjs
[root@k8s-master01 elasticsearch-head-master]# cp /usr/local/src/phantomjs-2.1.1-linux-x86_64.tar.bz2 /tmp/phantomjs/

4.6、运行head

[root@k8s-master01 elasticsearch-head-master]# cd /usr/local/elasticsearch-head-master/
[root@k8s-master01 elasticsearch-head-master]# yum install bzip2 -y
[root@k8s-master01 elasticsearch-head-master]# npm install --registry=https://registry.npm.taobao.org
[root@k8s-master01 elasticsearch-head-master]# nohup grunt server &
[root@k8s-master01 elasticsearch-head-master]# less nohup.out # 查看一下日志是否启用成功
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
注:如果在npm install --registry=https://registry.npm.taobao.org 出现如下问题
Error: read ECONNRESET
at exports._errnoException (util.js:1020:11)
at TCP.onread (net.js:568:26)
如果出现这个报错,
-------1.尝试重启电脑即可;
-------2.查看自己的网络有没有问题、或者多尝试几次

4.7、测试

访问:http://172.16.3.225:9100
ELK 最详细安装及介绍
注意:

  • 1.Master 与 Data 节点分离,当 Data 节点大于 3 个的时候,建议责任分离,减轻压力
  • 2.Data Node 内存不超过 32G ,建议设置成 31 G ,因为有一个32G性能瓶颈问题。
  • 3.discovery.zen.minimum_master_nodes 设置成( total / 2 +1 ),避免脑裂情况
  • 4.最重要的一点,不要将 ES 暴露在公网中,建议都安装 X-PACK,来加强其安全性

    5、Kibana 部署

    节点:172.16.3.225

    5.1、安装

    [root@k8s-master01 ~]# tar zxf /usr/local/src/kibana-6.5.4-linux-x86_64.tar.gz -C /usr/local/

5.2、配置

[root@k8s-master01 ~]# echo '
server.port: 5601               # kibana服务端口,默认5601
server.host: "172.16.3.225"     # kibana主机IP地址,默认localhost
elasticsearch.url: "http://172.16.3.225:9200"     # 用来做查询的ES节点的URL,默认http://localhost:9200
kibana.index: ".kibana"         # kibana在Elasticsearch中使用索引来存储保存的searches, visualizations和dashboards,默认.kibana
' >> /usr/local/kibana-6.5.4-linux-x86_64/config/kibana.yml
[root@k8s-master01 kibana-6.5.4-linux-x86_64]# nohup ./bin/kibana &

其他配置可参考:https://www.elastic.co/guide/en/kibana/6.5/settings.html

5.3、访问Kibana

http://172.16.3.225:5601/
ELK 最详细安装及介绍

6、Kafka 部署

节点: 172.16.3.225、172.16.3.226、172.16.3.227

6.1、安装jdk环境

[root@k8s-master01 ~]# tar zxf /usr/local/src/jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@k8s-master01 ~]# mv /usr/local/jdk1.8.0_211/ /usr/local/java
[root@k8s-master01 ~]# echo 'JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
' >> /etc/profile
[root@k8s-master01 ~]# source /etc/profile
[root@k8s-master01 ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

6.2、安装配置zk

kafka运行依赖zk,kafka官网提供的tar包中,已经包含了zk,这里不再额下载zk的程序
(1)安装

[root@k8s-master01 ~]# tar zxf /usr/local/src/kafka_2.11-2.0.0.tgz -C /usr/local/

(2)配置

[root@k8s-master01 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.0.0/config/zookeeper.properties
[root@k8s-master01 ~]# echo '
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=172.16.3.225:2888:3888
server.2=172.16.3.226:2888:3888
server.3=172.16.3.227:2888:3888
' >>/usr/local/kafka_2.11-2.0.0/config/zookeeper.properties

配置解释:
dataDir ------------ZK数据存放目录。.
dataLogDir ------ ZK日志存放目录。
clientPort -------- 客户端连接ZK服务的端口。
tickTime ---------- ZK服务器之间或客户端与服务器之间维持心跳的时间间隔。
initLimit ----------- 允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit ---------- Leader与Follower之间发送消息时,请求和应答时间⻓度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
server.1=172.16.3.225:2888:3888 ------------2888是follower与leader交换信息的端口,3888是当leader挂了时用来执行选举时服务器相互通信的端口。

(3)创建data、log目录

[root@k8s-master01 ~]# mkdir -p /opt/data/zookeeper/{data,logs}

(4)创建myid

[root@k8s-master01 ~]# echo 1 > /opt/data/zookeeper/data/myid       # 每台kafka机器都要做成唯一的ID

6.3、配置Kafka

[root@k8s-master01 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.0.0/config/server.properties
[root@k8s-master01 ~]# echo '
broker.id=1
listeners=PLAINTEXT://172.16.3.225:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=172.16.3.225:2181,172.16.3.226:2181,.16.3.227:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
' >> /usr/local/kafka_2.11-2.0.0/config/server.properties

配置文件解释:

broker.id   每个server需要单独配置broker id,如果不配置系统会自动配置。需要和上一步ID一致
listeners       监听地址,格式PLAINTEXT://IP:端口。
num.network.threads 接收和发送网络信息的线程数。
num.io.threads          服务器用于处理请求的线程数,其中可能包括磁盘I/O。
socket.send.buffer.bytes    套接字服务器使用的发送缓冲区(SO_SNDBUF)
socket.receive.buffer.bytes 套接字服务器使用的接收缓冲区(SO_RCVBUF)
socket.request.max.bytes        套接字服务器将接受的请求的最大大小(防止OOM)
log.dirs        日志文件目录。
num.partitions  partition数量。
num.recovery.threads.per.data.dir       在启动时恢复日志、关闭时刷盘日志每个数据目录的线程的数量,默认1。
offsets.topic.replication.factor        偏移量话题的复制因子(设置更高保证可用),为了保证有效的复制,偏移话题的复制因子是可配置的,在偏移话题的第一次请求的时候可用的broker的数量至少为复制因子的大小,否则要么话题创建失败,要么复制因子取可用broker的数量和配置复制因子的最小值。
log.retention.hours 日志文件删除之前保留的时间(单位小时),默认168
log.segment.bytes   单个日志文件的大小,默认1073741824
log.retention.check.interval.ms 检查日志段以查看是否可以根据保留策略删除它们的时间间隔。
zookeeper.connect   ZK主机地址,如果zookeeper是集群则以逗号隔开。
zookeeper.connection.timeout.ms     连接到Zookeeper的超时时间。

6.4、创建log目录

[root@k8s-master01 ~]# mkdir -p /opt/data/kafka/logs

6.5、其他节点配置

只需把配置好的安装包直接分发到其他节点,然后修改ZK的myid,Kafka的broker.id和listeners就可以了。

6.6、启动、验证zk集群

(1)启动

在三个节点依次执行:

[root@k8s-master01 ~]# cd /usr/local/kafka_2.11-2.0.0/
[root@k8s-master01 kafka_2.11-2.0.0]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

(2)验证、查看ZK配置

[root@k8s-master01 kafka_2.11-2.0.0]# yum install nc -y
[root@k8s-master01 kafka_2.11-2.0.0]# echo conf | nc 127.0.0.1 2181
clientPort=2181
dataDir=/opt/data/zookeeper/data/version-2
dataLogDir=/opt/data/zookeeper/logs/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=20
syncLimit=10
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0

(3)查看zk状态

[root@k8s-master01 kafka_2.11-2.0.0]# echo stat | nc 127.0.0.1 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT
Clients:
 /127.0.0.1:39216[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 2
Sent: 1
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: follower
Node count: 4

(4)查看zk端口是否正常

[root@k8s-node01 kafka_2.11-2.0.0]# yum install lsof -y
[root@k8s-node01 kafka_2.11-2.0.0]# lsof -i:2181
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    10270 root   96u  IPv6  41732      0t0  TCP *:eforward (LISTEN)

6.7、启动、验证kafka

(1)启动kafka

[root@k8s-master01 kafka_2.11-2.0.0]# nohup bin/kafka-server-start.sh config/server.properties &

(2)验证

在172.16.3.225上创建topic、随机一台都可以
[root@k8s-master01 kafka_2.11-2.0.0]# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopic
Created topic "testtopic".
在172.16.3.226上查看topic
[root@k8s-node01 kafka_2.11-2.0.0]# ./bin/kafka-topics.sh --zookeeper 172.16.3.225:2181 --list
testtopic
分别查看一下三台节点的topic
[root@k8s-node01 kafka_2.11-2.0.0]# ./bin/kafka-topics.sh --zookeeper 172.16.3.225:2181 --list
testtopic
[root@k8s-node01 kafka_2.11-2.0.0]# ./bin/kafka-topics.sh --zookeeper 172.16.3.227:2181 --list
testtopic
[root@k8s-node01 kafka_2.11-2.0.0]# ./bin/kafka-topics.sh --zookeeper 172.16.3.226:2181 --list
testtopic
模拟消息生产和消费 发送消息到172.16.3.225
[root@k8s-master01 kafka_2.11-2.0.0]# ./bin/kafka-console-producer.sh --broker-list 172.16.3.225:9092 --topic testtopic 
>

从172.16.3.226接收消息

[root@k8s-node01 kafka_2.11-2.0.0]# ./bin/kafka-console-consumer.sh --bootstrap-server 172.16.3.226:9092 --topic testtopic --from-beginning

可以看到只要在在225上生产了消息,那么226上就会接收到到此为止说明没有问题

ELK 最详细安装及介绍

7、Logstash 部署

节点:172.16.3.225

安装配置Logstash

Logstash运行同样依赖jdk,本次为节省资源,故将Logstash安装在了kafka 225节点

(1)安装

[root@k8s-master01 ~]# tar zxf /usr/local/src/logstash-6.5.4.tar.gz -C /usr/local/

(2)配置

创建目录,我们将所有input、filter、output配置文件全部放到该目录中

[root@k8s-master01 ~]# mkdir -p /usr/local/logstash-6.5.4/etc/conf.d -p
[root@k8s-master01 ~]# vim /usr/local/logstash-6.5.4/etc/conf.d/input.conf
input {
kafka {
    type => "nginx_kafka"
    codec => "json"
    topics => "nginx"
    decorate_events => true
    bootstrap_servers => "172.16.3.225:9092, 172.16.3.226:9092, 172.16.3.227:9092"
  }
}
[root@k8s-master01 ~]# vim /usr/local/logstash-6.5.4/etc/conf.d/output.conf
output {
  if [type] =="nginx_kafka" {
      elasticsearch {
      hosts =>["172.16.3.225","172.16.3.226","172.16.3.227"]
      index => 'logstash-nginx-%{+YYYY-MM-dd}'
      }
    }
    stdout{
       codec=>rubydebug
    }
  }

(3)启动

[root@k8s-master01 logstash-6.5.4]# nohup bin/logstash -f etc/conf.d/ --config.reload.automatic &

8、filebeat部署

节点:172.16.5.55

8.1、解压

[root@localhost ~]# tar zxf filebeat-6.5.4-linux-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv filebeat-6.5.4-linux-x86_64/ filebeat

8.2、配置

修改 Filebeat 配置,支持收集本地目录日志,并输出日志到 Kafka集群中

[root@localhost local]# vim filebeat/filebeat.yml 
filebeat.prospectors:
- input_type: log
  paths:
    -  /var/log/nginx/access.log
  json.keys_under_root: true
  json.add_error_key: true
  json.message_key: log

output.kafka:
  hosts: ["172.16.3.225:9092","172.16.3.226:9092","172.16.3.227:9092" ]
  topic: 'nginx'

Filebeat 6.0 之后一些配置参数变动比较大,比如document_type 就不支持,需要用fields 来代替等等。

注释:

#keys_under_root可以让字段位于根节点,默认为false
json.keys_under_root: true
#对于同名的key,覆盖原有key值j
son.overwrite_keys: true
#message_key是用来合并多行json日志使用的,如果配置该项还需要配置multiline的设置,后面会讲
json.message_key: message
#将解析错误的消息记录储存在error.message字段中
json.add_error_key: true

8.3、启动filebeat

[root@localhost local]# nohup ./filebeat -e -c filebeat.yml &

测试:多访问几次nginx
ELK 最详细安装及介绍
查看一下es-head插件里面的索引是否增加了
可以看到这里多了一个咱们设置的索引,如果出现这个就说明没有问题
ELK 最详细安装及介绍

9 、 Kibana展示Nginx日志

http://172.16.3.225:5601/
ELK 最详细安装及介绍
ELK 最详细安装及介绍

ELK 最详细安装及介绍
ELK 最详细安装及介绍
ELK 最详细安装及介绍

上一篇:有关elasticsearch的相关知识ES


下一篇:Docker 安装 ElasticSearch 和 Kibana