开源日志分析系统建设(三)
字数 1006 2025-08-18 11:37:27

Logstash日志分析系统详细教程

一、Logstash简介

Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到存储库中。它是ELK(Elasticsearch、Logstash、Kibana)技术栈中的重要组成部分。

主要功能组件:

  • Input:从数据源采集数据
  • Filter:修订/格式化处理选择的数据(可选)
  • Output:输出数据到其他软件

二、安装Logstash

1. 前置条件

  • 需要先安装JDK(Java Development Kit)

2. 安装方式

在线安装

# 基于YUM的系统
yum -y install logstash

# 基于APT的系统
apt-get install logstash

离线安装(以Ubuntu为例)

dpkg -i logstash.deb

三、运行测试

1. 基本测试

测试Logstash是否正常运行:

/usr/share/logstash/bin/logstash -e 'input{stdin{}}output{stdout{}}'

输入"hello world"后,预期输出:

{
  "@timestamp" => 2018-07-24T07:18:14.165Z,
  "message" => "hello world",
  "host" => "ubuntu",
  "@version" => "1"
}

说明:

  • -e:通过命令行实现Logstash配置
  • ctrl+D:终止任务

2. 解析日志文件

准备工作

  1. 下载测试日志样本:

    https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz
    
  2. 安装配置Filebeat

修改filebeat.yml配置文件:

filebeat.prospectors:
  - type: log
    paths:
      - /path/to/file/logstash-tutorial-dataset

output.logstash:
  hosts: ["192.168.18.130:9200"]

启动Filebeat:

Filebeat -e -c filebeat.yml -d "publish"

配置Logstash管道

创建first-pipeline.conf配置文件:

input {
  beats {
    port => "9200"
  }
}

filter {
}

output {
  stdout {
    codec => rubydebug
  }
}

验证配置文件:

/usr/share/logstash/bin/logstash -f first-pipeline.conf --config.test_and_exit

成功验证后运行:

/usr/share/logstash/bin/logstash -f first-pipeline.conf --config.reload.automatic

说明:--config.reload.automatic表示动态加载配置文件而无需重启

四、使用Grok插件处理日志

1. Grok基础

Grok可以将非结构化日志数据解析为结构化格式。例如解析Apache访问日志:

示例日志:

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"

配置示例:

input {
  beats {
    port => "5044"
  }
}

filter {
  grok {
    match => {"message" => "%{COMBINEDAPACHELOG}"}
  }
  geoip {
    source => "clientip"
  }
}

output {
  elasticsearch {
    hosts => ["192.168.18.130:9200"]
  }
}

2. 调试Grok模式

使用Kibana中的Grok Debugger工具(位于Dev Tools中)来测试和调试Grok模式。

3. 清除Filebeat状态

如果需要重新处理日志文件:

rm -rf /var/lib/filebeat/registry
# 如果找不到,使用find命令查找

然后重新启动Filebeat:

filebeat -e -c filebeat.yml -d "publish"

五、查看和分析结果

  1. 在Kibana中创建索引模式
  2. 在"Discover"页面查看格式化后的日志
  3. 在"Visualize"页面创建可视化图表

六、高级功能

Logstash支持自定义插件开发,可以扩展其功能以满足特定需求。

七、总结

本教程详细介绍了:

  1. Logstash的基本概念和架构
  2. 安装和基本配置方法
  3. 与Filebeat的集成
  4. 使用Grok插件解析非结构化日志
  5. 结果查看和分析方法

Logstash作为ELK技术栈中的数据收集和处理核心,提供了强大的日志处理能力,通过灵活的插件系统可以满足各种日志分析需求。

Logstash日志分析系统详细教程 一、Logstash简介 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到存储库中。它是ELK(Elasticsearch、Logstash、Kibana)技术栈中的重要组成部分。 主要功能组件: Input :从数据源采集数据 Filter :修订/格式化处理选择的数据(可选) Output :输出数据到其他软件 二、安装Logstash 1. 前置条件 需要先安装JDK(Java Development Kit) 2. 安装方式 在线安装 离线安装(以Ubuntu为例) 三、运行测试 1. 基本测试 测试Logstash是否正常运行: 输入"hello world"后,预期输出: 说明: -e :通过命令行实现Logstash配置 ctrl+D :终止任务 2. 解析日志文件 准备工作 下载测试日志样本: 安装配置Filebeat 修改 filebeat.yml 配置文件: 启动Filebeat: 配置Logstash管道 创建 first-pipeline.conf 配置文件: 验证配置文件: 成功验证后运行: 说明: --config.reload.automatic 表示动态加载配置文件而无需重启 四、使用Grok插件处理日志 1. Grok基础 Grok可以将非结构化日志数据解析为结构化格式。例如解析Apache访问日志: 示例日志: 配置示例: 2. 调试Grok模式 使用Kibana中的 Grok Debugger 工具(位于Dev Tools中)来测试和调试Grok模式。 3. 清除Filebeat状态 如果需要重新处理日志文件: 然后重新启动Filebeat: 五、查看和分析结果 在Kibana中创建索引模式 在"Discover"页面查看格式化后的日志 在"Visualize"页面创建可视化图表 六、高级功能 Logstash支持自定义插件开发,可以扩展其功能以满足特定需求。 七、总结 本教程详细介绍了: Logstash的基本概念和架构 安装和基本配置方法 与Filebeat的集成 使用Grok插件解析非结构化日志 结果查看和分析方法 Logstash作为ELK技术栈中的数据收集和处理核心,提供了强大的日志处理能力,通过灵活的插件系统可以满足各种日志分析需求。