【ElasticSearch】springboot使用logstash将日志输出至es

依赖:

1、springboot集成logstash时,注意 spring-boot-starter-parent和logstash的版本号。

2、logback中logstash的配置:注意 <destination>127.0.0.1:4560</destination> 配置。

XML 复制代码
    <!-- 输出到logstash的相关日志 appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 配置可以访问的logstash日志收集端口 -->
        <destination>127.0.0.1:4560</destination>
        <!--        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">-->
        <!--            &lt;!&ndash; 在elasticsearch的index中追加applicationName字段 &ndash;&gt;-->
        <!--            <customFields>{"applicationName":"logstash-test"}</customFields>-->
        <!--        </encoder>-->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>Asia/Shanghai</timeZone>
                </timestamp>
                <!--自定义日志输出格式-->
                <pattern>
                    <pattern>
                        {
                        "project": "wxpublic",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "%message",
                        "stack_trace": "%exception{20}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>

    </appender>
    <!-- 号码相关信息日志,输出到logstash--> 
    <logger name="logStashTest01Log" level="INFO" additivity="true">      
        <appender-ref ref="LOGSTASH"/>    
    </logger>

3、本地安装Logstash、Elasticsearch、Kibana,注意版本号要保持一致。

4、Logstash的启动配置:

在Logstash的config目录下创建20230424-test05.conf配置文件,指定logstash的输入与输出,input中的端口要和logback-spring.xml配置文件中的配置保持一致,output中指定了日志输出的目的地Elasticsearch的地址、索引。内容如下:

XML 复制代码
input { 
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}

output{
        elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash-test-%{+YYYY.MM.dd}"
    }
}

指定配置启动命令:

在bin目录下,打开控制台,输入以下命令启动Logstash:

XML 复制代码
logstash -f ../config/20230424-test05.conf --config.reload.automatic

linux 系统命令:(需加 ./)

XML 复制代码
./logstash -f ../config/20230424-test05.conf --config.reload.automatic

若命令失败,则在往前一级目录:(可不加 --config.reload.automatic)

XML 复制代码
logstash -f ../xxx/config/20230424-test05.conf

filter

filter{
  grok{
    match => {"message" => "%{COMBINEDAPACHELOG}" }
  }
  mutate{
    # 重命名字段
    rename => {"clientip" => "cip"}
  }
  mutate{
    # 移出特定字段
    remove_field => ["timestamp","agent"]
  }
  geoip{
    # 由于上面将clientip修改为了cip,故此处配置cip,如果没有rename字段则用clientip
    source => "cip"
  }
}


filter {
	ruby {
		code => "
			array1 = event.get('message').split(';,;')
			array1.each do |temp1|
				if temp1.nil? then
					next
				end
				array2 = temp1.split('=')
				key = array2[0]
				value = array2[1]
				if key.nil? then
					next
				end
				event.set(key, value)
			end
		"
		remove_field => [ "message" ]
	}
}
相关推荐
赵广陆9 分钟前
SprinBoot+Vue门诊管理系统的设计与实现
前端·javascript·vue.js·spring boot·maven
麋鹿会飞但不飘40 分钟前
EasyExcel拿表头(二级表头)爬坑,invokeHeadMap方法
java·spring boot·excel
陌上少年,且听这风吟2 小时前
【已解决】SpringBoot3项目整合Druid依赖:Druid监控页面404报错
java·spring boot·spring
code.song2 小时前
电影评论|基于springBoot的电影评论网站设计与实现(附项目源码+论文+数据库)
数据库·spring boot·后端
Flying_Fish_roe3 小时前
Spring Boot-WebSocket相关问题
spring boot·后端·websocket
计算机学姐3 小时前
基于微信小程序的食堂点餐预约管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
骆晨学长3 小时前
基于springboot学生健康管理系统的设计与实现
java·开发语言·spring boot·后端·spring
骆晨学长3 小时前
基于Springboot的医疗健康助手开题报告
java·spring boot·后端
if时光重来3 小时前
springboot项目实现导出excel动态设置表头
spring boot·后端·excel
code.song3 小时前
校园社团|基于springBoot的校园社团信息管理系统设计与实现(附项目源码+论文+数据库)
数据库·spring boot·后端