使用redis-exporter对redis集群进行性能监控

redis集群有三种模式,主从,sentinel(哨兵),cluster。关于这三种模式的介绍和部署,其它文章也有相关介绍,本人参考了他人的博客完成了三种模式的部署,博客地址:https://blog.csdn.net/miss1181248983/article/details/90056960。非常感谢此大佬的分享
目前redis使用主从模式,集群信息如下:

[root@master redis]# redis-cli -h 192.168.122.7 -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.122.8,port=6379,state=online,offset=28,lag=0
slave1:ip=192.168.122.9,port=6379,state=online,offset=28,lag=1
master_replid:950b3c2b60b56148577e566ac53af00911527c4e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28
[root@master redis]#
[root@master ~]#

以上信息可以看出,此时集群为主从模式,192.168.122.7为master节点,192.168.122.8和192.168.122.9为slave节点。关于redis的具体操作这儿不做阐述,相关文章很多。下面步骤就是如何利用redis-exporter收集redis性能监控。

1 创建redis-exporter

使用下面的yaml文件创建一个redis-exporter的Deployment‘

[root@master redis-local]# cat redis-exporter.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-exporter001
  namespace: monitoring
  labels:
    k8s-app: redis-exporter001
spec:
  selector:
    matchLabels:
      k8s-app: redis-exporter001
  template:
    metadata:
      labels:
        k8s-app: redis-exporter001
    spec:
      containers:
      - name: redis-exporter001
        image: oliver006/redis_exporter:latest
        args: ["-redis.addr", "redis://192.168.122.7:6379", "-redis.password", "123456"]
        ports:
        - containerPort: 9121
          name: http
[root@master redis-local]# kubectl apply -f redis-exporter.yaml
deployment.apps/redis-exporter001 created
[root@master redis-local]# kubectl logs -f -n monitoring redis-exporter001-5dc78569b5-5lmtf
time="2020-05-26T02:49:21Z" level=info msg="Redis Metrics Exporter v1.6.1    build date: 2020-05-13-02:16:26    sha1: 34c779deb5f9a1e023166b5cf3717d53cdc97053    Go: go1.14.2    GOOS: linux    GOARCH: amd64"
time="2020-05-26T02:49:21Z" level=info msg="Providing metrics at :9121/metrics"

此时redis-exporter创建完成

2 创建redis-exporter服务

使用下面的yaml文件创建redis-exporter服务

[root@master redis-local]# cat redis-exporter-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: redis-exporter001
  name: redis-exporter001
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 9121
    nodePort: 30019
    targetPort: http
  selector:
    k8s-app: redis-exporter001
[root@master redis-local]# kubectl apply -f redis-exporter-service.yaml
service/redis-exporter001 created
[root@master redis-local]# kubectl describe svc -n monitoring redis-exporter001
Name:                     redis-exporter001
Namespace:                monitoring
Labels:                   k8s-app=redis-exporter001
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"redis-exporter001"},"name":"redis-exporter001","name...
Selector:                 k8s-app=redis-exporter001
Type:                     NodePort
IP:                       10.10.126.113
Port:                     http  9121/TCP
TargetPort:               http/TCP
NodePort:                 http  30019/TCP
Endpoints:                10.124.187.225:9121
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
[root@master redis-local]#

使用nodeip:nodeport进行访问

此时redis的metrics部署完成

3创建redis-exporter-serverMonitor

使用下面的文件创建redis-exporter-serverMonitor

[root@master redis-local]# cat redis-exporter-serviceMonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: redis-exporter001
  name: redis-exporter001
  namespace: monitoring
spec:
  endpoints:
  - interval: 30s
    port: http
  jobLabel: k8s-app
  selector:
    matchLabels:
      k8s-app: redis-exporter001
[root@master redis-local]# kubectl apply -f redis-exporter-serviceMonitor.yaml
servicemonitor.monitoring.coreos.com/redis-exporter001 created
[root@master redis-local]# kubectl describe servicemonitors.monitoring.coreos.com -n monitoring redis-exporter001
Name:         redis-exporter001
Namespace:    monitoring
Labels:       k8s-app=redis-exporter001
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"monitoring.coreos.com/v1","kind":"ServiceMonitor","metadata":{"annotations":{},"labels":{"k8s-app":"redis-exporter001"},"na...
API Version:  monitoring.coreos.com/v1
Kind:         ServiceMonitor
Metadata:
  Creation Timestamp:  2020-05-26T02:53:46Z
  Generation:          1
  Resource Version:    574501
  Self Link:           /apis/monitoring.coreos.com/v1/namespaces/monitoring/servicemonitors/redis-exporter001
  UID:                 065dc9cc-a872-4630-a387-f4b11193aab6
Spec:
  Endpoints:
    Interval:  30s
    Port:      http
  Job Label:   k8s-app
  Selector:
    Match Labels:
      k8s-app:  redis-exporter001
Events:         <none>

最后创建一个serviceaccount

[root@master yaml]# kubectl create serviceaccount -n monitoring redis-exporter001
serviceaccount/redis-exporter001 created

以上部署完成后,在prometheus页面中查看对应的targets

4 grafana面板创建dashboard来监控redis集群



点击Import

监控效果如上图

5 redis写入数据进行测试

[root@master redis-local]# cat 123.txt |redis-cli -h 192.168.122.7 -a 123456


批量插入数据 ,查看grafana监控

此时redis性能使用率已经在上升。
关于如何监控redis集群——主从模式到此完成。关于如何监控另外两种模式,后续文档会继续更新。

redis-exporter 提供了多个监控指标,包括以下内容: 1. Redis 服务器信息: - redis_exporter_build_info:redis-exporter 的版本和构建信息。 - redis_exporter_scrapes_total:自启动以来执行的总抓取次数。 2. Redis 内存指标: - redis_memory_used_bytes:Redis 实例当前使用的内存大小(以字节为单位)。 - redis_memory_peak_bytes:Redis 实例历史上使用的最大内存大小(以字节为单位)。 - redis_memory_fragmentation_ratio:Redis 实例的内存碎片率。 3. Redis 连接指标: - redis_connections_connected:当前与 Redis 实例建立的连接数。 - redis_connections_received_total:自启动以来总共接收到的连接数。 - redis_connections_rejected_total:自启动以来总共拒绝的连接数。 4. Redis 命令指标: - redis_commands_processed_total:自启动以来总共处理的命令数。 - redis_commands_duration_seconds:Redis 命令的执行时间(单位:秒)。 5. Redis 键值对指标: - redis_keyspace_keys:当前 Redis 实例中存在的键值对数量。 - redis_keyspace_expires:当前 Redis 实例中设置了过期时间的键值对数量。 6. Redis 慢查询指标: - redis_slowlog_last_entry_id:Redis 慢查询日志的最后一条条目 ID。 - redis_slowlog_entries_total:自启动以来总共记录的慢查询日志条目数。 7. Redis 主从复制指标: - redis_replication_status:Redis 实例的主从复制状态(主机、从机、无复制)。 8. Redis RDB 指标: - redis_rdb_last_save_time_seconds:最后一次执行 RDB 持久化的时间戳。 - redis_rdb_changes_since_last_save:自上次 RDB 持久化以来的修改次数。 以上只是一些常见的监控指标,redis-exporter 还提供了更多详细的指标,可以根据实际需求进行配置和使用。要查看完整的指标列表和详细说明,您可以参考 redis-exporter 的官方文档或 GitHub 仓库中的说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值