0%

ElasticSearch与kibana流水账

近期需要进行日志收集,将各主机中的日志收集起来,放到elasticSearch中。然后利用es进行统计、搜索。简单介绍一下~

介绍:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

安装ElasticSearch

Es篇:安装Es

1
2
3
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.zip 
unzip elasticsearch-1.7.3.zip
cd elasticsearch

安装Marvels

Marvel是一个插件,可在Elasticsearch目录中运行以下命令来下载和安装:

./bin/plugin -i elasticsearch/marvel/latest

你如果想要禁用监控,你可以通过以下命令关闭Marvel:

echo ‘marvel.agent.enabled: false’ >> ./config/elasticsearch.yml

运行Elasticsearch

Elasticsearch已经准备就绪,执行以下命令可在前台启动:

1
./bin/elasticsearch

启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml
中network.host(注意配置文件格式不是以 # 开头的要空一格, : 后要空一格) 为

1
network.host:	0.0.0.0

如果想在后台以守护进程模式运行,添加 -d 参数。

打开另一个终端进行测试:

1
curl	'http://localhost:9200/?pretty'

你能看到以下返回信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ubuntu@VM-33-207-ubuntu:~$ curl 'http://localhost:9200/?pretty'
{
"status" : 200,
"name" : "chengshuoNode",
"cluster_name" : "chengshuo_cluster",
"version" : {
"number" : "1.7.3",
"build_hash" : "05d4530971ef0ea46d0f4fa6ee64dbc8df659682",
"build_timestamp" : "2015-10-15T09:14:17Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}

这说明你的ELasticsearch集群已经启动并且正常运行

这是一个非常简单实用的插件,类似于Navicat之于Mysql。方便我们查找数据。

通过head,可以查看集群几乎所有信息,还能进行简单的搜索查询,观察自动恢复的情况等等。
执行下面的命令开始安装:

1
sudo ./bin/plugin -install mobz/elasticsearch-head

安装完成之后, 可以通过浏览器输入:

1
http://ip:9200/_plugin/head/

可以查看显示效果。

bigdesk

bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。项目git地址:

1
https://github.com/lukas-vlcek/bigdesk。

和head一样,它也是个独立的网页程序,使用方式和head一样。
插件安装运行:

1
2
3
1.bin/plugin -install lukas-vlcek/bigdesk 
2.运行es
3.打开http://localhost:9200/_plugin/bigdesk/

当然,也可以直接下载源码运行index.html

安装显示 kibana

1
2
3
wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.zip
unzip kibana-3.1.2.zip
mv kibana-3.1.2/* <tomcat-path>/webapps/kibana

访问http://localhost:80/kibana/index.html

出现问题

1
kibana-returns-connection-failed

解决方法

在elasticSearch的conf文件中 elasticsearch.yml 添加如下

1
2
http.cors.allow-origin: "/.*/"
http.cors.enabled: true

访问http://localhost:80/kibana/index.html
OK

至于flume的开发呢,我的方式是从github上下载源码,根据具体业务定制一个flume。

使用ES查询例子

1、Range与过滤的组合,用于查找uv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET flume_index-2017-03-03/flume_type/_search?search_type=count
{
"query" : {
"filtered": {
"filter": {
"range": {
"timeNum": {
"gte": 1487606000000,
"lt": 1487606060000
}
}
}
}
},
"aggs":{"uniq_attr": {"cardinality": {"field": "ip"}}}
}

2、使用bool进行组合查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GET flume_index-2017-03-03/flume_type/_search?search_type=count
{
"query" : {
"bool": {
"must": {
"range": {
"timeNum": {
"gte": 1487606000000,
"lt": 1487606060000
}
}
},
"must":{
"term":{
"spreadId":"12"
}
}
}
},
"aggs":{"uniq_attr": {"cardinality": {"field": "ip"}}}
}

3、聚合查询

1
2
3
4
5
6
7
8
GET /flume_index-2017-03-03/flume_type/_search
{
"aggs" : {
"ipProportion" : {
"terms" : { "field" : "body.ip" }
}
}
}

参考致谢

kibana官网

Elasticsearch官网

Kibana使用安装

Kibana基本使用

Elasticsearch初步使用(安装、Head配置、分词器配置)

觉得不错?