(一)logstash是什么?

logstash是一种分布式日志收集框架,开发语言是JRuby,当然是为了与Java平台对接,不过与Ruby语法兼容良好,非常简洁强大,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。

当然它可以单独出现,作为日志收集软件,你可以收集日志到多种存储系统或临时中转系统,如MySQL,redis,kakfa,HDFS,
lucene,solr等并不一定是ElasticSearch。

官网下载地址:https://www.elastic.co/downloads/logstash

官网文档地址:https://www.elastic.co/guide/en/logstash/current/index.html

(二)logstash的的安装

logstash的目前的最新版本是2.0.0,建议安装在Linux平台,虽然它也支持Windows平台,但可能会有问题
下载:

wget https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz

解压:
tar -zxvf logstash-2.0.0.tar.gz

进入根目录,执行bin/logstash -h
可查看帮助文档
参数介绍如下:

使用命令模板:
    /bin/logstash 命令参数  选项

选项:

    -f , 指定加载一个后缀为.conf文件的logstash配置模块
    -e  , 命令行指定参数 , 通常用来调试

    -w,  指定logstash的工作线程数
    -l,  
指定logstash的默认日志写入到一个文件中,如果不指定,默认是标准输出
    --quiet                      
静默模式,仅仅只有error级别信息输出
    --verbose                   info级别的log输出
   
--debug                      debug 级别的log输出.
    -V,
--version                查看logstash的版本
    -p, --pluginpath PATH        
加载自定义的logstash插件
    -t, --configtest               检查logstash配置是否有效
   
-h, --help                    打印帮助

(三)logstash的数据处理模型

(1)input  =》 output
(2)input =》 filter =》 output

其中input常用的输入源有:file,syslog,redis,log4j,apache log或nginx
log,或者其他一些自定义的log格式,业务log,搜索log,订单log等等

filter常用的选项有:

grok:支持正则提取任何非结构化数据或结构化数据,其中logstash内置120多种正则,比如常见的时间,ip,用户名,等等也支持自定义正则解析

mutate:修改字段名,删除,更新等操作,转换字段类型等
drop: 删除某些时间,如debug

clone:拷贝一份事件副本,用来添加或删除字段
geoip : 通过ip获取地理位置信息,在做kibana区域统计图非常炫
ruby:
支持原生的ruby代码,操作事件,实现强大的其他功能

output常用的输出有:
elasticsearch 比较常用

file:写入文件
redis:写入队列
hdfs:写入HDFS,需插件支持
zabbix: zabbix监控

mongodb:写入mongodb库

除此之外还有个编码插件codecs也比较常用
常用来处理json数据或者多行数据源

(四)logstash一些简单例子

(1)使用命令行命令调试:

  1. [search@h3 logstash-2.0.0]$ bin/logstash -e "input{stdin{}} output{stdout{}}"
  2. Default settings used: Filter workers: 1
  3. Logstash startup completed
  4. hello
  5. 2015-11-04T15:16:02.747Z h3 hello
  6. test
  7. 2015-11-04T15:16:08.108Z h3 test
[search@h3 logstash-2.0.0]$ bin/logstash -e "input{stdin{}} output{stdout{}}"
Default settings used: Filter workers: 1
Logstash startup completed
hello
2015-11-04T15:16:02.747Z h3 hello
test
2015-11-04T15:16:08.108Z h3 test

(2)命令行参数仅适合简单的配置,如果配置比较多,我们一般会写入一个以.conf结尾的配置文件里,然后使用

-f命令加载,将(1)中的配置,写入hello.conf

然后使用bin/logstash -f hello.conf 
执行加载,即可达到同样效果

(3)常用的数据模块

  1. input{
  2. .....
  3. }
  4. filter{
  5. ......
  6. }
  7. output{
  8. .......
  9. }
input{
.....
}
filter{
......
}
output{
.......
}

(4)监听文件,支持通配符,写入文件

  1. input{
  2. file => ["/var/log/file","/var/solr/log/*"]
  3. }
  4. output{
  5. file => "/sys/collect/log"
  6. }
input{

file => ["/var/log/file","/var/solr/log/*"]

}

output{

file => "/sys/collect/log"

}

(5)logstash插件支持数据类型

  1. 数组: path=> ["a","b"]
  2. 布尔:ssl_enable => true
  3. 字节:
  4. my_bytes =>"1113"#1113 bytes
  5. my_bytes =>"10MiB"#10485760 bytes
  6. my_bytes =>"100kib"#102400 bytes
  7. my_bytes =>"180 mb"#180000000 bytes
  8. 编码:
  9. codec => "json"
  10. 哈希表:
  11. match => {
  12. "k1" => "v1"
  13. "k2" => "v2"
  14. "k3" => "v3"
  15. }
  16. 数值:
  17. port=> 33
  18. 密码:
  19. pwd=> "password"
  20. 路径:
  21. path=> "/tmp/logstash"
  22. 字符串:
  23. name => "hello wordld"
  24. 注释:
  25. input{
  26. # 号开头,与shell脚本注释一样
  27. }
