数据分析框架 - ELK(Elasticsearch, Logstash, Kibana)
2017-12-22 21:47
766 查看
ELK是
Elastic公司推出的开源数据分析框架,目前流行于构建
Log/Trace分析平台,该框架主要由三个开源软件
Elasticsearch,
Logstash和
kibana组成,这三者构成数据分析框架的通用范式,即
Ingest Pipeline => Database & Indexing => Logical Frontend。
数据分析范式 + 数据存储格式
1.
Ingest Pipeline,将原始数据转化为数据库所对应的存储格式。
2.
Database & Indexing,以特定格式存储数据并通过外部接口提供数据索引检索功能。
3.
Logical Frontend,基于特定逻辑发送数据检索消息并对回馈的数据进行相应的分析处理。
数据存储格式是实现数据库存储功能的关键技术点,传统的关系型数据使用所谓“表类型”的存储方式,这种方式的特点是其“表头
(Column)”字段固定且表建立后无法更改,在如今大数据应用的背景下愈发不灵活,因此出现了摒弃“表”的所谓
NoSQL数据库,例如
MongoDB就使用
JSON条目(
{ xx : yy })替代传统表的
Record,
Elasticsearch采用
MongoDB所使用的“
JSON文档”方式,对比下表可以发现
Elasticsearch中没有所谓
DB的概念,其顶级节点
Index直接类似于
MySQL的
Table以及
MongoDB的
Collection,于其中存储格式数据即
JSON条目,根据
Elasticsearch的方案规定,每条
JSON记录都要定义其
Type和
Document ID,分别对应字段
_type和
_id以用于后期检索,记录数据存放在
_source子字段中。
MySQL: DB -> Table <=> Column&Record (TABLE-TYPE) MongoDB: DB -> Collection <=> { field : value } (JSON-TYPE) Elasticsearch: Index <=> { _index : xx , _type : xx, _id : xx, _source : { field : value } } {JSON-TYPE}
ELK
Elastic产品的
UG内容详实非常实用,用于指导
How to do绰绰有余,且软件均基于
Java等跨平台语言开发因此无需安装只需配置
Java环境下载解压即可运行程序。
https://www.elastic.co/guide/en/logstash/current/index.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
https://www.elastic.co/guide/en/kibana/current/index.html
1. Logstash
Logstash是对数据处理的管道工具,其中两个必须定义的管道为
Input和
Output,可选的中间管道为
Filter,所以
Logstash的数据处理流程即为
Source -> Input -> Filter -> Output -> Destination,管道配置可以通过“
-e”参数直接在命令行中指定,也可以定义在文件中通过“
-f”参数指定文件,管道配置如下所示。
input { file { path => "/var/log/syslog" } tcp { port => 13000 type => syslog } udp { port => 13000 type => syslog } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } output { stdout { codec => rubydebug } file { path => "/home/ce/file" } elasticsearch { hosts => localhost } }
其中各个管道中子命令都是可选配置,最简单的执行命令是
bin/logstash -e 'input { stdin { } } output { stdout { } }'。
2. Elasticsearch
Elasticsearch是数据分析的核心,用于数据的格式化存储以及索引检索,其数据库功能类似于
MongoDB使用
Index记录若干个
JSON条目,其检索功能基于开源项目
Lucene并提供基于
JSON交互的
RESTful接口,下载
Elasticsearch软件包解压后直接执行
bin/elasticsearch即可运行程序,因对内核性能要求较高所以需要优化内核参数。
sysctl -w vm.max_map_count=262144 #/etc/sysctl.conf vm.max_map_count=262144 #/etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
Elasticsearch启动后默认监听
127.0.0.1的
9200端口,如需外部流量访问的话就要更改
config/elasticsearch.yml中
network.host: 0.0.0.0即可通过
http://<IP>:9200访问
RESTful接口。
curl -XGET 'localhost:9200/_cat/health?v' curl -XGET 'localhost:9200/_cat/indices?v' #Data Add curl -XPUT 'localhost:9200/customer?pretty' curl -XPUT 'localhost:9200/customer/doc/1?pretty' -H 'Content-Type: application/json' -d' { "name": "John Doe" } ' curl -XPOST 'localhost:9200/customer/doc/_bulk?pretty' -H 'Content-Type: application/json' -d' {"index":{"_id":"2"}} {"name": "John Doe", "yesno": "yes", "goodbad": "bad"} {"index":{"_id":"3"}} {"name": "Jane Doe" ,"yesno": "yes", "goodbad": "good"} {"index":{"_id":"4"}} {"name": "Tom Doe" ,"yesno": "yesd", "goodbad": "goodd"} ' curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json ###accounts.json### {"index":{"_id":"1"< b312 /span>}} {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"} curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json ###shakespeare_6.0.json### {"index":{"_index":"shakespeare","_id":0}} {"type":"act","line_id":1,"play_name":"Henry IV", "speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"} curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl ###logs.jsonl### {"index":{"_index":"logstash-2015.05.18","_type":"log"}} {"@timestamp":"2015-05-18T09:03:25.877Z","ip":"185.124.182.126","extension":"gif","response":"404","@version":"1"} #Data Delete curl -XDELETE 'localhost:9200/customer?pretty' #Data Get curl -XGET 'localhost:9200/customer/doc/1?pretty' #Data Search curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match_all": {} } } ' curl -XGET 'http://localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match": {"name":"Jane"} } } '
3. Kibana
Kibana是架构中的
Web前端,用于检索数据并对回馈的数据进行可视化处理,下载软件包解压后首先编辑
config/kibana.yml配置文件指定
Elasticsearch RESTful接口地址和
Kibana Web服务监听
IP。
server.host: "0.0.0.0" elasticsearch.url: "http://localhost:9200"
执行
bin/kibana启动
Kibana服务,默认监听
port口为
5601,访问
http://<ip>:5601即可进入
Kibana Web页面。
a. Management - Index Patterns
Index Pattern即对
Elasticsearch数据库中的
Index名称进行匹配,如使用通配符
*即可匹配多个
Index,建立
Index Pattern后对应
Index的数据就可以在
Discover页面检索到。
b. Discover
该页面可以显示相应
Index中的数据,注意左上角的
TimeRange,如果提示
No Data Found调整时间范围即可。
c. Visualize
该页面可以使用
Index中某些字段的数据进行绘图,功能比较强大。
d. Dashboard
该页面可以将上步建立的可视化图表作为独立模块显示。
PS: Dev Tools - Console
该工具类似于
curl用于发送
RESTful接口消息给
Elasticsearch,通常用于调试,比直接使用
curl用户体验好。
相关文章推荐
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- 从零搭建ELK实时日志分析平台(ElasticSearch, Logstash, Kibana)
- ELK(ElasticSearch, Logstash, Kibana)搭建日志分析平台-Kibana篇
- [置顶] ELK(ElasticSearch5.1, Logstash5.1, Kibana5.1)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台 推荐
- 在Kubernetes上搭建日志收集、分析、展示平台ELK(Logstash+Elasticsearch+Kibana)
- 使用ELK(logstash,elasticsearch,kibana)+redis搭建nginx日志分析平台
- ELK(ElasticSearch2.1, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建日志分析平台-Elasticsearch篇
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)实时日志分析平台部署
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ELK (elasticsearch, logstash, kibana) 日志分析平台搭建