精华内容
下载资源
问答
  • 缓存——redis——shell脚本监控redis集群
    2020-01-12 15:26:41

    目录

    1、配置文件:

    2、代码:

    3、参数说明:

    4、使用注意事项:


     

    shell脚本监控redis集群代码如下:

    1、配置文件:

    redisCliPath=/data/soft/redis/redis03/bin/redis-cli
    ipAddress=192.168.0.141
    portNumber=6380
    semdEmailTo=117492111174@qq.com
    sendEmailTitle=测试邮件主题
    sendEmailContent=测试邮件内容

    2、代码:

    注意:不同linux设备的sh路径可能不同,需通过which sh查看sh的绝对路径修改即可。

    #!/bin/sh
    #防止中文乱码
    export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"
    
    #file_conf.txt文件路径
    file_conf="/data/shell/check_redis_conf.txt"
    
    #判断文件是否存在
    if [ -f "${file_conf}" ];then
    	
    	echo $(date +'%Y-%m-%d %H:%M:%S')" 配置信息文件存在"
    
    	#获取等号前内容,作为map中的Key值
    	dbArrOne=($(awk -F'[=]' '{print $1}' ${file_conf} ))
    	
    	#获取等号后内容,作为map中的value值
    	dbArrTwo=($(awk -F'[=]' '{print $2}' ${file_conf}))
    
    	#创建一个空map
    	declare -A map=()
    	
    	#通过循环,将db_backups_conf配置文件中的信息存储在map中
    	for((i=0;i<${#dbArrOne[@]};i++))
    	do
    		map[${dbArrOne[i]}]=${dbArrTwo[i]}
    	done
    	
    	#获取收件人的邮件账号的字符串
    	semdEmailTo=${map["semdEmailTo"]}
    	
    	#获取默认的字符串分隔符
    	old_ifs="$IFS"
    	
    	#设置字符串分隔符为逗号
    	IFS=","
    	
    	#将收件人的邮件账号value值的字符串进行分隔,获取一个数组
    	semdEmailToArr=($semdEmailTo)
    
    	#将字符串的分隔符重新设置为默认的分隔符
    	IFS="$old_ifs"
    
    	redisStas=`${map["redisCliPath"]} -h ${map["ipAddress"]} -p ${map["portNumber"]} ping`
    	
    	if [ "PONG" == ${redisStas} ];
    	then
    		echo "redis正常"
    	else
    		#遍历收件人的邮箱地址,逐个发送邮件
    		for email in ${semdEmailToArr[@]};
    		do
    			echo ""${map["sendEmailContent"]} | mail -s ""${map["sendEmailTitle"]} ${email}
    		done
    	fi
    	
    	
    
    else
    	echo "文件不存在"
    fi
    

    3、参数说明:

    参数意义如下:
    redisCliPath=软件redis的客户端redis-cli的绝对路径
    ipAddress=软件redis访问的IP地址
    portNumber=软件redis访问的端口号
    semdEmailTo=收件人邮箱,多个收件人邮箱用逗号隔开
    sendEmailTitle=测试邮件主题(文本内容中一定不能包含=)
    sendEmailContent=测试邮件内容(文本内容中一定不能包含=)

    4、使用注意事项:

    使用注意事项:
    1、默认的是.sh、.txt文件都要放在/data/shell脚本下,如果放置的路径变了,需要修改.sh中读取.txt配置文件的路径
    2、对于不同的Linux环境下,要修改db_backups_conf.txt文件中的配置信息,比如filePath的路径等信息
    3、备份异常发送邮件提醒采用的是mail,运行的linux上提前先安装好mail并配置到mail.rc发送邮件的信息才可以。

     

    更多相关内容
  • prometheus监控redis集群

    2021-12-31 15:57:52
    一、redis集群情况 #redis集群IP和端口,集群配置了密码 136.xxx.102.112:7000 136.xxx.102.112:7001 136.xxx.102.112:7002 136.xxx.102.113:7000 136.xxx.102.113:7001 136.xxx.102.113:7002 二、redis_exporter...

    一、redis集群情况

    #redis集群IP和端口,集群配置了密码
    136.xxx.102.112:7000
    136.xxx.102.112:7001
    136.xxx.102.112:7002
    136.xxx.102.113:7000
    136.xxx.102.113:7001
    136.xxx.102.113:7002
    

    二、redis_exporter部署,配置prometheus

    #将文件解压并修改文件夹名称,插件不一定安装redis端
    tar -zxvf redis_exporter-v1.3.5.linux-amd64.tar.gz
    mv redis_exporter-v1.3.5.linux-amd64 redis_exporter
    #修改prometheus配置,注意文件格式,如果文件有问题会导致prometheus无法启动
    vi prometheus.yml
      - job_name: 'redis_exporter_targets'
        static_configs:
          - targets:
            - redis://136.127.102.112:7000
            - redis://136.127.102.112:7001
            - redis://136.127.102.112:7002
            - redis://136.127.102.113:7000
            - redis://136.127.102.113:7001
            - redis://136.127.102.113:7002
        params:
          check-keys: ["metrics:*"]
        metrics_path: /scrape
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 136.127.102.112:9122
      - job_name: 'redis_exporter'
        static_configs:
          - targets:
            - 136.127.102.112:9122
    

    三、探针启动

    #启动探针,因为是集群只需要写清楚密码即可,默认监听端口为9121,由于有密码需要将端口设置为9122
    nohup ./redis_exporter -redis.password passwd123 -web.listen-address 0.0.0.0:9122 &
    #prometheus需要重启
    

    四、效果

    在这里插入图片描述

    展开全文
  • 安装redis_exporter 下载软件包 [root@gtcq-gt-resource2-db-03 ~]# cd /opt/ ;scp root@10.152.17.11:/opt/redis_exporter-v1.6.1.linux-amd64.tar.gz /opt 安装启动 [root@gtcq-gt-resource2-db-03 opt]# tar -...

    安装redis_exporter

    下载软件包
    [root@gtcq-gt-resource2-db-03 ~]# cd /opt/ ;scp root@10.152.17.11:/opt/redis_exporter-v1.6.1.linux-amd64.tar.gz /opt
    
    安装启动
    [root@gtcq-gt-resource2-db-03 opt]#  tar -zxvf  redis_exporter-v1.6.1.linux-amd64.tar.gz -C /usr/local/
    [root@gtcq-gt-resource2-db-03 opt]# cd /usr/local/
    [root@gtcq-gt-resource2-db-03 local]# mv   redis_exporter-v1.6.1.linux-amd64 redis_exporter-gt_work
    [root@gtcq-gt-resource2-db-03 local]# cd redis_exporter-gt_work/
    [root@gtcq-gt-resource2-db-03 redis_exporter-gt_work]# nohup ./redis_exporter -redis.addr 10.152.17.52:8807  -redis.password xbcky13k  -web.listen-address 10.152.17.52:9121 > /dev/null 2>&1 &
    
    修改Prometheus配置文件
      - job_name: 'GT_WORK_REDIS_CULSTER'
        static_configs:
          - targets:
            - redis://10.152.17.50:8807
            - redis://10.152.17.50:8808
            - redis://10.152.17.51:8807
            - redis://10.152.17.51:8808
            - redis://10.152.17.52:8807
            - redis://10.152.17.52:8808
        metrics_path: /scrape
        relabel_configs:
          - source_labels: [__address__]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: __address__
            replacement: 10.152.17.52:9121
      - job_name: 'gtcq-gt-work-redis_exporter'
        static_configs:
          - targets:
            - 10.152.17.52:9121
    
    展示



    展开全文
  • Redis集群监控方法

    千次阅读 2018-10-19 11:21:34
     提供一种Redis集群中各Redis节点的监控处理方法,能够采集Redis节点的资源信息、性能指标数据,集群内多个Redis节点服务运行状态监控。实现告警监控信息、资源和性能指标的采集与分析的监控方法。    2. 背景...

       1. 技术领域

           提供一种Redis集群中各Redis节点的监控处理方法,能够采集Redis节点的资源信息、性能指标数据,集群内多个Redis节点服务运行状态监控。实现告警监控信息、资源和性能指标的采集与分析的监控方法。

     

       2. 背景技术

        2.1 Redis简介

           Redis 是一种开源的内存中key-value数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集合(sets),有序集合(sorted sets)与范围查询。Redis也可以被看成是一个数据结构服务器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上。

          Redis可使用一个或多个Redis哨兵(Sentinel),和Redis的主节点(Master)、 多个从节点(Slave)组成一个集群。Sentinel来检测Redis的Master节点是否运行正常,并在Master节点发生故障时,将 Master的Slave提升为Master,并在老的Master重新加入到Sentinel的群集之后,会被重新配置,作为新Master的Slave。基于Redis的 Sentinel可实现集群的高可用管理功能。

     

    ​​​​​​​   2.2 Redis监控方法

            Redis 监控最直接的方法就是在装有Redis的服务器上使用Redis服务提供的 INFO 命令,只需要执行下面一条命令:

            ./redis-cli -p 端口号info

           会返回一个Redis节点的Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace 8个部分的结果信息。从INFO返回结果中得到相关信息,就可以达到监控一个Redis节点的目的。

           如下结果返回的是一个Redis的Master节点的信息:

    # Server

    redis_version:2.8.8                      # Redis 的版本

    redis_git_sha1:00000000

    redis_git_dirty:0

    redis_build_id:bf5d1747be5380f

    redis_mode:standalone

    os:Linux 2.6.32-220.7.1.el6.x86_64 x86_64

    arch_bits:64

    gcc_version:4.4.7                        #gcc版本

    process_id:49324                        # 当前 Redis 服务器进程id

    run_id:bbd7b17efcf108fdde285d8987e50392f6a38f48

    tcp_port:6379

    uptime_in_seconds:1739082               # 运行时间(秒)

    uptime_in_days:20                       # 运行时间(天)

     

    # Clients

    connected_clients:1                      #连接的客户端数量

    client_longest_output_list:0

    client_biggest_input_buf:0

    blocked_clients:0

     

    # Memory

    used_memory:821848                    #Redis分配的内存总量             

    used_memory_human:802.59K

    used_memory_rss:85532672               #Redis分配的内存总量(包括内存碎片)

    used_memory_peak:178987632

    used_memory_peak_human:170.70M       #Redis所用内存的高峰值

    used_memory_lua:33792

    mem_fragmentation_ratio:104.07           #内存碎片比率

    mem_allocator:tcmalloc-2.0

     

    # Persistence

    loading:0

    rdb_changes_since_last_save:0           #上次保存数据库之后,执行命令的次数

    rdb_bgsave_in_progress:0               #后台进行中的 save 操作的数量

    rdb_last_save_time:1410848500   #最后一次成功保存时间点

    rdb_last_bgsave_status:ok

    rdb_last_bgsave_time_sec:0

    rdb_current_bgsave_time_sec:-1

    aof_last_bgrewrite_status:ok

    aof_last_write_status:ok

     

    # Stats

    total_connections_received:5705            #运行以来连接过的客户端的总数量

    total_commands_processed:204013          #运行以来执行过的命令的总数量

    instantaneous_ops_per_sec:0

    rejected_connections:0

    expired_keys:34401                       #运行以来过期的 key 的数量

    evicted_keys:0                           #运行以来删除过的key的数量

    keyspace_hits:2129                       #命中key 的次数

    keyspace_misses:3148                     #没命中key 的次数

    # Replication

    role:master                              #当前实例的角色master还是slave

    connected_slaves:0

    master_repl_offset:0

     

    # CPU

    used_cpu_sys:1551.61

    used_cpu_user:1083.37

    used_cpu_sys_children:2.52

    used_cpu_user_children:16.79

     

    # Keyspace

    db0:keys=3,expires=0,avg_ttl=0    #各个数据库key 的数量,以及带有生存期的 key 的数量

    以上字符串就是这个Redis节点带有固定格式的一些字段属性和值。

    同样通过INFO命令,对一个Sentinel节点返回的信息如下:

    # Sentinel

    sentinel_masters:3

    sentinel_tilt:0

    sentinel_running_scripts:0

    sentinel_scripts_queue_length:0

    master0:name=common, status=ok,address=192.168.95.111:56379,slaves=1,sentinels=3

    master1:name=resource1,status=ok,address=192.168.95.112:56379,slaves=1,sentinels=3

    master2:name=resource2,status=ok,address=192.168.95.113:56379,slaves=1,sentinels=3

    由返回信息可得知这个Sentinel目前管理了3个Master,并分别给出了Master的IP和端口,每个Master各有一个Slave。

     

    3.技术方案描述

    ​​​​​​​3.1 要解决的技术问题

           通过在Redis服务器上执行INFO命令可以得到当前Redis节点的结果信息,但需要手工执行命令,结果信息可读性不强,不直观,不能达到自动监控的目的。 理想监控方案是在公司目前的监控产品中,集成Redis的集群监控方案,能够周期性、不间断的自动采集Redis各节点的数据信息,实时上报Redis节点的监控指标和状态,和Redis集群的服务状态信息。

    ​​​​​​​3.2 整体思路

           Redis的Sentinel作为Redis的高可用方案,可以实现Redis的Mater和Slave之间高可用和故障自动切换。以公司某监控产品环境中的用到的Redis为例,为公共数据部署一组Redis,包括一个Master和一个Slave。为资源数据部署两组Redis,每组内同样包括一个Master和一个Slave。这样通过6个Redis(Master/Slave)节点形成一个Redis集群服务方案。

            为了方便说明Redis集群,本次在三台服务器进行Redis集群的安装,其中每台服务器上各部署一个Master和Slave,考虑到防止设备宕机导致的高可用问题,不同服务器的Master和Slave形成Master/Slave关系。另外每台服务器上要各部署一个Sentinel,做为Redis的管理节点,实时监测Master和Slave的主备状态与切换, 如果Master所在的服务器宕机,Slave也能继续接替Master工作。

          实际部署形成的Redis主备节点集群方案如下, Slave节点通过蓝色箭头指向Master节点做表示:

     

     ​​​​​​​3.3 实现方案

     3.3.1 采Java直接连接Redis节点取INFO信息

            采用Java开发,在开发工程中引用开发包jedis-2.7.2.jar,进行代码开发。连接一个Redis节点的关键代码如下,例如连接一个IP是192.168.180.61,端口是56380的Redis节点:

    Jedis jedis = new Jedis (“192.168.180.61”, 56380);

    String info = jedis.info ();

          如果这个IP和端口的Redis节点正常,则返回的info字符串,就可得到这个节点的所有信息,与在Redis服务器上通过INFO命令取节点信息是同样效果。

     

        3.3.2采集Redis节点方法

           通过Sentinel节点采集,可采集Sentinel管理的Master节点信息。在确定了一个Sentinel节点的IP和端口的情况下,先采这个Sentinel节点的信息,可得到这个Sentinel管理的Master节点的IP和端口,有了多个Master节点的IP和端口,可再针对这些IP和端口进行采集。

           例如采一个Sentinel节点,得到目前这个Sentinel管理的3个Master的IP和端口,再依次采用这3个Master的IP和端口的Redis信息,得到该Master的Slave节点信息。

           如下图例展示了通过一个Sentinel可采到所有节点的过程:

     

           这样至少通过一个Sentinel节点的IP和端口,就能把这个集群服务中的所有Master和Slave节点信息采集到,包括这个Sentinel节点本身。其它的Sentinel节点再分别通过IP和端口采集。

    如下图展示是的当前这个名为Redis180的服务, 各个Redis节点的一个展示页面效果。

     

         3.3.3从INFO字符串提取关键配置信息和性能指标

          通过取一个Redis节点的INFO字符串信息中,是格式固定的字符串,通过提取关键指标值,将指标值进行分析处理,可做为Redis节点的资源配置信息或性能指标值。例如内存部分的字段信息:

    used_memory: 4809536                #Redis使用的内存             

    used_memory_peak: 6589592    #Redis所用内存的高峰值

           这两个指标给出的是当前这个Redis节点使用的内存量与高峰值的字节数。通过一个Redis节点的IP与端口,做为资源的唯一标识,把这两个指标数据归属到这个Redis资源上。数据在入库后,可通过界面查看这两个指标的展示情况:

     

    3.3.4一个服务中过Sentinel服务状态

           部署了多个Redis节点,包括多个Master,Slave,Sentinel节点成一个集群,通过Sentinel来管理各节点的运行状态。 Sentinel能够监控所管理的Master或Slave节点的运行状态和角色,所以可以通过Sentinel来判断一个Redis集群服务的运行状态。

        判断一个集群服务方法:如果服务中所有的Sentinel节点无法取回INFO信息,则认为这个服务状态是异常的,并上报Redis服务不可用告警。

    实现方法:

    1. 周期检查一个Redis服务中的所有Sentinel的IP和端口, 如果服务中的每个Sentinel的IP和端口都不能返回INFO信息,则认为这个服务异常不可用,并上传Redis服务状态异常不可用的告警。

    2.  如果是单个Sentinel节点不能返回INFO信息,则上传这个Sentinel节点状态异常告警。

    3.  当检查到所有Sentinel节点的IP和端口都可采,都能返回INFO信息,是认为Redis服务已正常,上传Redis服务恢复正常的恢复告警。

     

    ​​​​​​​4.本方案相对于现有方案的有益效果或者优点

    实现了一种可视化的实时监控Redis集群中节点信息和服务运行状态的监控方法。

    通过一个Sentinel节点就能一次性采集发现这个Sentinel管理的所有Redis节点信息。

         为一组部署了Sentinel节点的Redis集群确定了一种通过多个Sentinel判断集群服务是否正常的方法。

    展开全文
  • redis集群监控

    千次阅读 2018-08-05 22:35:58
    环境要求:Java8+ jdk配置这里略过 RedisClusterManager 下载地址:...  附件:systemMonitor-release.tar.gz 收集系统状态包  附件: RedisManager-Web-1.0.0-SNAPSHOT-beta.tar....
  • Redis集群状态监控 & 重新创建集群 & 备份恢复REDIS数据 Shell脚本 reduction_redis_cluster.sh #!/bin/bash -ile ## 脚本路径 INSTALL_DIR="/data/project" ## redis安装路径 REDIS_DIR="$INSTALL_DIR/...
  • redis集群的远程管理与监控

    千次阅读 2018-03-24 21:14:28
     为了实现Redis的高可用,通常都会布署Redis集群,使用Redis-Sentinel实现集群的监控、自动切换、故障转移等。 通常应用都会将热数据放在Redis中,以减少对后端mysql等关系型数据库的请求量。Redis集群对于应用...
  • zabbix监控redis

    2018-03-22 11:37:51
    使用zabbix监控redis,具体配置在压缩包的截图中,很简单,仿db4bix插件
  • n9e(nightingale)+prometheus监控redis集群
  • RedisClusterManager监控Redis集群环境要求:Java8+jdk配置这里略过RedisClusterManager下载地址:https://git.oschina.net/yanfanVIP/RedisClusterManager/releases附件:systemMonitor-release.tar.gz收集系统状态...
  • Redis集群详解

    万次阅读 多人点赞 2019-05-10 13:56:46
    Redis集群详解 Redis有三种集群模式,分别是: * 主从模式 * Sentinel模式 * Cluster模式 三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——Redis Redis官网:https://redis.io/ ,最新版本5.0.4...
  • Zabbix5.0监控Redis

    千次阅读 2021-09-15 18:23:00
    Zabbix5.0监控Redis 1.什么是Redis ​ Redis是一个开源的高性能NoSQL数据库,可称为远程字典服务。 基于内存运行,性能高效 支持分布式,理论上可以无限扩展 key-value存储系统 使用ANSI C语言编写、遵守BSD协议、...
  • redis集群

    2022-01-08 15:01:16
    redis集群:为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现...
  • redis 集群方案

    千次阅读 2021-12-01 17:05:52
    redis 集群方案的介绍(主从模式、哨兵模式、Redis Cluster模式) 一、主从模式 将数据完全存储在单个redis中主要存在两个问题: 数据备份和数据体量较大造成的性能降低。 Redis的主从模式为这两个问题提供了一个较...
  • 写在前面的话本文是实战,来监控上篇文章我们搭建的Redis集群。我是花了2天才搞定,就因为granafa的版本问题。读者搭建时一定要用我指定的版本,否则你会尝到绝望的果实,看到血淋淋的键盘。二. Redis集群监控的三...
  • 在我看来主从集群和哨兵这都不能算是真正的集群,只有Redis集群模式才是真的集群。 可能看到这么说大家会很疑惑,那么请看下面相信你一定会有所获。 Redis集群中文文档 之前一直担心搭建集群虚拟机内存不足,搭建...
  • Redis监控方案

    2021-04-24 15:51:21
    Redis现在在业务中应用已经很广泛了,但是如何监控redis,实时的观察redis的性能,却很少的提及,现在常见的监控方案基本上都是使用redis自带的info命令和monitor命令获取相关信息,然后提取出来显示。测试环境:...
  • zabbix4.0 监控redis状态

    千次阅读 2019-05-30 13:19:12
    准备 先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent 服务器 ip 系统 zabbix-server ...zabbix-agent端 安装部署redis redis的部署过程就不介绍了,百度一大堆 安装好redis之后,用red...
  • Redis集群原理

    万次阅读 2020-11-20 16:06:52
    redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异 常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现 一般,...
  • Redis集群搭建方式

    2022-05-14 22:01:13
    redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态;如果 master 节点异常,则会做主从切换,将一台 slave 作为 master。 哨兵模式的缺点: (1)当master挂掉的时候,...
  • prometheus监控redis

    2021-08-31 11:14:30
    prometheus监控redis redis-explorer, 监控redis,redis阻塞 blocked_clients处理 1、安装部署 1.1、安装部署 下载:https://github.com/oliver006/redis_exporter/tags 安装 # 解压 tar xf redis_exporter-v...
  • Redis哨兵集群配置

    2018-05-18 09:25:50
    Redis哨兵集群配置的详细步骤。在监控主从结构时,所有的哨兵进程都会调用info 命令,查看当前主从状态,一旦发现返回结果中master宕机了,所有哨兵将会进行投票选举(过半选举),选出替代主节点的节点继续执行对外服务
  • Redis 6.2.5 主从(Master-Slave)模式 主从复制模式中包含一个主数据库实例(master)与一个或多个从数据库实例(slave),如下图 客户端可对主数据库进行读写操作,对从数据库进行读操作,主数据库写入的数据会...
  • redis3 集群监控介绍

    千次阅读 2018-04-07 11:43:05
    redis请求处理介绍 1. redis Server是单线程 优点:因为CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者网络带宽,采用队列模式将并发访问变为串行执行。 redis快速原因是绝大部分请求是纯粹的内存...
  • Redis集群事务

    2021-03-29 11:04:06
    一、redis事务    1、redis和mysql的对比    2、redis事务命令    3、事务执行举例    4、redis事务中的锁机制    5、redis服务管理命令      6、redis慢日志查询   二、Redis主从复制...
  • redis集群概念

    2022-04-23 22:26:09
    问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群? 答:(1)单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。 (2)单个redis的读写能力是有限的。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,656
精华内容 17,062
关键字:

如何监控redis集群状态