ELK6.4.3部署:Elasticsearch+Logstash+Kibana搭建日志平台

一、前言

1、ELK简介

ELK是Elasticsearch+Logstash+Kibana的简称

  • ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进行数据读写

  • Logstash是一个收集,处理和转发事件和日志消息的工具

  • Kibana是Elasticsearch的开源数据可视化插件,为查看存储在ElasticSearch提供了友好的Web界面,并提供了条形图,线条和散点图,饼图和地图等分析工具

总的来说,ElasticSearch负责存储数据,Logstash负责收集日志,并将日志格式化后写入ElasticSearch,Kibana提供可视化访问ElasticSearch数据的功能。

2、ELK工作流

应用将日志按照约定的Key写入Redis,Logstash从Redis中读取日志信息写入ElasticSearch集群。Kibana读取ElasticSearch中的日志,并在Web页面中以表格/图表的形式展示。

二、准备工作

1、服务器&软件环境说明

  • 服务器

准备一台CentOS7 Server,资源有限

服务器名 IP 说明
es1 192.168.223.136 部署ElasticSearch主节点
elk 192.168.223.136 部署Logstash + Kibana + Redis

这里为了节省,只部署了1台Elasticsearch,并将Elasticsearch + Logstash + Kibana + Redis部署在了一台机器上。如果在生产环境部署,可以按照自己的需求调整。

  • 软件环境
说明
Linux Server CentOS 7
Elasticsearch 6.4.3
Logstash 6.4.3
Kibana 6.4.3
Redis 4.0.14
JDK 1.8

2、ELK环境准备

由于Elasticsearch、Logstash、Kibana均不能以root账号运行。但是Linux对非root账号可并发操作的文件、线程都有限制。所以,部署ELK相关的机器都要调整:

  • 修改文件限制
# 修改系统文件
vim /etc/security/limits.conf

# 增加的内容

* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
  • 调整进程数
# 修改系统文件
vim /etc/security/limits.d/20-nproc.conf

# 调整成以下配置
*          soft    nproc     4096
root       soft    nproc     unlimited
  • 调整虚拟内存&最大并发连接
# 修改系统文件
vim /etc/sysctl.conf

# 增加的内容
vm.max_map_count=655360
fs.file-max=655360

以上操作重启系统后生效

reboot
  • JDK8安装
  1. 将JDK解压缩到opt目录下
  2. 配置环境变量,vim  /etc/profile

JAVA_HOME=/opt/jdk1.8.0_152
PATH=/opt/jdk1.8.0_152/bin:$PATH
export JAVA_HOME PATH

完成后执行如下操作

source /etc/profile
  • 创建ELK专用用户
useradd elk
  • 创建ELK相关目录并赋权
# 创建ELK APP目录
mkdir /usr/elk
#创建ELK 数据目录
mkdir /elk

# 更改目录Owner
chown -R elk:elk /usr/elk
chown -R elk:elk /elk
  • 下载ELK包并解压
# 打开文件夹
cd /usr/elk

# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-linux-x86_64.tar.gz

# 解压
tar -zvxf elasticsearch-6.4.3.tar.gz
tar -zvxf logstash-6.4.3.tar.gz
tar -zvxf kibana-6.4.3-linux-x86_64.tar.gz

三、Elasticsearch 部署

1、准备工作

  • 关闭防火墙,赋予权限
# 关闭防火墙
systemctl stop firewalld

# 开机禁用
systemctl disable firewalld

# 查看状态
systemctl status firewalld

# 赋权
chown -R elk:elk /usr/elk/elasticsearch-6.4.3/
  • 这里如果需要开启防火墙的用户,可以配置防火墙开放端口
  • 切换账号
# 账号切换到 elk
su - elk
  • 数据&日志目录
# 创建Elasticsearch主目录
mkdir /elk/es

# 创建Elasticsearch数据目录
mkdir /elk/es/data

# 创建Elasticsearch日志目录
mkdir /elk/es/logs

2、Elasticsearch节点配置

  • 修改配置
# 打开目录
cd /usr/elk/elasticsearch-6.4.3/config
# 修改配置
vim elasticsearch.yml
  • 主节点配置(192.168.1.31)
cluster.name: es 
node.name: es1
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.223.136
http.port: 9200
transport.tcp.port: 9300
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.223.136:9300"]
discovery.zen.minimum_master_nodes: 1
  • 配置项说明
说明
cluster.name 集群名
node.name 节点名
path.data 数据保存目录
path.logs 日志保存目录
network.host 节点host/ip
http.port HTTP访问端口
transport.tcp.port TCP传输端口
node.master 是否允许作为主节点
node.data 是否保存数据
discovery.zen.ping.unicast.hosts 集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测
discovery.zen.minimum_master_nodes 主节点个数

3、Elasticsearch启动&健康检查

  • 启动
# 进入elasticsearch根目录
cd /usr/elk/elasticsearch-6.4.3/bin
# 启动
./elasticsearch
  • 查看健康状态
