Logstash2.3.4趟坑之集成Redis哨兵模式
最新在使用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哨兵模式的更多相关文章
- Springboot2.x集成Redis哨兵模式
Springboot2.x集成Redis哨兵模式 说明 Redis哨兵模式是Redis高可用方案的一种实现方式,通过哨兵来自动实现故障转移,从而保证高可用. 准备条件 pom.xml中引入相关jar ...
- Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存
本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...
- Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步
Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步,一定要绑定内网IP,而对于跨机房的问题,可以使用iptables进行nat转发来解决.
- Redis哨兵模式大key优化
目前,Redis哨兵模式,内存资源有限,有很多key大于500M,性能待优化.需要迁移至Redis-cluster集群中. 涉及到的key如下: 0,hash,duser_record, ...
- [Redis] Redis哨兵模式部署 - zz胖的博客
1. 部署Redis集群 redis的安装及配置参考[redis部署] 本文以创建一主二从的集群为例. 1.1 部署与配置 先创建sentinel目录,在该目录下创建8000,8001,8002三个以 ...
- Redis 哨兵模式(Sentinel)
上一篇我们介绍了 redis 主从节点之间的数据同步复制技术,通过一次全量复制和不间断的命令传播,可以达到主从节点数据同步备份的效果,一旦主节点宕机,我们可以选择一个工作正常的 slave 成为新的主 ...
- 搭建redis哨兵模式
搭建redis哨兵模式,一主两从三哨兵 1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...
- Redis哨兵模式的配置
绪论 现有三台设备,192.168.137.11.192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其 ...
- Spring Boot 如何快速集成 Redis 哨兵?
上一篇:Spring Boot 如何快速集成 Redis? 前面的分享栈长介绍了如何使用 Spring Boot 快速集成 Redis,上一篇是单机版,也有粉丝留言说有没有 Redis Sentine ...
随机推荐
- input框多文件上传
在input标签中加入 multiple 属性,可以在一个输入框中选择多个文件进行上传 <input type="file" name="img" mul ...
- Junit用断言对控制台输出进行测试
核心思路: 在测试前,将标准输出定向到ByteArrayOutputStream中去 用输出流文件断言内容 测试完成,将标准输出修改为console 具体操作示例 基本通用复制粘贴操作 public ...
- String、StringBuffer、StringBuilder有什么区别?
1.在字符串不经常发生变化的业务场景优先使用String(代码更清晰简洁).如常量的声明,少量的字符串操作(拼接,删除等). 2.在单线程情况下,如有大量的字符串操作情况,应该使用StringBuil ...
- CentOS7 网卡配置文件解释
注:此网卡配置文件摘自CentOS7.4.1708系统 Linux 默认配置网卡的信息 TYPE=Ethernet 网卡类型:以太网 PROXY_METHOD=none 代理方式:关闭状态 BROWS ...
- <思维导图>思维导图
- 22-4-isarry
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- keras 或 tensorflow 调用GPU报错:Blas GEMM launch failed
GPU版的tensorflow在模型训练时遇到Blas GEMM launch failed错误,或者keras遇到相同错误(keras 一般将tensorflow作为backend,如果安装了GPU ...
- CentOS7.6下安装Oracle JDK
注:本教程使用XShell ssh到CentOS服务器,并使用root用户登录,如使用其他普通用户登录,请在命令前加sudo 1).在/usr/local/目录下(看个人情况)新建文件夹java用来存 ...
- PHP之区域块链
搭建一个最简单的区块链吧.代码简单易懂. <?php //区域块链 //block 区块 // chain 链 //data //之前区块的has值 //自己的has值 : 他是由存储在区块链 ...
- Redmine 和GitBlit仓库服务器整合
运行环境: RedMine: 4.0.4 Git 仓库: Gitbilt V1.8.0 必须: Redmine 安装并可运行 Redmine运行的主机里面已经安装了 Git,因需要在命令行中运行 gi ...