Logstash笔记

Logstash学习资料

是什么

日志的分析,清洗

使用

bin目录是脚本目录

config目录是配置文件目录

Logstash是怎么工作的

一个开源的、服务端的数据处理pipeline(管道)。它开源接收多个源的数据,然后进行转换,最终将它们发送到指定的目的地。

Logstash实现的功能主要分为接收数据、解析过滤并转换数据、输出数据三个部分。对应的插件依次是,input、filter、output……,其中fileter是可选的,其他两个是必须的。

  • input插件
    在这里插入图片描述
  • Output插件
    在这里插入图片描述

安装使用

在这里插入图片描述

  • 启动

    nohup ./logstash -f logstash.conf & # 此处的conf文件里面定义了输入输出格式插件
    
  • logstash插件实例

    input{
          file {       # 输入file插件
          path => "/var/log/secure"
       }
    
        }
    
    output{
           kafka {     # 输出kafka插件
                  bootstrap_servers => "192.168.1.20:9092,192.168.1.30:9092,192.168.1.40:9092"
                  topic_id => "osmessage"
                }
        }
    
    
  • Logstash事假文件的编写并从Kafka消费数据

    input{
    	kafka {
    	bootstrap_servers => "192.168.1.20:9092,192.168.1.30:9092,192.168.1.40:9092"
    	topics => ["osmessage"]
    	codec => "json"
    	}
    }
    
    output{
    	elasticsearch {
    		hosts => ["192.168.1.60:9200"]
    		index => "osmessagelog-%{+YYYY-MM-dd}"
    	}
    }
    

Logstash语法应用

基本语法组成

  • Input
  • Output
  • Filter
    在这里插入图片描述
    Input
    在这里插入图片描述
    标准输入(stdin)
input{
	stdin{
			add_field => {"key" => "iivey"} #表示增加一行自定义输出
			tages => ["add1"]
	}
}
oupt{
	stdout{
			codec => rubydebug
	}
}
  • Logstash编码插件

    编码插件(Codec)可以在Logstash输入或者输出时处理不不同类型的数据

    Codec插件支持常见的格式有plain、json、json_lines……

    • plain

      是一个空的解析器,它可以让用户自己指定格式,也就是说输入什么格式,输出就是什么格式。

      input{
      	stdin{}
      }
      output{
      	codec => "plain"
      }
      
    • json、json_lines
      在这里插入图片描述

      input{
      	stdin{}
      }
      output{
      	codec => "json"
      }
      
Filter

在这里插入图片描述

/usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns,在这个Logshtash的安装目录下可以查询Logstash自带的匹配模式
在线调试平台:grokdebug.herokuapp.com

  • 匹配模式
    在这里插入图片描述
    在这里插入图片描述

  • 删除字段

    input{
    	stdin{}
    }
    
    filter{
    	grok{
    	match => ["message","%{IP:clientip}\ \[%{HTTPDDATE:timestamp}\]"]
    	remove_field => ["message"] #表示删除某个字段
    	}
    date { #时间插件
    	match => ["timestamp","dd/MMM/YYYY:HH:mm:ss Z"] #表示自己定义的时间赋给系统
    	}
    mutate {
    	remove_field => ["timestamp"] # 上面时间被修改后,这里可以删除时间字段
    	}
    }
    
    output{
    	stdout{
    	codec => rubydebug
    	}
    }
    
  • 时间处理(Date)
    在这里插入图片描述在这里插入图片描述

  • 数据修改(Mutate)
    在这里插入图片描述
    在这里插入图片描述

  • GeoIP地址归类查询
    在这里插入图片描述
    一个稍微有点难度的匹配
    GREEDYDATA :grok中科院匹配任何字符

input{
	stdin{}
}
filter{
	grok{
	match => {"message" => "%{TIMESTAMP_ISO8601:localtime\|\~\|%{IPORHOST:clientip}\|\~\|(%{GREEDYDATA:http_user_agent})\|\~\|(%DATA:http_referer)\|\~\|%{GREEDYDATA:mediaid}{GREEDYDATA:http_user_agent})\|\~\|(%DATA:http_referer)\|\~\|%{GREEDYDATA:mediaid}\|\~\|%{GREEDYDATA:osid}"}
	}
}

data {
	match => ["localtime","yyyy-MM-dd'T'HH:mm:ssZZ"]
	target => "@timestamp" #target表示赋值给@timestamp
}
mutate {
	remove_field => ["localtime"]
}
output{
	stdout{
		codec => "rubydebug"
	}
}
Output

在这里插入图片描述

  • 输出到Elasticsearch集群
    在这里插入图片描述
 output{
 	elasticsearch{
 		host => ["192.168.1.60:9200"]
 		index => "logstash-%{+YYYY.MM.dd}" #索引名称,可以使用变量格式,索引名称必须是小写字母,不能是大写
 		manage_template => false #是否开启自动管理模板的功能
 		template_name => "template_web_access_log" # 自定义模板的名称
 	}
 }

Logstash收集方法

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值