ref: Learning ELK Stack
Note:
《Learning ELK Stack 中文版》中由于版本問題導(dǎo)致多處配置和命令等無效或不正確,因此應(yīng)參考官方文檔蒸眠。
ElasticSearch v5
ref: ElasticSearch 5學(xué)習(xí)(1)——安裝Elasticsearch袄琳、Kibana和X-Pack
Elasticsearch
Elasticsearch 是一個基于Apache Lucene 的分布式開源搜索引擎询件。
Official Documentation:
https://www.elastic.co/downloads/elasticsearch/
- Download and unzip
- Run
$ bin/elasticsearch
- Run
$ curl -X GET http:localhost:9200/
Elasticsearch 插件
Kopf 是用JavaScript, AngularJS, JQuery和Twitter Bootstrap寫的一個簡單的Elasticsearch Web管理工具。
- 安裝
$ bin/plugin install lmenezes/elasticsearch-kopf
- 訪問
http://localhost:9200/_plugin/kopf/
Elasticsearch 基本概念
- 索引:具備某些共同特征的文檔集唆樊,一個索引包含多個JSON格式文檔宛琅;
- 文檔:存儲在索引里的JSON格式文檔;
- 字段:文檔內(nèi)的基本單元逗旁;
- 類型:用于提供索引中的邏輯分區(qū)嘿辟;
- 映射:用戶來映射文檔的每個字段,以及字段對應(yīng)的給的數(shù)據(jù)類型片效。
- 分片:存儲索引的實際物理實體红伦;
- 主分片/副分片:在一個Elasticsearch索引中的每個文件存儲在一個主分片和一些副分片中。而索引文件先存儲在主分片中淀衣,然后在存儲到相應(yīng)的副分片中昙读。
主分片和副分片駐留在不同的節(jié)點上,以便于滿足多個請求情況下的故障轉(zhuǎn)移和負(fù)載平衡膨桥。
- 集群:存儲索引數(shù)據(jù)的節(jié)點集合蛮浑;
Elasticsearch 配置文件為:elasticsearch.yml
集群配置為:
cluster.name: elasticsearch
- 節(jié)點;一個單一的 Elasticsearch運行實例只嚣;
節(jié)點可以有以下3中角色:
- 數(shù)據(jù)節(jié)點:索引沮稚,搜索文檔;
node.master= false
node.data = true
- 主節(jié)點:管理集群册舞;
node.master= true
node.data = false
- 路由節(jié)點/負(fù)載平衡節(jié)點:負(fù)載均衡蕴掏,路由搜索請求,將文檔索引到適當(dāng)?shù)墓?jié)點调鲸;
node.master= false
node.data = false
Elasticsearch RESTful API
使用命令行查詢集群的常見語法:
$ curl -X <VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>/<OPERATION_NAME>?<QUERY_STRING>' -d '<BODY>'
- 查看集群中所有可用索引:
$ curl -X GET 'http://localhost:9200/_cat/indices/?v'
- 查看集群中所有節(jié)點
$ curl -X GET 'http://localhost:9200/_cat/nodes/?v'
- 查看字段并排序
$ curl -X GET 'http://localhost:9200/logstash-*/_search?pretty' -d '{"query":{"match_all":{}}, "sort":{"open":{"order":"desc"}}, "size":3}'
Logstash
Logstash 是一個數(shù)據(jù)管道盛杰,主要用來收集、解析和分析大量結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)以及各各種系統(tǒng)產(chǎn)生的事件线得。
Official Documentation: https://www.elastic.co/guide/en/logstash/current/index.html/
運行 Logstash
- 使用標(biāo)準(zhǔn)輸入饶唤、輸出運行
$ 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 {}
每一節(jié)都包含了一個或者多個插件的配置選項贯钩。如果使用了多個過濾插件募狂,則配置文件中的順序就指定了應(yīng)用到事件處理流的順序。
按照指定的配置文件啟動Logstash
$ bin/logstash -f logstash.cfg
其中l(wèi)ogstash.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 插件類型
- 輸入 input
- 過濾器 filter
- 輸出 output
- 編解碼器 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 開源協(xié)議的開源數(shù)據(jù)可視化平臺。
- 運行
$ bin/kibana
- 訪問
http://localhost:5601/
創(chuàng)建可視化視圖
- 桶buckets:將文檔根據(jù)特定的條件進(jìn)行分組勺三,然后對分組后的文檔計算度量雷滚。桶通常代表Kibana 的X軸;
- 度量metrics:對每個同桶中的字段的值進(jìn)行計算吗坚,通常代表Kibana 的Y軸祈远;