ELK的Logstash

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

ELK设置后抓日志非常好用,当然也不只是用于抓日志。功能强大,全文检索等等。

以下文章不定时更新。

ELK的ElasticStack概念
ELK的ElasticStack语法
ELK的ElasticStack安装
ELK的Logstash
ELK的Kibana
ELK的Filebeat

一、概念

Logstash是Elastic Stack中的一个核心组件,主要用于数据的收集、处理和转发。它是一个强大的数据处理管道,能够将不同来源的数据聚合、转换和输出到Elasticsearch或其他目标。以下是Logstash的详细介绍,包括其功能、架构、常用插件和使用场景。

1. 功能

数据收集:Logstash可以从多种数据源(如日志文件、数据库、消息队列、网络协议等)收集数据。
数据处理:可以对数据进行过滤和转换,包括格式化、增强和清洗数据。
数据转发:将处理后的数据发送到多个输出目标,如Elasticsearch、数据库、Kafka等。

2. 架构

Logstash的工作流程通常包括以下几个步骤:

输入:通过输入插件接收数据。Logstash支持多种输入源,例如:

文件(File)
TCP/UDP(网络协议)
数据库(JDBC)
消息队列(Kafka、RabbitMQ)
过滤:通过过滤插件对输入的数据进行处理。例如:

Grok:用于解析和提取日志数据中的字段。
Mutate:用于修改字段的内容,例如重命名、删除或添加字段。
Date:用于解析日期格式并将其转换为标准格式。
输出:通过输出插件将处理后的数据发送到目标系统。常用的输出目标包括:

Elasticsearch
文件(File)
其他数据库(如MySQL、PostgreSQL)
消息队列(Kafka)

3. 常用插件

Logstash具有丰富的插件生态系统,包括:

输入插件:

file: 从日志文件中读取数据。
beats: 接收来自Beats的数据(如Filebeat)。
http: 通过HTTP接口接收数据。
过滤插件:

grok: 用于解析日志格式并提取字段。
mutate: 修改字段(如添加、删除、重命名)。
date: 将字符串转换为日期格式。
输出插件:

elasticsearch: 将数据发送到Elasticsearch。
stdout: 将数据输出到控制台,常用于调试。
file: 将数据写入文件。

4. 配置示例

Logstash的配置通常由三个部分组成:输入、过滤和输出。以下是一个简单的Logstash配置示例:

input {
    file {
        path => "/var/log/myapp.log"
        start_position => "beginning"
    }
}

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    mutate {
        remove_field => ["host"]
    }
}

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

5. 使用场景

日志管理:集中化收集和分析不同系统和应用程序的日志数据。
监控:实时监控基础设施和应用程序性能,帮助及时发现问题。
数据集成:从不同来源汇集数据,进行统一的处理和分析。
安全事件分析:收集和分析安全日志,以检测潜在的安全威胁。
总结
Logstash作为Elastic Stack中的数据处理管道,提供了灵活且强大的数据收集、处理和转发能力。通过丰富的插件生态系统和灵活的配置选项,Logstash可以轻松适应各种数据源和需求,广泛应用于日志管理、监控和数据集成等领域。

6、Logstash总结介绍

  • 1、一款强大的数据处理工具
  • 2、可实现数据传输、格式处理、格式化输出
  • 3、数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)

7、Logstash的主要组件

  • shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
  • indexer:日志存储者,负责接收日志并写入到本地文件
  • broker:日志hub,负责连接多个shipper和多个indexer
  • search and storage:允许对事件进行搜索和存储
  • web interface:基于Web的展示界面

二、下载地址

https://www.elastic.co/cn/downloads/logstash

在这里插入图片描述
https://www.elastic.co/cn/downloads/past-releases/logstash-7-8-0

三、Linux下7.6.2版本安装

cd /usr/local/logstash
tar -zxvf logstash-7.6.2.tar.gz  #  解压tar包,解压时间有点长。
cd /usr/local/logstash/logstash-7.6.2  # 公司古博服务器
mkdir  conf.d  # 创建这个目录
cd /usr/local/logstash/logstash-7.6.2/conf.d
vim /usr/local/logstash/logstash-7.6.2/conf.d/system.conf # 增加这个配置文件,内容拷贝下一个子主题
cd /usr/local/logstash/logstash-7.6.2/bin # 进入启动目录
./logstash -f /usr/local/logstash/logstash-7.6.2/conf.d/system.conf --config.test_and_exit  # 验证配置文件命令
nohup ./logstash -f /usr/local/logstash/logstash-7.6.2/conf.d/system.conf --config.reload.automatic > /dev/null 2>&1 &  # 后台启动,并将日志放到黑洞
#### nohup ./logstash -f /usr/local/logstash/logstash-7.6.2/conf.d/system.conf --config.reload.automatic > /usr/local/logstash/logstash-7.6.2/logstash.txt  &  # 非黑洞方式,可以查看日志排查原因。
####tail -n 10 -f  /usr/local/logstash/logstash-7.6.2/logstash.txt
备注:logstash的默认端口为9600,可以通过 http://localhost:9600  ,类似es的访问返回一串正确json说明就对了。由于古博服务器没有开9600的端口映射,所以无法通过访问测试,可以通过es-head看到配置的索引,也能测试启动成功了。
坑:不要从wps或者notepad++拷贝,最好手动输入或者从百度出来的网页拷贝,一直有编码问题,配置对的,但是报错。

system.conf配置文件

input {
        file {
          path => "/java/logs/*/*.log"
          type => "system"
          start_position => "beginning"
        }
      }

output {
        elasticsearch {
        hosts => ["localhost:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }

在这里插入图片描述
在概览那边也可以看到 index =system日期的 索引。说明启动成功了。

在这里插入图片描述
基本查询,直接跟进 path = /java/logs/auth/log_error.log 来查具体的项目

测试调试配置

input {
    beats {
        port => "5044"
    }
}
output {
        elasticsearch {
        hosts => ["localhost:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
        stdout{codec=>rubydebug}
      }

filter {
  mutate {
    rename => { "[host][name]" => "host" }
  }
}


备注:
stdout { codec => rubydebug } 是用于测试环节的控制台输出,logstash会将所有采集到的日志信息打印在控制台终端中方便开发者调试并查看解析结果。

最终配置(一、直接读取日志文件、ELK方案)

input {
        file {
          path => "/java/logs/*/*.log"
          type => "system"
          start_position => "beginning"
        }
      }

output {
        elasticsearch {
        hosts => ["localhost:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }
filter {
  mutate {
    rename => { "[host][name]" => "host" }
  }
}

最终配置(二、filebeat读取看system*、格式filebeat决定(多行匹配)、ELFK方案)

input {
    beats {
        port => "5044"
    }
}
output {
        elasticsearch {
        hosts => ["localhost:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }

filter {
  mutate {
    rename => { "[host][name]" => "host" }
  }
}


logstash启动后一直发警告,后面加了一个配置才处理,警告如后面截图;而且解决这个警告后,ELFK也成功了。

在这里插入图片描述

最后加了下面配置才好了
filter {
  mutate {
    rename => { "[host][name]" => "host" }
  }
}

Grok(类似增加很多有用字段)

在这里插入图片描述
在这里插入图片描述
logstash配置

在这里插入图片描述
在这里插入图片描述
自定义正则 logstash配置

在这里插入图片描述
官方提供了 大量的 模板 正则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝影铁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值