热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK+springboot搭建分布式日志系统细节以及扩展经验之谈

ELK+springboot搭建分布式日志系统---细节以及扩展经验之谈,Go语言社区,Golang程序员人脉社

上篇主要介绍了怎么搭建服务的,这篇就主要讲怎么用得到的日志数据处理

使用的官网最新的6.6.*(版本不一的话配置的FILFER写法可能不一样)

第一个业务场景:记录系统日志+项目日志

logstash日志可参考如下:

input {
 beats {
   port => 5044
  }
}
filter {
  if [fields][logtype] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
  if [fields][logtype] == "json" {
    json {
      source => "message"
      target => "data"
    }
  }
}
output {
  if [fields][logtype] == "json"{
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "json-%{+YYYY.MM.dd}"
    }
  }

  if [fields][logtype] == "syslog"{
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "syslog-%{+YYYY.MM.dd}"
    }
  }

这里有几个知识点

一:input输入框的来源很多:kafka(下一章将讲到)+redis+各种官网支持的strem流,具体复杂的配置可以下一节讲到

二:input获取的是beat(类如filebeat)端口5044的socket请求,因为我们要将数据json化处理(更好的用于角标处理)。grok 语法用于替换,将原字段替换成新的,比如(这里我取了个他人写的文章实例):

55.3.244.1 GET /index.html 15824 0.043 这样的字符串,我要替换成json
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}

就会变成

client: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
duration: 0.043

这里具体语法不是主要的,主要是要组装成我们需要的数据样式

三:filer拦截器处理能更好构建数据

  这里我将message用json格式,也可以添加额外的;logtype属性用于区分系统日志还是beat日志

四:output可以多输出源配置,最常见的是输出到ES上,其实还可以同时输出到日志文件上(可以在初期用于检查数据传输的结构是否正确),如配置(注意index指数类似ID的功能):

file {
      path => "/config-dir/test.log"
      flush_interval => 0
  }
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "els-server-%{+YYYY.MM.dd}"
  }

五:配置出现问题经验

由于版本原因,官网文档有部分写的模糊(也可能是我英文不好的原因),我就给大家演示下我出现过的配置错误:

1比如input端口参数故意写错,logstash  -f logstash-test1.conf(这里是window启动bat和配置test1文件),cmd窗口出现:

input类型没有为1的,提示明确告诉你咯(外国的软件设计上就这么牛),这是我改动的

input {
 1 {
   port => 5044
  }
}

还有就是格式问题,这里举个kafka的input例子(我出现的),先列个正确的写法():

topics => ["els-server"]
topics_pattern => "els-server.*"

然后随便改动下分区(改为ls-server.*),cmd启动

你发现执行到这就完了,提示你设置分区,可见你的分区参数是错误

这还是好的,如果你参数配置错误,发现根本启动不了(仔细查看错误,也会告诉你哪一行配置错误),这种问题出现在版本不同很常见!

综上所述这么多,主要是还是想说:仔细看日志吧少年!

以为这么就完了,没呢,来了老弟!

kibana的功能模块还是可以多学学的,哈哈哈,有帮助的话给点个赞


推荐阅读
  • Spring Boot + RabbitMQ 消息确认机制详解
    本文详细介绍如何在 Spring Boot 项目中使用 RabbitMQ 的消息确认机制,包括消息发送确认和消息接收确认,帮助开发者解决在实际操作中可能遇到的问题。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • Spring Boot与Graylog集成实现微服务日志聚合与分析
    本文介绍了如何在Graylog中配置输入源,并详细说明了Spring Boot项目中集成Graylog的日志聚合和分析方法,包括logback.xml的多环境配置。 ... [详细]
  • ELK+filebeat安装部署监控springboot日志
    ELK服务器端部署1.安装dockercompose,略2.配置docker-compose.ymlcdrootelkvidocker-compose.ymlversion:&am ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • protobuf 使用心得:解析与编码陷阱
    本文记录了一次在广告系统中使用protobuf进行数据交换时遇到的问题及其解决过程。通过这次经历,我们将探讨protobuf的特性和编码机制,帮助开发者避免类似的陷阱。 ... [详细]
  • Flume 数据采集组件
    目录1、数据收集工具系统产生背景2、专业的数据收集工具2.1、Chukwa2.2、Scribe2.3、Fluentd2.4、Logstash2.5、ApacheFlu ... [详细]
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http:blog.csdn.netjiangjunshow也欢迎大家转载本篇文章。分 ... [详细]
author-avatar
swa乄ycat曼颜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有