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

  依赖:

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

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

    <!-- 输出到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的地址、索引。内容如下:

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:

logstash -f ../config/20230424-test05.conf --config.reload.automatic

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

./logstash -f ../config/20230424-test05.conf --config.reload.automatic

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

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" ]
	}
}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot可以很方便地与Logstash进行整合,实现日志的收集和分析。具体步骤如下: 1. 在pom.xml中添加logstash-logback-encoder依赖: ```xml <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> ``` 2. 在application.properties中配置logstash的地址和端口: ```properties logging.logstash.url=http://localhost:5044 ``` 3. 在logback.xml中配置logstash的appender: ```xml <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${logging.logstash.url}</destination> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> ``` 4. 在logger中添加logstash的appender: ```xml <logger name="com.example" level="INFO"> <appender-ref ref="logstash" /> </logger> ``` 5. 启动Logstash服务,配置Logstash的input和output: ```conf input { tcp { port => 5044 codec => json_lines } } output { elasticsearch { hosts => ["localhost:920"] index => "logstash-%{+YYYY.MM.dd}" } } ``` 6. 启动Spring Boot应用程序,日志将被发送到Logstash服务器进行处理和存储。 以上就是Spring Boot整合Logstash的基本步骤,可以根据实际需求进行调整和优化。 ### 回答2: 前置知识 在回答这个问题之前,需要了解一些关于 Spring Boot、ELK Stack 和 Logstash 的概念。 Spring Boot 是一个快速开发框架,它使得创建和配置 Spring 应用程序变得更加容易。它提供了一整套基础设施,包括 Web、安全、数据、缓存等。 ELK Stack 是 Elastic Stack 中的一部分,它是一个开源的日志分析平台。ELK Stack 由 ElasticsearchLogstash 和 Kibana 三个组件构成,它们协同工作来收集、存储、分析和可视化日志数据。 Logstash 是 ELK Stack 中一个用于日志管理和处理的工具,它能够将不同的数据源中的日志数据收集起来,并转换成统一的格式进行处理。 回答 在 Spring Boot 应用程序中,我们可以使用 Logstash 来收集和分析日志信息。下面是整合步骤: 1、在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> ``` 这个 logstash-logback-encoder 依赖提供了 Logback 的 Encoder 接口的实现,可以将日志信息转换为 Logstash 格式。 2、在 logback.xml 中配置 logstash 输出: ``` <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>localhost:4560</destination> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> ``` 这个配置会创建一个 LogstashTcpSocketAppender 实例,收集日志信息并发送到指定的地址。在 encoder 中指定 LogstashEncoder,将日志信息转换成 Logstash 事件格式。 3、在 application.properties 文件中配置 logstash 输出: ``` logging.level.root=debug logging.file=app.log logging.config=classpath:logback.xml logstash.host=localhost logstash.port=4560 ``` 在 application.properties 配置中,我们指定了日志级别、日志文件名称、logback 的配置文件路径以及 Logstash 的地址和端口号。 使用以上步骤整合 Spring BootLogstash 后,我们就可以通过 Logstash 所提供的可视化界面(Kibana)对日志信息进行分析和呈现了。 ### 回答3: Spring BootLogstash是两款非常流行的开源工具,Spring Boot是一个轻量级的Java框架;而Logstash则是一个用于收集、处理和转发日志的数据管道工具。将Spring BootLogstash结合起来,可以让开发者更方便地收集、过滤、聚合和存储日志数据。 首先,需要在pom.xml文件中添加Logstash依赖(请确保版本匹配): ``` <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.3</version> </dependency> ``` 然后,在application.properties文件中配置Logstash服务器的主机名和端口号: ``` # Logstash spring.logstash.host=logstash-server spring.logstash.port=5000 ``` 接下来,我们需要在logback.xml文件中配置Logback的日志输出格式,以及将日志发送到Logstash服务器。例如,我们可以使用JSON格式输出日志: ``` <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${spring.logstash.host}:${spring.logstash.port}</destination> <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp/> <message/> <logLevel/> <loggerName/> </providers> </encoder> </appender> <root level="INFO"> <appender-ref ref="logstash" /> </root> </configuration> ``` 至此,Spring Boot的应用程序已经可以向Logstash服务器发送日志消息了。我们可以在Logstash服务器上使用Elasticsearch、Kibana等工具对日志进行存储、搜索和可视化。例如,可以使用以下Logstash配置将日志数据发送到Elasticsearch中: ``` input { tcp { port => 5000 codec => json_lines } } output { elasticsearch { hosts => ["localhost:9200"] index => "my-log-%{+YYYY.MM.dd}" } } ``` 通过这种方式,我们就可以实现Spring Boot应用程序和Logstash之间的集成。这种集成方式可以让我们更容易地对日志进行管理、分析和监控,从而提高应用程序的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值