ELK logstash 结构(22nd)

2025-05-25 0 103

在命令行中指定-e参数,从标准输入到标准输出,并格式化结果。

# /opt/logstash/bin/logstash -e \'input{stdin{}}output{stdout{codec=>rubydebug}}\'
www.ttlsa.com
Settings: Default filter workers: 2
Logstash startup completed
{
       \"message\" => \"www.ttlsa.com\",
      \"@version\" => \"1\",
    \"@timestamp\" => \"2015-12-07T06:57:01.981Z\",
          \"host\" => \"localhost\"
}

logstash会给事件添加一些额外的信息,如@timestamp,标注事件发生的时间。host标注事件发生的主机。此外,还可能有下面几个信息:

type:标记事件的唯一类型

tags:标记事件某方面属性,可以有多个标签。

每个事件就是一个ruby对象,可以随意的给事件添加或者删除字段。每个logstash过滤插件,都会有四个方法add_tag,remove_tag,add_field, remove_field,它们在过滤匹配成功时生效。

logstash管道必须要有input和output元素,filter元素是可选的。input插件定义数据来源,filter插件用来修改用户指定的数据,output插件定义数据写入何地。

logstash结构如下所示:

下面是一个配置管道:

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
}

在现实情况下,数据来源可能有多个,以及将数据写入到不同的目的地。logstash管道可以使用多个input和output来处理这些需求。

下面的例子从Twitter feed和Filebeat input,将信息发送到elasticsearch集群和直接写入到文件。

input {
    twitter {
        consumer_key =>
        consumer_secret =>
        keywords =>
        oauth_token =>
        oauth_token_secret =>
    }
    beats {
        port => \"5043\"
        ssl => true
        ssl_certificate => \"/path/to/ssl-cert\"
        ssl_key => \"/path/to/ssl-key\"
    }
}
output {
    elasticsearch {
        hosts => [\"IP Address 1:port1\", \"IP Address 2:port2\", \"IP Address 3\"]
    }
    file {
        path => /path/to/target/file
    }
}

Filebeat debug信息:

# filebeat -d \'publish\' -e
2015/12/07 07:46:12.170451 publish.go:100: DBG  Publish: {
  \"@timestamp\": \"2015-12-07T07:46:09.670Z\",
  \"beat\": {
    \"hostname\": \"elk.ttlsa.com\",
    \"name\": \"elk.ttlsa.com\"
  },
  \"count\": 1,
  \"fields\": null,
  \"input_type\": \"log\",
  \"message\": \"218.28.24.98 - - [07/Dec/2015:15:46:07 +0800] \\\"POST /www.ttlsa.com HTTP/1.0\\\" 200 0.139 0.141 3890 \\\"-\\\" \\\"Apache-HttpClient/UNAVAILABLE (java 1.4)\\\" \\\"\\\" \\\"\\\" http 127.0.0.1:9000\",
  \"offset\": 12145391,
  \"source\": \"/data/logs/nginx/www.ttlsa.com-access.log\",
  \"type\": \"nginx\"
}

停止logstash服务的失效检测

正常关闭logstash服务的步骤如下:

  • 关闭所有的input、filter和output插件
  • 处理完正在处理的事件
  • 中止logstash进程

下列因素影响关闭过程:

  • input插件缓慢的接收数据
  • 缓慢的filter
  • output插件断开连接等待重连

这些情况使成功关闭logstash的服务不可预知。

logstash具有分析管道行为和插件停止的失效检测机制。这种机制周期性的产生有关内部事件队列和一系列繁忙工作线程的信息。

为了强制logstash停止,可以在启动时加上–allow-unsafe-shutdown参数。不过不推荐使用,以免丢失数据。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 ELK logstash 结构(22nd) https://www.kuaiidc.com/51364.html

相关文章

发表评论
暂无评论