ElasticSearch简介
ElasticSearch(ES)是基于Lucene构建的开源、分布式近实时的数据搜索和分析引擎。通过ES可以实时的完成大量数据的存储、搜索和分析等工作,而其分布式的特点使得通过简单添节点就可以扩展ES集群的处理能力。ES强大功能、易于使用等特点使得ES成为目前全球最受欢迎的全文数据搜索引擎。
通常ElasticSearch,和Kibana和Logstash等软件一起被称为“Elastic Stack”。其中Logstash负责数据的收集功能,ElasticSearch负责数据的解析存储和搜索,而Kibana则负责数据的展示和可视化。
基于Elastic Stack可以构建功能完善的日志分析系统,全文检索系统,以及数据可视化系统。目前,Elastic Stack已经被广泛运用在近实时大数据处理领域。
本文只简单的介绍ElasticSearch,不会涉及具体复杂的概念。所以下面会基于Elastic Stack搭建一个简单的日志分析系统,让我们对ES有一个初步直观的了解。
基于Elastic Stack搭建日志分析系统
这里我们使用CentOS 7.3作为服务器,并使用CentOS自带的包管理工具Yum来安装对应ElasticSearch,Kibana和Logstash。
- 首先,在安装之前,需要设置Yum安装源。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
- 安装并启动ElasticSearch
yum install elasticsearch
chkconfig --add elasticsearch
chkconfig elasticsearch on
service elasticsearch start
curl -X GET "http://localhost:9200/?pretty"
现在我们可以看到ElasticSearch已经启动,并监听在9200端口。
- 安装配置Logstash
yum install logstash
完成Logstash的安装后,我们就可以使用logstash采集数据并输入ElasticSearch。作为一个演示,我们这里导入一个简单的CSV文件,文件包含3列,分别是Time, Level,Message。
创建如下一个Logstash配置文件,并用这个配置启动Logstash。我们可以看到我们的卖二手手机数据被输入ElasticSearch。
vim logstash-app.conf
input {
file {
path => "/root/demo/app.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["Time","Level", "Message"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "app-log-index"
}
stdout {}
}
/usr/share/logstash/bin/logstash -f logstash-app.conf
- 安装配置 Kibana
yum install kibana
Kibana默认只监听在localhost的5601端口。为了能从其它机器访问Kibana, 我们需要修改一下Kibana的配置。
vi /etc/kibana/kibana.yml
#server.port: 5601
server.host: "0.0.0.0"
chkconfig --add kibana
chkconfig kibana on
service kibana start
现在启动Kibana启动,我们就可以从浏览器访问Kibana的控制台了。首次登陆,我们需要Kibana中对我们的数据创建索引(Index Patterns)。
创建索引后,我就可以从Discover面板中对我们的数据做检索和分析,例如我们下面的一个简单的日志搜索。
最后
到这里为止,我们应该已经对ElasticSearch有了一个初步的了解。