• filebeat(8.9.0)采集日志到logstash,由logstash发送的es


    filebeat采集日志到logstash,由logstash发送的es

    下载并配置filebeat

    下载

    参考
    filebeat下载示例

    配置

    filebeat.inputs:
    - type: filestream
      enabled: true
      paths:
      	# 日志文件目录
        - D:\modellog\elkdemo\*\*.log
      parsers:
      # 多行日志合并(例如java的异常堆栈信息)
      - multiline:
          type: pattern
          # 匹配以[开头的
          pattern: '^\['
          negate: true
          match: after
    
    # 自定义日志格式
    processors:
    - dissect:
        tokenizer: '[%{timestamp}] -%{parentTraceId} -%{traceId} -%{host} -%{port} -%{appName} -%{pid} -[%{level}] -[%{thread}] -%{class} -%{line} - %{message}'
        field: "message"
    
    # 输出到logstash
    output.logstash:
      enabled: true
      hosts: ["192.168.0.100:21069"]  
    
    
    • 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

    logback.xml

    
    <configuration>
        
        
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
        <conversionRule conversionWord="wex"
                        converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
        <conversionRule conversionWord="wEx"
                        converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    
        <define name="hostAddress" class="top.mingempty.commons.definer.IPLogDefiner"/>
        <springProperty scope="context" name="appName" source="spring.application.name"/>
        <springProperty scope="context" name="port" source="server.port"/>
    
        
        <property name="CONSOLE_LOG_PATTERN"
                  value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint}  %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(${PID:- }){magenta} %clr(-){faint} %clr([%t]){faint} %clr(%logger){cyan} %clr(:){magenta} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    
        <property name="FILE_LOG_PATTERN"
                  value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] -${hostAddress} -${port} -${appName} -${PID:-} -[%-5level] -[%thread] -%logger -%-3L - %msg%n"/>
    
    
        <contextName>fanxlxscontextName>
    
        
        <property name="LOG_PATH" value="/modellog"/>
        
        <property name="APPDIR" value="/filebeat"/>
    
        
        <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.logFileNamePattern>
                
                
                <maxFileSize>10MBmaxFileSize>
                
            rollingPolicy>
            
            <append>trueappend>
            
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${FILE_LOG_PATTERN}pattern>
                <charset>utf-8charset>
            encoder>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>errorlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
    
        
        <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.logFileNamePattern>
                
                
                <maxFileSize>10MBmaxFileSize>
                
            rollingPolicy>
            
            <append>trueappend>
            
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${FILE_LOG_PATTERN}pattern>
                <charset>utf-8charset>
            encoder>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>warnlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
    
        
        <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.logFileNamePattern>
                
                
                <maxFileSize>10MBmaxFileSize>
                
            rollingPolicy>
            
            <append>trueappend>
            
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${FILE_LOG_PATTERN}pattern>
                <charset>utf-8charset>
            encoder>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>infolevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
    
        
        <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.logFileNamePattern>
                
                
                <maxFileSize>10MBmaxFileSize>
                
            rollingPolicy>
            <append>trueappend>
            
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${FILE_LOG_PATTERN}pattern>
                <charset>utf-8charset>
            encoder>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>debuglevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
        
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}pattern>
                <charset>utf-8charset>
            encoder>
            
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>debuglevel>
            filter>
        appender>
        
        
        <logger name="org.springframework" level="WARN"/>
    
        
        <logger name="com.alibaba.nacos" level="WARN"/>
        
        
        <logger name="top.mingempty.metadata" level="INFO"/>
    
        
        <root level="INFO">
            <appender-ref ref="ERROR"/>
            <appender-ref ref="WARN"/>
            <appender-ref ref="INFO"/>
            <appender-ref ref="DEBUG"/>
            
            <appender-ref ref="STDOUT"/>
        root>
    
    
    configuration>
    
    
    • 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
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194

    logstash配置

    input {
      beats  {
        port => 5044
      }
    }
    
    filter {
      grok {
        ## 指定日志输出格式(和logback对应上)
        match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] -%{IP:host} -%{NUMBER:port} -%{DATA:appName} -%{NUMBER:pid} -\[%{DATA:level}\] -\[%{DATA:thread}\] -%{DATA:class} -%{NUMBER:line} - %{GREEDYDATA:message}" }
      }
      
      mutate {
        remove_field => [ "[@timestamp]"]
        rename => {
            "[dissect][parentTraceId]" => "parentTraceId"
            "[dissect][traceId]" => "traceId"
            "[dissect][host]" => "host"
            "[dissect][port]" => "port"
            "[dissect][appName]" => "appName"
            "[dissect][pid]" => "pid"
            "[dissect][level]" => "level"
            "[dissect][thread]" => "thread"
            "[dissect][class]" => "class"
            "[dissect][line]" => "line"
            "[dissect][message]" => "message"
            "[dissect][timestamp]" => "timestamp"
            "[log][file][path]" => "path"
          }
      }
    
      date {
        match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ] # 这里指定日志中时间戳的格式
        target => "@timestamp" # 将解析后的时间戳存储到  字段
        timezone => "Asia/Shanghai" # 指定时区为中国标准时间
      }
      
      mutate {
        remove_field => [ "timestamp","event", "agent", "ecs", "input", "tags", "flags", "log", "dissect" ,"@version"]
      }
    }
    
    
    output {
      elasticsearch {
        hosts => ["https://172.27.0.2:9200"]
        index => "beats3-mingempty-top-%{+YYYY.MM.dd}"
        #这里开启了es的x-pack
        user => "帐号"
        password => "密码"
        ssl_enabled => true
        ssl_certificate_authorities => ["/usr/share/logstash/config/logstash.pem"]
      }
    }
    
    • 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

    docker-compose部署elk(8.9.0)并开启ssl认证

  • 相关阅读:
    声明式事务
    Linux 应急响应命令总结,收藏版
    【PHP代码审计】——开启你的代码审计生涯
    MySQL数据库
    SpringCloud学习笔记万字整理(无广版在博客)
    BST二叉搜索树
    Couldn‘t terminate the existing process for xxx
    v74.01 鸿蒙内核源码分析(编码方式篇) | 机器指令是如何编码的 | 百篇博客分析OpenHarmony源码
    新版软考高项试题分析精选(一)
    一文讲透Java核心技术之高可扩展利器SPI
  • 原文地址:https://blog.csdn.net/qq_41139119/article/details/133974818