logstash 操作redis
- 在实际应用中,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的更多相关文章
- Java Spring mvc 操作 Redis 及 Redis 集群
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...
- Java中使用Jedis操作Redis(转载)
整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...
- (转)Java中使用Jedis操作Redis
转自http://www.cnblogs.com/liuling/p/2014-4-19-04.html 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://file ...
- Python—操作redis
Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...
- php操作redis简单例子
<?php //在PHP里操作Redis //Redis就是php的一个功能类 //创建Redis对象 $redis = new Redis(); //链接redis服务器 $redis -&g ...
- python——操作Redis
在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...
- 使用jedis操作redis
一 连通性 1. 简单代码测试连通性 Jedis jedis = new Jedis(".......", 6379); String keys = "name" ...
- Java中使用Jedis操作Redis
使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis ...
- Python操作Redis、Memcache、RabbitMQ、SQLAlchemy
Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...
随机推荐
- [汇编语言]-第二章寄存器(CPU工作原理)
1- 对于汇编程序员来说,CPU中主要的部件是寄存器,这些寄存器是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW. 2- 8086CPU所有寄存器都是16位的, ...
- python实现简单表单校验框架
# encoding=utf-8 from app.models import Student from flask import g import re from flask.ext.wtf imp ...
- python 源代码分析之调试设置
首先在官方下载源代码,我下载的是最新版本3.4.3版本:https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz 解压后的目录如下(借用网上的目 ...
- javascript的stringFormat函数实现
写一个简单的stringFormat来给自己用 function stringFormat(format, args) { var formatData; if (arguments.length = ...
- USB 传输协议
Pipe USB的pipe的两端分别指的是USB host端的内存区域,和设备端的endpoint. pipe分为两类,一类是stream pipe, 另一类是message pipe. 两类的主要区 ...
- 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson
只有勇敢的人.鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson http://www.cnblogs.com/lchrennew/p/Why-The-Future-Of-Agile- ...
- linux之SQL语句简明教程---BETWEEN
IN 这个指令可以让我们依照一或数个不连续 (discrete) 的值的限制之内抓出数据库中的值,而BETWEEN 则是让我们可以运用一个范围 (range) 内抓出数据库中的值.BETWEEN 这个 ...
- flex——dictionary跟Object的区别与遍历
AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键.例如 ...
- 关于VMware导入Linux VM找不到网卡的问题
今天遇到一个问题:由于虚拟机升级,导致以前的Linux VM(CentoS 6.7)在新的VMware里面打开,系统提示找不到网卡的问题,在网上找了好多解决办法,基本上都是一样的答案. 与网卡有关的几 ...
- linux共享内存简析
共享内存是IPC的一种机制,允许两个不相关的进程共享同一块内存 //共享内存可以双向通信,但其本身没有相应机制,需要程序编写者设计,本例为单向通信(分为读端和写端). 共享内存读端: #include ...