ELK + Filebeat + Spring Boot:日志分析入门与实践(二)

目录

一、环境

[1.1 ELKF环境](#1.1 ELKF环境)

[1.2 版本](#1.2 版本)

[1.3 流程](#1.3 流程)

二、Filebeat安装

[2.1 安装](#2.1 安装)

[2.2 新增配置采集日志](#2.2 新增配置采集日志)

[三、logstash 配置](#三、logstash 配置)

[3.1 配置输出日志到es](#3.1 配置输出日志到es)

[3.2 Grok 日志格式解析](#3.2 Grok 日志格式解析)

[3.2 启动 logstash](#3.2 启动 logstash)

[​3.3 启动项目查看索引](#3.3 启动项目查看索引)


一、环境

1.1 ELKF环境

  • springboot项目:windows本地
  • Filebeat:windows本地
  • ELK:Ubuntu虚拟机

ELK搭建参考上一篇博客:ELK 7.17.x + Spring Boot:日志分析入门与实践-CSDN博客

1.2 版本

7.17.0(Filebeat 与ELK的版本保持一致)

1.3 流程

Filebeat高效地采集本地项目日志,随后通过Logstash进行深度解析与格式化处理,再将处理后的日志数据上传至Elasticsearch进行高效存储与索引。最终,用户可借助Kibana提供的直观界面,轻松查看并分析这些日志数据。

二、Filebeat安装

2.1 安装

window下载地址:(选择不同版本只用修改版本号即可,官网太卡可能进不去)https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.0-windows-x86_64.zip

解压即可。

linux下载地址:

bash 复制代码
- wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.0-linux-x86_64.tar.gz
- tar -xzf filebeat-7.17.0-linux-x86_64.tar.gz

2.2 新增配置采集日志

新增 filebeat-test.yml 配置输出到logstash:

如果输出到es,注意配置具有写权限的用户,否则报错401,参考上篇文章

bash 复制代码
filebeat.inputs:
- type: log
  enabled: true
# 配置日志地址
  paths:
    - D:\soft\logs\*.log

#es的配置
# output:
#   elasticsearch:
#     hosts: ["192.168.64.128:9200"]
#     username: "elastic"
#     password: "123456"

# 配置logstash地址
output.logstash:
  enabled: true
  hosts: ["192.168.64.128:5044"]

#es的配置
# output.elasticsearch.index: "elkf-%{+yyyy.MM.dd}"
# setup.template.name: "elkf"
# setup.template.pattern: "elkf-*"
# setup.ilm.enabled: false

修改 filebeat-test.yml 的运行权限:

注意:住这个命令的作用是从文件 filebeat-test.yml 的权限中移除组(group)和其他用户(others)的写(write)权限,于提高文件的安全性,防止未经授权的修改。不执行可能会报错提示。

bash 复制代码
chmod go-w filebeat-test.yml

后台启动:

bash 复制代码
./filebeat -e -c filebeat-test.yml

三、logstash 配置

3.1 配置输出日志到es

新增配置 filebeat-elasticSearch.conf :

注意:"@timestamp"字段不能排除掉,否则索引名日期无法获取

bash 复制代码
# logstash的地址
input {
    beats {
      port => 5044
      host => "192.168.64.128"
    }
}

# 过滤器配置Grok模式解析日志
filter {
  grok {
    match => {
    "message" => "%{TIMESTAMP_ISO8601:timestamp} \|  %{LOGLEVEL:loglevel} %{NUMBER:pid} \| %{GREEDYDATA:message_detail}"
    }
  }
  mutate {
# 移除字段
    remove_field => ["log","tags", "input", "agent", "host", "ecs", "@version","message"]
  }
}

# 配置输出到es中,注意用户
output {
  elasticsearch {
    hosts => ["http://192.168.64.128:9200"]
    user => "logstash_to_es"
    password => "123456"
    action => "index"
    index  => "elkf-log2-%{+YYYY.MM.dd}"
  }
  stdout{
    codec => rubydebug
  }
}

3.2 Grok 日志格式解析

Grok模式测试可以使用kibana的Grok Debugger:

更简便的方式是问AI :

有些特殊字符用"\"进行转移,空格比较严谨,如果未匹配要检查空格。

问题:这里我的Grok配置一直未生效,后面发现是项目中logback.xml配置了高亮

XML 复制代码
<property name="PATTERN_DEFAULT"
              value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

输出的日志用文本打开是:带有特殊字符

bash 复制代码
2024-10-29 15:31:39.534 |[34m INFO 34312[0;39m | [1;33mhttp-nio-18080-exec-1 [TID: N/A][0;39m [1;32mc.h.f.a.c.i.ApiAccessLogInterceptor     [0;39m | [preHandle][开始请求 URL(/admin-api/test) 无参数] 

需要将高亮和颜色去除:

XML 复制代码
<property name="PATTERN_DEFAULT"
              value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %5p ${PID:- } | %thread [%tid] %-40.40logger{39} | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%ex{full}}"/>

3.2 启动 logstash

--config.reload.automatic 自动重载配置

XML 复制代码
bin/logstash -f /config/conf/filebeat-elasticSearch.conf --config.reload.automatic

3.3 启动项目查看索引

查看logstash日志,项目日志已经解析格式化了

参考:

相关推荐
武子康18 小时前
大数据-186 Elasticsearch - ELK 家族 Logstash Input插件 JDBC & syslog
java·大数据·elk·elasticsearch·搜索引擎·全文检索
管理大亨18 小时前
大数据日志处理框架ELK方案
大数据·elk
嗝屁小孩纸20 小时前
SpringBoot集成ELK收集日志管理
spring boot·后端·elk
武子康1 天前
大数据-189 Elasticsearch - ELK 日志分析实战 - 环境配置启动 Nginx、ZK、Kafka、ES、Kibana
大数据·nginx·elk·elasticsearch·搜索引擎·kafka·全文检索
echola_mendes2 天前
ELK日志收集
elk·1024程序员节
运维_攻城狮3 天前
ELK收集nginx日志
运维·nginx·elk
一颗知足的心3 天前
ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录
elk·elasticsearch·1024程序员节
武子康4 天前
大数据-190 Elasticsearch - ELK 日志分析实战 - 配置启动 Filebeat & Logstash
java·大数据·elk·elasticsearch·搜索引擎·全文检索
蜡笔小柯南5 天前
解决: java.lang.RuntimeException: can not run elasticsearch as root
java·linux·elk·elasticsearch·ssh·jenkins