1. 在实际应用中,Logstash进程会被氛围两个不同的角色。
  2.  
  3. 运行在应用服务器上的尽量减轻运行压力,只做读取和转发,这个角色叫做shipper
  4.  
  5. 运行在独立的服务器上完成数据解析处理,负责写入到Elasticsearch的角色,叫做Indexer
  6.  
  7. 5.1.1 读取redis 数据:
  8.  
  9. zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf
  10. Settings: Default pipeline workers: 1
  11. Pipeline main started
  12. {
  13. "message" => "Hello world",
  14. "tags" => [
  15. [0] "_jsonparsefailure"
  16. ],
  17. "@version" => "1",
  18. "@timestamp" => "2016-08-19T06:26:12.854Z"
  19. }
  20.  
  21. zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
  22. input {
  23. redis {
  24. data_type =>"pattern_channel"
  25. key =>"logstash-*"
  26. host=>"192.168.32.67"
  27. port=>6379
  28. password => "1234567"
  29. }
  30. }
  31.  
  32. output {
  33. stdout {
  34. codec=>rubydebug{}
  35. }
  36. }
  37.  
  38. 采用list类型扩展Logstash
  39.  
  40. 127.0.0.1:6379> PUBLISH logstash-list "Hello xxxxxx"
  41. (integer) 2
  42. 127.0.0.1:6379> PUBLISH logstash-list "Hello yyyyy"
  43.  
  44. zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf
  45.  
  46. Settings: Default pipeline workers: 1
  47. Pipeline main started
  48. {
  49. "message" => "Hello xxxxxx",
  50. "tags" => [
  51. [0] "_jsonparsefailure"
  52. ],
  53. "@version" => "1",
  54. "@timestamp" => "2016-08-19T07:46:27.031Z"
  55. }
  56. {
  57. "message" => "Hello yyyyy",
  58. "tags" => [
  59. [0] "_jsonparsefailure"
  60. ],
  61. "@version" => "1",
  62. "@timestamp" => "2016-08-19T07:46:37.365Z"
  63.  
  64. zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf
  65.  
  66. Settings: Default pipeline workers: 1
  67. Pipeline main started
  68. {
  69. "message" => "Hello xxxxxx",
  70. "tags" => [
  71. [0] "_jsonparsefailure"
  72. ],
  73. "@version" => "1",
  74. "@timestamp" => "2016-08-19T07:46:26.964Z"
  75. }
  76. {
  77. "message" => "Hello yyyyy",
  78. "tags" => [
  79. [0] "_jsonparsefailure"
  80. ],
  81. "@version" => "1",
  82. "@timestamp" => "2016-08-19T07:46:37.362Z"
  83. }
  84.  
  85. zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
  86. input {
  87. redis {
  88. data_type =>"pattern_channel"
  89. key =>"logstash-list"
  90. host=>"192.168.32.67"
  91. port=>6379
  92. password => "1234567"
  93. }
  94. }
  95.  
  96. output {
  97. stdout {
  98. codec=>rubydebug{}
  99. }
  100. }
  101.  
  102. 两个终端同时启动logstash -f redis.conf 进程,结果会是两个终端都输出消息。
  103.  
  104. 这个时候,就需要用list 类型,在这种类型中,数据输入到Redis 服务器上暂存,Logstash 则连上Redis 服务器取走(BLPOP命令,所以只要logstash不堵塞,redis 服务器上也不会
  105.  
  106. 有数据堆积占用空间)数据。
  107.  
  108. 1.配置示例:
  109.  
  110. zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf
  111. input {
  112. redis {
  113. data_type =>"list"
  114. key =>"logstash-list"
  115. host=>"192.168.32.67"
  116. port=>6379
  117. password => "1234567"
  118. }
  119. }
  120.  
  121. output {
  122. stdout {
  123. codec=>rubydebug{}
  124. }
  125. }
  126.  
  127. 这时候可以看到, 只有一个终端输出了结果
  128.  
  129. 连续RPUSH几次, 可以看到两个终端近乎各自输出一半条目。
  130.  
  131. 3.批量推送:
  132. RPUSH 支持batch 方式,修改Logstash 配置中的batch_count值,
  133.  
  134. 5.1.3 输出到Redis
  135.  
  136. 1.配置示例
  137.  
  138. zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat inputredis.conf
  139. input {stdin {} }
  140. output {
  141. redis {
  142. data_type =>"channel"
  143. key=>"logstash-chan-%{+yyyy.MM.dd}"
  144. host=>"192.168.32.67"
  145. port=>6379
  146. password => "1234567"
  147. }
  148. }
  149.  
  150. 127.0.0.1:6379> SUBSCRIBE logstash-chan-2016.08.19
  151. Reading messages... (press Ctrl-C to quit)
  152. 1) "subscribe"
  153. 2) "logstash-chan-2016.08.19"
  154. 3) (integer) 1
  155. 1) "message"
  156. 2) "logstash-chan-2016.08.19"
  157. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.190Z\",\"host\":\"0.0.0.0\"}"
  158. 1) "message"
  159. 2) "logstash-chan-2016.08.19"
  160. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.736Z\",\"host\":\"0.0.0.0\"}"
  161. 1) "message"
  162. 2) "logstash-chan-2016.08.19"
  163. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.772Z\",\"host\":\"0.0.0.0\"}"
  164. 1) "message"
  165. 2) "logstash-chan-2016.08.19"
  166. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.808Z\",\"host\":\"0.0.0.0\"}"
  167. 1) "message"
  168. 2) "logstash-chan-2016.08.19"
  169. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.844Z\",\"host\":\"0.0.0.0\"}"
  170. 1) "message"
  171. 2) "logstash-chan-2016.08.19"
  172. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.880Z\",\"host\":\"0.0.0.0\"}"
  173. 1) "message"
  174. 2) "logstash-chan-2016.08.19"
  175. 3) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:07.916Z\",\"host\":\"0.0.0.0\"}"
  176. 1) "message"
  177. 2) "logstash-chan-2016.08.19"
  178. 3) "{\"message\":\"hello world\",\"@version\":\"1\",\"@timestamp\":\"2016-08-19T08:27:10.486Z\",\"host\":\"0.0.0.0\"}"
  179. 1) "message"
  180. 2) "logstash-chan-2016.08.19"
  181. 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. [汇编语言]-第二章寄存器(CPU工作原理)

    1- 对于汇编程序员来说,CPU中主要的部件是寄存器,这些寄存器是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW. 2- 8086CPU所有寄存器都是16位的, ...

  2. python实现简单表单校验框架

    # encoding=utf-8 from app.models import Student from flask import g import re from flask.ext.wtf imp ...

  3. python 源代码分析之调试设置

    首先在官方下载源代码,我下载的是最新版本3.4.3版本:https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz 解压后的目录如下(借用网上的目 ...

  4. javascript的stringFormat函数实现

    写一个简单的stringFormat来给自己用 function stringFormat(format, args) { var formatData; if (arguments.length = ...

  5. USB 传输协议

    Pipe USB的pipe的两端分别指的是USB host端的内存区域,和设备端的endpoint. pipe分为两类,一类是stream pipe, 另一类是message pipe. 两类的主要区 ...

  6. 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson

    只有勇敢的人.鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson http://www.cnblogs.com/lchrennew/p/Why-The-Future-Of-Agile- ...

  7. linux之SQL语句简明教程---BETWEEN

    IN 这个指令可以让我们依照一或数个不连续 (discrete) 的值的限制之内抓出数据库中的值,而BETWEEN 则是让我们可以运用一个范围 (range) 内抓出数据库中的值.BETWEEN 这个 ...

  8. flex——dictionary跟Object的区别与遍历

    AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键.例如 ...

  9. 关于VMware导入Linux VM找不到网卡的问题

    今天遇到一个问题:由于虚拟机升级,导致以前的Linux VM(CentoS 6.7)在新的VMware里面打开,系统提示找不到网卡的问题,在网上找了好多解决办法,基本上都是一样的答案. 与网卡有关的几 ...

  10. linux共享内存简析

    共享内存是IPC的一种机制,允许两个不相关的进程共享同一块内存 //共享内存可以双向通信,但其本身没有相应机制,需要程序编写者设计,本例为单向通信(分为读端和写端). 共享内存读端: #include ...