最近做一个检测全球网络状况的项目,主要用于检测全球各个国家,地区的机房网络状况,服务的性能,DNS解析等等...情况的数据,通过中央服务器添加任务,下发任务到部署在全球各个国家和地区的minipc,minipc将获取到的数据反馈到监控服务,然后进行数据整合和分析提供报表,供公司更有针对性的优化网站性能。
之所以采用Flume + Elasticsearch,而没有采用ELK(elasticsearch logstash kibana),主要是因为之前的一些积累。hadoop集群的日志采集都是用Flume,而且对Flume比较熟悉,少了很多的学习成本。
总体架构:
总体流程:
1,后台编辑任务,并制定任务策略
2,后台根据任务策略,分发任务到指定的Mini PC
3,Mini PC获取到任务后,执行任务,并将执行后的任务数据发送的Nginx(现网Nginx使用keepalived做了高可用)
4,Flume通过tail命令实时获取Nginx日志
5,Flume将日志实时导入到Elasticsearch集群
6,报表系统根据用户输入的查询条件以报表,列表,图表等形式展现给用户。
实际项目要比以上流程复杂很多,其中涉及到将数据导入hadoop做离线分析。本章主要讲Flume+Elasticsearch搭建实时日志分析系统,以及如何自定义处理Nginx日志数据。
ElasticSearchSink配置(加粗字体必须设置值):
属性名称 |
默认值
|
描述
|
channel |
– |
|
type |
– |
组件的名称:org.apache.flume.sink.elasticsearch.ElasticSearchSink |
hostNames |
– </ |