上一篇我们讲到使用prometheus和grafana可以实现监控平台,本篇我们以监控redis为例展示如何对中间件进行监控配置。
一、使用redis_exporter进行redis运行指标收集
为了演示,本地启动一个redis节点,默认的端口是6379端口。
上篇提到prometheus生态下提供了很多开箱即用的exporter,其中就有redis exporter,提供redis最重要的运行指标数据收集,部署了redis exporter以后,prometheus会通过redis exporter暴露的端口拉取数据。
redis exporter下载地址:
https://github.com/oliver006/redis_exporter/tags,下载解压以后执行redis_exporter,默认暴露9121端口。
tar -zxvf redis_exporter-v1.12.1.linux-386.tar.gz ./redis_exporter INFO[0000] Providing metrics at :9121/metrics
修改prometheus.yml配置文件,添加redis exporter的job,IP和端口就是redis exporter部署所在的IP和端口。
scrape_configs: - job_name: 'redis_exporter' static_configs: - targets: ['192.168.56.11:9121']
重新启动prometheus,在Graph页面输入redis,能看到redis所有的指标,以redis_memory_used_bytes为例,点击查询可以看到以下界面,表明已经采集到了redis运行指标。
二、使用redis dashboard配置grafana面板
grafana官方和社区提供了很多的开箱即用的dashboard,下载地址:
https://grafana.com/grafana/dashboards,这里选择Redis Dashboard for Prometheus Redis Exporter。
下载对应的JSON文件,在grafana界面上选择+号->Import上传JSON文件
成功以后,可以发现dashboard已经引入成功,页面如下:
可以发现已经成功的对redis的各种运行指标进行了监控,其中Memory Usage没有数据,Edit这个指标发现其Metrics表达式为:
100 * (redis_memory_used_bytes{instance=~"$instance"} / redis_memory_max_bytes{instance=~"$instance"} )
到prometheus graph页面查看redis_memory_max_bytes的值,发现值为0,说明没有获取到redis节点的最大内存字节数,可以手动修改为redis节点所指定的最大堆内存的字节数,例如修改为如下:
100 * (redis_memory_used_bytes{instance=~"$instance"} / 104857600)
最终实现监控效果如下图所示: