ELK+logback:日志存储及可视化

本文介绍了如何使用ELK(Elasticsearch、Logstash、Kibana)进行日志收集和分析,并通过Logback配置将应用程序日志整合到ELK系统中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

logback+ELK

项目中需要获取用户访问应用的日志做数据分析,目前处理日志的工具中,ELK算比较成熟的了,其具体介绍如下:

  • Logstash : logstash算是ELK中的一个中转站,它可以通过主动扫描被动获取两种方式来获取日志。其具体实现为:扫描文件(主动扫描)、建立tcp连接接收发送过来的信息(被动获取)。获取到日志后,logstash可以对日志内容进行过滤,最后写入ES中。
  • Elasticsearch : you kown, for search!
  • Kibana:kibana是一个可视化工具,专用于对ES进行可视化分析。

安装及配置

安装ELK之前需要安装JDK

Elasticsearch
  • 下载es,解压,es的config文件夹里有两个配置文件需要修改:
//设置jvm.option
vi jvm. options

//分配虚拟机内存,比如这里设的是2g,在es启动的时候就会去初始化2g的内存,如果使用的是购买的云主机,可能总共内存才2g,这就会导致es启动报错,或者别的应用没有内存空间来启动,所以这个值尽量设置的小一点。
-Xms2g
-Xmx2g

//设置elasticsearch.yml
vi Elasticsearch.yml
network.host:12.12.12.12 //设置成安装es机器的ip地址
http.port:9200
discovery.zen.ping.unicast.hosts:["ip地址1","ip地址2",...]//集群ip地址
  • 启动es
bin/elasticsearch
logstash:
  • 下载logstash,解压
  • 创建配置文件供logstash启动时加载,如test.conf,input有多种配置,如tcp、file等,filter也有gork、csv等,output除了es也有别的输出目的地。
//输入配置
input {
    tcp {
      host => "12.221.21.22"//安装logstash的机器的ip地址
      port => 9250//端口号
      mode => "server"
      tags => ["tags"]
      codec => "json"//按json格式编码
    }
}
//过滤配置
filter {
    csv{
      source => "message"
      columns => ["column a","column b"] //从message中取出字段名
      remove_field => ["column c","column b"] //去除不需要的字段名
    }
}
//输出配置
output {
    stdout{codec =>rubydebug}
    elasticsearch {
      hosts => ["http://12.221.21.222:9200"] //安装es集群的地址
      flush_size => 1000 //刷新频率
      index => "test-logs" //es中创建索引的名称
    }
}
  • 示例:对上面的配置,若输入日志为123,234,456,logstash以逗号为分隔符,自动分割日志为value值,输出为,column a:123,column b:234

  • 上述配置es无法检索问题解决方案

  • 启动logstash:

bin/logstash -f test.conf --debug(debug模式),
bin/logstash -f test.conf &(后台模式)
Kibana
server.host:"0.0.0.0"
elasticsearch.url:"http://12.12.12.12:9200" //es的访问连接
  • 启动kibana
bin/kibana
  • 访问kibana,浏览器输入:http://localhost:5601,就可以对绑定的es集群进行各种操作了。

logback配置

使用logback将应用里的日志输出到logstash,输出到logstash中的日志必须是指定格式的特定日志信息,所以,需要过滤格式化

  • 引包
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>
  • logback.xml 文件配置(添加appender)
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>12.12.12.12:9250</destination>//安装logstash机器的ip地址
    <filter class="com.program.interceptor.ELKFilter"/>//引入过滤类

  <!-- encoder is required -->
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>

还要将新添加的appender添加到中

<root level="DEBUG">
    <appender-ref ref="stash" />
</root>
  • 过滤类编写
public class ELKFilter extends Filter<ILoggingEvent> {
    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (event.getMessage().startsWith("KeyWords")) {//只有以"KeyWords"开头的日志被输出到logstash
            return FilterReply.ACCEPT;
        } else {
            return FilterReply.DENY;
        }
    }
}
  • 确定日志格式后输出
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值