ELK+springboot搭建分布式日志系统——搭建

万事开头难,花了2天的时间一直在忙这个,总算有点头绪,废话不多说,直接开整!

一基础知识

ELK一般由三部分组成:logstash(日志格式化) + elasticsearch(检索) + Kibana(前台报表展示)

这里因为自己也是在摸索阶段,就直接在自己的windows系统上操作(流下了没有服务器的泪水)

官网地址:https://www.elastic.co/

下载logstash,elasticsearch,Kibana,filebeat安装包(为啥要装这个一会说)

下载完了自己解压到一个文件夹里

ELK+springboot搭建分布式日志系统——搭建_第1张图片

启动顺序ES-KIBANA-LOGSTASH-FILEBEAT(可以有可以没)

二window下的启动方法

ELK+springboot搭建分布式日志系统——搭建_第2张图片

ELK+springboot搭建分布式日志系统——搭建_第3张图片

记住默认端口9300,也可以直接访问localhost:9300得到json字符串证明启动成功!

2Kibana启动也一样,直接访问http://localhost:5601可以进入控制台

ELK+springboot搭建分布式日志系统——搭建_第4张图片

3启动LOGSTASH,注意,需要配置默认的conf(在bin的目录下建立conf文件,如下图)

ELK+springboot搭建分布式日志系统——搭建_第5张图片

在bin目录下进入cmd模式输入logstash  -f logstash_default.conf,通过logstash.bat文件启动(也可配置全局环境变量方式启动,这里只在bin目录下),窗口如下(这里我是启动了另外一个conf)

ELK+springboot搭建分布式日志系统——搭建_第6张图片

三对接springboot,可以有2种方式(直接使用logstask作为日志收集加处理方式(可能内存原因直接崩了,所以没试成功)),还有另外一种,采用filebeat读取文件的方式,将它直接传给ES服务(这里处理不好只能做为初学者使用),实际项目还是推荐采用filebeat+logstask+es+k的模式(官网推荐,filebeat读取文件占用内存比直接logstask获取小,适合每个单个系统部署)

4实战操作

找一个maven项目,添加


    net.logstash.logback
    logstash-logback-encoder
    版本号

在resours里添加logback-spring.xml文件




    
    

    
    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
        
    
    
    
        ${LOG_PATH}/${APP_NAME}/out_${APP_NAME}.log
        
            
            ${LOG_PATH}/${APP_NAME}/%d{yyyy-MM-dd HH}.%i.log
            
            
                5MB
            
            
            720
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
        
    

    
        
            
            ${LOG_PATH}/${APP_NAME}/error/%d{yyyy-MM-dd HH}.%i.log
            
            
                5MB
            
            
            720
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
        
        
            ERROR
            ACCEPT
            DENY
        
    

    
        localhost:9250
        1048576
        
    
    
        
    
    
        
        
    

    
        
    
    
    
        
        
    
    
    

标黑就是配置,然后修改logstask的conf文件

input {
  beats {
    port => 9250
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

启动logstask

ELK+springboot搭建分布式日志系统——搭建_第7张图片

一会后,出现错误IO的socket通讯流错误(中文乱码不好分析啊)

ELK+springboot搭建分布式日志系统——搭建_第8张图片

幸亏还有logstask自带的日志,打开

ELK+springboot搭建分布式日志系统——搭建_第9张图片

会不会端口号配置错误呢,改成8020试试,结果还是读不出来(后来才知道:logback支持将日志数据通过提供IP地址、端口号,以Socket的方式远程发送),然后继续查看

官网发现filebeat(专门读取file文件的服务)

filebeat需要修改filebeat.yml文件,怕改错了另外修改文件试试,添加如下配置(其实自带的里面有,只需要改下file的目录)

ELK+springboot搭建分布式日志系统——搭建_第10张图片

 

可以添加多个,这里我只做一个测试用,其他不变

bin目录下启动fileBeat,然后观察Kibana(这里对logstask未对日志做任何处理,可关闭)

ELK+springboot搭建分布式日志系统——搭建_第11张图片

日志监控成功!

ELK+springboot搭建分布式日志系统——搭建_第12张图片

继续修改,将logstask加入其中

将filebeat输出端口(yml文件)改下

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

将logstask的input监听端口改成5044(conf文件中的input)

ELK+springboot搭建分布式日志系统——搭建_第13张图片

也是能找到日志文件更新的内容的

跌跌撞撞的终于弄了个雏形,后续继续完善!

你可能感兴趣的:(ELK,other,java)