使用Prometheus监控Redis集群
首先
在这篇文章中,我们将简要介绍Redis数据库监控的概念以及如何使用MetricFire的托管Prometheus设置Redis数据库监控系统。接下来,我们将展示最终的图表和仪表板在Grafana中的显示效果。通过使用MetricFire提供的托管Prometheus和托管Grafana来增强监控,并通过使用模拟的RedisDB生成Grafana仪表板的数据。
Redis DB和Redis集群是什么?
Redis DB是一种用于组织键值对数据的内存数据结构存储,可用作数据库、缓存或消息代理。Redis DB是开源的,提供了多种托管服务。Redis数据结构在性能和易用性方面都非常高效。Redis DB通常用于需要快速获取数据,例如连接到单个用户名的密码,或临时数据可以立即删除的情况。简单的命令行接口减轻了开发工作量,内存组件降低了延迟,并提高了吞吐量(处理能力)。
Redis集群是Redis数据库的实现,在多个Redis节点之间可以自动进行数据分片。集群还在分区期间提供一定级别的冗余和可用性。换句话说,当节点正在恢复或发生故障时,可以通过通信/传输来处理数据。此外,它还可以在主从模式下保护数据,以保护在发生主节点故障时的数据。
MetricFire如何监控Redis?
每个Redis集群都有一个在8070端口上监听的metrics_exporter组件,它作为一个Prometheus端点来获取指标。使用Prometheus监视Redis指标时,几乎不会给数据库带来负载。 Redis会将所需的指标推送到Prometheus端点,用户可以通过Prometheus对可用的Redis指标进行抓取,从而避免在每次查询指标时对Redis进行抓取。通过这种方式,可以监视Redis集群中的键总数、当前处理的命令数、内存使用量以及Redis连接总数。此外,还可以监视整个集群的数据、单个节点的数据或单个数据库的数据。
如果您正在使用由MetricFire托管的Hosted Prometheus,它将完全以相同方式运作。 使用这个工具,它会提取Redis DB终端的度量信息,并自动显示在Grafana仪表板上。
如何使用MetricFire设置Redis集群监控?
在MetricFireUI上安装Prometheus和Redis。
-
- MetricFireUIの左側にある[Add on]メニューに移動します。
-
- PrometheusAPIキーを見つけます。
- prometheus.ymlファイルを編集して、APIキーをbearer_tokenとしてremote_writeセクションとremote_readセクションを含めます。
B. 编辑 Prometheus 配置以包含 RedisEnterprise 任务
根据docs.redislabs.com的指示,将上述步骤的Prometheus配置复制到当前文件夹的./prometheus/prometheus.yml中。集群名称可以是完整域名或IP地址之一。
在MetricFire UI的Grafana仪表板中添加数据源。
在MetricFire的用户界面上,点击左侧菜单中的[仪表盘],然后点击[图表]。然后,转到[数据源]菜单如下所示。
添加 Prometheus 作为数据源。
如下所示,将显示Prometheus数据源设置菜单。 将URL更改为http:// localhost:9090。 在[访问]中选择[浏览器]。 然后,点击[保存并测试]。
为了在Grafana仪表盘中显示数据,需要将数据源更改为Prometheus。
接下来,将数据源更改为Prometheus,并确保数据在Grafana仪表盘上显示出来。
使用 Prometheus 监控 Redis 集群的仪表盘示例
图表1- 仪表板包含了四个图表。
这个是Grafana仪表板内的一个行示例,由4个面板组成。Grafana有将图表、文本和表格分组到相关类别的功能,因此可以轻松对不同指标进行排序在一个仪表板中。通过整理面板,可以了解它们之间的相关性,并快速进行故障排除。
这个仪表盘上显示了来自RedisDB推送的以下四个指标。
Redisクライアントビュー - Redisクライアントの総数
キービュー - 各RedisDBインスタンスのキーの総数
処理されたコマンド - マシンのグループごとに処理されたコマンドの数
メモリ - 異なるアグリゲーションマシンごとの合計メモリ使用量
图2 – 在聚合机器上使用Redis
这个图表显示了各种聚合机器的总内存使用量。这些机器的作用是收集导入的数据并将其聚合成更易于管理的格式。通常需要监视每个资源使用的内存量,当资源接近最大内存消耗量时,性能就开始下降。内存使用量的急剧增加可能作为识别应用程序和进程重要变化的指标。
这个图表是“堆叠”的形式。换句话说,图表中的所有数值都是当前度量读取的范围。这样,我们可以轻松地检查各种度量值是否相似并进行传送。该图表还包含有浮动的图例,使图表本身更加清晰易读。
图表3 – 已处理命令
これは、上のグラフ1から拡大された「処理されたコマンド」グラフです。 これは、Redis DBインスタンスを実行しているマシンのさまざまなグループと、それに関連して処理されたコマンドの数を示しています。 「処理されたコマンド」グラフは、DB管理者がRedis DBに渡されたコマンドを監視できるため、グラフ化するための重要なメトリックです。 これは、リソースにかかるトラフィックと潜在的なストレスを示しています。
图4 – 关键视图
これも、上のグラフ1から拡大されたキービューグラフです。 このグラフでは、各RedisDBインスタンスのキーの総数を示しています。
他のグラフと同様に、インスタンス内のキーの総数を知ることで、管理者は各RedisDBをより深く理解できます。 分散キャッシングストアとしてRedisDBを使用している場合、このようなグラフは、各インスタンスが適切にバランスされて使用されていることを確認するのに役立ちます。 インスタンスでキーの大幅な低下が見られる場合、この問題をさらに調査するために重要となってくるメトリックです。
RedisDB的关键指标
RedisDB自动推送的指标有很多。请参阅以下几个示例。完整列表可在Redis网站上找到。
Bdb_avg_latency – データベースでの操作の平均待ち時間(マイクロ秒単位)
Bdb_conns – データベースへのクライアント接続の数
Bdb_ingress_bytes – DBへの着信ネットワークトラフィックの場合のレート(バイト/秒)
Bdb_no_of_keys – データベース内のキーの数
Node_conns – ノード上のエンドポイントに接続されているクライアントの数
Node_cpu_user – ユーザーが費やしたCPU時間の部分-ペースプロセス
Node_free_memory – バイト単位でのノードのフリーメモリ
Node_up – ノードがクラスターの一部であり、接続されているか
Redis_up – シャードが稼働していルカ
总结
请在MetricFire的博客上详细了解有关如何创建Grafana仪表板和在Kubernetes上部署Grafana的教程。
如果对于Redis的Prometheus监控有任何问题,请务必预约演示并与我们联系。
那么,我们下一篇文章再见!