ELK STACK之logstash入门

ELK STACK ginotang 1377℃ 0评论

logstash简介

logstash是一个开源的数据收集引擎,它可以从多渠道获取数据。除此之外,它还具有数据过滤,数据传输的功能。logstash整个工作流分为三个阶段:输入、过滤、输出。每个阶段都有强大的插件提供支持:

Input常用的插件有

  • file 从文件系统收集数据
  • syslog 从syslog日志收集数据
  • redis 从redis收集日志
  • beats 从beats family收集日志

Filter常用的插件有

  • grok grok是logstash中最常用的日志解释和结构化插件
  • mutate 支持事件的变换,例如重命名、移除、替换、修改等
  • drop 完全丢弃事件
  • clone 克隆事件
  • geoip 给ip地址添加地址信息

输出常用的插件有

  • elasticsearch 把数据输出到elasticsearch
  • file 把数据输出到普通的文件
  • graphite 把数据输出到graphite
  • statsd 把数据输出到statsd

安装和运行logstash

最简单的安装方法是使用官方提供的rpm包,由于logstash是基于java开发的,因此运行logstash前必须先安装java运行环境。

配置文件

logstash有两种类型的配置文件。

  1. /etc/logstash/logstash.yml,用于配置logstash的基础设置
  2. /etc/logstash/conf.d/目录下以conf结尾的文件,用于指定logstash的数据输入,过滤以及输出,通常称为pipeline配置文件。

第一个文件的默认配置就可以满足logstash的运行,因此我们只需要添加pipeline(工作流)文件。/etc/logstash/con.d/目录下面默认没有任何东西,需要我们自己添加。

最简单的pipeline文件格式如下(过滤器是可选项):

假如我们要把apache的访问日志传输到elasticsearch,那么需要这样配置:

配置文件是:/etc/logstash/conf.d/apache.conf

配置完毕之后,就可以启动logstash

过一段时间之后,elasticsearch中就会出现一个apache-log开头的索引,说明logstash正常运行且配置正确。

logstash插件

Input

常用的Input插件有:beats、file、redis、rabbitmq、kafka等

  • file插件

    从普通的文本文件中读取数据,

  • beats插件

    用于给beat家族提供支持,接收beat家族(如filebeat)收集的数据,然后发送给logstash

官方网站上面有这些插件的基本使用方法,因此不在这里一一列举。详细可访问:logstash 插件

Filters

常用的过滤器插件有:grok、date、geoip、mutate、drop等

  • grok

    基于Oniguruma正则表达式,用于解析日志数据中的内容,匹配到的内容会被作为新增字段添加到原有数据中。

    grok pattern的语法是:

    SYNTAX代表一个预定义的正则表达式,SEMANTIC则是这个正则表达式的说明(会作为解析后额外字段的说明文字,如下所示),例如文本

    通过grok pattern解析

    原有数据中会添加如下额外字段:

    • client: 55.3.244.1
    • method: GET
    • request: /index.html
    • bytes: 15824
    • duration: 0.043

    grok内置大量的pattern,具体可到grok patterm查看。

  • date

    用于解析字段中的时间值,可重新定义时间的格式,解析后的值会作为logstash事件(events)的timestamp。

  • geoip

    根据ip地址添加额外的地域信息,例如国家、时区、经纬等信息

Output

常用的输出插件有:elasticsearch、files、statsd。

  • elasticsearch

    把日志输出到elasticsearch数据库中

转载请注明:Pure nonsense » ELK STACK之logstash入门

喜欢 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x