此文只是logstash的简单入门,作者也只是简单了解logstash,本文只能简单介绍logstash,对完全不懂logstash是啥的人做个引导,因为我就是这样过来的~

1.logstash是什么?有什么用?

  在网上搜索logstash,搜索结果中logstash一般是和elasticsearch、kibana一起讲的。感觉似乎logstash、elasticsearch、kibana一定要一起用,其实并不是这样的。logstash是用来收集日志用的,完全可以单独使用,只是这几个组合在一起疗效比较好。

做过项目的都知道,传统的日志一般是直接写文件。这些日志文件里面可能写了函数调用次数、服务请求失败的日志(比如请求内容、时间、IP什么的),这些日志往往内含丰富的内容。通过分析这些日志可以让我们知道系统主要运行哪些服务、什么时候是服务的高峰期、错误比较集中的地方是哪儿,通过了解这些内容,我们可以提升系统的性能、提供更好的服务。日志文件一般是写在本地的,如果一个分布式系统的日志全部都写在本地,我们要聚合、分析这些日志也是相当麻烦的事。这时候logstash就派上用场了,日志还是原来那样写,只不过不是写文件了,而是写到RabbitMQ、Redids这些地方,然后logstash在另一头不断的取出这些日志,然后对这些日志进行一些处理,输出到另外一个地方,比如说elasticsearch或者在线分析的平台什么的。这时候日志就写到一起了,就方便使用了。

2.logstash基础

  在logstash中,一条条的日志其实都是事件。logstash事件中有一个个不同的字段,每个字段中都有不同的值。在logstash中,值可以有布尔、数值、字符串、数组和Hash表这5种类型。前三种就不说了,数组的写法是这样的["hello", "world", "!"],Hash表的写法是这样的{key1=>value1,key2=>value2}。前面说到logstash就是收集日志、处理日志然后再输出出去。所以logstash就是一种input->filter->output的过程,故logstash中就有input、filter、output这三种类型的插件来处理收集到的日志。我们在配置文件中写好相关的内容、配置好插件,logstash就会按照我们所需要的那样收集、处理并输出日志。一个logstash配置文件至少包含input、output插件,filter插件根据实际需求选择。一个logstash事件的例子(瞎写的)如下:

1 {
2     message => "Hello, world!",
3     @timestamp => "2016-07-17T12:02:58.322Z"
4     host => "XXX-PC"
5 }

  刚才说了logstash可以从RabbitMQ、Kafka、Redis这些消息中间件中抽取日志,这需要配置不同的input插件。如果要从某个消息中间件、文件或者其他地方收集日志,那么就需要在配置文件中配置相应的input插件。当然很多时候,实际收集到的日志和我们实际想存储的数据模型有些差别,这时候我们就可以配置filter插件来处理这些日志。一般来说单个filter插件是不能完成任务的,那我们就配置多个,然后日志就按照filter1->filter2->....->filterN这样的顺序处理。处理完了以后就通过output插件推送到不同的地方。

3.logstash运行

  使用logstash最关键的是写好配置文件,写好配置文件了,logstash就会好好的陪你玩耍。下面举几个例子:

  标准输入到标准输出,并且不做任何处理:

1 input {
2     stdin {
3     }
4 }
5 output {
6     stdout {
7         codec => rubydebug
8     }
9 }

  这个例子相当简单,将它保存成xxx.conf, 然后运行logstash -f xxx.conf,windows下输入 logstash.bat -f xxx.conf。你在屏幕上输入什么,就会输出一个还有message为什么的logstash事件。

  从redis读取,输出到elasticsearch中:

 1 input {
 2     redis {
 3         key => "logstash-*"
 4         host => "localhost"
 5         port => 6379
 6     }
 7 }
 8 filter {
 9      kv {
10      }
11 }
12 output {
13     elasticsearch{
14         hosts => ["localhost:9200"]
15         index => "logstash"
16         type => "logstah123"
17     }
18     stdout{
19         codec => rubydebug
20     }
21 }

  打开Redis客户端,以logstash-为前缀保存"key1=val1 key2=val2 key3=val3",你会在屏幕上看到key1、key2、key3都成了不同的字段,而且val1 val2 val3就是对应的值,在elasticsearch也以这种方式保存好了。这是因为kv插件可以处理这种有规则的字符串,默认以空格区分一组key-value,以等号区分key和value。可以更改kv插件的field_split和value_split来改变kv插件的运行表现。

