logstash的基本使用

logstash概述

LogStash是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到喜欢的"存储库"

Logstash管道有两个必需的元素,输入和输出,以及一个可选元素filter。输入插件使用来自源的数据,过滤器插件根据您的指定修改数据,输出插件将数据写入目标。

在这里插入图片描述

logstash安装运行

安装须知:要求jdk1.8+

logstash下载页面

解压安装包,运行./bin/logstash即可

logstash配置详解

logstash的配置有三部分,如下

input { #输入
   stdin { ... } #标准输入
 }
 filter { #过滤,对数据进行分割、截取等处理    
 ...
 }
 output { #输出
   stdout { ... } #标准输出
}
输入

采集各种样式、大小和来源的数据,数据往往以各种各样的形式,或分散或几种地存在于很多系统中。

logstash支持各种输入选择,可以在同一时间从众多常用来源捕捉事件,能够以连续的流式传输方式,轻松地从日志、指标、web应用、数据存储等采集数据

过滤

实时解析和转换数据

数据从源传输到es的过程中,logstash过滤器能够解析各个事件,识别已命名的字段已构建结构,并将它们转换成通用格式,以便更轻松、快速地分析和实现商业价值

输出

logstash提供众多输出选择,可以将数据发送到要指定的地方。

案例
举例1:使用Logstash展示标准输入、输出
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
## 输入
你好
## 输出
{
    "@timestamp" => 2020-09-27T08:41:12.947Z,
          "host" => "wojiushiwo-2.local",
       "message" => "你好",
      "@version" => "1"
}
举例2:使用Logstash收集日志文件并输出到控制台
input {
        file {
                path => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log"
                start_position => "beginning"
        }
}
filter {
   mutate {
     split => {"message"=>"|"}
  }
}
output {
        stdout { codec => rubydebug }
}

配置文件的意思是 读取a.log文件,并按照分隔符|进行分隔,最后输出到控制台

备注:a.log中内容为2020-09-25 15:40:21|INFO|读取数据|参数:id=1003

{
      "@version" => "1",
       "message" => [
        [0] "2020-09-25 15:40:21",
        [1] "INFO",
        [2] "读取数据",
        [3] "参数:id=1003"
    ],
    "@timestamp" => 2020-09-27T08:44:58.808Z,
          "path" => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log",
          "host" => "wojiushiwo-2.local"
}
举例3:使用Logstash收集日志文件并输出到es
input {
        file {
                path => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log"
                start_position => "beginning"
        }
}
filter {
   mutate {
     split => {"message"=>"|"}
  }
}
output {
        elasticsearch { hosts => ["127.0.0.1:9200"] }
}

默认es 索引命名规则:logstash-日期

举例4:使用logstash输入 filebeat收集上的日志 并输出到控制台

filebeat_logstash.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /Users/wojiushiwo/Software/wojiushiwo/log/*.log
output.logstash:
  hosts: ["localhost:5044"]

logstash.conf

input {
        beats {
                port => "5044"
        }
}
output {
        stdout { codec => rubydebug }
}

启动filebeat、logstash即可。

举例5:使用logstash输入 filebeat收集的日志 并解析字段 输出到es

filebeat_logstash.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /Users/wojiushiwo/Software/wojiushiwo/log/*.log
output.logstash:
  hosts: ["localhost:5044"]

日志格式如 c.w.mapstruct.MapStructApplication : DAU|1737|浏览页面|2020-09-25 02:16:05

logstash.conf

input {
        beats {
                port => "5044"
        }
}
filter {
   mutate {
     split => {"message"=>"|"}
  }
 mutate {
        add_field => {
           "userId"=> "%{message[1]}"
           "visit"=> "%{message[2]}"
           "date"=> "%{message[3]}"
        }
}
mutate {
        convert => {
           "userId"=> "integer"
           "visit"=> "string"
           "date"=> "string"
        }
}
}
output {
        elasticsearch {
           hosts => [ "127.0.0.1:9200" ]
  }
}

从filebeat读入数据,根据分隔符|进行分隔,并解析每个字段即类型,输出至es

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值