• springboot+elk日志


    mkdir /data/elk
    cd /data/elk
    vim docker-compose.yml

    version: '3.7'
    services:
      elasticsearch:
        image: elasticsearch:7.7.0
        container_name: elasticsearch
        privileged: true
        user: root
        environment:
          - cluster.name=elasticsearch 
          - discovery.type=single-node 
          - ES_JAVA_OPTS=-Xms512m -Xmx512m 
        volumes:
          - /data/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
          - /data/elk/elasticsearch/data:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
          - 9300:9300
    
      logstash:
        image: logstash:7.7.0
        container_name: logstash
        ports:
           - 4560:4560
        privileged: true
        environment:
          - TZ=Asia/Shanghai
        volumes:
          - /data/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf 
        depends_on:
          - elasticsearch 
        links:
          - elasticsearch:es 
        
      kibana:
        image: kibana:7.7.0
        container_name: kibana
        ports:
            - 5601:5601
        privileged: true
        links:
          - elasticsearch:es 
        depends_on:
          - elasticsearch 
        environment:
          - elasticsearch.hosts=http://es:9200 
    
    
    mkdir -p /data/elk/{elasticsearch/data,elasticsearch/plugins,logstash}  
    chmod 777 elasticsearch/data
    
    #新建logstash/logstash-springboot.conf文件,新增以下内容
    input {
      tcp {
        mode => "server"
        host => "0.0.0.0"
        port => 4560
        codec => json
      }
    }
    output {
      elasticsearch {
        hosts => "es:9200"
        index => "springboot-logstash-%{+YYYY.MM.dd}"
      }
    }
    
    
    #codec => json_lines 
    docker-compose up -d
    docker ps
    
    
    
    
        net.logstash.logback
        logstash-logback-encoder
        6.6
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78

    logback-spring.xml

    
    
    
        
        
        
        
        
        
        ${APP_NAME}
        
        
            
                ${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log
                30
            
            
                ${FILE_LOG_PATTERN}
            
        
        
        
            
            192.168.66.102:4560
            
        
        
            
            
            
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用log4j2记录日志

    
        org.springframework.boot
        spring-boot-starter
        
            
            
                org.springframework.boot
                spring-boot-starter-logging
            
        
    
    
    
    
        org.springframework.boot
        spring-boot-starter-log4j2
        2.1.0.RELEASE
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在资源目录下新建log4j2.xml

    
    
    
        
            
            E:logs
            
        
    
        
            
            
                
                
                
                
            
    
            
            
                
                
                
                
                
                
                
            
    
            
            
                
                
            
        
    
        
        
            
                
                
                
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    建议在左侧Available fields中筛选出"message"信息,"thread_name"字段可选。筛选的字段在左侧也可以看到,右侧看到的信息就比较清晰,包含了日志本身的时间,这是是配置日志配置的。

    在使用Kibana界面时,发现都是英文的,实际上是可以配置中文版。方法如下:

    1)进入容器内部
    docker exec -it kibana bash
    2)打开配置文件
    vi /opt/kibana/config/kibana.yml
    3)在配置文件最后添加一行,设置语言是中文
    i18n.locale: zh-CN
    需要注意的是,zhe-CN和:号之间必须有个空格,否则kibana无法启动。
    4)保存后重启此容器即可。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    自定义日志过滤
    对应logstash,默认是格式是使用的logback的默认格式,一旦使用log4j2或其他日志框架来指定日志的输出格式时,那么logstash便无法解析,需要进行自定义过滤。

    1)修改日志输出的格式。紧接着时间的后面的一个参数必须使用中括号包裹,否则解析有问题
    将log4j2.xml的日志输出格式修改如下:
    
    2)在logstash.conf中添加过滤规则:
    filter {
    
        grok {
            match => {
                message => "%{DATA:datetime} [%{DATA:level}] [%{DATA:class}] - %{GREEDYDATA:logger}"
                remove_field =>[ "message" ]
            }
        }
        date {
            match => ["datetime", "yyyy-MM-dd HH:mm:ss.SSS"]
        }
        if "_grokparsefailure" in [tags]    {
            drop {}
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    其中grok是根据正则来匹配日志的,data是指定上面时间的格式,if是用于将解析失败的信息删除。
    
    grok的正则语法在次略,其可以在kibana界面进行验证。打开在dev Tools,选择Grok Debugger,输入数据和规则点击模拟进行验证和解析
    
    • 1
    • 2
    • 3

    在这里插入图片描述

     3)重启logstash后,再打印日志,把日志推送到过去,在kibana中筛选level和logger进行查看(logger是具体的信息,在配置grok时指定的),看到信息已正常解析
    
    • 1

    在这里插入图片描述

    安装插件multiline
    运行时会发生异常,把异常的错误信息通过日志推送到logstash
    但在kibana中却看不到详细的信息
    主要原因是错误信息换行输出的,对于上述配置的logstash会解析失败,故不会显示,因此需要安装插件multiline将多行合并为一行输出。

    安装multiline
    进入logstash容器内部,查看是否已安装multiline
    logstash-plugin list
    若没有安装过,则进行安装
    logstash-plugin install logstash-filter-multiline
    安装完成后在logstash.conf中的filter配置
    multiline {
            pattern => "^d{4}-d{1,2}-d{1,2}sd{1,2}:d{1,2}:d{1,2}"
            negate => true
            what => "previous"
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    配置后重启logstash,再次执行测试方法,会发现错误日志已正常记录
    在这里插入图片描述

    需要注意的是,必须先安装multiline才能重启logstash,否则只配置logstash.conf会导致logstash无法启动。

    Kibana设置登录密码
    在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。

    1、安装htpasswd工具
    yum  -y install  httpd-tools
    2、设置用户名和密码,并把用户名、密码保存到指定文件中:
    htpasswd -c /data/nginx/htpasswd  cfw  #交互输入密码
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    修改nginx配置文件,并且重启nginx服务

    user  root;        #修改配置文件用户为root
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                proxy_pass http://192.168.1.105:5601;
                auth_basic "Please input password"; #这里是验证时的提示信息
                auth_basic_user_file /data/nginx/htpasswd; #生成的密码存放路径
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19


    在这里插入图片描述

  • 相关阅读:
    机器视觉系统选型-环形光源分类及应用场景
    人大女王大学金融硕士——人生的每一刻,都是在为自己的明天铺垫
    FPGA零基础学习:IIC协议驱动设计
    QT 网络编程 服务端 客户端 QTcpServer
    Python 几行代码实现一键抠图,收费应用 BYEBYE
    148. SAP UI5 表格数据如何导出成 Excel 文件(Table Export As Excel)
    SCSS动态生成类
    如何用手机模拟激光笔
    【小吉测评】高效简洁的数据库管控平台—CloudQuery
    推荐《一拳超人》
  • 原文地址:https://blog.csdn.net/fwdwqdwq/article/details/126509256