栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)

前言

最近在搞一套完整的云原生框架,详见 spring-cloud-alibaba专栏,目前已经整合的log4j2,但是想要一套可以实时观察日志的系统,就想到了ELK,然后上一篇文章是socket异步发送给logstash,logstash再输出到elasticsearch索引库中。

logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器上显得非常的笨重。最常见的做法是用filebeat部署在应用的机器上,logstash单独部署,然后由filebeat将日志输出给logstash解析,解析完由logstash再传给elasticsearch。

ELK
  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

  • Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

SrpingBoot+Log4j2 配置修改
Log4j2为我们提供SocketAppender,使得我们可以通过TCP或UDP发送日志

我的上一篇文章就是通过这种方式推送到了logstash,但这次我改成beats定时推送
修改配置文件

springboot整合log4j2详见我的上一篇博客什么是日志门面? SpringBoot整合log4j2 ,日志落地

修改log4j2-spring.xml文件
注意看这个地方${sys:LOG_PATH},我借用了springboot中的日志路径配置使得我的xml中可以读取yml的值

然后我的日志结构就是每个微服务有一个自己的日志文件夹,我这么做是为了后边的beats 

如果是k8s+docker部署的话,可以不用这种方式

参考docker-compose部署多个微服务,ELK日志收集方案 真的有用不是引流

application.yml
logging:
  file:
    # 配置日志的路径,包含 spring.application.name
    path: ${spring.application.name}
附:完整xml




    

    
    
        
        
        
        
        
        
    

    
        
            
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        
        
        
    

    
    
    
        
        
            
        
        
        
        
            
        

        
            
            
            
            
            
        
    

下载安装ELK

这里我就直接装我windows电脑了

  • es中文社区
  • 这里我用7.16.2
  • Elasticsearch
  • kibana
  • logstash
  • filebeat_x64

Elasticsearch
  • 直接elasticsearch.bat启动即可
  • 访问localhost:9200 验证启动成功,这里基本不会有什么问题
Logstash 创建配置文件
conf下创建spring-boot-logstash.yml
输出的索引名称我改为动态方式,每个微服务每天有一个自己的索引文件。
[fields][servicename] ------->     beats推送的时候会带过来
input {
  beats {
    port => 5044
  }
  tcp {
    mode => "server"
    host => "127.0.0.1"
    port => 4560
    codec => json_lines
  }
}
filter {
}
output {
  elasticsearch {
	hosts => ["http://127.0.0.1:9200"]
	index => "%{[fields][servicename]}-%{+yyyy.MM.dd}"
  }
}

运行Logstash
logstash.bat -f E:elasticsearchELKlogstash-7.16.2configspring-boot-logstash.yml
Filebeat 修改filebeat.yaml

# ============================== Filebeat inputs ===============================

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - F:2022ProjectsSpringCloudAlibaba2022logsorder-service*.log
    #- c:programdataelasticsearchlogs*
  fields:
    servicename: order-service
  multiline:
    pattern: '^{'
    negate: true
    match: after
    timeout: 5s
- type: log
  enabled: true
  paths:
    - F:2022ProjectsSpringCloudAlibaba2022logsuser-service*.log
    #- c:programdataelasticsearchlogs*
  fields:
    servicename: user-service
  multiline:
    pattern: '^{'
    negate: true
    match: after
    timeout: 5s
# ============================== Filebeat modules ==============================

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml
  # Set to true to enable config reloading
  reload.enabled: false

# ======================= Elasticsearch template setting =======================

setup.template.settings:
  index.number_of_shards: 1

# =================================== Kibana ===================================
setup.kibana:
# ---------------------------- Elasticsearch Output ----------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  #username: "elastic"
  #password: "changeme"

# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

# ================================= Processors =================================
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
运行beats
filebeat.exe -e -c filebeat.yml
Kibana
  • 修改config/kibana.yml
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"
  • 直接kibana.bat启动
  • 访问http://localhost:5601/
查看索引列表

创建索引模式

查看日志

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号