Logstash笔记(四) ----output插件

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

(一),标准输出 

     和之前 inputs/stdin 插件一样,outputs/stdout 插件也是最基础和简单的输出插件。同样在这里简单介绍一下,作为输出插件的一个共性了解

配置事例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
output {
     stdout {
         codec => rubydebug
         workers => 2
     }
}
 
==等同于
output {
     stdout {
         codec => rubydebug {
         }
         workers => 2
     }
}
#######以下的命令常用于调试信息。
[root@localhost logstash] # /usr/local/logstash/bin/logstash -f test/geoip2.conf
  -vv

解释:输出插件统一具有一个参数是workers,logstash为输出做了多线程的准备。其次就是codec 设置。codec 的作用在之前已经讲过。可能除了 codecs/multiline ,其他 codec 插件本身并没有太多的设置项。所以一般省略掉后面的配置区段。换句话说。上面配置示例的完全写法应该是:


(二).保存成文件File

      通过日志收集系统将分散在数百台服务器上的数据集中存储在某中心服务器上,这是运维最原始的需求。早年的 scribed ,甚至直接就把输出的语法命名为 <store>。Logstash 当然也能做到这点。

和 LogStash::Inputs::File 不同, LogStash::Outputs::File 里可以使用 sprintf format 格式来自动定义输出到带日期命名的路径。

1
2
3
4
5
6
7
output {
     file  {
         path =>  "/path/to/%{+yyyy/MM/dd/HH}/%{host}.log.gz"
         message_format =>  "%{message}"
         gzip  =>  true
     }
}

  使用 output/file 插件首先需要注意的就是 message_format 参数。插件默认是输出整个 event 的 JSON 形式数据的。这可能跟大多数情况下使用者的期望不符。大家可能只是希望按照日志的原始格式保存就好了。所以需要定义为 %{message},当然,前提是在之前的 filter 插件中,你没有使用 remove_field 或者 update 等参数删除或修改 %{message} 字段的内容

gzip 是否采用压缩格式。就可以一段一段的识别出来数据 —— 反过来说,也就是可以一段一段压缩了添加在后面!


(三).保存进 Elasticsearch

output {
    elasticsearch {
        host => "192.168.0.2"
        protocol => "http"
        index => "logstash-%{type}-%{+YYYY.MM.dd}"
        index_type => "%{type}"
        workers => 5
        template_overwrite => true
    }
}

目前协议支持三种协议:node . http 和tranaport


(四).输出到Redis

input { stdin {} }
output {
    redis {
        data_type => "channel"
        key => "logstash-chan-%{+yyyy.MM.dd}"
    }
}

用 redis-cli 命令行来演示 outputs/redis 插件的实质


(五).发送网络数据(TCP)

output {
    tcp {
        host  => "192.168.0.2"
        port  => 8888
        codec => json_lines
    }
}

    在收集端采用 tcp 方式发送给远端的 tcp 端口。这里需要注意的是,默认的 codec 选项是 json。而远端的 LogStash::Inputs::TCP 的默认 codec 选项却是 plain !所以不指定各自的 codec ,对接肯定是失败的。

另外,由于IO BUFFER 的原因,即使是两端共同约定为 json 依然无法正常运行,接收端会认为一行数据没结束,一直等待直至自己 OutOfMemory !

所以,正确的做法是,发送端指定 codec 为 json_lines ,这样每条数据后面会加上一个回车,接收端指定 codec 为 json_lines 或者 json 均可,这样才能正常处理。包括在收集端已经切割好的字段,也可以直接带入收集端使用了


本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1929844

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
监控 容器
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
141 0
|
负载均衡 关系型数据库 MySQL
ElasticStack----Elasticsearch简介
ElasticStack----Elasticsearch简介
108 0
ElasticStack----Elasticsearch简介
|
消息中间件 NoSQL Oracle
logstash_output_mongodb插件用途及安装详解
0、logstash-output-mongodb用途 Writes events to MongoDB,也就是向mongodb里面写入数据。 来源可以是:jdbc类的Mysql、oracle关系型数据库;也可以是Elasticsearch等。 后续的同步应用中会用到该插件,所以单独列出来。并且,默认logstash不安装该插件,需要手动安装。
353 0
|
JSON 数据格式 Python
logstash6.8.12动态生成elasticsearch的index的正确方法
网上有很多的【假】logstash动态生成index的文章,看了很多,根本不符合我的需求,所以我决定来一篇干货,真正的解决问题。人狠话不多,代码直接上。我是使用官方提供的helm包进行ELK安装的
722 0
logstash6.8.12动态生成elasticsearch的index的正确方法
|
Web App开发 编解码 应用服务中间件

热门文章

最新文章