织网

身体和灵魂,总有一个在路上

搭建elasticsearch与kibana

| Comments

ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速, Kibana 是一个与之配套的 web 界面。

安装所需的:

配置相关

启动 elasticsearch 方式如下

1
sudo service elasticsearch restart
  • 我是使用 supervisor 启动 kibana,
  • 同时使用 monit 监控elasticsearch

在/etc/defaut/elasticsearch 配置数据文件目录的地址,log 地址,调整内存和堆栈大小,个人认为机器配置的50% 就可以了。

Nginx 配置,使得kibanan可以被外部访问,eleasticsearch 默认监听的是5601:

1
2
3
4
5
6
7
8
9
10
11
server {
        listen 80;
        #auth_basic_user_file /home/ymserver/auth/kibana-user;
        error_log /home/ymserver/log/nginx/kibana.err.log;
        location / {
            proxy_pass http://127.0.0.1:5601$request_uri;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto $scheme;
        }
}

使用过程

Python 有支持elasticsearch 的库 elasticsearch-py, 用其导数据进入elasticsearch,需要指定好索引。

使用restful查询, 如下例子:其中’2014-12-18’是索引名,q后面是查询条件,_all表示全部索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
curl -XGET 'http://localhost:9200/2014-12-18/_search/?q=name:861160022835011'
curl -XGET 'http://localhost:9200/_all/_search/?q=name:861160022835011'
curl -XGET localhost:9200/_search -d '
{
    "query": {
        "bool": {
            "must": [
            {
                "term": {
                    "field1": "X"
                }
            },
            {
                "term": {
                    "field3": "Z"
                }
            }
            ],
            "must_not": {
                "term": {
                    "field2": "Y"
                }
            }
        }
    }
}'

性能概述

导入1个月的日志4.2G,31天的文件,每天一个索引,用了6个小时,elasticsearch用了 6.7G 的空间,在海量数据查询1s内响应。

Comments