部署
了解了Prometheus是通过拉取的方式来保存监控数据的,可以自己写一个服务来去Redis来获取需要监控的相关指标,也可以直接用现成的exporter,如GitHub上redis_exporter,本文对Redis的监控是通过该导出器进行的。
下载&解压:
#下载 wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz #解压 tar xvf redis_exporter-v1.3.5.linux-amd64.tar.gz
注意:redis_exporter 版本从 0.x to 1.x 有了很大的改变:为了使redis_exporter更紧密地遵循“编写导出器的最佳实践”,不再直接支持配置(和抓取)多个Redis实例,而是将这一任务推给了Prometheus服务器.
但如果已经按照Prometheus项目的推荐使用了导出器,并且仅scrape了一个实例(例如使用–redis.addr和–redis.password 标志),那么没有任何改变。
准备:
1)在开启redis_exporter [v1.3.5]之前,需要先配置Prometheus,按照Prometheus + Grafana 部署说明之「安装」装好Prometheus之后,修改其配置文件。本次示例是通过文件服务发现来处理的,因为监控服务的同时也要监控系统相关的指标,所以需要node_exporter和redis_exporter。文件发现机制有2种方式:exporter配置可以放到一个文件,也可以为每个实例单独配置文件。如放到一个配置文件:
① 多实例相同密码的抓取(只需要一个redis-exporter),集群信息:
3节点无从,密码 abc 192.168.163.132、133、134 -- 6379 192.168.163.132、133、134 -- 6380
1.1 exporter配置放到一个文件的相关配置:
prometheus.yml:
global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/nodes-instances.json refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/redis-instances.json metrics_path: /scrape relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.163.132:9123
nodes-instances.json:
[ { \"targets\": [ \"192.168.163.132:9199\", \"192.168.163.133:9199\",\"192.168.163.134:9199\"] } ]
redis-instances.json:
[ { \"targets\": [ \"192.168.163.132:6379\",\"192.168.163.133:6379\",\"192.168.163.134:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\"} }, { \"targets\": [ \"192.168.163.132:6380\",\"192.168.163.133:6380\",\"192.168.163.134:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\"} } ]
以后如果有相关的实例集群包括主从加进来,只要修改以上2个exporter文件即可。最后开启exporter:
#各个节点执行 node-exporter: ./node_exporter --web.listen-address=:9199 #指定节点执行 redis_exporter: ./redis_exporter -redis-only-metrics -redis.password abc -web.listen-address=:9123
1.2 exporter配置独立存放的相关配置:
prometheus.yml:
global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/*.yml metrics_path: /scrape relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.163.132:9123
targets/node/*.yml:
# ls -lh /etc/prometheus/targets/node/*.yml -rw-r--r-- 1 root root 117 4月 18 14:51 /etc/prometheus/targets/node/test2_node_exporter.yml -rw-r--r-- 1 root root 117 4月 18 14:51 /etc/prometheus/targets/node/test3_node_exporter.yml -rw-r--r-- 1 root root 117 4月 18 14:51 /etc/prometheus/targets/node/test4_node_exporter.yml # cat /etc/prometheus/targets/node/test2_node_exporter.yml [ { \"targets\": [\"192.168.163.132:9199\"], \"labels\": {\"env\":\"test\",\"alias\":\"test2\"} } ] # cat /etc/prometheus/targets/node/test3_node_exporter.yml [ { \"targets\": [\"192.168.163.133:9199\"], \"labels\": {\"env\":\"test\",\"alias\":\"test3\"} } ] # cat /etc/prometheus/targets/node/test4_node_exporter.yml [ { \"targets\": [\"192.168.163.134:9199\"], \"labels\": {\"env\":\"test\",\"alias\":\"test4\"} } ]
targets/redis/*.yml:
# ls -lh /etc/prometheus/targets/redis/*.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/test2_6379_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/test2_6380_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/test3_6379_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:15 /etc/prometheus/targets/redis/test3_6380_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/test4_6379_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:15 /etc/prometheus/targets/redis/test4_6380_redis_exporter.yml # cat /etc/prometheus/targets/redis/test2_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.132:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test2\"} } ] # cat /etc/prometheus/targets/redis/test3_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.133:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test3\"} } ] # cat /etc/prometheus/targets/redis/test4_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.134:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test4\"} } ] # cat /etc/prometheus/targets/redis/test2_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.132:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test2\"} } ] # cat /etc/prometheus/targets/redis/test3_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.133:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test3\"} } ] # cat /etc/prometheus/targets/redis/test4_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.134:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test4\"} } ]
以后如果有相关的实例集群加进来包括主从,只要新增2类exporter文件即可。最后开启exporter:
#各个节点执行 node-exporter: ./node_exporter --web.listen-address=:9199 #指定节点执行 redis_exporter: ./redis_exporter -redis-only-metrics -redis.password abc -web.listen-address=:9123
以上2种通过文件服务发现的方法,推荐第2个。因为新增的文件有问题也不影响服务,修改文件可能会引发问题;并且也可以为各个节点打需要的labels。
最后配置Grafana,效果:
JSON Model:
{ \"annotations\": { \"list\": [ { \"builtIn\": 1, \"datasource\": \"-- Grafana --\", \"enable\": true, \"hide\": true, \"iconColor\": \"rgba(0, 211, 255, 1)\", \"name\": \"Annotations & Alerts\", \"type\": \"dashboard\" } ] }, \"editable\": true, \"gnetId\": null, \"graphTooltip\": 0, \"id\": 13, \"iteration\": 1587194136640, \"links\": [], \"panels\": [ { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群个数\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 0, \"y\": 0 }, \"id\": 8, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(count(redis_up{cluster=~\\\"$cluster\\\"}>0) by (cluster))\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 5, \"y\": 0 }, \"id\": 4, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群活跃节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 4, \"x\": 10, \"y\": 0 }, \"id\": 6, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"}>0)\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群活跃节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorPrefix\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"主节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 14, \"y\": 0 }, \"id\": 10, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"master\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"主节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"从节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 19, \"y\": 0 }, \"id\": 12, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"slave\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"从节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redus Cluster OPS指标\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 16, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"ceil(sum(rate(redis_commands_processed_total{cluster=~\\\"$cluster\\\",instance=~\\\"$master\\\"}[$interval])) by (cluster))\", \"interval\": \"5s\", \"legendFormat\": \"{{cluster}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis Cluster OPS\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用大小值\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 18, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_memory_used_bytes{instance=~\\\"$instance\\\"} \", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用大小\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"bytes\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis Server CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 14, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"100* (rate(redis_cpu_sys_seconds_total{instance=~\\\"$instance\\\"}[$interval]) + rate(redis_cpu_user_seconds_total{instance=~\\\"$instance\\\"}[$interval]))\", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 20, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(redis_memory_used_bytes{instance=~\\\"$instance\\\"} / redis_config_maxmemory{instance=~\\\"$instance\\\"}) * 100\", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 24, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(3,clamp_max((avg by (hostname,mode) ((clamp_max(rate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[5m]),1)) ))*100,100))\", \"hide\": true, \"interval\": \"\", \"legendFormat\": \"{{mode}}\", \"refId\": \"A\" }, { \"expr\": \"1 - avg by (hostname)(rate(node_cpu_seconds_total{hostname=~\\\"$host\\\", mode=\\\"idle\\\"}[$interval]))\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percentunit\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统物理内存利用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 30, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(node_memory_Cached_bytes{hostname=~\\\"$host\\\"} + node_memory_Buffers_bytes{hostname=~\\\"$host\\\"} + node_memory_MemFree_bytes{hostname=~\\\"$host\\\"})/node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"}\", \"hide\": true, \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" }, { \"expr\": \"((node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"} - (node_memory_MemAvailable_bytes{hostname=~\\\"$host\\\"} or (node_memory_MemFree_bytes{hostname=~\\\"$host\\\"} + node_memory_Buffers_bytes{hostname=~\\\"$host\\\"} + node_memory_Cached_bytes{hostname=~\\\"$host\\\"})))*100 / node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"})\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统物理内存利用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": true, \"cacheTimeout\": null, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统磁盘使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 32, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": false, \"linewidth\": 1, \"links\": [], \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pluginVersion\": \"6.7.2\", \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(10,max((1 - node_filesystem_avail_bytes{hostname=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"} / node_filesystem_size_bytes{hostname=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"})*100) by (hostname) > 0)\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统磁盘使用率\", \"tooltip\": { \"shared\": false, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"series\", \"name\": null, \"show\": true, \"values\": [ \"current\" ] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点以及集群的 KEYS 总数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 22, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_db_keys{instance=~\\\"$master\\\"}) by (instance,db)\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" }, { \"expr\": \"sum(redis_db_keys{instance=~\\\"$master\\\"}) by (cluster)\", \"interval\": \"\", \"legendFormat\": \"{{cluster}}_total\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"KEYS 总数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点活跃连接数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 26, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_connected_clients{instance=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"活跃连接数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点内存碎片率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 28, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_mem_fragmentation_ratio{instance=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"内存碎片率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点 的负载\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 43 }, \"hiddenSeries\": false, \"id\": 34, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"node_load1{hostname=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"负载(Load)\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } } ], \"refresh\": \"5s\", \"schemaVersion\": 22, \"style\": \"dark\", \"tags\": [], \"templating\": { \"list\": [ { \"auto\": true, \"auto_count\": 100, \"auto_min\": \"1s\", \"current\": { \"selected\": false, \"text\": \"5s\", \"value\": \"5s\" }, \"hide\": 0, \"label\": \"interval\", \"name\": \"interval\", \"options\": [ { \"selected\": false, \"text\": \"auto\", \"value\": \"$__auto_interval_interval\" }, { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, { \"selected\": false, \"text\": \"30s\", \"value\": \"30s\" }, { \"selected\": false, \"text\": \"1m\", \"value\": \"1m\" }, { \"selected\": false, \"text\": \"10m\", \"value\": \"10m\" }, { \"selected\": false, \"text\": \"30m\", \"value\": \"30m\" }, { \"selected\": false, \"text\": \"1h\", \"value\": \"1h\" }, { \"selected\": false, \"text\": \"6h\", \"value\": \"6h\" }, { \"selected\": false, \"text\": \"12h\", \"value\": \"12h\" }, { \"selected\": false, \"text\": \"1d\", \"value\": \"1d\" } ], \"query\": \"5s,30s,1m,10m,30m,1h,6h,12h,1d\", \"refresh\": 2, \"skipUrlSync\": false, \"type\": \"interval\" }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up,cluster)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Cluster\", \"multi\": true, \"name\": \"cluster\", \"options\": [], \"query\": \"label_values(redis_up,cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info,role)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Role\", \"multi\": true, \"name\": \"role\", \"options\": [], \"query\": \"label_values(redis_instance_info,role)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"instance\", \"multi\": true, \"name\": \"instance\", \"options\": [], \"query\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=\\\"master\\\"},instance)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"master\", \"multi\": true, \"name\": \"master\", \"options\": [], \"query\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=\\\"master\\\"},instance)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up{cluster=~\\\"$cluster\\\"}, hostip)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"host\", \"multi\": true, \"name\": \"host\", \"options\": [], \"query\": \"label_values(redis_up{cluster=~\\\"$cluster\\\"}, hostip)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false } ] }, \"time\": { \"from\": \"now-5m\", \"to\": \"now\" }, \"timepicker\": { \"refresh_intervals\": [ \"5s\", \"10s\", \"30s\", \"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"2h\", \"1d\" ] }, \"timezone\": \"\", \"title\": \"Redis_Cluster_V1.35\", \"uid\": \"5FfBHG3Zz\", \"variables\": { \"list\": [] }, \"version\": 3 }
②:不同密码多实例抓取,因为使用的是 >1.x 的redis_exporter [v1.3.5],不支持多实例。因为一个export只能指定一个密码,如果想进行多实例不同密码抓取的话,所以需要在Prometheus配置多个redis_exporter,集群信息为:
3节点无从 192.168.163.132、133、134 -- 6379 密码 abc 192.168.163.132、133、134 -- 6380 密码 cba
prometheus.yml:
global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter_A\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/A*.yml metrics_path: /scrape relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.163.132:9123 - job_name: \'redis_exporter_B\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/B*.yml metrics_path: /scrape relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.163.132:9124
targets/redis/*.yml:
# ls -lh /etc/prometheus/targets/redis/A*.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/Atest2_6379_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/Atest3_6379_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/Atest4_6379_redis_exporter.yml # ls -lh /etc/prometheus/targets/redis/B*.yml -rw-r--r-- 1 root root 121 4月 18 13:14 /etc/prometheus/targets/redis/Btest2_6380_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:15 /etc/prometheus/targets/redis/Btest3_6380_redis_exporter.yml -rw-r--r-- 1 root root 121 4月 18 13:15 /etc/prometheus/targets/redis/Btest4_6380_redis_exporter.yml # cat /etc/prometheus/targets/redis/Atest2_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.132:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test2\"} } ] # cat /etc/prometheus/targets/redis/Atest3_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.133:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test3\"} } ] # cat /etc/prometheus/targets/redis/Atest4_6379_redis_exporter.yml [ { \"targets\": [ \"192.168.163.134:6379\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_one\",\"alias\":\"test4\"} } ] # cat /etc/prometheus/targets/redis/Btest2_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.132:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test2\"} } ] # cat /etc/prometheus/targets/redis/Btest3_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.133:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test3\"} } ] # cat /etc/prometheus/targets/redis/Btest4_6380_redis_exporter.yml [ { \"targets\": [ \"192.168.163.134:6380\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test_two\",\"alias\":\"test4\"} } ]
以后如果有相关的实例集群包括主从加进来,只要新增2类exporter文件即可。最后开启exporter:
#指定节点执行 redis_exporter: ./redis_exporter -redis-only-metrics -redis.password abc -web.listen-address=:9123 #指定节点执行 redis_exporter: ./redis_exporter -redis-only-metrics -redis.password cba -web.listen-address=:9124
最后配置Grafana,效果和①一样,唯一的区别就是②开多个exporter。这样会导致一个问题:每次增加不同密码的节点都会修改Prometheus配置文件,既不安全也不方便。可以通过下面方法来实现多实例不同密码抓取。按照编写导出器的最佳实践,需要像nodes_exporter一样在不同实例的主机上安装和开启redis_exporter,即为每个redis instance开启一个exporter。集群信息为:
集群1:密码 cc M: 192.168.163.132:15389 192.168.163.133:15389 192.168.163.134:15389 S: 192.168.163.132:15489 192.168.163.133:15489 192.168.163.134:15489 集群2:密码abc M: 192.168.163.132:6379 192.168.163.133:6379 192.168.163.134:6379 S: 192.168.163.132:6381 192.168.163.133:6381 192.168.163.134:6381
prometheus.yml:
global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/node*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/redis*.yml relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - action: labeldrop regex: __meta_filepath
targets/redis/redis*.yml
root@test2:/etc/prometheus/targets/redis# ls -lh redis* -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:02 redis_test2_15389_exporter.yml -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:05 redis_test2_15489_exporter.yml -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:02 redis_test3_15389_exporter.yml -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:05 redis_test3_15489_exporter.yml -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:03 redis_test4_15389_exporter.yml -rw-r--r-- 1 prometheus prometheus 117 4月 18 22:05 redis_test4_15489_exporter.yml root@test2:/etc/prometheus/targets/redis# cat redis_test2_15389_exporter.yml [ { \"targets\": [\"192.168.163.132:9121\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test2\"} } ] root@test2:/etc/prometheus/targets/redis# cat redis_test3_15389_exporter.yml [ { \"targets\": [\"192.168.163.133:9121\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test3\"} } ] root@test2:/etc/prometheus/targets/redis# cat redis_test4_15389_exporter.yml [ { \"targets\": [\"192.168.163.134:9121\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test4\"} } ] root@test2:/etc/prometheus/targets/redis# cat redis_test2_15489_exporter.yml [ { \"targets\": [\"192.168.163.132:9122\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test2\"} } ] root@test2:/etc/prometheus/targets/redis# cat redis_test3_15489_exporter.yml [ { \"targets\": [\"192.168.163.133:9122\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test3\"} } ] root@test2:/etc/prometheus/targets/redis# cat redis_test4_15489_exporter.yml [ { \"targets\": [\"192.168.163.134:9122\"], \"labels\": {\"env\":\"test\",\"cluster\":\"test\",\"alias\":\"test4\"} } ]
通过文件服务发现,实现动态添加节点(exporter),一个Redis实例一个exporter,这里只开集群1的exporter,即在test2、test3、test4上各开启2个exporter,共6个exporter对应6个Redis实例,配置完成之后,可以直接到各个监控主机上启动redis_exporter:
test2: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.132:15389 -redis.password cc -web.listen-address=:9121 ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.132:15489 -redis.password cc -web.listen-address=:9122 test3: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.133:15389 -redis.password cc -web.listen-address=:9121 ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.133:15489 -redis.password cc -web.listen-address=:9122 test4: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.134:15389 -redis.password cc -web.listen-address=:9121 ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.134:15489 -redis.password cc -web.listen-address=:9122
最后配置Grafana,效果:
JSON Model:
{ \"annotations\": { \"list\": [ { \"builtIn\": 1, \"datasource\": \"-- Grafana --\", \"enable\": true, \"hide\": true, \"iconColor\": \"rgba(0, 211, 255, 1)\", \"name\": \"Annotations & Alerts\", \"type\": \"dashboard\" } ] }, \"editable\": true, \"gnetId\": null, \"graphTooltip\": 0, \"id\": 13, \"iteration\": 1587219062782, \"links\": [], \"panels\": [ { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群个数\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 0, \"y\": 0 }, \"id\": 8, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(count(redis_up{cluster=~\\\"$cluster\\\"}>0) by (cluster))\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 5, \"y\": 0 }, \"id\": 4, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群活跃节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 4, \"x\": 10, \"y\": 0 }, \"id\": 6, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"}>0)\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群活跃节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorPrefix\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"主节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 14, \"y\": 0 }, \"id\": 10, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"master\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"主节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"从节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 19, \"y\": 0 }, \"id\": 12, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"slave\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"从节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redus Cluster OPS指标\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 16, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"ceil(sum(rate(redis_commands_processed_total{cluster=~\\\"$cluster\\\",instance=~\\\"$master\\\"}[$interval])) by (cluster))\", \"interval\": \"5s\", \"legendFormat\": \"{{cluster}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis Cluster OPS\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用大小值\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 18, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_memory_used_bytes{instance=~\\\"$instance\\\"} \", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用大小\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"bytes\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis Server CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 14, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"100* (rate(redis_cpu_sys_seconds_total{instance=~\\\"$instance\\\"}[$interval]) + rate(redis_cpu_user_seconds_total{instance=~\\\"$instance\\\"}[$interval]))\", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 20, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(redis_memory_used_bytes{instance=~\\\"$instance\\\"} / redis_config_maxmemory{instance=~\\\"$instance\\\"}) * 100\", \"interval\": \"5s\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 24, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(3,clamp_max((avg by (hostname,mode) ((clamp_max(rate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[5m]),1)) ))*100,100))\", \"hide\": true, \"interval\": \"\", \"legendFormat\": \"{{mode}}\", \"refId\": \"A\" }, { \"expr\": \"1 - avg by (hostname)(rate(node_cpu_seconds_total{hostname=~\\\"$host\\\", mode=\\\"idle\\\"}[$interval]))\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percentunit\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统物理内存利用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 30, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(node_memory_Cached_bytes{hostname=~\\\"$host\\\"} + node_memory_Buffers_bytes{hostname=~\\\"$host\\\"} + node_memory_MemFree_bytes{hostname=~\\\"$host\\\"})/node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"}\", \"hide\": true, \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" }, { \"expr\": \"((node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"} - (node_memory_MemAvailable_bytes{hostname=~\\\"$host\\\"} or (node_memory_MemFree_bytes{hostname=~\\\"$host\\\"} + node_memory_Buffers_bytes{hostname=~\\\"$host\\\"} + node_memory_Cached_bytes{hostname=~\\\"$host\\\"})))*100 / node_memory_MemTotal_bytes{hostname=~\\\"$host\\\"})\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统物理内存利用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": true, \"cacheTimeout\": null, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统磁盘使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 32, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": false, \"linewidth\": 1, \"links\": [], \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pluginVersion\": \"6.7.2\", \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(10,max((1 - node_filesystem_avail_bytes{hostname=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"} / node_filesystem_size_bytes{hostname=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"})*100) by (hostname) > 0)\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统磁盘使用率\", \"tooltip\": { \"shared\": false, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"series\", \"name\": null, \"show\": true, \"values\": [ \"current\" ] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点以及集群的 KEYS 总数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 22, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_db_keys{instance=~\\\"$master\\\"}) by (instance,db)\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" }, { \"expr\": \"sum(redis_db_keys{instance=~\\\"$master\\\"}) by (cluster)\", \"interval\": \"\", \"legendFormat\": \"{{cluster}}_total\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"KEYS 总数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点活跃连接数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 26, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_connected_clients{instance=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"活跃连接数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点内存碎片率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 28, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_mem_fragmentation_ratio{instance=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"内存碎片率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点 的负载\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 43 }, \"hiddenSeries\": false, \"id\": 34, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"node_load1{hostname=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{hostname}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"负载(Load)\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } } ], \"refresh\": \"5s\", \"schemaVersion\": 22, \"style\": \"dark\", \"tags\": [], \"templating\": { \"list\": [ { \"auto\": true, \"auto_count\": 100, \"auto_min\": \"1s\", \"current\": { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, \"hide\": 0, \"label\": \"interval\", \"name\": \"interval\", \"options\": [ { \"selected\": false, \"text\": \"auto\", \"value\": \"$__auto_interval_interval\" }, { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, { \"selected\": false, \"text\": \"30s\", \"value\": \"30s\" }, { \"selected\": false, \"text\": \"1m\", \"value\": \"1m\" }, { \"selected\": false, \"text\": \"10m\", \"value\": \"10m\" }, { \"selected\": false, \"text\": \"30m\", \"value\": \"30m\" }, { \"selected\": false, \"text\": \"1h\", \"value\": \"1h\" }, { \"selected\": false, \"text\": \"6h\", \"value\": \"6h\" }, { \"selected\": false, \"text\": \"12h\", \"value\": \"12h\" }, { \"selected\": false, \"text\": \"1d\", \"value\": \"1d\" } ], \"query\": \"5s,30s,1m,10m,30m,1h,6h,12h,1d\", \"refresh\": 2, \"skipUrlSync\": false, \"type\": \"interval\" }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up,cluster)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Cluster\", \"multi\": true, \"name\": \"cluster\", \"options\": [], \"query\": \"label_values(redis_up,cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info,role)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Role\", \"multi\": true, \"name\": \"role\", \"options\": [], \"query\": \"label_values(redis_instance_info,role)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"instance\", \"multi\": true, \"name\": \"instance\", \"options\": [], \"query\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=\\\"master\\\"},instance)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"master\", \"multi\": true, \"name\": \"master\", \"options\": [], \"query\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=\\\"master\\\"},instance)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up{cluster=~\\\"$cluster\\\"}, hostip)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"host\", \"multi\": true, \"name\": \"host\", \"options\": [], \"query\": \"label_values(redis_up{cluster=~\\\"$cluster\\\"}, hostip)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false } ] }, \"time\": { \"from\": \"now-5m\", \"to\": \"now\" }, \"timepicker\": { \"refresh_intervals\": [ \"5s\", \"10s\", \"30s\", \"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"2h\", \"1d\" ] }, \"timezone\": \"\", \"title\": \"Redis_Cluster_V1.35\", \"uid\": \"5FfBHG3Zz\", \"variables\": { \"list\": [] }, \"version\": 4 }
③:旧版本redis_exporter [v0.34.1]支持多实例不同密码,集群信息:
集群1:密码 cc M: 192.168.163.132:15389 192.168.163.133:15389 192.168.163.134:15389 S: 192.168.163.132:15489 192.168.163.133:15489 192.168.163.134:15489 集群2:密码abc M: 192.168.163.132:6379 192.168.163.133:6379 192.168.163.134:6379 S: 192.168.163.132:6381 192.168.163.133:6381 192.168.163.134:6381
prometheus.yml:
global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/nodes-instances.json refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s static_configs: - targets: [\'192.168.163.132:9128\']
redis_exporter直接用命令行启动:对应的参数有-redis.addr、-redis.alias、-redis.password:
# ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.132:15389,192.168.163.133:15389,192.168.163.134:15389,192.168.163.132:15489,192.168.163.133:15489,192.168.163.134:15489,192.168.163.132:6379,192.168.163.133:6379,192.168.163.134:6379,192.168.163.132:6381,192.168.163.133:6381,192.168.163.134:6381 -redis.alias test,test,test,test,test,test,test123,test123,test123,test123,test123,test123 -redis.password cc,cc,cc,cc,cc,cc,abc,abc,abc,abc,abc,abc -web.listen-address :9128 INFO[0000] Redis Metrics Exporter v0.34.1 build date: 2019-05-09-15:42:21 sha1: 1c168d07eff09e64efb18600a35664d6666926e6 Go: go1.12.5 INFO[0000] Providing metrics at :9128/metrics INFO[0000] Connecting to redis hosts: []string{\"192.168.163.132:15389\", \"192.168.163.133:15389\", \"192.168.163.134:15389\", \"192.168.163.132:15489\", \"192.168.163.133:15489\", \"192.168.163.134:15489\", \"192.168.163.132:6379\", \"192.168.163.133:6379\", \"192.168.163.134:6379\", \"192.168.163.132:6381\", \"192.168.163.133:6381\", \"192.168.163.134:6381\"} INFO[0000] Using alias: []string{\"test\", \"test\", \"test\", \"test\", \"test\", \"test\", \"test123\", \"test123\", \"test123\", \"test123\", \"test123\", \"test123\"}
注意:参数、密码和实例的他们是一一对应的。最后配置Grafana,效果:
JSON Model:
{ \"annotations\": { \"list\": [ { \"builtIn\": 1, \"datasource\": \"-- Grafana --\", \"enable\": true, \"hide\": true, \"iconColor\": \"rgba(0, 211, 255, 1)\", \"name\": \"Annotations & Alerts\", \"type\": \"dashboard\" } ] }, \"editable\": true, \"gnetId\": null, \"graphTooltip\": 0, \"id\": 14, \"iteration\": 1587221739977, \"links\": [], \"panels\": [ { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群个数\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 0, \"y\": 0 }, \"id\": 8, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(count(redis_up{alias=~\\\"$cluster\\\"}>0) by (alias))\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 5, \"y\": 0 }, \"id\": 4, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{alias=~\\\"$cluster\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群活跃节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 4, \"x\": 10, \"y\": 0 }, \"id\": 6, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{alias=~\\\"$cluster\\\"}>0)\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群活跃节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorPrefix\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"主节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 14, \"y\": 0 }, \"id\": 10, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{alias=~\\\"$cluster\\\", role=\\\"master\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"主节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"从节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 19, \"y\": 0 }, \"id\": 12, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{alias=~\\\"$cluster\\\", role=\\\"slave\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"从节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redus Cluster OPS指标\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 16, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"ceil(sum(rate(redis_commands_processed_total{alias=~\\\"$cluster\\\",addr=~\\\"$master\\\"}[$interval])) by (alias))\", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis Cluster OPS\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用大小值\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 18, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_memory_used_bytes{addr=~\\\"$instance\\\"} \", \"interval\": \"5s\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用大小\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"bytes\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis Server CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 14, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"100* (rate(redis_used_cpu_sys{addr=~\\\"$instance\\\"}[$interval]) + rate(redis_used_cpu_user{addr=~\\\"$instance\\\"}[$interval]))\", \"interval\": \"5s\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 20, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(redis_memory_used_bytes{addr=~\\\"$instance\\\"} / redis_config_maxmemory{addr=~\\\"$instance\\\"}) * 100\", \"interval\": \"5s\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 24, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(3,clamp_max((avg by (hostname,mode) ((clamp_max(rate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{hostname=~\\\"$host\\\",mode!=\\\"idle\\\"}[5m]),1)) ))*100,100))\", \"hide\": true, \"interval\": \"\", \"legendFormat\": \"{{mode}}\", \"refId\": \"A\" }, { \"expr\": \"1 - avg by (hostip)(rate(node_cpu_seconds_total{hostip=~\\\"$host\\\", mode=\\\"idle\\\"}[$interval]))\", \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percentunit\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统物理内存利用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 30, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"((node_memory_MemTotal_bytes{hostip=~\\\"$host\\\"} - (node_memory_MemAvailable_bytes{hostip=~\\\"$host\\\"} or (node_memory_MemFree_bytes{hostip=~\\\"$host\\\"} + node_memory_Buffers_bytes{hostip=~\\\"$host\\\"} + node_memory_Cached_bytes{hostip=~\\\"$host\\\"})))*100 / node_memory_MemTotal_bytes{hostip=~\\\"$host\\\"})\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统物理内存利用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": true, \"cacheTimeout\": null, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统磁盘使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 32, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": false, \"linewidth\": 1, \"links\": [], \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pluginVersion\": \"6.7.2\", \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(10,max((1 - node_filesystem_avail_bytes{hostip=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"} / node_filesystem_size_bytes{hostip=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"})*100) by (hostip) > 0)\", \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统磁盘使用率\", \"tooltip\": { \"shared\": false, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"series\", \"name\": null, \"show\": true, \"values\": [ \"current\" ] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点以及集群的 KEYS 总数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 22, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_db_keys{addr=~\\\"$master\\\"}) by (addr,db)\", \"interval\": \"\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" }, { \"expr\": \"sum(redis_db_keys{addr=~\\\"$master\\\"}) by (alias)\", \"interval\": \"\", \"legendFormat\": \"{{alias}}_total\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"KEYS 总数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点活跃连接数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 26, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_connected_clients{addr=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"活跃连接数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点内存碎片率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 28, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_mem_fragmentation_ratio{addr=~\\\"$instance\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{addr}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"内存碎片率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点 的负载\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 43 }, \"hiddenSeries\": false, \"id\": 34, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"node_load1{hostip=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{hostip}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"负载(Load)\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } } ], \"refresh\": \"5s\", \"schemaVersion\": 22, \"style\": \"dark\", \"tags\": [], \"templating\": { \"list\": [ { \"auto\": true, \"auto_count\": 100, \"auto_min\": \"1s\", \"current\": { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, \"hide\": 0, \"label\": \"interval\", \"name\": \"interval\", \"options\": [ { \"selected\": false, \"text\": \"auto\", \"value\": \"$__auto_interval_interval\" }, { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, { \"selected\": false, \"text\": \"30s\", \"value\": \"30s\" }, { \"selected\": false, \"text\": \"1m\", \"value\": \"1m\" }, { \"selected\": false, \"text\": \"10m\", \"value\": \"10m\" }, { \"selected\": false, \"text\": \"30m\", \"value\": \"30m\" }, { \"selected\": false, \"text\": \"1h\", \"value\": \"1h\" }, { \"selected\": false, \"text\": \"6h\", \"value\": \"6h\" }, { \"selected\": false, \"text\": \"12h\", \"value\": \"12h\" }, { \"selected\": false, \"text\": \"1d\", \"value\": \"1d\" } ], \"query\": \"5s,30s,1m,10m,30m,1h,6h,12h,1d\", \"refresh\": 2, \"skipUrlSync\": false, \"type\": \"interval\" }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up,alias)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Cluster\", \"multi\": true, \"name\": \"cluster\", \"options\": [], \"query\": \"label_values(redis_up,alias)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\"},role)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Role\", \"multi\": true, \"name\": \"role\", \"options\": [], \"query\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\"},role)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\",role=~\\\"$role\\\"},addr)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"instance\", \"multi\": true, \"name\": \"instance\", \"options\": [], \"query\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\",role=~\\\"$role\\\"},addr)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\",role=\\\"master\\\"},addr)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"master\", \"multi\": true, \"name\": \"master\", \"options\": [], \"query\": \"label_values(redis_instance_info{alias=~\\\"$cluster\\\",role=\\\"master\\\"},addr)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_up{alias=~\\\"$cluster\\\"}, addr)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"host\", \"multi\": true, \"name\": \"host\", \"options\": [], \"query\": \"label_values(redis_up{alias=~\\\"$cluster\\\"}, addr)\", \"refresh\": 1, \"regex\": \"(.*):.*\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false } ] }, \"time\": { \"from\": \"now-5m\", \"to\": \"now\" }, \"timepicker\": { \"refresh_intervals\": [ \"5s\", \"10s\", \"30s\", \"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"2h\", \"1d\" ] }, \"timezone\": \"\", \"title\": \"Redis_Cluster_V0.34\", \"uid\": \"5FfBHG3Zz1\", \"variables\": { \"list\": [] }, \"version\": 1 }
3)导入dashboard(763)到Grafana,展示的监控图:
需要注意的是,监控面板上看到的是exporter的IP和端口,看不到Redis实例的端口,如果是一台机器部署一台Redis实例,则可以直接使用主机名。或则修改相应的labels来自定义需求。除了修改labels之外,还可以自定义数据源,如使用MySQL作为新数据源。
5)MySQL做为数据源定制模板
添加数据源:
表结构:
CREATE TABLE `cluster_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT \'主键\', `cluster_type` varchar(64) DEFAULT NULL COMMENT \'集群类型\', `cluster_name` varchar(64) DEFAULT NULL COMMENT \'集群名\', `hostname` varchar(64) DEFAULT NULL COMMENT \'主机名\', `host_ip` varchar(64) DEFAULT NULL COMMENT \'IP\', `port` int(11) DEFAULT NULL COMMENT \'服务端口\', `role` varchar(64) DEFAULT NULL COMMENT \'服务角色\', `comments` varchar(500) DEFAULT NULL COMMENT \'集群描述\', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'更新时间\', PRIMARY KEY (`id`), KEY `idx_create_time` (`create_time`), KEY `idx_update_time` (`update_time`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=\'集群信息\'
表记录:
mysql> select * from cluster_info; +----+---------------+--------------+----------+-----------------+------+--------+--------------+---------------------+---------------------+ | id | cluster_type | cluster_name | hostname | host_ip | port | role | comments | create_time | update_time | +----+---------------+--------------+----------+-----------------+------+--------+--------------+---------------------+---------------------+ | 1 | Redis_Cluster | testX | test2 | 192.168.163.132 | 6380 | master | 测试集群 | 2020-04-08 19:22:56 | 2020-04-09 11:19:13 | | 2 | Redis_Cluster | testX | test3 | 192.168.163.133 | 6380 | master | 测试集群 | 2020-04-08 19:24:29 | 2020-04-09 11:19:16 | | 3 | Redis_Cluster | testX | test4 | 192.168.163.134 | 6380 | master | 测试集群 | 2020-04-08 19:24:33 | 2020-04-09 11:19:16 | +----+---------------+--------------+----------+-----------------+------+--------+--------------+---------------------+---------------------+
5.1 使用编写导出器的最佳实践:
prometheus.yml:
global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/node*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/redis/Xredis*.yml relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostip - action: labeldrop regex: __meta_filepath
targets/node/node*.yml
root@test2:/etc/prometheus/targets/node# ls -lh node*.yml -rw-r--r-- 1 prometheus prometheus 103 4月 19 01:24 node_test2_exporter.yml -rw-r--r-- 1 prometheus prometheus 103 4月 18 16:18 node_test3_exporter.yml -rw-r--r-- 1 prometheus prometheus 103 4月 18 16:18 node_test4_exporter.yml root@test2:/etc/prometheus/targets/node# cat node_test2_exporter.yml [ { \"targets\": [\"192.168.163.132:9199\"], \"labels\": {\"env\":\"test\",\"instance\":\"test2\"} } ] root@test2:/etc/prometheus/targets/node# cat node_test3_exporter.yml [ { \"targets\": [\"192.168.163.133:9199\"], \"labels\": {\"env\":\"test\",\"instance\":\"test3\"} } ] root@test2:/etc/prometheus/targets/node# cat node_test4_exporter.yml [ { \"targets\": [\"192.168.163.134:9199\"], \"labels\": {\"env\":\"test\",\"instance\":\"test4\"} } ]
targets/redis/Xredis*.yml
root@test2:/etc/prometheus/targets/redis# ls -lh Xredis*.yml -rw-r--r-- 1 root root 118 4月 19 00:34 Xredis_test2_6380_exporter.yml -rw-r--r-- 1 root root 118 4月 19 00:36 Xredis_test3_6380_exporter.yml -rw-r--r-- 1 root root 118 4月 19 00:35 Xredis_test4_6380_exporter.yml root@test2:/etc/prometheus/targets/redis# cat Xredis_test2_6380_exporter.yml [ { \"targets\": [\"192.168.163.132:9123\"], \"labels\": {\"env\":\"test\",\"cluster\":\"testX\",\"alias\":\"test2\"} } ] root@test2:/etc/prometheus/targets/redis# cat Xredis_test3_6380_exporter.yml [ { \"targets\": [\"192.168.163.133:9123\"], \"labels\": {\"env\":\"test\",\"cluster\":\"testX\",\"alias\":\"test3\"} } ] root@test2:/etc/prometheus/targets/redis# cat Xredis_test4_6380_exporter.yml [ { \"targets\": [\"192.168.163.134:9123\"], \"labels\": {\"env\":\"test\",\"cluster\":\"testX\",\"alias\":\"test4\"} } ]
配置完成之后,可以直接到各个监控主机上启动redis_exporter:
test2: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.132:6380 -redis.password cba -web.listen-address=:9123 test3: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.133:6380 -redis.password cba -web.listen-address=:9123 test4: ./redis_exporter -redis-only-metrics -redis.addr 192.168.163.134:6380 -redis.password cba -web.listen-address=:9123
最后配置Grafana,效果:
JSON Model:
{ \"annotations\": { \"list\": [ { \"builtIn\": 1, \"datasource\": \"-- Grafana --\", \"enable\": true, \"hide\": true, \"iconColor\": \"rgba(0, 211, 255, 1)\", \"name\": \"Annotations & Alerts\", \"type\": \"dashboard\" } ] }, \"editable\": true, \"gnetId\": null, \"graphTooltip\": 0, \"id\": 13, \"iteration\": 1587231669738, \"links\": [], \"panels\": [ { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群个数\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 0, \"y\": 0 }, \"id\": 8, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(count(redis_up{cluster=~\\\"$cluster\\\"}) by (cluster))\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 5, \"y\": 0 }, \"id\": 4, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群活跃节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 4, \"x\": 10, \"y\": 0 }, \"id\": 6, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{cluster=~\\\"$cluster\\\"}>0)\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群活跃节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorPrefix\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"主节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 14, \"y\": 0 }, \"id\": 10, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"master\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"主节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"从节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 19, \"y\": 0 }, \"id\": 12, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{cluster=~\\\"$cluster\\\", role=\\\"slave\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"从节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redus Cluster OPS指标\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 16, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"ceil(sum(rate(redis_commands_processed_total{cluster=~\\\"$cluster\\\",alias=~\\\"$master\\\"}[$interval])) by (cluster))\", \"interval\": \"5s\", \"legendFormat\": \"{{cluster}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis Cluster OPS\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用大小值\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 18, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_memory_used_bytes{alias=~\\\"$host\\\"} \", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用大小\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"bytes\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis Server CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 14, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"100* (rate(redis_cpu_sys_seconds_total{alias=~\\\"$host\\\"}[$interval]) + rate(redis_cpu_user_seconds_total{alias=~\\\"$host\\\"}[$interval]))\", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 20, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(redis_memory_used_bytes{alias=~\\\"$host\\\"} / redis_config_maxmemory{alias=~\\\"$host\\\"}) * 100\", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 24, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"1 - avg by (instance)(rate(node_cpu_seconds_total{instance=~\\\"$host\\\", mode=\\\"idle\\\"}[$interval]))\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percentunit\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统物理内存利用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 30, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"((node_memory_MemTotal_bytes{instance=~\\\"$host\\\"} - (node_memory_MemAvailable_bytes{instance=~\\\"$host\\\"} or (node_memory_MemFree_bytes{instance=~\\\"$host\\\"} + node_memory_Buffers_bytes{instance=~\\\"$host\\\"} + node_memory_Cached_bytes{instance=~\\\"$host\\\"})))*100 / node_memory_MemTotal_bytes{instance=~\\\"$host\\\"})\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统物理内存利用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": true, \"cacheTimeout\": null, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统磁盘使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 32, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": false, \"linewidth\": 1, \"links\": [], \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pluginVersion\": \"6.7.2\", \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(10,max((1 - node_filesystem_avail_bytes{instance=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"} / node_filesystem_size_bytes{instance=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"})*100) by (instance) > 0)\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统磁盘使用率\", \"tooltip\": { \"shared\": false, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"series\", \"name\": null, \"show\": true, \"values\": [ \"current\" ] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点以及集群的 KEYS 总数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 22, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_db_keys{alias=~\\\"$master\\\"}) by (alias,db)\", \"interval\": \"\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" }, { \"expr\": \"sum(redis_db_keys{alias=~\\\"$master\\\"}) by (cluster)\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{cluster}}_total\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"KEYS 总数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"集群的活跃连接数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 26, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_connected_clients{alias=~\\\"$master\\\"}) by (cluster)\", \"interval\": \"\", \"legendFormat\": \"{{cluster}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"活跃连接数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点内存碎片率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 28, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_mem_fragmentation_ratio{alias=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"内存碎片率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点 的负载\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 43 }, \"hiddenSeries\": false, \"id\": 34, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"node_load1{instance=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"负载(Load)\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } } ], \"refresh\": \"5s\", \"schemaVersion\": 22, \"style\": \"dark\", \"tags\": [], \"templating\": { \"list\": [ { \"auto\": true, \"auto_count\": 100, \"auto_min\": \"1s\", \"current\": { \"selected\": false, \"text\": \"5s\", \"value\": \"5s\" }, \"hide\": 0, \"label\": \"interval\", \"name\": \"interval\", \"options\": [ { \"selected\": false, \"text\": \"auto\", \"value\": \"$__auto_interval_interval\" }, { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, { \"selected\": false, \"text\": \"30s\", \"value\": \"30s\" }, { \"selected\": false, \"text\": \"1m\", \"value\": \"1m\" }, { \"selected\": false, \"text\": \"10m\", \"value\": \"10m\" }, { \"selected\": false, \"text\": \"30m\", \"value\": \"30m\" }, { \"selected\": false, \"text\": \"1h\", \"value\": \"1h\" }, { \"selected\": false, \"text\": \"6h\", \"value\": \"6h\" }, { \"selected\": false, \"text\": \"12h\", \"value\": \"12h\" }, { \"selected\": false, \"text\": \"1d\", \"value\": \"1d\" } ], \"query\": \"5s,30s,1m,10m,30m,1h,6h,12h,1d\", \"refresh\": 2, \"skipUrlSync\": false, \"type\": \"interval\" }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select cluster_name from cluster_info where cluster_type = \\\"Redis_Cluster\\\"\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Cluster\", \"multi\": true, \"name\": \"cluster\", \"options\": [], \"query\": \"select cluster_name from cluster_info where cluster_type = \\\"Redis_Cluster\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select role from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Role\", \"multi\": true, \"name\": \"role\", \"options\": [], \"query\": \"select role from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"host\", \"multi\": true, \"name\": \"host\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"master\\\"\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"master\", \"multi\": true, \"name\": \"master\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"master\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"slave\\\"\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"slave\", \"multi\": true, \"name\": \"slave\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"slave\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"Prometheus\", \"definition\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"instance\", \"multi\": true, \"name\": \"instance\", \"options\": [], \"query\": \"label_values(redis_instance_info{cluster=~\\\"$cluster\\\",role=~\\\"$role\\\"},instance)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false } ] }, \"time\": { \"from\": \"now-5m\", \"to\": \"now\" }, \"timepicker\": { \"refresh_intervals\": [ \"5s\", \"10s\", \"30s\", \"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"2h\", \"1d\" ] }, \"timezone\": \"\", \"title\": \"Redis_Cluster_V1.35\", \"uid\": \"5FfBHG3Zz\", \"variables\": { \"list\": [] }, \"version\": 9 }
5.2 使用老版本的exporter:
prometheus.yml
global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.132:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/node*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s static_configs: - targets: [\'192.168.163.132:9128\']
配置完成之后,可以直接到监控主机上启动redis_exporter:
./redis_exporter -redis-only-metrics -redis.addr 192.168.163.132:6380,192.168.163.133:6380,192.168.163.134:6380 -redis.alias test2,test3,test4 -redis.password cba,cba,cba -web.listen-address :9128
最后配置Grafana,效果:
JSON Model:
{ \"annotations\": { \"list\": [ { \"builtIn\": 1, \"datasource\": \"-- Grafana --\", \"enable\": true, \"hide\": true, \"iconColor\": \"rgba(0, 211, 255, 1)\", \"name\": \"Annotations & Alerts\", \"type\": \"dashboard\" } ] }, \"editable\": true, \"gnetId\": null, \"graphTooltip\": 0, \"id\": 13, \"iteration\": 1587234344797, \"links\": [], \"panels\": [ { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": \"MySQL\", \"description\": \"集群个数\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 0, \"y\": 0 }, \"id\": 8, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"format\": \"table\", \"group\": [], \"metricColumn\": \"none\", \"rawQuery\": true, \"rawSql\": \"select count(distinct cluster_name) from cluster_info where cluster_type = \'Redis_Cluster\'\", \"refId\": \"A\", \"select\": [ [ { \"params\": [ \"id\" ], \"type\": \"column\" } ] ], \"table\": \"cluster_info\", \"timeColumn\": \"create_time\", \"timeColumnType\": \"timestamp\", \"where\": [ { \"name\": \"$__timeFilter\", \"params\": [], \"type\": \"macro\" } ] } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 5, \"y\": 0 }, \"id\": 4, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{alias=~\\\"$all_host\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"集群活跃节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 4, \"x\": 10, \"y\": 0 }, \"id\": 6, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_up{alias=~\\\"$all_host\\\"}>0)\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"集群活跃节点数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorPrefix\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"主节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 14, \"y\": 0 }, \"id\": 10, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{alias=~\\\"$master\\\", role=\\\"master\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"主节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"cacheTimeout\": null, \"colorBackground\": false, \"colorValue\": true, \"colors\": [ \"#299c46\", \"rgba(237, 129, 40, 0.89)\", \"#d44a3a\" ], \"datasource\": null, \"description\": \"从节点数量\", \"format\": \"none\", \"gauge\": { \"maxValue\": 100, \"minValue\": 0, \"show\": false, \"thresholdLabels\": false, \"thresholdMarkers\": true }, \"gridPos\": { \"h\": 3, \"w\": 5, \"x\": 19, \"y\": 0 }, \"id\": 12, \"interval\": null, \"links\": [], \"mappingType\": 1, \"mappingTypes\": [ { \"name\": \"value to text\", \"value\": 1 }, { \"name\": \"range to text\", \"value\": 2 } ], \"maxDataPoints\": 100, \"nullPointMode\": \"connected\", \"nullText\": null, \"postfix\": \"\", \"postfixFontSize\": \"50%\", \"prefix\": \"\", \"prefixFontSize\": \"50%\", \"rangeMaps\": [ { \"from\": \"null\", \"text\": \"N/A\", \"to\": \"null\" } ], \"sparkline\": { \"fillColor\": \"rgba(31, 118, 189, 0.18)\", \"full\": false, \"lineColor\": \"rgb(31, 120, 193)\", \"show\": false, \"ymax\": null, \"ymin\": null }, \"tableColumn\": \"\", \"targets\": [ { \"expr\": \"count(redis_instance_info{alias=~\\\"$slave\\\", role=\\\"slave\\\"})\", \"interval\": \"\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": \"\", \"timeFrom\": null, \"timeShift\": null, \"title\": \"从节点个数\", \"type\": \"singlestat\", \"valueFontSize\": \"100%\", \"valueMaps\": [ { \"op\": \"=\", \"text\": \"N/A\", \"value\": \"null\" } ], \"valueName\": \"current\" }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redus Cluster OPS指标\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 16, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"ceil(sum(rate(redis_commands_processed_total{alias=~\\\"$master\\\"}[$interval])))\", \"interval\": \"5s\", \"legendFormat\": \"\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis Cluster OPS\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用大小值\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 3 }, \"hiddenSeries\": false, \"id\": 18, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_memory_used_bytes{alias=~\\\"$host\\\"} \", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用大小\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"bytes\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis Server CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 14, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"100* (rate(redis_used_cpu_sys{alias=~\\\"$host\\\"}[$interval]) + rate(redis_used_cpu_user{alias=~\\\"$host\\\"}[$interval]))\", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"Redis 内存使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 11 }, \"hiddenSeries\": false, \"id\": 20, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"(redis_memory_used_bytes{alias=~\\\"$host\\\"} / redis_config_maxmemory{alias=~\\\"$host\\\"}) * 100\", \"interval\": \"5s\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"Redis 内存使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统CPU使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 24, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"1 - avg by (instance)(rate(node_cpu_seconds_total{instance=~\\\"$host\\\", mode=\\\"idle\\\"}[$interval]))\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统CPU使用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percentunit\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统物理内存利用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 19 }, \"hiddenSeries\": false, \"id\": 30, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"((node_memory_MemTotal_bytes{instance=~\\\"$host\\\"} - (node_memory_MemAvailable_bytes{instance=~\\\"$host\\\"} or (node_memory_MemFree_bytes{instance=~\\\"$host\\\"} + node_memory_Buffers_bytes{instance=~\\\"$host\\\"} + node_memory_Cached_bytes{instance=~\\\"$host\\\"})))*100 / node_memory_MemTotal_bytes{instance=~\\\"$host\\\"})\", \"hide\": false, \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"B\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统物理内存利用率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": true, \"cacheTimeout\": null, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点系统磁盘使用率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 32, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": false, \"linewidth\": 1, \"links\": [], \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pluginVersion\": \"6.7.2\", \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"topk(10,max((1 - node_filesystem_avail_bytes{instance=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"} / node_filesystem_size_bytes{instance=~\\\"$host\\\", fstype!~\\\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\\\"})*100) by (instance) > 0)\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"系统磁盘使用率\", \"tooltip\": { \"shared\": false, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"series\", \"name\": null, \"show\": true, \"values\": [ \"current\" ] }, \"yaxes\": [ { \"format\": \"percent\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点以及集群的 KEYS 总数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 27 }, \"hiddenSeries\": false, \"id\": 22, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_db_keys{alias=~\\\"$master\\\"}) by (alias,db)\", \"interval\": \"\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"KEYS 总数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"集群的活跃连接数\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 26, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"sum(redis_connected_clients{alias=~\\\"$host\\\"}) by (cluster)\", \"interval\": \"\", \"legendFormat\": \"{{cluster}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"活跃连接数\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点内存碎片率\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 12, \"y\": 35 }, \"hiddenSeries\": false, \"id\": 28, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"redis_mem_fragmentation_ratio{alias=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{alias}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"内存碎片率\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } }, { \"aliasColors\": {}, \"bars\": false, \"dashLength\": 10, \"dashes\": false, \"datasource\": null, \"description\": \"各个节点 的负载\", \"fill\": 1, \"fillGradient\": 0, \"gridPos\": { \"h\": 8, \"w\": 12, \"x\": 0, \"y\": 43 }, \"hiddenSeries\": false, \"id\": 34, \"legend\": { \"avg\": false, \"current\": false, \"max\": false, \"min\": false, \"show\": true, \"total\": false, \"values\": false }, \"lines\": true, \"linewidth\": 1, \"nullPointMode\": \"null\", \"options\": { \"dataLinks\": [] }, \"percentage\": false, \"pointradius\": 2, \"points\": false, \"renderer\": \"flot\", \"seriesOverrides\": [], \"spaceLength\": 10, \"stack\": false, \"steppedLine\": false, \"targets\": [ { \"expr\": \"node_load1{instance=~\\\"$host\\\"}\", \"interval\": \"\", \"legendFormat\": \"{{instance}}\", \"refId\": \"A\" } ], \"thresholds\": [], \"timeFrom\": null, \"timeRegions\": [], \"timeShift\": null, \"title\": \"负载(Load)\", \"tooltip\": { \"shared\": true, \"sort\": 0, \"value_type\": \"individual\" }, \"type\": \"graph\", \"xaxis\": { \"buckets\": null, \"mode\": \"time\", \"name\": null, \"show\": true, \"values\": [] }, \"yaxes\": [ { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true }, { \"format\": \"short\", \"label\": null, \"logBase\": 1, \"max\": null, \"min\": null, \"show\": true } ], \"yaxis\": { \"align\": false, \"alignLevel\": null } } ], \"refresh\": \"5s\", \"schemaVersion\": 22, \"style\": \"dark\", \"tags\": [], \"templating\": { \"list\": [ { \"auto\": true, \"auto_count\": 100, \"auto_min\": \"1s\", \"current\": { \"selected\": false, \"text\": \"5s\", \"value\": \"5s\" }, \"hide\": 0, \"label\": \"interval\", \"name\": \"interval\", \"options\": [ { \"selected\": false, \"text\": \"auto\", \"value\": \"$__auto_interval_interval\" }, { \"selected\": true, \"text\": \"5s\", \"value\": \"5s\" }, { \"selected\": false, \"text\": \"30s\", \"value\": \"30s\" }, { \"selected\": false, \"text\": \"1m\", \"value\": \"1m\" }, { \"selected\": false, \"text\": \"10m\", \"value\": \"10m\" }, { \"selected\": false, \"text\": \"30m\", \"value\": \"30m\" }, { \"selected\": false, \"text\": \"1h\", \"value\": \"1h\" }, { \"selected\": false, \"text\": \"6h\", \"value\": \"6h\" }, { \"selected\": false, \"text\": \"12h\", \"value\": \"12h\" }, { \"selected\": false, \"text\": \"1d\", \"value\": \"1d\" } ], \"query\": \"5s,30s,1m,10m,30m,1h,6h,12h,1d\", \"refresh\": 2, \"skipUrlSync\": false, \"type\": \"interval\" }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select cluster_name from cluster_info where cluster_type = \\\"Redis_Cluster\\\"\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Cluster\", \"multi\": true, \"name\": \"cluster\", \"options\": [], \"query\": \"select cluster_name from cluster_info where cluster_type = \\\"Redis_Cluster\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select role from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"hide\": 0, \"includeAll\": true, \"index\": -1, \"label\": \"Role\", \"multi\": true, \"name\": \"role\", \"options\": [], \"query\": \"select role from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role in ($role)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"host\", \"multi\": true, \"name\": \"host\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role in ($role)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"master\\\"\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"master\", \"multi\": true, \"name\": \"master\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"master\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"slave\\\"\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"slave\", \"multi\": true, \"name\": \"slave\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster) and role=\\\"slave\\\"\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false }, { \"allValue\": null, \"current\": { \"text\": \"All\", \"value\": [ \"$__all\" ] }, \"datasource\": \"MySQL\", \"definition\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"hide\": 2, \"includeAll\": true, \"index\": -1, \"label\": \"all_host\", \"multi\": true, \"name\": \"all_host\", \"options\": [], \"query\": \"select hostname from cluster_info where cluster_type = \\\"Redis_Cluster\\\" and cluster_name in ($cluster)\", \"refresh\": 1, \"regex\": \"\", \"skipUrlSync\": false, \"sort\": 0, \"tagValuesQuery\": \"\", \"tags\": [], \"tagsQuery\": \"\", \"type\": \"query\", \"useTags\": false } ] }, \"time\": { \"from\": \"now-5m\", \"to\": \"now\" }, \"timepicker\": { \"refresh_intervals\": [ \"5s\", \"10s\", \"30s\", \"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"2h\", \"1d\" ] }, \"timezone\": \"\", \"title\": \"Redis_Cluster_V1.35\", \"uid\": \"5FfBHG3Zz\", \"variables\": { \"list\": [] }, \"version\": 14 }
从上面的图中看到,其中OPS的Legend展示的是表达式,按照老版本的的redis_exporter,不能自定义label,虽然监控不同密码多实例比较方便,但作图的时候不好看。目前想到二种方法:
1. 使用推荐的一个实例一个exporter。
2. 在老版本redis_exporter基础上,对指标进行重新定义和打label,此时需要自己编写一个exporter来对指标进行重写。
如:老版本的redis_exporter部署在137这台机器上,并且端口为9128:使用python的prometheus_client模块编写一个服务(5000)来抓取数据进行label修改:
#!/bin/env python # -*- encoding: utf-8 -*- import requests import re import json import MySQLdb import prometheus_client from prometheus_client import Gauge,Counter from flask import Response, Flask app = Flask(__name__) def redis_cluster_metadata(): conn = MySQLdb.connect(host=\"192.168.163.133\", port=3306, user=\"dba\", passwd=\"dba\", db=\'test\', charset=\'utf8\') query = \'\'\' SELECT concat( host_ip, \':\', PORT ) ip, cluster_name FROM cluster_info WHERE cluster_type = \'Redis_Cluster\' \'\'\' cursor = conn.cursor() cursor.execute(query) conn.commit() result = cursor.fetchall() cursor.close() return result def gauge_init(pair): result = {} for k, v in pair.items(): name = v documentation = v label = (\"alias\", \"addr\", \"cluster\") gauge = Gauge(name, documentation, label) result[v] = gauge return result def redis_cluster_metric(pair): url = \"http://192.168.163.137:9128/metrics\" pat = re.compile(r\'addr=\"(.*)\",alias=\"(.*)\"\') request_data = requests.get(url, timeout=3) metrics_info = request_data.text metrics_dict = {} for metrics in metrics_info.split(\'\\n\'): for metric in pair: if metrics.find(metric) == 0: value = metrics.split(\' \')[1] pat_info = pat.search(metrics) ip = pat_info.group(1) alias = pat_info.group(2) metrics_dict.setdefault(ip, {}) metrics_dict[ip][\'alias\'] = alias metrics_dict[ip][metrics_pair[metric]] = value return metrics_dict @app.route(\"/metrics\") def prometheus_for_redis(): redis_cluster_info = redis_cluster_metadata() metadata_dict = {} for redis_cluster_item in redis_cluster_info: ip,clustername = redis_cluster_item metadata_dict[ip] = clustername metrics_dict = redis_cluster_metric(metrics_pair) for k,v in metrics_dict.items(): for _k,_v in metadata_dict.items(): if k == _k: metrics_dict[k][\'cluster\'] = _v print metadata_dict print metrics_dict result = \'\' for metric_name, gauge in gauge_dict.items(): for k, v in metrics_dict.items(): if k in metadata_dict.keys(): gauge.labels(alias=v[\'alias\'], addr=k, cluster=v[\'cluster\']).set(v[metric_name]) result = result + prometheus_client.generate_latest(gauge).decode() return Response(result, mimetype=\"text/plain\") if __name__ == \"__main__\": metrics_pair = {\'redis_commands_processed_total\': \'cluster_redis_commands_processed_total\',\'redis_cluster_size\':\'cluster_redis_cluster_size\'} gauge_dict = gauge_init(metrics_pair) app.run(host=\"0.0.0.0\")
大致的思想是:对原始的redis_exporter的指标进行过滤,拿出需要的指标进行label指定,最后作为一个导出器服务启动(5000),并配置到prometheus.yml里:
global: scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - \"first_rules.yml\" # - \"second_rules.yml\" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.163.137:9099\'] - job_name: \'node_exporter\' scrape_interval: 1s file_sd_configs: - files: - targets/node/node*.yml refresh_interval: 10s relabel_configs: - action: replace source_labels: [\'__address__\'] regex: (.*):(.*) replacement: $1 target_label: hostname - action: labeldrop regex: __meta_filepath - job_name: \'redis_exporter\' scrape_interval: 1s static_configs: - targets: [\'192.168.163.137:9128\'] - job_name: \'redisx_exporter\' metrics_path: /redisx_cluster/metrics scrape_interval: 1s static_configs: - targets: [\'192.168.163.137:5000\']
/Users/jinyizhou [18:51:25] ~$ curl http://0.0.0.0:5000/metrics # HELP cluster_redis_commands_processed_total cluster_redis_commands_processed_total # TYPE cluster_redis_commands_processed_total gauge cluster_redis_commands_processed_total{addr=\"192.168.163.137:6380\",alias=\"test2\",cluster=\"testX\"} 1796512.0 cluster_redis_commands_processed_total{addr=\"192.168.163.133:6380\",alias=\"test3\",cluster=\"testX\"} 1592838.0 cluster_redis_commands_processed_total{addr=\"192.168.163.134:6380\",alias=\"test4\",cluster=\"testX\"} 1592053.0
最后OPS的Legend显示为:
小结:
上面的给出的这些参考指标以及监控项可以按照需要自行进行调整,如果需要做类似redis_exporter的导出器,可以连接Redis各个节点进行采样。具体的一些方法可以参考client_python。