ELK(实时日志分析平台)搭建必备基础知识-------logstash

1 篇文章 0 订阅
1 篇文章 0 订阅

预热:基础知识

       Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。 顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。

1,安装

   下载:

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.3.tar.gz

   解压:

tar -zxvf logstash-6.5.3.tar.gz

2,配置文件结构

#输入(must)
input {
  #beats {
    #port => 5044
  #}
  #从文件读取日志信息
  #file {
    #path => "/var/log/messages"
    #type => "system"
    #start_position => "beginning"
   #}

}
#过滤(可选)
filter {
  

}
#输出(must)
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    index => "test-log"
    #user => "elastic"
    #password => "changeme"
  }
}

2.1,input基本讲解

输入支持的类型有很多,官方文档记载

常用的有

input {
  #从filebeat里面取值
  beats {
    port => 5044
  }
  #从文件读取日志信息
  #file {
    #path => "/var/log/messages"
    #type => "system"
    #start_position => "beginning"
   #}

}

 2.2,output基本讲解

output同样支持很多组件:

常用的输出组件有:

output {
  #输出到elasticseartch
  elasticsearch {
    hosts => ["http://localhost:9200"]
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    index => "test-log"
    #user => "elastic"
    #password => "changeme"
  }
  #file {
   #path => /usr/local/test-2013-05-29.txt
   #codec => line { format => "custom format: %{message}"}
   #gzip => false #Gzip the output stream before writing to disk.
  #}
  #stdout { codec => json } #输出到控制台 json格式
}

2.3,filter 基本讲解

logstash支持多种过滤器,

常用的过滤器如下:

grok :用于匹配log,生成模块化数据,匹配成功的话,会在返回的字段中多几个自定义的模块化字段

filter {
  grok {
    match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %
     {NUMBER:bytes} %{NUMBER:duration}" }# 55.3.244.1 GET /index.html 15824 0.043
  }

}

测试log数据: 

 example log:  55.3.244.1 GET /index.html 15824 0.043

返回的json数据:

{
    "offset":10,
    "@version":"1",
    "beat":{
        "name":"izuf6136vql89ybnyypmbaz",
        "hostname":"izuf6136vql89ybnyypmbaz",
        "version":"6.5.3"
    },
    "message":"55.3.244.1 GET /index.html 15824 0.043",
    "request":"/index.html",
    "input":{
        "type":"log"
    },
    "host":{
        "id":"963c2c41b08343f7b063dddac6b2e486",
        "name":"izuf6136vql89ybnyypmbaz",
        "os":{
            "version":"7 (Core)",
            "codename":"Core",
            "platform":"centos",
            "family":"redhat"
        },
        "containerized":true,
        "architecture":"x86_64"
    },
    "prospector":{
        "type":"log"
    },
    "bytes":"15824",
    "duration":"0.043",
    "source":"/usr/local/logs/catalina.out",
    "client":"55.3.244.1",
    "@timestamp":"2018-12-22T08:44:09.372Z",
    "tags":[
        "beats_input_codec_plain_applied"
    ],
    "method":"GET",
    "meta":{
        "cloud":{
            "availability_zone":"cn-shanghai-d",
            "region":"cn-shanghai",
            "instance_id":"i-uf6136vql89ybnyypmba",
            "provider":"ecs"
        }
    }
}

2.4,自定义过滤器

自定义过滤器需要建立自己的正则文件,并且在logstash.conf的过滤器里面制定自己的过滤器文件路径(patterns_dir)和过滤器文件的名称规范(patterns_files_glob),不过默认的patterns_files_glob是 "*"也就是匹配patterns_dir路径下的所有合格的正则文件。

以下是官网自定义过滤器:

logstash.cong:

filter {
  grok {
    #55.3.244.1 GET /index.html 15824 0.043
    #match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %#{NUMBER:bytes} %{NUMBER:duration}" }
    #自定义拦截器
    #patterns_dir => ["./patterns"]
    patterns_dir => ["/usr/local/logstash-6.5.3/config/patterns"]
    patterns_files_glob => "*"
    match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }
  }

}

注意:这里的patterns_dir  我使用官网只是的相对路径,怎么都不对,所以改成了绝对路径,不知哪位大佬有空研究,可以告诉我一下,这里的相对路径该怎么写(可能是我的patterns文件夹放错位置了)。author: 577334945@qq.com

postfix:

# contents of ./patterns/postfix:
POSTFIX_QUEUEID [0-9A-F]{10,11}

文件结构如下:

官网:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

3,启动

bin/logstash -f logstash.conf

更多配置:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值