分布式日志收集之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)使用命令行命令调试:

Java代码

  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

(2)命令行参数仅适合简单的配置,如果配置比较多,我们一般会写入一个以.conf结尾的配置文件里,然后使用 -f命令加载,将(1)中的配置,写入hello.conf 然后使用bin/logstash -f hello.conf 执行加载,即可达到同样效果 (3)常用的数据模块

Java代码

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

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

Java代码

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

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

Java代码

  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. }

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2015-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python使用pyinstaller打包几个小技巧

1、进入命令提示符环境cmd,执行命令pip install pyinstaller安装扩展库pyinstaller。

2752
来自专栏杂烩

Redis linux下安装配置 原

make命令执行完成后,会在当前目录下生成本个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-sta...

712
来自专栏云计算教程系列

如何在CentOS 7上使用Etckeeper进行版本控制管理/ etc

在Linux生态系统中,必须定期安装,维护和升级软件。但是,仍然需要跟踪对本地配置文件所做的更改。与在进行更改之前制作配置文件副本的旧备用数据库相反,etcke...

1531
来自专栏進无尽的文章

代码管理| 本地Git仓库和远程仓库的创建及关联

顺便说一下:Github账号创建私人项目的话需要付费,可以在码云上面创建个人私有仓库,是免费的。

1.7K2
来自专栏Java技术分享

手把手教你用Mysql-Cluster-7.5搭建数据库集群

当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载...

5038
来自专栏运维小白

4.2 du命令

du命令 du命令,查看文件的大小 du命令用法 du -sh 目录/文件命令用法 du -sh 目录/文件 查看目录或文件的大小 [root@localh...

2159
来自专栏小狼的世界

CentOS中设置系统级代理

proxy=http://username:password@proxy_ip:port/

1242
来自专栏刺客博客

Linux下使用mkfs快速对磁盘进行分区

1304
来自专栏ytkah

30个redis.conf 配置项说明

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

1023
来自专栏行者悟空

Redis-3.x集群安装(三主三从)

4883

扫码关注云+社区

领取腾讯云代金券