Prometheus实战篇:Prometheus监控redis

准备环境

docker-compose安装redis

docker-compose.yaml

version: '3'
services:redis:image:redis:5container_name: rediscommand: redis-server --requirepass 123456 --maxmemory 512mbrestart: alwaysvolumes:- /data/redis/data: /dataport:- "6379:6379"
docker-compose up -d

监控redis

docker安装exporter

docker直接运行

docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter --redis.addr redis://localhost:6379 --redis.password '123456'

docker-compose方式

cat >docker-compose.yaml <<FOF
version: '3.3'
services:redis_exproter:image:oliver006/redis-exportercontainer_name: redis_exporterrestart: alwaysenvironment:REDIS_ADDR:"localhost:6379"REDIS_PASSWORD: 123456port:- "9113:9113"
EOF

启动

docker-compose up -d

检查

查看正在运行的容器
docker ps或者:查看redis_exporter容器的运行日志
docker logs -f redis_exporter

参数解释

Environment variable描述
REDIS_ADDRlocalhost:6379redis服务地址
REDIS_PASSWORD123456redis服务密码

metrics地址

安装好Exporter后会暴露一个/metrics结尾的服务

名称地址
redis_exporterhttp://localhost:9121/metrics

Prometheus配置

配置Prometheus去采集(拉取)nginx_exporter的监控样本数据

cd /data/docker-prometheus# 在scrapc_configs(搜刮配置):下面增加如下配置:
cat >prometheus/prometheus.yml <<FOF- job_name: 'redis_exporter'static_configs:- targets: ['localhost:9121']labels:instance: test服务器 
EOF

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

image.png

常用的redis监控指标

redis_up												服务器是否在线
redis_uptime_in_seconds									运行时长,单位s
rate(redis_cpu_sys_seconds_total[1m])+rate(redis_cpu_user_seconds_total[1m])		占用CPU核数
redis_memory_used_bytes									占用内存量
redis_memory_max_bytes									限制的最大内存,如果没限制则为0
delta(redis_net_input_bytes_total[1m])	 				网络接受的bytes
delta(redis_net_output_bytes_total[1m])	 				网络发送的bytesredis_connected_clients									客户端连接数
redis_connected_clients / redis_config_maxclients连接数使用率
redis_rejected_connections_total拒绝的客户端连接数
redis_connected_slavesslave连接数

触发器配置

由于之前的触发器是全部写在了一个yml里面就是alert.yam,这样随着后面配置的触发器越来越多最终会变得难以维护.这里我们让它去读rules目录下所有的yml文件即可

Prometheus配置

rule_files:- "alert.yml"- "rules/*.yml"

配置redis触发器

因为是单机所以未配置集群的触发器

cat >prometheus/redis.yml <<FOF
groups:
- name: redisrules:- alert: RedisDownexpr: redis_up ==0for: 0mlabels:severity: criticalannotations:summary: "redis Down,实例:{{$labels.instance }}"description: "Redis实例 is down"- alert: RedisMissingBackupexpr: time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 24for: 0mlabels:severity: criticalannotations:summary: "redis 备份丢失,实例:{{$labels.instance }}"description: "Redis 24小时未备份"- alert: RedisOutOfConfigredMaxmemoryexpr: redis_memory_used_bytes / redis_memory_max_bytes * 100 >90for: 2mlabels:severity: warningannotations:summary: "redis超出配置的最大内存,实例:{{$labels.instance }}"description: "Redis内存使用超过配置的最大内存的90%"- alert: RedisTooManyConnectionsexpr: redis_connected_clients > 100for: 2mlabels:severity: warningannotations:summary: "redis连接数过多,实例:{{$labels.instance }}"description: "Redis当前连接数为:{{ $value }}"- alert: RedisNotEnoughConnectionsexpr: redis_connected_clients < 1for: 2mlabels:severity: warningannotations:summary: "redis没有足够的连接,实例:{{$labels.instance }}"description: "Redis当前连接数为:{{ $value }}"- alert: RedisRejectedConnectionsexpr: increase(redis_rejected_connections_total[1m]) > 0for: 0mlabels:severity: criticalannotations:summary: "redis有拒绝连接,实例:{{$labels.instance }}"description: "与Redis的某些连接被拒绝:{{ $value }}"EOF

