分布式日志收集之Logstash 笔记(一)
(一)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)使用命令行命令调试:
- [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
[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)常用的数据模块
- input{
- .....
- }
- filter{
- ......
- }
- output{
- .......
- }
input{
.....
}
filter{
......
}
output{
.......
}
(4)监听文件,支持通配符,写入文件
- input{
- file => ["/var/log/file","/var/solr/log/*"]
- }
- output{
- file => "/sys/collect/log"
- }
input{ file => ["/var/log/file","/var/solr/log/*"] } output{ file => "/sys/collect/log" }
(5)logstash插件支持数据类型
- 数组: 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脚本注释一样
- }
数组: 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 笔记(一)的更多相关文章
- 分布式日志收集框架Flume
分布式日志收集框架Flume 1.业务现状分析 WebServer/ApplicationServer分散在各个机器上 想在大数据平台Hadoop进行统计分析 日志如何收集到Hadoop平台上 解决方 ...
- ELK分布式日志收集搭建和使用
大型系统分布式日志采集系统ELK全框架 SpringBootSecurity1.传统系统日志收集的问题2.Logstash操作工作原理3.分布式日志收集ELK原理4.Elasticsearch+Log ...
- 传统ELK分布式日志收集的缺点?
传统ELK图示: 单纯使用ElK实现分布式日志收集缺点? 1.logstash太多了,扩展不好. 如上图这种形式就是一个 tomcat 对应一个 logstash,新增一个节点就得同样的拥有 logs ...
- 分布式日志收集系统Apache Flume的设计详细介绍
问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么 ...
- .NetCore 分布式日志收集Exceptionless 在Windows下本地安装部署及应用实例
自己安装时候遇到很多问题,接下来把这些问题写出来希望对大家有所帮助 搭建环境: 1.下载安装 java 8 SDK (不要安装最新的10.0) 并配置好环境变量(环境变量的配置就不做介绍了) 2.下载 ...
- 分布式日志收集收集系统:Flume(转)
Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力.Fl ...
- 日志分析平台ELK之日志收集器logstash
前文我们聊解了什么是elk,elk中的elasticsearch集群相关组件和集群搭建以及es集群常用接口的说明和使用,回顾请查看考https://www.cnblogs.com/qiuhom-187 ...
- 学习笔记:分布式日志收集框架Flume
业务现状分析 WebServer/ApplicationServer分散在各个机器上,想在大数据平台hadoop上进行统计分析,就需要先把日志收集到hadoop平台上. 思考:如何解决我们的数据从其他 ...
- Flume -- 开源分布式日志收集系统
Flume是Cloudera提供的一个高可用的.高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地.这里的日志是一个统称,泛指文件.操作记录等许多数据. 一.Flum ...
随机推荐
- sql语句创建表
create table `search_custom_mall` ( `id` ) NOT NULL PRIMARY KEY AUTO_INCREMENT, `uid` ) NOT NULL, `n ...
- shell脚本实现GoDaddy中IPv6的动态域名解析(DDNS)_可在路由中运行
首先谈一下个人的需求,家里路由拿到了运营商的外网ipv6地址,于是想着将路由的各种服务通过DDNS放到外网上来,这才有下面的动态域名解析折腾.废话不多说,进入正题. 1.首先在godaddy中注册域名 ...
- Altium Designer 精心总结(转)
https://blog.csdn.net/qq_29350001/article/details/52199356 设置铺铜间距规则,Electrical-Clearence_Poly设置如下,是铺 ...
- CodeForces 1152E Neko and Flashback
题目链接:http://codeforces.com/problemset/problem/1152/E 题目大意 有一个 1~n-1 的排列p 和长度为 n 的数组 a,数组b,c定义如下: b:b ...
- 剑指offer——21正则表达式匹配
题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式 ...
- 剑指offer——11矩阵覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题解: 使用递归或者动态规划,明显,递归没有动态规划优 ...
- python爬虫_从零开始破解js加密(一)
除了一些类似字体反爬之类的奇淫技巧,js加密应该是反爬相当常见的一部分了,这也是一个分水岭,我能解决基本js加密的才能算入阶. 最近正好遇到一个比较简单的js,跟大家分享一下迅雷网盘搜索_838888 ...
- Array类型中的检测数组,转换方法,栈方法,队列方法
我的新博客==> http://www.suanliutudousi.com/2017/08/24/array%E7%B1%BB%E5%9E%8B%E4%B8%AD%E7%9A%84%E6%A3 ...
- ps-通道错位制作奇幻海报
效果图 素材 1.载入素材 点击通道 点击下面的蓝色通道,全选-复制 点击绿色通道,全选-黏贴 编辑-变化-水平翻转 点击RGB即可.
- 【学术篇】SPOJ COT 树上主席树
这是学完主席树去写的第二道题_(:з」∠)_ 之前用树上莫队水过了COT2... 其实COT也可以用树上莫队水过去不过好像复杂度要带个log还是怎么样可能会被卡常数.. 那就orz主席吧.... 写了 ...