环境说明:

现在有一套redis cluster,部署是3主机6实例架构部署。需要采集对应的指标,满足异常监控告警,性能分析所需。

环境准备

以下环境需要提前部署完成。
redis cluser
prometheus
alertmanager
grafna

redis_exporter部署

我们部署采用docker composer 进行安装。
采用的redis_exporter为:https://github.com/oliver006/redis_exporter

  redis-exporter:image: docker.m.daocloud.io/oliver006/redis_exporter:v1.74.0-alpinecommand:- '--redis.addr=redis://redisIP:7001'- '--redis.password=redisPassword'- '--is-cluster'ports:- "9121:9121"

上面参数,只需要指定--is-cluster,然后指明集群中一个节点,即可获取所有节点的数据。

prometheus采集配置:

添加prometheus的监控项:

  - job_name: 'redis_sjzt_prod'http_sd_configs:- url: http://redisExporterIP:9121/discover-cluster-nodesrefresh_interval: 10mmetrics_path: /scraperelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: redisExporter:9121

指标查看:
可以看到 prometheus的target中已经存在对应的采集项,并且有集群的所有节点。
在这里插入图片描述

大屏展示:

监控模板:https://grafana.com/grafana/dashboards/763-redis-dashboard-for-prometheus-redis-exporter-1-x/
下载后直接导入,选择对应的数据源即可。
在这里插入图片描述

告警:

现在创建对应的报警规则,实现异常时通知到alertmanager。
使用的告警规则为:https://raw.githubusercontent.com/samber/awesome-prometheus-alerts/master/dist/rules/redis/oliver006-redis-exporter.yml
下载后,加入到prometheus中。
但是因为我们是集群,所以需要修改一些报警规则实现。删除两个不适用的报警规则RedisTooManyMasters和RedisDisconnectedSlaves 。修改后内容如下:
vim redis.yml