一定记住这里需要仔细校对yaml语法,最好是能去在线验证yaml语法的网站上看看.yaml语法还是比较严格的一点缩进错误都不能有

检查配置

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

http://localhost:9090/alerts?search=

或:

http://localhost:9090/rules

dashboard

grafana展示Prometheus从redis_exporter收集到的数据

id :11835
image.png

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

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

相关文章

Python基础(十七、函数进阶用法)

文章目录 一、函数的回顾二、函数的进阶用法1.多个返回值示例&#xff0c;获取验证码及用户名示例&#xff0c;获取用户信息 2.多种参数1.位置参数2.关键字参数3.缺省参数4.不定长参数 3.匿名函数函数作为参数传递lambda匿名函数(一行代码) 总结练习题目&#xff1a; 之前学习了…

JAVA版随机抽人

主函数 public class Main {public static void main(String[] args) {//这里存入数据String[] data {"土一","李二","张三","李四","乔冠宇","王五"};MyJFrame frame new MyJFrame(data);} }界面类 import j…

leetcode 动态规划(斐波那契数列、 爬楼梯、使用最小花费爬楼梯)

509. 斐波那契数 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n …

【React系列】Portals、Fragment

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) Portals 某些情况下&#xff0c;我们希望渲染的内容独立于父组件&#xff0c;甚至是独立于当前挂载到的DOM元素中&am…

GPU连通域分析方法

第1章连通域分析方法 连通域分析方法用于提取图像中相似属性的区域&#xff0c;并给出区域的面积&#xff0c;位置等特征信息。分为两种&#xff0c;基于游程&#xff08;Runlength&#xff09;&#xff0c;和基于标记(Label)。 基于游程的方法&#xff0c;按照行对图像进行游…

3D Gaussian Splatting复现

最近3D Gaussian Splatting很火&#xff0c;网上有很多复现过程&#xff0c;大部分都是在Windows上的。Linux上配置环境会方便简单一点&#xff0c;这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译&#xff0c;建议看这个up主的视频配置&#xff0c;讲解的很细…

[算法与数据结构][python]:Python参数传递,“值传递”还是“引用传递“?

Python中的函数参数传递方式是“传对象引用”&#xff0c;可以理解为“值传递”和“引用传递”的混合体。 在Python中&#xff0c;所有的数据类型都是对象。如果函数参数是不可变对象&#xff08;如整数、字符串、元组&#xff09;&#xff0c;那么传递的就是对象的值&#xf…

695岛屿最大面积

题目 给定一个 row x col 的二维网格地图 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陆地&#xff0c; grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完全包围&#xff0c;但其中恰好有一个…

逻辑回归简单案例分析--鸢尾花数据集

文章目录 1. IRIS数据集介绍2. 具体步骤2.1 手动将数据转化为numpy矩阵2.1.1 从csv文件数据构建Numpy数据2.1.2 模型的搭建与训练2.1.3 分类器评估2.1.4 分类器的分类报告总结2.1.5 用交叉验证&#xff08;Cross Validation&#xff09;来验证分类器性能2.1.6 完整代码&#xf…

malloc calloc 与 realloc

malloc 原型 void *malloc(size_t size);size字节为单位&#xff0c;保持原数据&#xff0c;不做初始化。 calloc 原型 void *calloc(size_t n, size_t size);分配n*size 字节数 初始化为零。 realloc 原型 void *realloc (void *ptr, size_t size)扩容&#xff0c;重新分配…

JavaWeb 里的Vue,Springboot,Mvc,Servlet,JSP,SSM都是什么?

在Java Web开发中&#xff0c;使用一系列技术和框架可以构建强大、高效的Web应用程序。在这个领域&#xff0c;一些关键的技术包括Vue.js、Spring Boot、MVC、Servlet、JSP以及SSM&#xff08;Spring Spring MVC MyBatis&#xff09;。本文将对这些技术进行详细解释&#xff…

copilot插件全解

COPILOT是一个基于AI的编程辅助工具&#xff0c;它可以帮助程序员自动编写代码&#xff0c;提高开发效率。COPILOT的插件主要是为了将其功能集成到不同的编程环境中&#xff0c;方便程序员使用。 目前&#xff0c;COPILOT支持多种编程环境&#xff0c;包括Visual Studio Code、…

钉钉审批流程解读

组织机构 部门 部门可以创建下级部门部门可以设置部门主管&#xff0c;可以是多人部门可以默认构建&#xff0c;沟通群可以设置部门信息&#xff0c;比如电话、简介可以设置部门的可见性&#xff0c;比如隐藏本部门&#xff0c;本部门将不会在组织机构、搜索&#xff0c;个人…

怎么让视频进行加速处理并保存

要加速处理视频并保存&#xff0c;可以使用专业的视频编辑软件或者一些在线工具。以下是一种常见的方法&#xff0c;使用FFmpeg这个开源工具。请确保你已经安装了FFmpeg。 打开命令行界面&#xff1a; 打开终端或命令提示符窗口。 使用以下命令进行视频加速处理&#xff1a; f…

如何从格式化的 Windows 和 Mac 电脑硬盘恢复文件

格式化硬盘可为您提供全新的体验。它可以是硬盘驱动器定期维护的一部分&#xff0c;是清除不再使用的文件的一种方法&#xff0c;在某些情况下&#xff0c;它是处理逻辑损坏的万福玛利亚。但是&#xff0c;许多用户发现自己格式化了错误的分区或驱动器&#xff0c;或者后来意识…

c语言-指针进阶

文章目录 前言一、字符指针二、数组指针2.1 数组指针基础2.2 数组指针作函数参数 总结 前言 在c语言基础已经介绍过关于指针的概念和基本使用&#xff0c;本篇文章进一步介绍c语言中关于指针的应用。 一、字符指针 字符指针是指向字符的指针。 结果分析&#xff1a; "ab…

Java中常见的设计模式及其实际应用

在软件开发中&#xff0c;设计模式是重要的指导原则&#xff0c;它们提供了解决特定问题的可重用方案。Java作为一种强大的编程语言&#xff0c;广泛应用了许多设计模式。让我们深入探讨几种常见的设计模式&#xff0c;并展示它们在实际Java应用中的用例。 1. 单例模式 (Singl…

elementui loading自定义图标和字体样式

需求&#xff1a;页面是用了很多个loading&#xff0c;需要其中有一个字体大些&#xff08;具体到图标也一样的方法&#xff0c;换下类名就行&#xff09; 遇见的问题&#xff1a;改不好的话会影响其他的loading样式&#xff08;一起改变了&#xff09; 效果展示 改之前 改之…

使用conda管理Python虚拟环境

标题&#xff1a;使用conda管理Python虚拟环境 摘要&#xff1a;本文将介绍如何使用conda工具创建、查看和删除Python虚拟环境。通过使用conda&#xff0c;我们可以轻松地在不同的项目中使用不同的Python版本和依赖库&#xff0c;避免不同项目之间的冲突。 一、简介 Python是…

使用 Kafka 和 CDC 将数据从 MongoDB Atlas 流式传输到 SingleStore Kai

SingleStore 提供了变更数据捕获 (CDC) 解决方案&#xff0c;可将数据从 MongoDB 流式传输到 SingleStore Kai。在本文中&#xff0c;我们将了解如何将 Apache Kafka 代理连接到 MongoDB Atlas&#xff0c;然后使用 CDC 解决方案将数据从 MongoDB Atlas 流式传输到 SingleStore…