4.相关链接

logstash官方文档(内含各种插件的用法):

https://www.elastic.co/guide/en/logstash/current/index.html

中文书籍:

http://udn.yyuap.com/doc/logstash-best-practice-cn/get_start/index.html

转载于:https://www.cnblogs.com/DennisXie/p/5785994.html

logstash入门相关推荐

  1. 实战ELK(5) Logstash 入门

    实战ELK(5) Logstash 入门 Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力.它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地. 一.原理 Log ...

  2. Logstash入门简介

    Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) ...

  3. Logstash:Logstash 入门教程 (一)

    Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据. 如果你的数据需要 Beats 中没有的其他处理,则需要将 Logsta ...

  4. Logstash【从无到有从有到无】【简介】【L2】Logstash入门

    目录 1.Logstash入门 1.1.安装Logstash 1.1.1.从下载的二进制安装 1.1.2.从包存储库安装 1.1.3.使用Homebrew在Mac上安装Logstash 1.1.4.使 ...

  5. Logstash【从无到有从有到无】【L2】Logstash入门

    目录 1.Logstash入门 1.1.安装Logstash 1.1.1.从下载的二进制文件安装 1.1.2.从包存储库安装(Package Repositories) 1.1.3.APT 1.1.3 ...

  6. ElasticSearch集群安装,Kibana安装,Logstash安装,Logstash-input-plugin-jdbc的配置使用

    1.安装elasticsearch 参考:https://www.2cto.com/kf/201802/723573.html 1.1 三台机器创建es运行的用户 Es不能再root用户下启动,需要为 ...

  7. [Logstash]使用详解

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...

  8. 日志搜集、过滤及推送处理框架logstash及fluentd总结

    简介 Logstash是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型.怎么样听起来挺厉害的吧? 在一个典型的使用场景下(E ...

  9. Logstash原理介绍及应用

    目录 1.Logstash安装 2.Logstash原理 2.1 输入.过滤器和输出 2.2 采集各种样式.大小和来源的数据 2.3 实时解析和转换数据 2.4 导出数据 3. LogStash入门使 ...

最新文章

  1. 企业级 SpringBoot 教程 (十二)springboot集成apidoc
  2. Context类(上下文)
  3. PAT_B_1059_Java(14分)_C++(20分)
  4. Linux C高级编程——文件操作之系统调用
  5. 空字符python_Python中的None与 NULL(即空字符)的区别详解
  6. Windows学习总结(5)——【IIS建站】Windows10怎么打开站点服务?
  7. Windows Server 2008 R2更新永恒之蓝 补丁包方法
  8. Adobe Photoshop裁剪和拉直照片改善构图
  9. 计算机表格出现value,excel中出现#value!的解决办法
  10. SDUT OJ 2144 数据结构实验之图论九:最小生成树
  11. 数据挖掘—Autistic Spectrum Disorder Screening Data For Children
  12. Caused by: java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
  13. Linux管理员权限的相关命令
  14. Roboware studio字体断续问题
  15. rh5885v3服务器查看配置信息,rh5885 v3 服务器配置
  16. 一场中国顶级赛事掀起的浪潮:AI人才,应该这么培养!
  17. crypto-js aes 加解密
  18. OpenWrt路由器无线中继、信号放大实现
  19. 小程序在线支付教程一
  20. 【SystemVerilog基础】SystemVerilog语法之逻辑等(==)、全等(===)和匹配等(==?)

热门文章

  1. Windows Azure-2.5天免费深度技术训练营——面向软件工程师和架构师
  2. 网络工程原理与实践教程实验安排
  3. 学习LINUX第三天:最简单的LAMP组合(适合初学者)
  4. 模板 - 数学 - 数论 - 莫比乌斯反演 - 2
  5. mvc学习-编辑提交需要注意-mvc重点
  6. 软件测试系列---软件测试基础
  7. .NET 网站自动登录
  8. 博客园写的第一篇文章
  9. GridView和DetailsView在同一页与不同页两种情况的联动
  10. ADOQuery1.FieldByName AsString trim