美文网首页DevOps
Elasticsearch Logstash Kibana

Elasticsearch Logstash Kibana

作者: JackyBA | 来源:发表于2016-10-17 09:34 被阅读66次

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轴;

相关文章

网友评论

  • black_python:你好我问一下,如果我要监控的日志是按照当前日期命名的,也就是说日志的名字是每天变化的,这种情况一个
    /logs/* 能解决吗,如果能解决,还有没有其他的方法,比如可不可以在logstash.conf中判断当前日期,然后自动按照当前日期监控其日志,能实现吗,该怎么写?
    JackyBA:@Wang_cf30 可以的
  • 佳佳佳佳佳丽:给作者一个爱的鼓励

本文标题:Elasticsearch Logstash Kibana

本文链接:https://www.haomeiwen.com/subject/zfmayttx.html