LogStash

  • timestamp 用来标记事件的发生时间。因为这个字段涉及到Logstash的内部流转,所以必须是一个joda对象,如果你尝试自己给一个字符串字段重命名为@timestamp的话,Logstash会直接报错。所以,请使用 filter/date插件来管理这个字段。
  • type 标记事情的唯一类型。
  • host 标记事情发生在哪里。
  • tags 标记事件的某方面属性。只是一个数组,一个时间可以有多个标签。
  • version 标记事件的版本信息
  • id 标记事件分配的ID信息
  • index 标记事件所在的索引
  • score

    可以随意的给事件添加字段或者从事件里删除字段。事实上事件就是一个Ruby对象。
    命令行配置Logstash 提供了一个shell脚本叫logstash,支持以下参数:

  • -e 执行。 bin/logstash -e 是执行一个默认的配置。

  • –config 或 -f 文件。
    真实运用中,我们会写很长的配置,甚至可能超过shell锁能支持的1024个字符长度。所以我们必须把配置固话到文件里,然后通过 bin/logstash -f agent.conf 这样的形式来运行。

    可以直接用 bin/logstash -f /etc/logstash.d/ 来运行,这样logstash会自动读取/etc/logstash.d/目录下所有的*.conf 的文本文件,然后在自己内存里拼接成一个完整的大配置文件,再去执行。

  • –configtest 或 -t 测试。
    用来测试Logstash读取到的配置文件语法是否能正常解析。LogStash列出目录下所有文件时,是用字母排序的。

  • –logs 或 -l 日志。
    Logstash默认输出日志到标准错误。

  • –filterworkers 或 -w 工作线程。
    Logstash会运行多个线程。可以使用 bin/logstash -w 5 这样的方式强制Logstash为过滤插件运行5个线程。在Logstash-2.0之前,该参数默认是1,之后修改为自动适配CPU核数的一半。

  • –verbose 输出一定的调试日志。

  • – debug 输出更多的调试日志。

过程管道

  • Inputs:你使用Inputs去获取数据到Logstash中,下面是一些常用的inputs类型。

    • file:从文件中读取,类似于UNIX命令中的 tail -0f
    • syslog:监听514端口上的系统日志消息,并且根据RFC3164格式来解析。
    • redis:从redis服务读取信息,使用redis管道和redis列表。Redis经常用来使用作为一个“broker”在一个集中的Logstash安装,运输Logstash事件从一个远程的Logstash“shippers”。
    • beats:由Filebeat发送的进程事件。
  • FIlters:FIlters是在Logstash管道中的中间运输设备。你可以组合过滤条件来对符合一定规则的事件进行操作。

    • grok:解析和构建任意文本。Grok是当前在Logstash中去解析未构建的日志数据变成结构化和可查询的最佳方式。在Logstash中内置了120个模式,总有一个会符合你的需求。
    • mutate:执行对事件字段的一般转换。你可以重命名,删除,替换和修改字段。
    • drop:丢掉一个事件,例如debug事件。
    • clone:给事件做一个副本,可能添加或删除字段。
      -geoip:添加关于Ip地址的地理位置信息。
  • Outputs:Outputs是Logstash传输途径中的最后解析。一个事件可以有多个输出,但是一旦所有的输出处理完成后,该事件就完成了它的执行。

    • elasticsearch:传输数据给Elasticsearch。如果你打算保存数据在一个高效的,方便的,更轻松的可查询结构中。
    • file: 将事件数据写在磁盘中。
    • graphite:把数据传输到graphite,一个受欢迎的开源工具用来保存和图表化数据。
    • statsd:Statsd是一个简单的网络守护进程,基于Node.js平台,通过UDP或者TCP方式侦听各种统计信息,包括计数器和定时器,并发送聚合信息到后端服务。
  • Codecs:基于流,可以对一部分输入输出做过滤的操作。Codes可以让你轻松的将消息从序列化的过程中分离出来。

    • json:编码或解码数据为Json格式。
    • multiline:合并多行数据事件例如java异常和堆栈信息为一个单独的事件。

    管道在现在的版本中过滤器和输出都在同一个线程中。在2.2之前的版本中,过滤器和输出都存储在单独的空间,被独立的线程处理。新的管道大大增加了线程活跃度,减少了资源使用,提高了吞吐率。当前的Logstash管道是一个微型batching管道,比一次做一件事的方法更高效。这些效率来自很多地方,有两个比较突出的在于争夺资源的减少和线程活跃度的提高。
    命令行标识Logstash有许多的命令标识。你可以使用 –help标识来展示这些信息。

Nginx : 从1.7版开始,加入了syslog支持。可以通过syslog直接发送日志出来。

配置:

access_log syslog:server=unix:/data0/rsyslog/nginx.sock locallog;

或者直接发送给远程logstash
access_log syslog:server=192.168.0.2:5140,facility=local6,tag=ngnix-access,severity=info logstashlog;
在这种情况下,Ngnix将使用local7.info等级,ngnix为标签,发送数据。注意,采用syslog发送日志的时候,无法配置buffer=16k选项。
Log4J 配置直接通过log4j写入到logstash中。
XML配置文件:
需要配置Java应用的Log4J设置,启动一个内置的

<appender name="LOGSTASH" class="org.apache.log4j.net.SocketAppender">
<param name="RemoteHost" value="logstash_hostname" />
<param name="ReconnectionDelay" value="60000" />
<param name="LocationInfo" value="true" />
<param name="Threshold" value="DEBUG" />
</appender>

然后把这个新定义的appender对象加入到 root logger 里,可以跟其他已有logger共存。

<root>
<level value="INFO"/>
<appender-ref ref="OTHERPLACE"/>
<appender-ref ref="LOGSTASH"/>
</root>

properties文件配置:

log4j.rootLogger=DEBUG, logstash

SocketAppender

log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=4560
log4j.appender.logstash.RemoteHost=logstash_hostname
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true
  • logstash 支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。

Input

  • collected 是一个守护进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。它会在系统运行和存储信息时周期性的统计系统的相关统计信息。利用这些信息有助于查找当前系统性能瓶颈(如作为性能分析)和预测系统未来的load等。

  • Generator生成测试数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值