分布式日志收集之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
(2)命令行参数仅适合简单的配置,若是配置比较多,咱们通常会写入一个以.conf结尾的配置文件里,而后使用
-f命令加载,将(1)中的配置,写入hello.conf
而后使用bin/logstash -f hello.conf 执行加载,便可达到一样效果
(3)经常使用的数据模块
- <pre name="code" class="java">input{
- .....
- }
- filter{
- ......
- }
- output{
- .......
- }
(4)监听文件,支持通配符,写入文件
- 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脚本注释同样
- }
欢迎关注本站公众号,获取更多信息