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日志,项目日志已经解析格式化了

参考:

相关推荐
幽弥千月3 天前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
IT猿手3 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
流穿4 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿4 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器
流穿5 天前
ELK系列-(五)指标收集-MetricBeat(上)
ubuntu·elk·elasticsearch·docker
高hongyuan5 天前
Linux环境下 搭建ELk项目 -单机版练习
大数据·运维·服务器·elk·elasticsearch·搜索引擎
运维&陈同学6 天前
【Elasticsearch04】企业级日志分析系统ELK之Elasticsearch 插件
大数据·运维·后端·elk·elasticsearch·搜索引擎·全文检索·哈希算法
幽弥千月7 天前
【ELK】Filebeat采集Docker容器日志
elk·docker·容器
运维&陈同学8 天前
【Elasticsearch03】企业级日志分析系统ELK之Elasticsearch访问与优化
大数据·elk·elasticsearch·搜索引擎·云原生·全文检索·高可用
运维&陈同学10 天前
【Elasticsearch01】企业级日志分析系统ELK之Elasticsearch单机部署
大数据·linux·elk·elasticsearch·微服务·云原生·jenkins