热门标签 | 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的功能模块还是可以多学学的,哈哈哈,有帮助的话给点个赞


推荐阅读
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • linux时间字符串转正常时间 ... [详细]
  • 之前说过怎么生成,可以参考这里可以一键生成entity、service、repository类了。这个是对生成的内容进行扩展,在写一些基础、公共的组件时 ... [详细]
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社区 版权所有