ELK logstash 结构(22nd)

默北 ELKELK logstash 结构(22nd)已关闭评论179字数 2003阅读6分40秒阅读模式

在命令行中指定-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标注事件发生的主机。此外,还可能有下面几个信息:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

type:标记事件的唯一类型文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

tags:标记事件某方面属性,可以有多个标签。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

每个事件就是一个ruby对象,可以随意的给事件添加或者删除字段。每个logstash过滤插件,都会有四个方法add_tag,remove_tag,add_field, remove_field,它们在过滤匹配成功时生效。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

logstash管道必须要有input和output元素,filter元素是可选的。input插件定义数据来源,filter插件用来修改用户指定的数据,output插件定义数据写入何地。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

logstash结构如下所示:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

ELK文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

下面是一个配置管道:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

# 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来处理这些需求。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

下面的例子从Twitter feed和Filebeat input,将信息发送到elasticsearch集群和直接写入到文件。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

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信息:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

# 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服务的失效检测文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

正常关闭logstash服务的步骤如下:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

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

下列因素影响关闭过程:文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

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

这些情况使成功关闭logstash的服务不可预知。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

logstash具有分析管道行为和插件停止的失效检测机制。这种机制周期性的产生有关内部事件队列和一系列繁忙工作线程的信息。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

为了强制logstash停止,可以在启动时加上--allow-unsafe-shutdown参数。不过不推荐使用,以免丢失数据。文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/ 文章源自运维生存时间-https://www.ttlsa.com/elk/elk-logstash-structure/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 29/12/2015 01:56:33
  • 转载请务必保留本文链接:https://www.ttlsa.com/elk/elk-logstash-structure/