ELK是Elasticsearch、Logstash、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示。
基本组成软件:
1、Filebeat:监控日志文件,获取服务器上指定路径的日志文件,并将这些日志转发到Logstash实例以进行处理。Filebeat的设计是为了可靠性和低延迟。Filebeat在主机上占用的资源很少,而Beats input插件将对Logstash实例的资源需求降到最低。
2、Logstash:它是一个服务端的数据处理管道,可以从多个源中提取数据,对其进行转换,然后将其存储到Elasticsearch中。简单来说就是日志的收集、分析、过滤工具。
3、Kibana:它是一个基于web的图形界面,用于搜索、分析和可视化存储在Elasticsearch中的日志数据。
4、Elasticsearch:它是一个开源分布式搜索引擎,提供收集、分析、存储数据三大功能。
Filebeat安装
1、从Filebeat官网选择你所需的版本,本次安装以Ubuntu为例。
2、右键选择复制链接地址使用wget下载Filebeat.tar.gz压缩包。
3、使用tar -zxf命令解压。
hsl@iZ282hpfj1mZ:~$ tar -zxf filebeat-6.4.0-linux-x86_64.tar.gz
4、编辑filebeat.yml配置文件
配置文件中有各种输入以及输出,根据自己的需求正确配置。
Logstash安装
logstash需要Java环境,JDK版本不低于1.8,检查你的环Java环境:
java -vsersion
如果Java已经安装,此命令将输出类似于以下内容:
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
如果Logstash在包安装期间无法找到JAVA_HOME环境变量,您可能会收到一个错误消息,软件无法正常启动。
1、从Logstash官网选择你所需的版本,本次安装以Ubuntu为例。
2、右键选择复制链接地址使用wget下载tar.gz压缩包。
hsl@iZ282hpfj1mZ:~$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz
3、使用tar -zxf命令解压。
hsl@iZ282hpfj1mZ:~$ tar -zxf logstash-6.4.0.tar.gz
4、配置logstash,我们需要创建一个配置文件,并指定要使用的插件和每个插件的设置。我们创建名为logstash-simple.conf的文件并将其保存在与Logstash相同的目录中。
hsl@iZ282hpfj1mZ:~$ cd logstash-6.4.0/
hsl@iZ282hpfj1mZ:~/logstash-6.4.0$ vi logstash-simple.conf
在logstash-simple.conf中输入以下内容
input { stdin { } }
output {
stdout { codec => rubydebug }
}
5、启动Logstash
hsl@iZ282hpfj1mZ:~/logstash-6.4.0$bin/logstash -f logstash-simple.conf
Elasticsearch安装
1、从ELasticsearch官网选择你所需的版本,本次安装以Ubuntu为例。
2、右键选择复制链接地址使用wget下载tar.gz压缩包。
hsl@iZ282hpfj1mZ:~$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
3、使用tar -zxf命令解压。
hsl@iZ282hpfj1mZ:~$ tar -zxf elasticsearch-6.4.0.tar.gz
4、启动
hsl@iZ282hpfj1mZ:~$ cd elasticsearch-6.4.0/
hsl@iZ282hpfj1mZ:~/elasticsearch-6.4.0$ bin/elasticsearch
5、检验是否启动
hsl@iZ282hpfj1mZ:~/elasticsearch-6.4.0$ curl http://localhost:9200/
上图表示Elasticsearch正常启动。
6、注意,正式服务器上需要更改配置文件elasticsearch.yml,具体配置项可以对照官网。
Kibana安装
Filebeat + Logstash + Elasticsearch 简单使用示例
1、下载示例数据
wget https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz
gunzip logstash-tutorial.log.gz # 解压
2、配置filebeat.yml文件
hsl@iZ282hpfj1mZ:~$ cd filebeat-6.4.0-linux-x86_64/
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ cp filebeat.yml filebeat.yml.bck # 备份配置文件
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$vi filebeat.yml
将以下内容输入到filebeat.yml文件中
filebeat.prospectors:
- type: log
paths:
- /path/to/file/logstash-tutorial.log # 下载的示例数据的文件位置绝对路径
output.elasticsearch:
hosts: ["localhost:9200"]
3、启动Filebeat
./filebeat -e -c filebeat.yml -d "publish"
4、配置Logstash配置文件,first-pipeline.conf
input {
beats {
port => "5044"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
5、启动Logstash
bin/logstash -f first-pipeline.conf --config.reload.automatic
# 自动重载配置文件
6、我们重新启动一下filebeat
rm data/registry # 首先删掉上次的注册数据
./filebeat -e -c filebeat.yml -d "publish"
7、等程序完成,检查数据
curl 'localhost:9200/logstash-2018.09.17/_search?pretty'
logstash-2018.09.17是自动生成的索引,具体的生成配置还不清楚。pretty是为了友好展示
curl 'localhost:9200/_cat/indices?v'