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图形化直观展示。缺点就是部署较复杂,如果是正式环境还要考虑集群部署,避免单点。
elk4的更多相关文章
- ELK4之进阶学习
1.精确查找和模糊查找(term和match的区别) match经过分析(analyer)的, term是不经过分词,直接去倒排索引中查找精确的值. 2.建议器的简介(最左前缀或者自带的做) (1)直 ...
随机推荐
- Jpa使用详解
目录 ORM思想 1.ORM概述 2.为什么要使用ORM 3.常见的ORM框架 JPA简介 1.JPA概述 2.JPA的优势 3.JPA与hibernate的关系 JPA入门案例 1.搭建开发环境 常 ...
- “造轮运动”之 ORM框架系列(一)~谈谈我在实际业务中的增删改查
想想毕业已经快一年了,也就是大约两年以前,怀着满腔的热血正式跨入程序员的世界,那时候的自己想象着所热爱的技术生涯会是多么的丰富多彩,每天可以与大佬们坐在一起讨论解决各种牛逼的技术问题,喝着咖啡,翘着二 ...
- jchdl - RTL实例 - And
https://mp.weixin.qq.com/s/86d_sFN0xVqk1xRaRyoAkg 使用rtl语法,实现简单的与门. 参考链接 https://github.com/wjcdx ...
- 这才是你需要的最基础的.Net基础面试题(通俗易懂,最基础的.Net)2
51. 委托回调静态方法和实例方法有何区别? 当一个实例方法被调用时,需要通过实例对象来访问,绑定一个实例方法到委托必须同时让委托得到实例方法的代码段和实例对象的信息,这样在委托被回调时候.NET才能 ...
- Java实现 蓝桥杯 算法提高 GPA(暴力)
试题 算法提高 GPA 问题描述 输入A,B两人的学分获取情况,输出两人GPA之差. 输入格式 输入的第一行包含一个整数n表示A的课程数,以下n行每行Si,Ci分别表示第i个课程的学分与A的表现. G ...
- Java实现 LeetCode 407 接雨水 II(二)
407. 接雨水 II 给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水. 说明: m 和 n 都是小于110的整数.每一个单位的高 ...
- java实现蔬菜价格计算
** 蔬菜价格计算** 计算蔬菜总价 为了丰富群众菜篮子,平抑菜价,相关部分组织了蔬菜的调运.今某箱中有多个品种的蔬菜.蔬菜的单价(元/公斤)存放在price数组中,蔬菜的重量(公斤)存放在weigh ...
- java实现第四届蓝桥杯梅森素数
梅森素数 题目描述 如果一个数字的所有真因子之和等于自身,则称它为"完全数"或"完美数" 例如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 ...
- Linux 系统定时任务
crond服务管理与访问控制 启动 service crond restart 开机自启动 chkconfig crond on 用户的crontab设置 crontab [选项],其中 -e :编辑 ...
- CGLIB动态代理机制,各个方面都有写到
CGLIB库介绍 代理提供了一个可扩展的机制来控制被代理对象的访问,其实说白了就是在对象访问的时候加了一层封装.JDK从1.3版本起就提供了一个动态代理,它使用起来非常简单,但是有个明显的缺点:需要目 ...