logback将日志通过logstash传输到elasticsearch

1. 下载logstash

从官方网址下载安装包。

2. 配置logstash.conf

input { stdin { } }
 
input {
  tcp {
	#不配置默认是安装服务器ip
    #host => "localhost"
	#开启的端口
    port => 8084
    mode => "server"
    tags => ["tags"]
	#输出json格式,需要装插件
    codec => json_lines
  }
 
}

这里配置了两个输入,一个是标准输入stdin;

另一个是tcp输入源,由tcp输入插件提供对应功能,其中

  • host: 绑定的IP地址,默认值为0.0.0.0;
  • port: 8084,端口为8084;
  • mode: server或client,默认值为server;
  • tags: 数组类型,可以添加多个标签,后续的处理可以参考该参数配置;
  • type: 字符串类型,没有默认值,用于激活过滤器;
  • id: 输入源id,当有多个相同类型的输入源时,可以根据该参数进行区分;
  • codec: 编码,类型为codec,默认值为"line"

以上时通用属性配置。

参考地址:

Tcp input plugin | Logstash Reference [7.16] | Elastic

这里配置了两个输出,一个是标准输出,另外一个是elasticsearch,由对应的插件完成数据输出功能:

output {
  stdout{codec =>rubydebug}
  elasticsearch {
   #es地址,可多个
   hosts => ["localhost:9200"]
   flush_size => 1000
   action => "index"
   # 获取输出参数"indexname"值当做索引,如果没有则会自动创建对应索引(需要es开启自动创建索引)
   index => "%{indexname}"
   }
}

hosts: elasticsearch的主机名;

index: 索引名称;

action: 类型为字符串,数据流的默认值是create,非时间序列数据的默认值是index;可以是下列的值:

  • index,建立一个文档索引;
  • delete,根据id删除一个文档;
  • create,建立一个文档索引,如果索引id已经存在,则返回失败;
  • update,根据id更新一个文档;

flush_size:

password:密码

user: 用户名

参考配置:

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

3. 启动logstash服务

logstash -f logstash.conf

4. 项目中添加依赖

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

5. logback.xml或者logback-spring.xml中添加配置

<?xml version="1.0" encoding="UTF-8"?>
<included>
 
		 
	<!-- logback 和 logstash 通讯配置 -->
    <appender name="SOCKET" class="net.logstash.logback.appender.LogstashSocketAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <host>${logstash.host}</host>
        <port>${logstash.port}</port>
    </appender>
 
    <!-- logstash远程日志配置-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${logstash.host}:${logstash.port}</destination>
		<!--输出打印json格式-->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>
                        <!--输出日志可自定义,可根据自己需要配置-->
                        {
                        <!--es索引名称 -->
                        "indexname":"test_logstash",
                        <!--应用名称 -->
                        "appname":"${spring.application.name}",
                        <!--服务器ip -->
                        "host": "%ip",
                        <!--应用端口 -->
                        "port": "${spring.application.index}",
                        <!--打印时间 -->
                        "timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
                        <!--线程名称 -->
                        "thread": "%thread",
                        <!--日志级别 -->
                        "level": "%level",
                        <!--日志名称 -->
                        "logger_name": "%logger",
                        <!--日志信息 -->
                        "message": "%msg",
                        <!--日志堆栈 -->
                        "stack_trace": "%exception"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
 
    <root level="INFO">        
        <appender-ref ref="SOCKET"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
 
</included>

6. application.yml配置文件配置logstash对应的elasticsearch地址和端口

#logstash服务器地址
logstash:
  host: 127.0.0.1
  #logstash端口
  port: 9600

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值