欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

解决方案:使用Filebeat或Logstash中的multiline多 劳务派遣管理系统 行合并插件来实现 在使用m

点击: 次  来源:劳务派遣管理系统 时间:2017-12-31

原文出处: FEINIK

一、概述

ELK 已经成为今朝最风行的会合式日志办理方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件构成,来配合完成及时日志的收集,存储,展示等一站式的办理方案。本文将会先容ELK常见的架构以及相关问题办理。

  1. Filebeat:Filebeat是一款轻量级,占用处事资源很是少的数据收集引擎,它是ELK家属的新成员,可以取代Logstash作为在应用处事器端的日志收集引擎,支持将收集到的数据输出到Kafka,Redis等行列。
  2. Logstash:数据收集引擎,相较于Filebeat较量重量级,但它集成了大量的插件,支持富厚的数据源收集,对收集的数据可以过滤,阐明,名目化日志名目。
  3. Elasticsearch:漫衍式数据搜索引擎,基于Apache Lucene实现,可集群,提供数据的会合式存储,阐明,以及强大的数据搜索和聚合成果。
  4. Kibana:数据的可视化平台,通过该web平台可以及时的查察 Elasticsearch 中的相关数据,昆山软件开发,并提供了富厚的图表统计成果。

二、ELK常见陈设架构

2.1、Logstash作为日志收集器

这种架构是较量原始的陈设架构,在各应用处事器端别离陈设一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、阐明、名目化处理惩罚后发送至Elasticsearch存储,最后利用Kibana举办可视化展示,这种架构不敷的是:Logstash较量耗处事器资源,所以会增加应用处事器端的负载压力。

2.2、Filebeat作为日志收集器

该架构与第一种架构独一差异的是:应用端日志收集器换成了Filebeat,Filebeat轻量,占用处事器资源少,所以利用Filebeat作为应用处事器端的日志收集器,一般Filebeat会共同Logstash一起利用,这种陈设方法也是今朝最常用的架构。 

2.3、引入缓存行列的陈设架构

该架构在第二种架构的基本上引入了Kafka动静行列(还可以是其他动静行列),将Filebeat收集到的数据发送至Kafka,然后在通过Logstasth读取Kafka中的数据,这种架构主要是办理大数据量下的日志收集方案,利用缓存行列主要是办理数据安详与平衡Logstash与Elasticsearch负载压力。

2.4、以上三种架构的总结

第一种陈设架构由于资源占用问题,现已很少利用,今朝利用最多的是第二种陈设架构,至于第三种陈设架构小我私家以为没有须要引入动静行列,除非有其他需求,因为在数据量较大的环境下,Filebeat 利用压力敏感协议向 Logstash 或 Elasticsearch 发送数据。假如 Logstash 正在忙碌地处理惩罚数据,它会奉告 Filebeat 减慢读取速度。拥塞办理后,Filebeat 将规复初始速度并继承发送数据。

三、问题及办理方案

问题:如何实现日志的多行归并成果?

系统应用中的日志一般都是以特命名目举办打印的,属于同一条日志的数据大概分多行举办打印,那么在利用ELK收集日志的时候就需要将属于同一条日志的多行数据举办归并。

办理方案:利用Filebeat或Logstash中的multiline多行归并插件来实现

在利用multiline多行归并插件的时候需要留意,差异的ELK陈设架构大概multiline的利用方法也差异,昆山软件公司,假如是本文的第一种陈设架构,那么multiline需要在Logstash中设置利用,假如是第二种陈设架构,那么multiline需要在Filebeat中设置利用,劳务派遣管理系统,无需再在Logstash中设置multiline。

1、multiline在Filebeat中的设置方法:

filebeat.prospectors:
    -
       paths:
          - /home/project/elk/logs/test.log
       input_type: log 
       multiline:
            pattern: '^\['
            negate: true
            match: after
output:
   logstash:
      hosts: ["localhost:5044"]
  • pattern:正则表达式
  • negate:默认为false,暗示匹配pattern的行归并到上一行;true暗示不匹配pattern的行归并到上一行
  • match:after暗示归并到上一行的末端,before暗示归并到上一行的行首
  • 如:

    pattern: '\['
    negate: true
    match: after

    该设置暗示将不匹配pattern模式的行归并到上一行的末端

    2、multiline在Logstash中的设置方法

    input {
      beats {
        port => 5044
      }
    }
    
    filter {
      multiline {
        pattern => "%{LOGLEVEL}\s*\]"
        negate => true
        what => "previous"
      }
    }
    
    output {
      elasticsearch {
        hosts => "localhost:9200"
      }
    }

    (1)Logstash中设置的what属性值为previous,相当于Filebeat中的after,Logstash中设置的what属性值为next,相当于Filebeat中的before。
    (2)pattern => “%{LOGLEVEL}\s*\]” 中的LOGLEVEL是Logstash预制的正则匹配模式,预制的尚有许多几何常用的正则匹配模式,具体请看:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

    问题:如何将Kibana中显示日志的时间字段替换为日志信息中的时间?