Elasticsearch Logstash Kibana

ref: Learning ELK Stack

[Elasticsearch](https://www.elastic.co/products/elasticsearch)

Note:
《Learning ELK Stack 中文版》中由于版本问题导致多处配置和命令等无效或不正确,因此应参考官方文档。

ElasticSearch v5

ref: ElasticSearch 5学习(1)——安装Elasticsearch、Kibana和X-Pack

Elasticsearch

Elasticsearch 是一个基于Apache Lucene 的分布式开源搜索引擎

Official Documentation:
https://www.elastic.co/downloads/elasticsearch/

Installation Steps
  1. Download and unzip
  2. Run
    $ bin/elasticsearch
  3. Run
    $ curl -X GET http:localhost:9200/

Elasticsearch 插件

Kopf 是用JavaScript, AngularJS, JQuery和Twitter Bootstrap写的一个简单的Elasticsearch Web管理工具。

  1. 安装
    $ bin/plugin install lmenezes/elasticsearch-kopf
  2. 访问
    http://localhost:9200/_plugin/kopf/
Elasticsearch 基本概念
  • 索引:具备某些共同特征的文档集,一个索引包含多个JSON格式文档;
  • 文档:存储在索引里的JSON格式文档;
  • 字段:文档内的基本单元;
  • 类型:用于提供索引中的逻辑分区;
  • 映射:用户来映射文档的每个字段,以及字段对应的给的数据类型。
  • 分片:存储索引的实际物理实体;
  • 主分片/副分片:在一个Elasticsearch索引中的每个文件存储在一个主分片和一些副分片中。而索引文件先存储在主分片中,然后在存储到相应的副分片中。

主分片和副分片驻留在不同的节点上,以便于满足多个请求情况下的故障转移和负载平衡。

  • 集群:存储索引数据的节点集合;
    Elasticsearch 配置文件为:elasticsearch.yml
    集群配置为:
    cluster.name: elasticsearch
  • 节点;一个单一的 Elasticsearch运行实例;

节点可以有以下3中角色:

  1. 数据节点:索引,搜索文档;
    node.master= false
    node.data = true
  2. 主节点:管理集群;
    node.master= true
    node.data = false
  3. 路由节点/负载平衡节点:负载均衡,路由搜索请求,将文档索引到适当的节点;
    node.master= false
    node.data = false
Elasticsearch RESTful API

使用命令行查询集群的常见语法:
$ curl -X <VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>/<OPERATION_NAME>?<QUERY_STRING>' -d '<BODY>'

  1. 查看集群中所有可用索引:
    $ curl -X GET 'http://localhost:9200/_cat/indices/?v'
  2. 查看集群中所有节点
    $ curl -X GET 'http://localhost:9200/_cat/nodes/?v'
  3. 查看字段并排序
    $ curl -X GET 'http://localhost:9200/logstash-*/_search?pretty' -d '{"query":{"match_all":{}}, "sort":{"open":{"order":"desc"}}, "size":3}'

Logstash

Logstash 是一个数据管道,主要用来收集、解析和分析大量结构化和非结构化的数据以及各各种系统产生的事件。

Official Documentation: https://www.elastic.co/guide/en/logstash/current/index.html/

运行 Logstash
  • 使用标准输入、输出运行
    $ bin/logstash -e 'input { stdin {} } output { stdout {} }'
  • Logstash 可以配置将所有的输入输出到一个Elasticsearch实例中。
    $ bin/logstash -e 'input {stdin {} } output {elasticsearch {hosts => ["localhost:9200"]}}'
配置Logstash
  • Logstash采用JSON格式的配置文件
# 这是一条注释
input {}
filter {}
output {}
  • 每一节都包含了一个或者多个插件的配置选项。如果使用了多个过滤插件,则配置文件中的顺序就指定了应用到事件处理流的顺序。

  • 按照指定的配置文件启动Logstash
    $ bin/logstash -f logstash.cfg
    其中logstash.cfg为JSON格式的配置文件

# Logstash config
# logstash.cfg

# input
input {
    file {
    path => "/User/Jacky/Projects/Scripts/google.csv"
    start_position => "beginning"
    }
}

# filter
filter {
    csv {
    columns => ["date_of_record", "open", "high", "low", "close", "volume", "adj_close"]
    separator => ","
    }

    date {
    match => ["date_of_record", "yyyy-MM-dd"]
    target => "@timestamp"
    }

    mutate {
    convert => ["open","float"]
    convert => ["high","float"]
    convert => ["low","float"]
    convert => ["close","float"]
    convert => ["volume","float"]
    convert => ["adj_close","float"]
    }

}

# output
output {
    elasticsearch {
    hosts => ["localhost"]
    }
}

特别注意 output配置,如果配置为:

output {
    elasticsearch {
        host => "localhost:9200"
    }
}

会报错,此处请参考Doc:
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html#indexing-parsed-data-into-elasticsearch/

Logstash 插件类型
  1. 输入 input
  2. 过滤器 filter
  3. 输出 output
  4. 编解码器 codec
grok 插件

gork模式:
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns/

Logstash 所有过滤插件列表和最新文档:
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

Kibana

Kibana 是一个基于Apache 2.0 开源协议的开源数据可视化平台

  1. 运行
    $ bin/kibana
  2. 访问
    http://localhost:5601/
创建可视化视图
  • 桶buckets:将文档根据特定的条件进行分组,然后对分组后的文档计算度量。桶通常代表Kibana 的X轴;
  • 度量metrics:对每个同桶中的字段的值进行计算,通常代表Kibana 的Y轴;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容