ELK搭建(filebeat、elasticsearch、logstash、kibana)

ELK部署(文章有点儿长,搭建时请到官网将tar包下载好,按步骤能够完成搭建使用)java

ELK指的是ElasticSearchLogStashKibana三个开源工具linux

LogStash是负责数据的收集和过滤处理git

ElasticSearch 是一个开源分布式搜索引擎,负责数据的存储、检索和分析github

Kibana 是提供可视化的页面,对数据进行可视化预览redis

 

首先前提安装好java环境,java1.8npm

yum -y list javavim

yum install java-1.8.0-openjdk.x86_64跨域

 

而后在官方下载ElasticSearch Kibana LogStash包浏览器

https://www.elastic.co/cn/downloads缓存

这边用的版本elasticsearch-6.3.2 Kibana-6.3.2 LogStash-6.3.2

 

 

1、对系统参数作调整

vim /etc/security/limits.conf (修改以下内容)

* soft nofile 65536

* hard nofile 65536

* soft nproc 65536

* hard nproc 65536

 

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

 

sysctl -p 使内容生效

确保全部生效 必须重启服务器一遍 reboot

 

2、安装Elasticsearch

elasticsearch须要新建一个用户用来启动

useradd -d /home/els -m els

su els

mkdir -p /home/els/tools/

tar包放置 /home/els/tools

cd /home/els/tools

tar -xzf elasticsearch-6.3.2.tar.gz

mv elasticsearch-6.3.2 /home/els/

cd /home/els/elasticsearch-6.3.2/

vim config/elasticsearch.yml(修改以下内容)

 

path.data: /home/els/elasticsearch-6.3.2/data    #自定义 数据存放地址

path.logs: /home/els/elasticsearch-6.3.2/logs   #自定义 日志存放地址

http.cors.enabled: true #开启跨域访问支持 默认为false

http.cors.allow-origin: "*" #跨域访问容许的域名地址,支持正则

network.host: 0.0.0.0  #任意IP能够访问

 

chown -R els.els /home/els/elasticsearch-6.3.2

nohup ./bin/elasticsearch &   

浏览器访问 ip:9200 获得以下内容 便搭建成功

 

3、搭建elasticsearch_head

mkdir -p /root/ELK

cd /root/ELK

yum install git npm

git clone https://github.com/mobz/elasticsearch-head.git

cd elasticsearch-head

npm install

nohup npm run start &

而后浏览器访问ip:9100 链接你的Elasticsearch  ip:9200

 

4、安装Logstash

Logstash的安装一样如此,能够直接用root用户 将6.3.2的tar包解压,进入目录

Vim /你定义的目录/logstash-6.3.2/config/test.conf

input {

file{

path => [“/var/log/messages”] #这能够是个列表 多个Log日志也是能够的

    start_position => "beginning"

}

 

}

output{

ctdout{

codec => rubydebug #直接输出到屏幕

}

elasticsearch {

        hosts => ["http://13.1.18.135:9200"]  #同时输出到elastisearch

        index => "syslog-%{+YYYY.MM.dd}"

        action => "index"

        document_type => "test"

}

 

cd /你定义的目录/logstash-6.3.2/

./bin/logstash  -f config/test.conf

屏幕有输出,同时浏览器访问ip:9100,也能看到根据索引的输出信息

后期会详细说Logstash检索功能以及经过缓存中间件来传递数据接收数据

 

5、安装kibana

一样时将tar包解压到你的目录下

tar zxvf kibana-6.2.2-darwin-x86_64.tar.gz

cd /你的目录/kibana-6.2.2-darwin-x86_64

vim config/kibana.yml (修改以下内容)

server.host: "0.0.0.0"

elasticsearch.url: "http://localhost:9200"   #我这里使用同一台服务器 不是的话请用IP

 

nohup ./bin/kibana -H 0.0.0.0 &  #后台启用

浏览器访问 ip:5601

而后到左边菜单最下方Management 设置索引值

create Index Patern

输入 syslog* *匹配全部,与以前Logstash中输出outputindex

 

最后建立

而后到左边菜单中Discover中查看信息

左边设置当前的索引 ,右上角设置检索日期,和设置自动更新

搭建完成

接着以一个数据传递方式添加一个filebeat工具 是个轻量级的数据采集 能够直接输出到Logstash或者elasticsearch

配置一样简单

下载filebeat-6.3.2-linux-x86_64.tar.gz

解压到你的目录下 (修改下输入参数和输出参数)

vim filebeat-6.3.2-linux-x86_64/filebeat.yml

修改参数请按yml格式

能够输入多个地址

输入配置:

参数type , enabled, paths, fields(这个参数传入Logstash字段,用于判断)

 

输出配置:

output.logstash:

hosts: ["13.1.18.135:5022"] #表示传输到主机的5022端口负责接送数据

 

开启filebeat  注意-e -c顺序

./filebeat -e -c filebeat.yml

 

#可自行使用

#output.redis:  

# hosts: ["13.1.18.135:6379"]

#  password: '123456'  #redis.confrequirepass 123456 密码必须配置

#  key: "log_file" #传输的键值

#  db: 0   #0

#  timeout: 5  #超时时间

 

输出配置能够有Elasticsearch,中间件缓存 redis,rabbitmq,kafka

 

此时须要修改以前的Logstash中配置文件的test.confinput

 

input {

 

       beats {

 

       port => 5022  #开启5022端口接收数据

 

      #Filebeat传来数据

 

}

 

}   

 

 

 

#同上的redis配置

 

#input {

 

#        redis{

 

#        port => '6379'

 

#        host => '13.1.18.135'

 

#        data_type => "list"

 

#        type => "log"

 

#        key => "log_file"

 

#        db => '0'

 

#        password => '123456'

 

#}

 

 

 

重启启动logstash

 

./bin/logstash  -f config/test.conf

 

当前的传输过程以下图

 

 

后期须要能够为多个filebeat用于多台服务器的日志同时采集,elastcsearch也能够设置为多个节点

下篇文章关于logstash的检索配置