title: ElasticSearch与kibana流水账
date: 2017-03-26 14:20:00
categories:
- 技术
tags: - 实习
近期需要进行日志收集,将各主机中的日志收集起来,放到elasticSearch中。然后利用es进行统计、搜索。简单介绍一下~
介绍:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
安装ElasticSearch
Es篇:安装Es
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已经准备就绪,执行以下命令可在前台启动:
./bin/elasticsearch
启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml
中network.host(注意配置文件格式不是以 # 开头的要空一格, : 后要空一格) 为
network.host: 0.0.0.0
如果想在后台以守护进程模式运行,添加 -d 参数。
打开另一个终端进行测试:
curl 'http://localhost:9200/?pretty'
你能看到以下返回信息:
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集群已经启动并且正常运行
head
这是一个非常简单实用的插件,类似于Navicat之于Mysql。方便我们查找数据。
通过head,可以查看集群几乎所有信息,还能进行简单的搜索查询,观察自动恢复的情况等等。
执行下面的命令开始安装:
sudo ./bin/plugin -install mobz/elasticsearch-head
安装完成之后, 可以通过浏览器输入:
http://ip:9200/_plugin/head/
可以查看显示效果。
bigdesk
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。项目git地址:
https://github.com/lukas-vlcek/bigdesk。
和head一样,它也是个独立的网页程序,使用方式和head一样。
插件安装运行:
1.bin/plugin -install lukas-vlcek/bigdesk
2.运行es
3.打开http://localhost:9200/_plugin/bigdesk/
当然,也可以直接下载源码运行index.html
安装显示 kibana
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
出现问题
kibana-returns-connection-failed
解决方法
在elasticSearch的conf文件中 elasticsearch.yml 添加如下
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
访问http://localhost:80/kibana/index.html
OK
至于flume的开发呢,我的方式是从github上下载源码,根据具体业务定制一个flume。
使用ES查询例子
1、Range与过滤的组合,用于查找uv
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进行组合查询
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、聚合查询
GET /flume_index-2017-03-03/flume_type/_search
{
"aggs" : {
"ipProportion" : {
"terms" : { "field" : "body.ip" }
}
}
}