在实际应用中,Logstash进程会被氛围两个不同的角色。

运行在应用服务器上的尽量减轻运行压力,只做读取和转发,这个角色叫做shipper

运行在独立的服务器上完成数据解析处理,负责写入到Elasticsearch的角色,叫做Indexer

5.1.1 读取redis 数据:

zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf
Settings: Default pipeline workers: 1
Pipeline main started
{
"message" => "Hello world",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-08-19T06:26:12.854Z"
} zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
input {
redis {
data_type =>"pattern_channel"
key =>"logstash-*"
host=>"192.168.32.67"
port=>6379
password => "1234567"
}
} output {
stdout {
codec=>rubydebug{}
}
} 采用list类型扩展Logstash: 127.0.0.1:6379> PUBLISH logstash-list "Hello xxxxxx"
(integer) 2
127.0.0.1:6379> PUBLISH logstash-list "Hello yyyyy" zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf Settings: Default pipeline workers: 1
Pipeline main started
{
"message" => "Hello xxxxxx",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-08-19T07:46:27.031Z"
}
{
"message" => "Hello yyyyy",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-08-19T07:46:37.365Z" zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf Settings: Default pipeline workers: 1
Pipeline main started
{
"message" => "Hello xxxxxx",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-08-19T07:46:26.964Z"
}
{
"message" => "Hello yyyyy",
"tags" => [
[0] "_jsonparsefailure"
],
"@version" => "1",
"@timestamp" => "2016-08-19T07:46:37.362Z"
} zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
input {
redis {
data_type =>"pattern_channel"
key =>"logstash-list"
host=>"192.168.32.67"
port=>6379
password => "1234567"
}
} output {
stdout {
codec=>rubydebug{}
}
} 两个终端同时启动logstash -f redis.conf 进程,结果会是两个终端都输出消息。 这个时候,就需要用list 类型,在这种类型中,数据输入到Redis 服务器上暂存,Logstash 则连上Redis 服务器取走(BLPOP命令,所以只要logstash不堵塞,redis 服务器上也不会 有数据堆积占用空间)数据。 1.配置示例: zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
input {
redis {
data_type =>"list"
key =>"logstash-list"
host=>"192.168.32.67"
port=>6379
password => "1234567"
}
} output {
stdout {
codec=>rubydebug{}
}
} 这时候可以看到, 只有一个终端输出了结果 连续RPUSH几次, 可以看到两个终端近乎各自输出一半条目。 3.批量推送:
RPUSH 支持batch 方式,修改Logstash 配置中的batch_count值, 5.1.3 输出到Redis: 1.配置示例 zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat inputredis.conf
input {stdin {} }
output {
redis {
data_type =>"channel"
key=>"logstash-chan-%{+yyyy.MM.dd}"
host=>"192.168.32.67"
port=>6379
password => "1234567"
}
} 127.0.0.1:6379> SUBSCRIBE logstash-chan-2016.08.19
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "logstash-chan-2016.08.19"
3) (integer) 1
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.190Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.736Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.772Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.808Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.844Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.880Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.916Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"hello world\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:10.486Z\",\"host\":\"0.0.0.0\"}"
1) "message"
2) "logstash-chan-2016.08.19"
3) "{\"message\":\"what'sup scab\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:37.919Z\",\"host\":\"0.0.0.0\"}"

logstash 操作redis的更多相关文章

  1. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  2. Java中使用Jedis操作Redis(转载)

    整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...

  3. (转)Java中使用Jedis操作Redis

    转自http://www.cnblogs.com/liuling/p/2014-4-19-04.html 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://file ...

  4. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

  5. php操作redis简单例子

    <?php //在PHP里操作Redis //Redis就是php的一个功能类 //创建Redis对象 $redis = new Redis(); //链接redis服务器 $redis -&g ...

  6. python——操作Redis

    在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...

  7. 使用jedis操作redis

    一 连通性 1. 简单代码测试连通性 Jedis jedis = new Jedis(".......", 6379); String keys = "name" ...

  8. Java中使用Jedis操作Redis

    使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis ...

  9. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

随机推荐

  1. 简便数据库——ORMLite框架

    一.创建DataBase //使用 Singleton 避免產生多個實例(instance),要注意 thread safe 這邊使用雙重鎖定(Double-checked locking) 使用 T ...

  2. c语言 列出系统进程

    #include <stdio.h> #include "stdafx.h" #include <Windows.h> #include <strin ...

  3. 解决nginx上传模块nginx_upload_module传递GET参数

    解决nginx上传模块nginx_upload_module传递GET参数的方法总结 最近用户反映我们的系统只能上传50M大小的文件, 希望能够支持上传更大的文件. 很显然PHP无法轻易实现大文件上传 ...

  4. 深入浅出畅谈Zigbee

    ZigBee采用802.15.4标准作为其对等通信的基础.该标准由ZigBee联盟(ZigBee Alliance)开发并管理.ZigBee Alliance是一家投资于该标准并在无线领域进行推广的联 ...

  5. Qt之QTemporaryFile(文件名唯一,且可以自动删除)

    简述 QTemporaryFile类是操作临时文件的I/O设备. QTemporaryFile用于安全地创建一个独一无二的临时文件.临时文件通过调用open()来创建,并且名称是唯一的(即:保证不覆盖 ...

  6. Windows去掉桌面SVN文件或文件夹问号

    将版本库 的内容检出 到桌面,后才发现桌面上的文件 都变成了问号,本来也以为没有多大问题,删除 .svn 即可,可是删除所有的.svn后,桌面上还是显示问号,刷新了很多次,还重启电脑 了,问号也没有消 ...

  7. linux内核--进程地址空间(一)

    引言:现代操作系统提供了一种对内存的抽象概念,叫做虚拟存储器,它为每个进程提供了一个大的,一致的,和私有的地址空间.通过一个很清晰的机制,虚拟存储器提供了3个重要的能力: 1)它将主存看成是一个存储在 ...

  8. jdbc详解(三)

    开源数据库连接池 l 现在很多 WEB 服务器 ( Weblogic , WebSphere , Tomcat) 都提供了 DataSoruce 的实现,即连接池的实现.通常我们把 DataSourc ...

  9. 一道来自华为的C机试题目

    题目是这样的 求一个字符串中连续字母的个数 比如I have a book. : 1 I have a dog. : 0 I haavee aa dogg : 4 #include <windo ...

  10. 如何使用TestFlight进行App构建版本测试(转)

    在日常的开发当中,当一个项目在开发过程中或者完成准备上线,都需要我们进行真机测试,否则不可能开发完了就直接扔到了App,等上线了再下载看看,这都是不可能的.那么说到真机测试,大家肯定会想到弄一个99美 ...