最新在使用Lostash2.3.4收集数据的时候,在读取redis数据的时候,报了如下的一个异常:

异常如下

Pipeline aborted due to error {:exception=>#<URI::InvalidURIError: the scheme redis does not accept registry part: redis_master_10214 (or bad hostname?)>, :backtrace=>["/home/search/logstash-2.3.4/vendor/jruby/lib/ruby/1.9/uri/generic.rb:214:in `initialize'"

Logstash自带的ruby是1.9的版本,自带集成的redis插件也是最新的redis-rb3.3.1

Logstash里面默认自带了redis插件,也就是redis-rb3.3.1

如果没带可以进入logstash目录:

logstash-2.3.4\vendor\jruby\bin进行安装

cd logstash-2.3.4\vendor\jruby\bin
gem install redis

如果redis采用的是哨兵模式的集群,那么redis-rb插件也是支持的,具体的看官网github文档:

https://github.com/redis/redis-rb

logstash的代码如下:

input{
stdin{}
} filter{ ruby{
init => "
require 'redis' class Rconn
@@SENTINELS = [{:host => '192.168.10.214', :port => 26381},
{:host => '192.168.10.214', :port => 26382},
{:host => '192.168.10.214', :port => 26383}]
def self.con
@@con
end def self.SENTINELS
@@SENTINELS
end
@@con = Redis.new(:url => 'redis://redismaster10214', :sentinels => Rconn.SENTINELS, :role => :master)
end
"
code => "
event['redis_data']=Rconn.con.get(event['message'])
"
}
} output{
stdout { codec => rubydebug }
}

注意下面这句话

:url => 'redis://redismaster10214'

redis的哨兵masterName在ruby1.9中必须不能带下划线,否则会报下面的异常:

错误的用法

:url => 'redis://redis_master_10214'
<URI::InvalidURIError: the scheme redis does not accept registry part: redis_master_10214 (or bad hostname?)>,

ruby里面的标准的url校验,发现url里面如果有带下划线的,会认为是不合法的url,具体可参考下面两个问题连接:

https://github.com/docker/compose/issues/472

http://stackoverflow.com/questions/2180465/can-domain-name-subdomains-have-an-underscore-in-it

目前在ruby1.9的版本中发现此bug,使用最新的版本ruby2.3.0则没有此问题,说明在高版本的ruby中 已经修复了此问题,但是logstash最新的版本绑定的jruby版本是1.9的ruby,所以还存在此问题,只能在使用时避免,真是血泪教训,花费了大半天时间趟的坑。

有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。 

Logstash2.3.4趟坑之集成Redis哨兵模式的更多相关文章

  1. Springboot2.x集成Redis哨兵模式

    Springboot2.x集成Redis哨兵模式 说明 Redis哨兵模式是Redis高可用方案的一种实现方式,通过哨兵来自动实现故障转移,从而保证高可用. 准备条件 pom.xml中引入相关jar ...

  2. Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存

    本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...

  3. Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步,一定要绑定内网IP,而对于跨机房的问题,可以使用iptables进行nat转发来解决.

  4. Redis哨兵模式大key优化

    目前,Redis哨兵模式,内存资源有限,有很多key大于500M,性能待优化.需要迁移至Redis-cluster集群中.        涉及到的key如下: 0,hash,duser_record, ...

  5. [Redis] Redis哨兵模式部署 - zz胖的博客

    1. 部署Redis集群 redis的安装及配置参考[redis部署] 本文以创建一主二从的集群为例. 1.1 部署与配置 先创建sentinel目录,在该目录下创建8000,8001,8002三个以 ...

  6. Redis 哨兵模式(Sentinel)

    上一篇我们介绍了 redis 主从节点之间的数据同步复制技术,通过一次全量复制和不间断的命令传播,可以达到主从节点数据同步备份的效果,一旦主节点宕机,我们可以选择一个工作正常的 slave 成为新的主 ...

  7. 搭建redis哨兵模式

    搭建redis哨兵模式,一主两从三哨兵   1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...

  8. Redis哨兵模式的配置

    绪论 现有三台设备,192.168.137.11.192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其 ...

  9. Spring Boot 如何快速集成 Redis 哨兵?

    上一篇:Spring Boot 如何快速集成 Redis? 前面的分享栈长介绍了如何使用 Spring Boot 快速集成 Redis,上一篇是单机版,也有粉丝留言说有没有 Redis Sentine ...

随机推荐

  1. 拾遗:git pull 与 push 远程分支与本地分支顺序识别问题

    最后放置的都是数据最终到达的仓库分支名称 对于pull来说,是拉到本地,所以本地仓库分支名称写在最后 git pull [--force] [remote repo]:[my repo] 对于push ...

  2. 剑指offer——55两个链表的第一个公共节点

    题目描述 输入两个链表,找出它们的第一个公共结点. 题解: 分别遍历两个链表到链尾,并计算其长度,若最后一个节点相同,则存在公共节点 然后让长链表指针从头先移动长度差个节点,然后两个链表指针一起移动, ...

  3. Node篇

    [Node篇] Node.js中的stream(流)- 基础篇 1)什么是stream(流) 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface). ...

  4. springbot项目中使用继承

    package com.example.demo.controller; import com.sun.org.apache.bcel.internal.generic.NEW; import org ...

  5. 对象拷贝extend

    如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法 语法: $.extend([deep],target,object1,[objectN]); 1.deep:如果 ...

  6. 枚举对象中的属性 for . . in

    枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var  变量  in  对象){ } for  . . . in 语句  对象中有几个属性,循 ...

  7. pandas-索引

    一.按列取.按索引/行取.按特定行取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFrame( ...

  8. SLF4J log4j 不打印日志

      SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no ...

  9. Shell [[]]详解:检测某个条件是否成立

    [[ ]]是 Shell 内置关键字,它和 test 命令类似,也用来检测某个条件是否成立. test 能做到的,[[ ]] 也能做到,而且 [[ ]] 做的更好:test 做不到的,[[ ]] 还能 ...

  10. prufer序列的性质及相关结论