【centos 7】 安装 Logstash,简单使用

在安装Logstash之前,要确保已经安装并开启了eskibana

安装 Logstash

1、到官网下载压缩包,并上传到服务器

注意:es、kibana、logstash的版本要一致

2、将下载好的压缩包解压缩之后,在其安装目录下的bin文件夹里,添加配置文件 logstash.conf ,内容如下

input {
    tcp {
        host => "0.0.0.0"
        port => 4560
        mode => "server"
        codec => json_lines
    }

}
output {
    elasticsearch {
        hosts => "localhost:9200"
        index => "%{[appname]}"
    }
}

其中:
1) host => “0.0.0.0” 意味着开放远程连接,如果你的SpringBoot项目跟这些es、kibana、logstash同服务器部署的话,可以写成 host => “localhost”
2) hosts => "localhost:9200"是ES的部署位置
3) index => “%{[appname]}” 这个是存储在ES中的索引名,对应下面的SpringBoot集成 logstash 的日志配置文件里{“appname”:“file-manager”}

3、启动 logstash

cd logstash-7.6.2/bin
./logstash -f logstash.conf

如果启动成功,则会显示

[2021-06-11T11:26:16,428][INFO ][logstash.inputs.tcp      ][main] Starting tcp input listener {:address=>"0.0.0.0:4560", :ssl_enable=>"false"}
[2021-06-11T11:26:16,568][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2021-06-11T11:26:17,902][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
[2021-06-11T11:32:30,494][ERROR][logstash.inputs.tcp      ][main] Error in Netty pipeline: java.io.IOException: Connection reset by peer

SpringBoot集成Logstash

1、添加依赖

<!-- logstash -->
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>6.3</version>
</dependency>

注意:如果后面的启动之后,发现没有将日志添加到ES服务器,那么可能是logstash依赖的版本没有与ES的版本适配,我这里用的ES版本是 7.6.2,logstash 依赖的版本是 6.3

2、在src/main.resource 下新建日志配置文件 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration>
    <appender name="LOGSTASH"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--        端口是在logstach.conf中配置的-->
        <destination>192.168.58.133:4560</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- "appname":"spring-boot-lee" 的作用是指定创建索引的名字时用,并且在生成的文档中会多了这个字段,切记小写  -->
            <customFields>{"appname":"file-manager"}</customFields>
        </encoder>
    </appender>

    <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--
        日志输出格式:
			%d表示日期时间,
			%thread表示线程名,
			%-5level:级别从左显示5个字符宽度
			%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
			%msg:日志消息,
			%n是换行符
        -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
        </layout>
    </appender>

    <!--
		logger主要用于存放日志对象,也可以定义日志类型、级别
		name:表示匹配的logger类型前缀,也就是包的前半部分
		level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
		additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
		false:表示只用当前logger的appender-ref,true:
		表示当前logger的appender-ref和rootLogger的appender-ref都有效
    -->
    <!-- hibernate logger -->
    <logger name="com.example" level="debug"/>
    <!-- Spring framework logger -->
    <logger name="org.springframework" level="debug" additivity="false"></logger>

    <root level="INFO">
        <appender-ref ref="stdout"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

3、在application.yml中添加配置

logging:
  config: classpath:logback.xml

4、使用 slf4j 日志框架打印日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
....
....
private static final Logger logger = LoggerFactory.getLogger(FileServiceImpl.class);
....
...
logger.info("打印日志");
....
....

然后启动项目即可,打印的日志会传送到ES的服务器里,打开kibana的显示界面,添加索引模式,就能搜索到打印的日志了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值