curl http://192.168.223.136:9200/_cluster/health

如果返回status=green表示正常

{
  "name" : "es1",
  "cluster_name" : "es",
  "cluster_uuid" : "M1JgizpxRKW673CPgLTGcQ",
  "version" : {
    "number" : "6.4.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "fe40335",
    "build_date" : "2018-10-30T23:17:19.084789Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

四、Logstash 部署

1、准备工作

  • 部署Redis
1.下载获得redis-4.0.14.tar.gz后将它放入我们的Linux目录/opt

2.解压命令:tar -zxvf redis-4.0.14.tar.gz

3.解压完成后进入目录:cd redis-4.0.14.tar.gz

4.在redis-4.0.14.tar.gz目录下执行make命令,运行Make命令时出现错误,提示 gcc:命令未找到 ,原因是因为当前Linux环境中并没有安装gcc 与 g++ 的环境

5.安装gcc与g++
yum install gcc
yum install gcc-c++

6.重新进入到Redis的目录中执行 make distclean后再执行make 命令,执行完make后,可跳过Redis test步骤,直接执行 make install或自定义安装目录make install PREFIX=/usr/local/redis 

7.修改配置文件,将/opt目录下的redis文件夹的配置文件拷贝到/usr/local/redis/bin目录下
vim /usr/local/redis/bin/redis.conf

# 更换绑定
bind 192.168.11.11

# 关闭保护模式
protected-mode no

# 修改启动方式,no表示前台启动,yes表示后台启动
daemonize yes

8.启动
cd /usr/local/redis/bin
./redis-server redis.conf
./redis-cli -h 192.168.223.136

  • 赋予权限
# 赋权
chown -R elk:elk /usr/elk/logstash-6.4.3/
  • 切换账号
# 账号切换到 elk
su - elk
  • 数据&日志目录
# 创建Logstash主目录
mkdir /elk/logstash

# 创建Logstash数据目录
mkdir /elk/logstash/data

# 创建Logstash日志目录
mkdir /elk/logstash/logs

2、Logstash配置

  • 配置数据&日志目录
# 打开目录
cd /usr/elk/logstash-6.4.3/config
# 修改配置
vim logstash.yml

# 增加以下内容
path.data: /elk/logstash/data
path.logs: /elk/logstash/logs
  • 配置Redis&Elasticsearch
vim config/input-output.conf

#配置内容

input {
  redis {
    data_type => "list"
    key => "logstash"
    host => "192.168.223.136"
    port => 6379
    threads => 5
    codec => "json"
  }
}
filter {
}
output {
  elasticsearch {
    hosts => ["192.168.223.136:9200"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    document_type => "%{type}"
  }
  stdout {
  }
}

该配置就是从redis中读取数据,然后写入指定的elasticsearch

Redis核心配置项说明:

配置项 说明
data_type => “list” 数据类型为list
key => “logstash” 缓存key为:logstash
codec => “json” 数据格式为:json
  • 启动
# 进入Logstash根目录
cd /usr/elk/logstash-6.4.3/bin
# 启动
./logstash -f ../config/input-output.conf

启动成功后,在启动输出的最后两行会看到如下信息:

[2019-09-21T16:38:34,904][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-09-21T16:38:37,943][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

五、Kibana 部署

1、准备工作

  • 赋予权限
# 赋权
chown -R elk:elk /usr/elk/kibana-6.4.3-linux-x86_64
  • 切换账号
# 账号切换到 elk
su - elk

3、Kibana配置与访问测试

  • 修改配置
# 进入kibana-6.4.3-linux-x86_64根目录
cd /usr/elk/kibana-6.4.3-linux-x86_64

# 修改配置
vim config/kibana.yml

# 增加以下内容
server.port: 5601
server.host: "192.168.223.136"
elasticsearch.url: "http://192.168.223.136:9200"
  • 启动
# 进入kibana-6.0.0根目录
cd /usr/elk/kibana-6.4.3-linux-x86_64/bin

# 启动,也可以用nohup启动
./kibana
  • 访问

浏览器访问: 192.168.223.136:5601

六、测试

1、日志写入

日历写入的话,写入到logstash监听的redis即可。
数据类型之前在/usr/elk/logstash-6.0.0/config/input-uput.conf中有配置

  • redis命令方式
# 启动redis客户端

# 执行以下命令
lpush logstash '{"host":"127.0.0.1","type":"logtest","message":"HelloWorld"}'
  • Java代码批量写入(引入Jedis)
 Jedis jedis = new Jedis("192.168.223.136", 6379);
 jedis.lpush("logstash", "{\"host\":\"127.0.0.1\",\"type\":\"logtest\",\"message\":\"HelloWorld\"}");

2、Kibana使用

浏览器访问:192.168.223.136:5601,此时会提示: Configure an index pattern

Index pattern填写logstash-*,点击下一步

Time Filter field name选择@timestamp,然后点击创建即可

至此ELK日志平台搭建完成

猜你喜欢

转载自blog.csdn.net/tianyucxh/article/details/101111933