ELK部署(文章有点儿长,搭建时请到官网将tar包下载好,按步骤可以完成搭建使用)
ELK指的是ElasticSearch、LogStash、Kibana三个开源工具
LogStash是负责数据的收集和过滤处理
ElasticSearch 是一个开源分布式搜索引擎,负责数据的存储、检索和分析
Kibana 是提供可视化的页面,对数据进行可视化预览
首先前提安装好java环境,java1.8
yum -y list java
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
一、对系统参数做调整
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
二、安装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 得到如下内容 便搭建成功
三、搭建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
四、安装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检索功能以及通过缓存中间件来传递数据接收数据
五、安装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中输出output的index值
最后创建
然后到左边菜单中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.conf的 requirepass 123456 密码必须配置
# key: "log_file" #传输的键值
# db: 0 #0库
# timeout: 5 #超时时间
输出配置可以有Elasticsearch,中间件缓存 redis,rabbitmq,kafka等
此时需要修改之前的Logstash中配置文件的test.conf的input
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的检索配置