使用阿里云Prometheus监控抓取Redis数据,并借助Prometheus Grafana大盘来展示Redis数据,即可实现通过Prometheus监控Redis的目的。
背景信息
本教程的操作流程如图所示。
步骤一:通过外部应用抓取Redis数据
将redis-exporter镜像部署至容器服务K8s集群,以便抓取Redis数据。
- 登录容器服务Kubernetes版控制台。
- 在左侧导航栏选择集群,在集群列表页面上的目标集群右侧操作列单击应用管理。
- 在工作负载页面单击无状态页签,在无状态页签中,单击使用模板创建。
- 在使用模板创建页签中,选择示例模板为自定义,并在文本框中填写以下内容,然后单击创建,将redis-exporter应用部署至容器服务K8s集群中。
说明 请将
<地址>和
<密码>替换为Redis的对应值。您也可以使用ARMS提供的示例值体验:
- Redis地址:redis://r-bp167pgqkqh7h25coypd.redis.rds.aliyuncs.com:6379
- Redis密码:
Arms1234
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis-exporter
spec:
replicas: 1
template:
metadata:
labels:
app: redis-exporter
spec:
containers:
- name: redis-exporter
imagePullPolicy: Always
env:
- name: REDIS_ADDR
value: "<地址>"
- name: REDIS_PASSWORD
value: "<密码>"
- name: REDIS_EXPORTER_DEBUG
value: "1"
image: oliver006/redis_exporter
ports:
- containerPort: 9121
name: redis-exporter
- 在左侧导航栏选择服务,在页面右上角单击使用YAML创建资源。
- 在工作负载对应页签中填写以下内容,然后单击创建。
apiVersion: v1
kind: Service
metadata:
labels:
app: redis-exporter
name: redis-exporter
spec:
ports:
- name: redis-exporter
port: 9121
protocol: TCP
targetPort: 9121
type: NodePort
selector:
app: redis-exporter
步骤二:配置Prometheus监控以接收Redis数据
- 登录容器服务Kubernetes版控制台。
- 为目标容器服务K8s集群开启阿里云Prometheus监控。具体操作,请参见开始使用Prometheus监控。
- 登录ARMS控制台。
- 在左侧导航栏单击Prometheus监控。
- 在Prometheus监控页面左上角选择容器服务K8s集群所在的地域,并在目标集群右侧的操作列单击设置。
- 在设置页面单击服务发现页签,在服务发现页签上单击添加ServiceMonitor,在添加ServiceMonitor对话框中填写以下内容,然后单击确定。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
# 填写一个唯一名称
name: redis-exporter
# 填写目标命名空间
namespace: default
spec:
endpoints:
- interval: 30s
# Redis Grafana模版ID为763
# 填写service.yaml中prometheus exporter对应的Port的Name字段的值
port: redis-exporter
# 填写Prometheus Exporter代码中暴露的地址
path: /metrics
namespaceSelector:
any: true
# Demo的命名空间
matchLabels:
# 填写service.yaml的Label字段以定位目标service.yaml
app: redis-exporter
步骤三:通过Grafana大盘展示Redis数据
最后需要在Prometheus控制台导入Grafana大盘模板并指定Prometheus数据源所在的容器服务K8s集群。
- 打开Prometheus Grafana大盘概览页。
- 在左侧导航栏中选择,并在Grafana.com Dashboard文本框输入763,然后单击Load。
- 在Import页面输入以下信息,然后单击Import。
- 在Name文本框中输入自定义的大盘名称。
- 在Folder下拉框中选择您的阿里云容器服务K8s集群。
- 在prom下拉框中选择您的阿里云容器服务K8s集群。
配置完毕后的Prometheus Grafana Redis大盘如图所示。

步骤四:创建Prometheus监控报警
- 登录ARMS控制台。
- 在左侧导航栏单击Prometheus监控。
- 在顶部菜单栏选择目标地域,然后单击目标K8s集群名称。
- 在左侧导航栏中选择报警配置Beta,然后在右上角单击创建报警。
- 在创建报警对话框中输入以下信息,完成后单击确认。
- 填写规则名称,例如:网络接收压力报警。
- 输入报警规则表达式,表达式需要使用PromQL语句。例如:
(sum(rate(kube_state_metrics_list_total{job="kube-state-metrics",result="error"}[5m]))
/ sum(rate(kube_state_metrics_list_total{job="kube-state-metrics"}[5m]))) > 0.01
。
注意 PromQL语句中包含的$
符号会导致报错,您需要删除包含$符号的语句中=
左右两边的参数及=
。例如:将sum (rate (container_network_receive_bytes_total{instance=~"^$HostIp.*"}[1m]))
修改为sum (rate (container_network_receive_bytes_total[1m]))
。
- 在标签区域单击创建标签可以设置报警标签,设置的标签可用作分派规则的选项。
- 在注释区域可以编辑告警信息发送模板。单击创建注释,设置键为message,设置值为 {{变量名}}告警信息。设置完成后的格式为:message:{{变量名}}告警信息,例如:message:{{$labels.pod_name}}重启。
您可以自定义变量名,也可以选择已有的标签作为变量名。已有的标签包括:
- 报警规则表达式指标中携带的标签。
- 通过报警规则创建的标签,请参见创建报警。
- ARMS系统自带的默认标签,默认标签说明如下。
标签 |
说明 |
alertname |
告警名称,格式为:告警名称_集群名称。 |
_aliyun_arms_alert_level |
告警等级。 |
_aliyun_arms_alert_type |
告警类型。 |
_aliyun_arms_alert_rule_id |
告警规则对应的ID。 |
_aliyun_arms_region_id |
地域ID。 |
_aliyun_arms_userid |
用户ID。 |
_aliyun_arms_involvedObject_type |
关联对象子类型,如ManagedKubernetes,ServerlessKubernetes。 |
_aliyun_arms_involvedObject_kind |
关联对象分类,如app,cluster。 |
_aliyun_arms_involvedObject_id |
关联对象ID。 |
_aliyun_arms_involvedObject_name |
关联对象名称。 |
后续步骤
Prometheus Grafana Redis大盘配置完毕后,您可以查看Prometheus监控指标和进一步自定义大盘,详见相关文档。