当前位置: 首页 > article >正文

Logstash:数据搬运工的奇幻漂流

Logstash:数据搬运工的奇幻漂流

1. 什么是 Logstash?

想象一下,你的系统每天都在疯狂地产生日志,像一个话痨一样滔滔不绝。而你要从这些海量数据中找出有用的信息,比如监控系统异常、分析用户行为等等。这时候,你就需要一个可靠的“数据搬运工”——Logstash。

Logstash 是 Elastic Stack(ELK)的重要组成部分,专门用来处理数据采集、处理和传输。它就像是个超级高效的快递员,能把日志数据从各种来源收集起来,整理好,再送到 Elasticsearch、Kafka、数据库等目的地。

2. Logstash 的核心概念

Logstash 的工作流可以用 “输入(input)- 过滤(filter)- 输出(output)” 来描述,简称 IFO 模型。

  • Input(输入):你可以从各种数据源采集数据,比如文件、数据库、消息队列(Kafka、RabbitMQ)等。
  • Filter(过滤):在数据送出去之前,你可以对其进行转换、清洗,比如解析 JSON、提取 IP 地址、字段重命名等。
  • Output(输出):处理后的数据最终会被送到 Elasticsearch、MongoDB、Redis 等地方。

想象 Logstash 是一家快递公司,input 是收件员,filter 是分拣员,output 是派送员。一个完美的物流流程,才能确保你的数据“快递”准确送达!

3. 安装 Logstash

要玩转 Logstash,首先得把它装上。假设你在 Linux/Mac 上,安装步骤如下:

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-linux-x86_64.tar.gz
tar -xzf logstash-8.0.0-linux-x86_64.tar.gz
cd logstash-8.0.0

如果你是 Windows 用户,可以去官网 下载 Logstash,然后解压即可。

4. 写一个 Logstash 配置文件

Logstash 的配置文件使用 .conf 作为后缀,核心内容就是 IFO 三步走。

下面是一个简单的示例,它会从 example.log 读取日志,解析 JSON 数据,并输出到控制台:

input {
  file {
    path => "/var/log/example.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"  # 防止日志重复读取
  }
}

filter {
  json {
    source => "message"
  }
}

output {
  stdout {
    codec => rubydebug
  }
}

然后执行:

bin/logstash -f myconfig.conf

你会看到 Logstash 解析出的日志数据在终端里滚动,就像黑客电影里那样,超级酷!

5. 让 Logstash 发送数据到 Elasticsearch

如果你想把数据存入 Elasticsearch,只需修改 output 部分:

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "my_logs-%{+YYYY.MM.dd}"
  }
}

然后启动 Logstash,Elasticsearch 就能收到数据啦!

6. Spring Boot + Logstash + Elasticsearch 实战

如果你的 Spring Boot 应用想要把日志直接发送到 Elasticsearch,可以借助 Logstash 进行中转。

6.1 Spring Boot 配置 Logback 发送日志

修改 src/main/resources/logback-spring.xml,添加 Logstash Appender:

<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5044</destination>
        <encoder>
            <pattern>[%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

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

6.2 配置 Logstash 接收 Spring Boot 日志

创建 springboot-logstash.conf 配置文件:

input {
  tcp {
    port => 5044
    codec => json
  }
}

filter {
  json {
    source => "message"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "springboot-logs-%{+YYYY.MM.dd}"
  }
  stdout {
    codec => rubydebug
  }
}

6.3 启动所有服务

  1. 启动 Elasticsearch:

    bin/elasticsearch
    
  2. 启动 Logstash:

    bin/logstash -f springboot-logstash.conf
    
  3. 运行 Spring Boot 应用,观察 Kibana 或 ES 里的数据。

这样,你的 Spring Boot 日志就能无缝对接 Logstash,并最终存入 Elasticsearch!

7. 进阶玩法

  • Grok 解析:如果你的日志是非结构化文本,比如 Apache/Nginx 日志,Logstash 的 Grok 插件可以帮你解析。
  • GeoIP 解析:如果你的日志里有 IP 地址,你可以使用 GeoIP 插件,把 IP 解析成地理位置信息。
  • Kafka 集成:如果你的数据量很大,可以让 Logstash 从 Kafka 读取数据,提高系统的扩展性。

8. 总结

Logstash 就像是数据界的“搬运工”,可以让你轻松处理各种日志数据,并将其输送到合适的地方。掌握它,你就能在日志分析、监控、数据处理等领域如鱼得水!

快去试试看吧!


http://www.kler.cn/a/573662.html

相关文章:

  • 苍穹外卖零碎知识点学习记录
  • 深入解析:使用Java爬虫获取淘宝商品详情高级版API接口
  • java常用注解(持续更新)
  • XS9935 ,4通道模拟复合视频解码芯片,双向音频数据同轴共缆传输
  • 二、QT和驱动模块实现智能家居-----4、编译Qt程序并运行
  • conda 更换镜像究极方法
  • Django实现接口token检测的实现方案
  • 计算机网络数据传输探秘:包裹如何在数字世界旅行?
  • 海康摄像头接入流媒体服务器实现https域名代理播放
  • 优选算法的智慧之光:滑动窗口专题(二)
  • 自然语言转SQL之Vanna.ai:AI集成数据库
  • Ansys Zemax | 使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 4 部分
  • 报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
  • 理解 React Portal:让你的组件跳出层级限制
  • JSONP解决跨域问题:原理、实现与局限
  • 家政保洁维修行业有没有必要做小程序?
  • MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU
  • 【五.LangChain技术与应用】【10.LangChain ChatPromptTemplate(下):复杂场景下的应用】
  • centos8 虚拟机重启后无法识别网卡 ens33 问题原因总结
  • Exoplayer2源码编译FFmpeg拓展模块实现音频软解码