数组: path=> ["a","b"]
布尔:ssl_enable => true
字节:
my_bytes =>"1113"#1113 bytes
my_bytes =>"10MiB"#10485760 bytes
my_bytes =>"100kib"#102400 bytes
my_bytes =>"180 mb"#180000000 bytes
编码:
codec => "json"
哈希表:
match => { "k1" => "v1"
"k2" => "v2"
"k3" => "v3" }
数值:
port=> 33
密码:
pwd=> "password"
路径:
path=> "/tmp/logstash"
字符串:
name => "hello wordld"
注释:
input{
# 号开头,与shell脚本注释一样
}


最后欢迎大家扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)

本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!  

分布式日志收集之Logstash 笔记(一)的更多相关文章

  1. 分布式日志收集框架Flume

    分布式日志收集框架Flume 1.业务现状分析 WebServer/ApplicationServer分散在各个机器上 想在大数据平台Hadoop进行统计分析 日志如何收集到Hadoop平台上 解决方 ...

  2. ELK分布式日志收集搭建和使用

    大型系统分布式日志采集系统ELK全框架 SpringBootSecurity1.传统系统日志收集的问题2.Logstash操作工作原理3.分布式日志收集ELK原理4.Elasticsearch+Log ...

  3. 传统ELK分布式日志收集的缺点?

    传统ELK图示: 单纯使用ElK实现分布式日志收集缺点? 1.logstash太多了,扩展不好. 如上图这种形式就是一个 tomcat 对应一个 logstash,新增一个节点就得同样的拥有 logs ...

  4. 分布式日志收集系统Apache Flume的设计详细介绍

    问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么 ...

  5. .NetCore 分布式日志收集Exceptionless 在Windows下本地安装部署及应用实例

    自己安装时候遇到很多问题,接下来把这些问题写出来希望对大家有所帮助 搭建环境: 1.下载安装 java 8 SDK (不要安装最新的10.0) 并配置好环境变量(环境变量的配置就不做介绍了) 2.下载 ...

  6. 分布式日志收集收集系统:Flume(转)

    Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力.Fl ...

  7. 日志分析平台ELK之日志收集器logstash

    前文我们聊解了什么是elk,elk中的elasticsearch集群相关组件和集群搭建以及es集群常用接口的说明和使用,回顾请查看考https://www.cnblogs.com/qiuhom-187 ...

  8. 学习笔记:分布式日志收集框架Flume

    业务现状分析 WebServer/ApplicationServer分散在各个机器上,想在大数据平台hadoop上进行统计分析,就需要先把日志收集到hadoop平台上. 思考:如何解决我们的数据从其他 ...

  9. Flume -- 开源分布式日志收集系统

    Flume是Cloudera提供的一个高可用的.高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地.这里的日志是一个统称,泛指文件.操作记录等许多数据. 一.Flum ...

随机推荐

  1. 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)

    fatal error C1071: unexpected end of file found in comment(Mark ZZ) 今天在一论坛上看到一人发帖: 『最近遇到一个奇怪的问题,代码中的 ...

  2. 牛客多校第八场 B Beauty Values 水题

    题意: 给定一个序列,问你子区间中不同数字数量,在所有子区间中之和为多少. 题解: 统计每个数字在多少个区间中出现即可.对于每个数字,直接枚举左右端点. 注意去重,因此要记录每个数字上一次出现在哪里, ...

  3. 探索NDIS HOOK新的实现方法(1)

    NDIS HOOK是专业级防火墙使用的一种拦截技术,NDIS HOOK的重点是如何获得特定协议对应NDIS_PROTOCOL_BLOCK指针,获得了该指针,接下来就可以替换该协议所注册的收发函数,而达 ...

  4. c#种GetType()和TypeOf()的区别

    C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型. typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称:GetType ...

  5. class7_Checkbutton 勾选项

    最终的运行效果(程序见序号3):   #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------ ...

  6. ps-使用通道抠图为XX换背景

    第一步先载入图片 点击通道,复制蓝色通道 然后点击新的蓝色通道,图像-调整-曲线-改变输入输出, 然后用历史画笔全部填黑.  然后载入选区,复制.在图层中新建蒙版 黏贴,反向(CTRL+I)就可以了. ...

  7. Slow HTTP POST慢速攻击

    测试工具 模拟测试工具:slowhttptest https://github.com/shekyan/slowhttptest 安装: https://github.com/shekyan/slow ...

  8. 使Excel中单元格内英文为Arial Narrow 中文为宋体显示打印

    因为在对数据表进行排版格式整理的时候,发现Arial Narrow字体是不支持中文的,所以中文默认为宋体,但是显示出来却不是宋体,需要双击单元格中文才显示为宋体,这样打印出来才为宋体 但是如果有很多单 ...

  9. HTML_表单标签

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. C 删除字符串中某个指定的字符

    #include <stdio.h> char *del_char(char *str, char ch) { unsigned char i=0,j=0; while(str[i] != ...