ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合。node
Elasticsearch是个开源分布式搜索引擎,它的特色有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。linux
Logstash是一个彻底开源的工具,他能够对你的日志进行收集、过滤,并将其存储供之后使用(如,搜索)。
c++
Kibana 也是一个开源和免费的工具,它Kibana能够为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,能够帮助您汇总、分析和搜索重要数据日志。
git
搭建前准备:
github
一、建立一个本地账号elasticsearch和elasticsearch组;npm
二、#vi /proc/sys/fs/file-max,添加797934bootstrap
三、#vi /etc/security/limits.d/90-nproc.confcentos
root soft nproc unlimited安全
四、vi /etc/sysctl.confrestful
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
步骤2-4是开启最大文件限制等操做
搭建过程:
因为没有集群,本次实验是在一台centos 6.5系统上搭建的,elk版本为5.4.0。
elk安装
一、机器的JAVA版本最低要求为1.8.0,centos 7自带JAVA1.8.0,centos 6.5的可在百度或者谷歌查找安装过程,并不难;
二、在官网https://www.elastic.co/downloads下载Elasticsearch、Logstash、Kibana。我下载的是tar包。
三、解压至/usr/loacl,如
#tar -xf elasticsearch-5.4.0.tar.gz
#cp -r /home/cnc/elasticsearch-5.4.0/* /usr/local/elastisearch
X-PACK安装
#/usr/local/elastisearch/bin/elasticsearch-plugin install x-pack
Kibaba的X-PACK安装方法同上
elasticsearch配置文件修改:
#vi /usr/local/elasticsearch-5.4.0/config/elasticsearch.yml
添加以下项:
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
xpack.security.enabled: false ##关闭elasticsearch安全机制,不关闭会致使head插件链接不上集群
network.host: 你的公网IP地址或127.0.0.1
logstash配置文件修改:
#vi /usr/local/logstash/config/logstash.yml
添加以下:
path.data: /usr/local/logstash-5.4.2/data/ ##数据存放位置,可随意指定也可默认
path.config: /usr/local/logstash-5.4.2/conf.d ##配置存放位置,可随意指定
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: 公网IP地址(或127.0.0.1):9200
http.host: "(公网IP或127.0.0.1)"
kibana配置文件修改:
#vi /usr/local/kibana/config/kibana.yml
添加以下:
http.host: "IP地址"
elasticsearch.url: "http://IP地址:9200"
elastisearch-head插件安装
所须要的软件:git gcc gcc-c++ node grunt,其中grunt须要用node来安装。centos 6.5安装node建议安装老版本,新版本要求gcc的版本要到最新。cenots 7能够无视。个人系统是centos 6.5因此安装的是nodev6.9.2,下载地址https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.gz
#yum install -y git
#git clone git://github.com/mobz/elasticsearch-head.git ##下载head插件
#tar -xf node-v6.9.2-linux-x64.tar.gz
#ln -s node-v6.9.2-linux-x64/bin/node /usr/local/bin/node
#ln -s node-v6.9.2-linux-x64/bin/npm /usr/local/bin/npm
#cd elasticsearch-head-master ##解压head插件包获得的文件
#npm install -g cnpm --registry=https://registry.npm.taobao.org
#vi Gruntfile.js
修改以下选项:
#npm isntall grunt-cli ##head插件须要用grunt启动
#grunt server ##启动head插件
logstash实例配置:
收集本地/var/log/messages日志:
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["IP地址:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
收集交换机日志:
前提是交换机已配置发送日志功能
input{
udp{
port => 514
type => "switch"
}
}
output{
elasticsearch{
hosts => ['202.104.149.44:9200']
index => "switch-%{+YYYY.MM.dd}"
}
}