总结比较成熟的日志/数据收集分析架构+数据可视化架构Flume + Kafka + HDFS + HADOOP + HIVE + Storm (+ Elasticsearch + Kibana)
1、ElasticSearch --》Lucene(库)--》java
2、Logstash --》ruby 收集日志 3 4
3、filebeat -->logstash-forwarder--》logstash-forwarder是一个轻量级的日志收集Agent,用golang实现
4、Kibana -->angular.js + node.js 查询后台 + 权限控制 +
.*?(\n^\[)
nohup /usr/local/elasticsearch/bin/elasticsearch -Des.insecure.allow.root=true &
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf &
nohup /usr/bin/filebeat -e -c /etc/filebeat/filebeat.yml &
nohup /usr/local/nginx/html/kibana/bin/kibana &
/usr/local/php/bin/php -v
/usr/local/nginx/html/kibana
$a = str_replace('+00:00','.000Z',gmdate('c',time()));
2016-07-18T01:54:30.000Z
1、ElasticSearch
ElasticSearch(以下简称ES)是一个基于Lucene(基于JAVA)构建的开源(open-source),分布式(distributed),RESTful,实时(real-time)的搜索与分析(analytics)引擎。它可以让你在浏览数据时具备非常快的速度和优秀的可扩展性。
gateway的主要职责是用来对数据进行长持久化
一般情况下,Gateway我们都设置为Local方式,即将数据存储在本地,那么本文也就主要针对这种方式来说。其实在Elasticsearch中生成的数据文件一般来说主要有三种,分别是state、index和translog,后两种想必大家也都知晓,那么state主要就是Gateway存储数据的文件。
默认数据存储位置
/usr/local/elasticsearch/data/
默认log位置
/usr/local/elasticsearch/logs
/usr/local/elasticsearch/data/my-elastic_cluster/nodes/0/indices/logstash-2016.07.14/0/index/
http://qindongliang.iteye.com/blog/2003564
_0.cfe
_0.cfs //复合索引的文件,在系统上虚拟的一个文件,用于频繁的文件句柄
_0.si //存储每个段文件的元数据信息
segments_5 //存储段文件的提交点信息 segments.gen, segments_N
write.lock //文件锁,保证任何时刻只有一个线程可以写入索引
elasticsearch/nodes/0/_state/global-3.st
my-elastic_cluster/nodes/0/indices/filebeat-2016.07.13/0/translog
translog-5.ckp
translog-5.tlog
Q2:生产环境服务器如何配置性价比较高?单机CPU核数、主频?内存容量?磁盘容量?
内存大一些,CPU 多核是必要的,JVM 和 Elasticsearch 会充分使用内存和多核的。 关于内存容量的问题,很多是 JVM Tunning 的问题。 磁盘容量没啥要求。
主要分为两部分,一部分是写入elasticsearch性能,一部分是查询测试
Kibana
Kibana 4 采用 angular.js + node.js 框架编写。其中 node.js 主要提供两部分功能,给 Elasticsearch 做搜索请求转发代理,以及 auth、ssl、setting 等操作的服务器后端。
本章节假设你已经对 angular 有一定程度了解 -- 至少是阅读并理解了 kibana 3 源码剖析章节内容的程度。所以不会再解释其中 angular 的 route,controller,directive,service,factory 等概念。
如果打算迁移 kibana 3 的 CAS 验证功能到 kibana 4,那么可以稍微了解一下 index.js, app.js, lib/auth.js 里的 htpasswd 简单实现,相信可以很快修改成功。本章主要还是集中在前端 kibana 页面功能的实现上。
在 Elastic{ON} 大会上,也有专门针对 Kibana 4 源码和二次开发入门的演讲。请参阅:https://speakerdeck.com/elastic/the-contributors-guide-to-the-kibana-galaxy
另外可以看专业的前端工程师怎么看Kibana4的代码的:http://www.debuggerstepthrough.com/2015/04/reviewing-kibana-4s-client-side-code.html。
http://chenlinux.com/2015/03/14/kibana3-source-code-analysis/
入口:index.html
模块库:vendor/
程序入口:app/app.js
组件配置:app/components/
仪表板控制:app/controllers/
挂件页面:app/partials/
服务:app/services/
指令:app/directives/
图表:app/panels/
filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。