elk4
- 传统问题:
微服务系统下服务器数量过大,如果还在使用依次登录每台机器的传统方法查询日志,这样效率非常低下。ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。
1、ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2、Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,核心流程:Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。
Input插件:input插件主要用来接收数据源,Logstash支持接收多种数据源,常用的有下面的几种形式:
1, file读取一个文件,一行一行的读取
2, redis:可以从redis服务器中读取数据,此时redis类似于一个消息缓存组件
3, kafka:可以从kafka集群中读取数据,kafak加上logstash的架构一般用在数据量较大的业务场景下,kafak可以用作数据的缓冲和存储。
4, filebeat是一个文本收集器,性能文档,并且占用资源少,logstash可以接收filebeat发送过来的数据
常用的filter插件:
Filter插件主要用于数据的过滤、解析和格式化,常见的filter插件如下:
1、 grok插件是最重要的插件,可解析并结构化任意数据,支持正则表达式,并提供了很多内置的规则和模板;
2、 mutate:此插件提供了丰富的基础数据类型处理能力,包括类型转换、字符串处理等
3、 date:此插件可以用来转换日志记录中的时间字符串
4、 geoip:此插件可以依据IP地址提供对于的地域信息,包括国家、城市、经纬度等,对于可视化地图和区域统计很有效
output插件:output插件用于数据的输出,一个logstash事件可以穿过多个output,直到所有的output处理完毕,这个事件才算结束,输出的插件常见的有下面的几种:
1、 elasticSearch:发送数据到elasticSearch中
2、 file,发送数据到file中
3、 redis 发送数据到redis中
4、 kafak,发送数据到kafak中
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
搭建架构演示
1、每台服务器集群节点安装Logstash日志收集系统插件
2、每台服务器节点将日志输入到Logstash中
3、Logstash对日志进行分析过滤后,根据每天创建不同的索引,输出到ElasticSearch中
4、浏览器使用安装Kibana查询日志信息
缺点:
1、每个节点部署logstash,在数据量较大,logstash运行时占用CUP、内存大,会对节点性能造成一定的影响,严重影响业务的的性能;
2、没有将日志数据进行缓存,存在丢失的风险。
3、logstash运行依赖java环境
Logstash收集日志依赖于Java环境,用来收集日志比较重,占用内存和CPUFilebeat相对轻量,占用服务器资源小一般选用Filebeat来进行日志收, logstash运行必须服务器要安装了jdk,依赖java环境,如果当前运行的收集的日志没有jdk,那么就无法收集日志,并且logstash占用内存和cpu
第二种:Filebeat -> Elasticsearch -> Kibana
优点:
1、 filebeat比logstash更加轻量级,占用系统资源极少,非常适合安装在生产机器上
2、 filebeat基于Go语言,没有任何依赖,配置文件简单
缺点:
- Filebeat:但不支持正则、不能移除字段等。Filebeat收集到日志可以不依赖logstash直接将数据传递给es,如果需要对日志进行分析和过滤就需要logstash;如果不经过logstash,Filebeat发过来的无用字段比较多直接发生会导致es文件过大,可以利用 logstash上的文件进行配置,去除无效字段;
logstash agent 监控并过滤日志,将过滤的日志内容发给 kafka或redis,logstashServer 将日志收集一起交给elasticsearch。引入了消息队列机制作为缓存池,即使logstashServer出现异常,由于日志暂存在kafaka消息队列中,能避免日志数据丢失,但是还是没有解决性能问题。
方案四:
Filebeat是一个日志文件托运工具,做为一个agent安装到服务器上,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件;
将filebeat 作为日志收集器,相比logstach,filebeat更轻量,占用资源更少,filebeat采集日志后,发送到消息队列kafaka或redis暂存起来,起到一个缓冲池的作用,能缓解日志峰值处理压力;
然后logstash去消息队列中获取,利用filter功能过滤分析,然后存储到elasticsearch中,再通过kibana图形化直观展示。缺点就是部署较复杂,如果是正式环境还要考虑集群部署,避免单点。
posted on 2019-12-04 15:19 luzhouxiaoshuai 阅读(176) 评论(0) 编辑 收藏 举报