1. 传统问题:

微服务系统下服务器数量过大,如果还在使用依次登录每台机器的传统方法查询日志,这样效率非常低下。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语言,没有任何依赖,配置文件简单

缺点:

  1. 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图形化直观展示。缺点就是部署较复杂,如果是正式环境还要考虑集群部署,避免单点。

elk4的更多相关文章

  1. ELK4之进阶学习

    1.精确查找和模糊查找(term和match的区别) match经过分析(analyer)的, term是不经过分词,直接去倒排索引中查找精确的值. 2.建议器的简介(最左前缀或者自带的做) (1)直 ...

随机推荐

  1. IC-二进制, 自然数, 有符号数

    https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q   零. 概念和结论 1. 数:概念名,指代物体的多少,即物体的量的概念: 2. 值:概念属性,数的 ...

  2. undefined和nul

  3. java方法句柄-----2.方法句柄的获取、变换、特殊方法句柄

    目录 1.获取方法句柄 1.1查找构造方法.一般方法和静态方法的方法句柄 1.2 查找类中的特殊方法(类中的私有方法) 1.3 查找类中静态域和一般域 1.4 通过反射API得到的Constructo ...

  4. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  5. Java实现 蓝桥杯VIP 算法提高 质数的后代

    算法提高 质数的后代 时间限制:1.0s 内存限制:256.0MB 问题描述 在上一季里,曾提到过质数的孤独,其实从另一个角度看,无情隔膜它们的合数全是质数的后代,因为合数可以由质数相乘结合而得. 如 ...

  6. Java实现 蓝桥杯VIP 算法提高 3000米排名预测

    算法提高 3000米排名预测 时间限制:1.0s 内存限制:256.0MB 问题描述 3000米长跑时,围观党们兴高采烈地预测着最后的排名.因为他们来自不同的班,对所有运动员不一定都了解,于是他们分别 ...

  7. Java实现 蓝桥杯 算法训练 景点游览

    试题 算法训练 景点游览 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明来到一个景区游玩,但是他的时间有限,没办法逛遍所有的景点,所以他从网上下载了每个景点的评分,他希望能够使 ...

  8. Java实现串的简单处理

    串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求程序对用户输入的串进行处理.具体规则如下: 把每个单词的首字母变为大写. 把数字与字母之间用下划线字符(_)分开,使得更清 ...

  9. Netty源码学习系列之1-netty的串行无锁化

    前言 最近趁着跟老东家提离职之后.到新公司报道之前的这段空闲时期,着力研究了一番netty框架,对其有了一些浅薄的认识,后续的几篇文章会以netty为主,将近期所学记录一二,也争取能帮未对netty有 ...

  10. Linux内核配置编译及基本调试方法

    一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...