groups:
- name: Oliver006RedisExporterrules:- alert: RedisDownexpr: 'redis_up == 0'for: 0mlabels:severity: criticalannotations:summary: Redis down (instance {{ $labels.instance }})description: "Redis instance is down\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisMissingMasterexpr: '(count(redis_instance_info{role="master"}) or vector(0)) < 1'for: 0mlabels:severity: criticalannotations:summary: Redis missing master (instance {{ $labels.instance }})description: "Redis cluster has no node marked as master.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisReplicationBrokenexpr: 'delta(redis_connected_slaves[1m]) < 0'for: 0mlabels:severity: criticalannotations:summary: Redis replication broken (instance {{ $labels.instance }})description: "Redis instance lost a slave\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisClusterFlappingexpr: 'changes(redis_connected_slaves[1m]) > 1'for: 2mlabels:severity: criticalannotations:summary: Redis cluster flapping (instance {{ $labels.instance }})description: "Changes have been detected in Redis replica connection. This can occur when replica nodes lose connection to the master and reconnect (a.k.a flapping).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisMissingBackupexpr: 'time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 24'for: 0mlabels:severity: criticalannotations:summary: Redis missing backup (instance {{ $labels.instance }})description: "Redis has not been backuped for 24 hours\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisOutOfSystemMemoryexpr: 'redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90'for: 2mlabels:severity: warningannotations:summary: Redis out of system memory (instance {{ $labels.instance }})description: "Redis is running out of system memory (> 90%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisOutOfConfiguredMaxmemoryexpr: 'redis_memory_used_bytes / redis_memory_max_bytes * 100 > 90 and on(instance) redis_memory_max_bytes > 0'for: 2mlabels:severity: warningannotations:summary: Redis out of configured maxmemory (instance {{ $labels.instance }})description: "Redis is running out of configured maxmemory (> 90%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisTooManyConnectionsexpr: 'redis_connected_clients / redis_config_maxclients * 100 > 90'for: 2mlabels:severity: warningannotations:summary: Redis too many connections (instance {{ $labels.instance }})description: "Redis is running out of connections (> 90% used)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisNotEnoughConnectionsexpr: 'redis_connected_clients < 5'for: 2mlabels:severity: warningannotations:summary: Redis not enough connections (instance {{ $labels.instance }})description: "Redis instance should have more connections (> 5)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"- alert: RedisRejectedConnectionsexpr: 'increase(redis_rejected_connections_total[1m]) > 0'for: 0mlabels:severity: criticalannotations:summary: Redis rejected connections (instance {{ $labels.instance }})description: "Some connections to Redis has been rejected\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

重新加载prometheus的配置
curl -X POST http://localhost:9090/-/reload

检查对应的报警项是否已经添加进去了。访问prometheus 点击Alerts。进行查看如下所示:
在这里插入图片描述
说明:监控指标需要按照实际项目需要进行仔细考虑。以上只是参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93022.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93022.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93022.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二十天(正则表达式与功能实际运用)

在程序员一生的工作中&#xff0c;遇到的最多的数据就是字符串字符串里面很有可能有很多的不需要的信息我们需要从中间挑选出我们需要的如果循环去写&#xff0c;比较简单的时候问题不大规则多了&#xff0c;你的工作量会成倍上升的为了解决这个问题 ---- 正则表达式正则表达式…

0基础法考随手笔记 03(刑诉05 刑事证据与证明+06 强制措施)

1.如何区分书证和电子数据 书面材料是否为书证&#xff1f;→ 看内容是否直接源于案件事实&#xff08;不是 “记录别人陈述” 的载体&#xff09;。 证据清单是否为证据&#xff1f;→ 看谁做的清单&#xff08;侦查人员做的勘查笔录是证据&#xff0c;当事人做的目录不是&…

资产负债表及其数据获取

文章目录资产负债表及其数据获取资产负债表资产负债表在股票投资中的意义AKShare中的资产负债表数据接口&#xff08;深沪为例&#xff09;接口描述调用示例总结资产负债表及其数据获取 资产负债表 资产负债表&#xff08;Balance Sheet&#xff09;是反映企业在某一特定日期财…

数据仓库深度探索系列 | 开篇:开启数仓建设新征程

数据仓库深度探索系列 | 开篇&#xff1a;开启数仓建设新征程 在当今信息技术飞速发展的背景下&#xff0c;企业面临着数据量的爆炸式增长。企业不仅要高效管理海量数据&#xff0c;还需从中提取关键信息以支持复杂决策。数据仓库已从单纯的数据存储工具&#xff0c;演变为支持…

Linux如何执行系统调用及高效执行系统调用:深入浅出的解析

文章目录如何执行系统调用及高效执行系统调用&#xff1a;深入浅出的解析一、什么是系统调用&#xff1f;1.1 系统调用的作用1.2 系统调用的分类二、如何执行系统调用&#xff1f;2.1 系统调用的触发2.2 库函数与系统调用的关系2.3 系统调用的示例2.4 错误处理三、如何高效执行…

基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(上)

摘要 随着信息技术的飞速发展和医疗健康数据的爆炸式增长,现代医疗机构面临着日益复杂的数据处理挑战。医生和行政人员常常需要花费大量时间在数据提取、整理、分析和报告生成等重复性、事务性的工作上,这不仅降低了工作效率,也限制了医护人员将更多精力投入到直接的患者护…

基于Kafka实现简单的延时队列

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之间&…

OceanBase 4.3.5 解析:DDL性能诊断

背景DDL操作通常耗时较长&#xff0c;特别是涉及补数据流程的DDL语句。在执行过程中&#xff0c;用户面临两个主要痛点&#xff1a;一是无法实时获取DDL执行进度&#xff0c;难以区分长时间运行是正常现象还是由内部异常导致的停滞&#xff1b;二是执行效率经常低于预期&#x…

幸福网咖订座点餐小程序的设计与实现

文章目录前言详细视频演示具体实现截图后端框架SpringBoot微信小程序持久层框架MyBaits成功系统案例&#xff1a;参考代码数据库源码获取前言 博主介绍:CSDN特邀作者、985高校计算机专业毕业、现任某互联网大厂高级全栈开发工程师、Gitee/掘金/华为云/阿里云/GitHub等平台持续…

C语言————练习题册(答案版)

目录 每日更新5-10题&#xff0c;感兴趣可以订阅 一.理解函数、操作符、占位符 1.1 欢迎来到C语言的世界 1.2 输入和输出 1.3 浮点数的打印 1.4 字符串的打印 1.14 I am iron man 1.5 求和运算 1.6 计算比例 1.7 求商求余 1.8 不同数位上的数字 1.8.1 求个位数 1.8…

haproxy配置详解

1、haproxy简介 HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计 企业版网站&#xff…

计网-TCP可靠传输

TCP&#xff08;传输控制协议&#xff09;的可靠传输是通过一系列机制保证数据准确、有序、不丢失地到达接收方。以下是TCP可靠传输的详细过程及核心机制&#xff1a;1. 数据分块与序列号&#xff08;Seq&#xff09;分块&#xff1a;应用层数据被分割成适合传输的TCP报文段&am…

数智管理学(三十九)

第三章 数智化对管理理论的冲击第三节 系统理论与生态化管理的强化系统理论作为理解企业运作与环境互动的重要框架&#xff0c;一直强调企业是一个由多个相互关联子系统构成的整体&#xff0c;其核心要素包括整体性、开放性、动态性和反馈机制。在传统管理视角下&#xff0c;这…

哈希表(c语言)

文章目录哈希表哈希表知识点哈希表概念负载因子哈希表的优缺点哈希冲突哈希函数常见哈希函数处理哈希冲突开放定址法线性探测二次探测链地址法哈希表的实现哈希表的核心:HashMap核心函数&#xff1a;从创建到销毁创建哈希表&#xff1a;hashmap_create()销毁哈希表:hashmap_des…

【Canvas与旗帜】条纹版大明三辰旗

【成图】【代码】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十三条纹版大明三辰旗 Draft1</title><style type"text/…

【Java】空指针(NullPointerException)异常深度攻坚:从底层原理到架构级防御,老司机的实战经验

写Java代码这些年&#xff0c;空指针异常&#xff08;NullPointerException&#xff09;就像甩不掉的影子。线上排查问题时&#xff0c;十次有八次最后定位到的都是某个对象没处理好null值。但多数人解决问题只停留在加个if (obj ! null)的层面&#xff0c;没从根本上想过为什么…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-评论用户时间占比环形饼状图实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解主页-评论用户时间占比环形饼状图实现 视频…

Redis面试精讲 Day 5:Redis内存管理与过期策略

【Redis面试精讲 Day 5】Redis内存管理与过期策略 开篇 欢迎来到"Redis面试精讲"系列的第5天&#xff01;今天我们将深入探讨Redis内存管理与过期策略&#xff0c;这是面试中经常被问及的核心知识点。对于后端工程师而言&#xff0c;理解Redis如何高效管理内存、处…

ICMPv6报文类型详解表

一、错误报文类型&#xff08;Type 1-127&#xff09;Type值名称Code范围触发条件示例典型用途1Destination Unreachable0-60: 无路由到目标1: 通信被管理员禁止2: 地址不可达3: 端口不可达4: 分片需要但DF标志设置5: 源路由失败6: 目的地址不可达网络故障诊断2Packet Too Big0…

配置nodejs

第一步确认 node.exe 和 npm 存在 例如安装目录D:\nodejs检查是否存在以下文件&#xff1a; node.exenpm.cmdnpx.cmd 第二步&#xff1a;添加环境变量 PATH 图形化操作步骤&#xff08;Windows&#xff09;&#xff1a; 右键「此电脑」→「属性」点击左侧 「高级系统设置」弹出…