当前位置:网站首页>Prometheus monitors the correct posture of redis cluster
Prometheus monitors the correct posture of redis cluster
2022-07-05 01:52:00 【fsckzy】
Prometheus monitor Redis colony
Prometheus monitor Redis The right posture (redis colony )
Prometheus monitor Redis cluster, In fact, the routine is the same , Use exporter.
exporter Responsible for collecting indicators , adopt http Exposed to the Prometheus Pull .granafa Then display the data through these indicators .Prometheus The collected data will also determine whether to send to... According to the alarm rules you set Alertmanager, Alertmanager Then it is necessary to judge whether to send an alarm .
Alertmanager The alarm is divided into three stages
- Inactive The rules that trigger the alarm will be sent here .
- Pending The waiting time you set , That is, in the rules for
- Firing Send alarm to email 、 Nails or something
Far away , Start monitoring Redis cluster
redis_exporter monitor Redis cluster
Monitor what applications , Use the corresponding exporter, You can find it on the official website . EXPORTERS AND INTEGRATIONS
Redis Use redis_exporter , link : redis_exporter
Support Redis 2.x - 5.x
Installation and parameters
wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz
tar zxvf redis_exporter-v1.3.5.linux-amd64.tar.gz
cd redis_exporter-v1.3.5.linux-amd64/
./redis_exporter <flags>
- 1.
- 2.
- 3.
- 4.
redis_exporter Many parameters are supported , There are only a few that are useful to us .
./redis_exporter --help
Usage of ./redis_exporter:
-redis.addr string
Address of the Redis instance to scrape (default "redis://localhost:6379")
-redis.password string
Password of the Redis instance to scrape
-web.listen-address string
Address to listen on for web interface and telemetry. (default ":9121")
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
Single instance redis monitor
nohup ./redis_exporter -redis.addr 172.18.11.138:6379 -redis.password xxxxx &
- 1.
Prometheus Add single instance
- job_name: redis_since
static_configs:
- targets: ['172.18.11.138:9121']
- 1.
- 2.
- 3.
Redis Cluster monitoring scheme
This is very laborious , I checked a lot of information on the Internet , Most of them monitor single instances
The scheme I tried :
Both of the following will prompt authentication failure
level=error msg="Redis INFO err: NOAUTH Authentication required."
- 1.
Method 1
nohup ./redis_exporter -redis.addr 172.18.11.139:7000 172.18.11.139:7001 172.18.11.140:7002 172.18.11.140:7003 172.18.11.141:7004 172.18.11.141:7005 -redis.password xxxxx &
- 1.
Method 2
nohup ./redis_exporter -redis.addr redis://h:Lcsmy.312==/@172.18.11.139:7000 redis://h:Lcsmy.312==/@172.18.11.139:7001 redis://h:Lcsmy.312==/@172.18.11.140:7002 redis://h:Lcsmy.312==/@172.18.11.140:7003 redis://h:Lcsmy.312==/@172.18.11.141:7004 redis://h:Lcsmy.312==/@172.18.11.141:7005 -redis.password xxxxx &
- 1.
Originally wanted to take the most low Methods , One instance starts another redis_exporter. In this case , Many statements in the cluster can't be used , such as cluster_slot_fail. Abandon this method
nohup ./redis_exporter -redis.addr 172.18.11.139:7000 -redis.password xxxxxx -web.listen-address 172.18.11.139:9121 > /dev/null 2>&1 &
nohup ./redis_exporter -redis.addr 172.18.11.139:7001 -redis.password xxxxxx -web.listen-address 172.18.11.139:9122 > /dev/null 2>&1 &
nohup ./redis_exporter -redis.addr 172.18.11.140:7002 -redis.password xxxxxx -web.listen-address 172.18.11.139:9123 > /dev/null 2>&1 &
nohup ./redis_exporter -redis.addr 172.18.11.140:7003 -redis.password xxxxxx -web.listen-address 172.18.11.139:9124 > /dev/null 2>&1 &
nohup ./redis_exporter -redis.addr 172.18.11.141:7004 -redis.password xxxxxx -web.listen-address 172.18.11.139:9125 > /dev/null 2>&1 &
nohup ./redis_exporter -redis.addr 172.18.11.141:7005 -redis.password xxxxxx -web.listen-address 172.18.11.139:9126 > /dev/null 2>&1 &
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
Finally, I had to go github carry issue. Communicate with the author in my Chinglish , I finally understand ... In fact, the official documents have been written .
scrape_configs:
## config for the multiple Redis targets that the exporter will scrape
- job_name: 'redis_exporter_targets'
static_configs:
- targets:
- redis://first-redis-host:6379
- redis://second-redis-host:6379
- redis://second-redis-host:6380
- redis://second-redis-host:6381
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: <<REDIS-EXPORTER-HOSTNAME>>:9121
## config for scraping the exporter itself
- job_name: 'redis_exporter'
static_configs:
- targets:
- <<REDIS-EXPORTER-HOSTNAME>>:9121
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
Redis Cluster actual operation
start-up redis_exporter
nohup ./redis_exporter -redis.password xxxxx &
- 1.
a key
stay prometheus How to configure it :
- job_name: 'redis_exporter_targets'
static_configs:
- targets:
- redis://172.18.11.139:7000
- redis://172.18.11.139:7001
- redis://172.18.11.140:7002
- redis://172.18.11.140:7003
- redis://172.18.11.141:7004
- redis://172.18.11.141:7005
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 172.18.11.139:9121
## config for scraping the exporter itself
- job_name: 'redis_exporter'
static_configs:
- targets:
- 172.18.11.139:9121
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
In this way, the data of the cluster can be collected . But the log suggests
time="2019-12-17T09:10:49+08:00" level=error msg="Couldn't connect to redis instance"
- 1.
I suddenly figured it out during my lunch break , As long as you can connect to a node in a cluster , Naturally, you can query the indicators of other nodes . So the startup command is changed to :
nohup ./redis_exporter -redis.addr 172.18.11.141:7005 -redis.password xxxxx &
- 1.
Prometheus Configuration unchanged
Send some pictures :



Alarm rules
groups:
- name: Redis
rules:
- alert: RedisDown
expr: redis_up == 0
for: 5m
labels:
severity: error
annotations:
summary: "Redis down (instance {{ $labels.instance }})"
description: "Redis Hang up ,mmp\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: MissingBackup
expr: time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 24
for: 5m
labels:
severity: error
annotations:
summary: "Missing backup (instance {{ $labels.instance }})"
description: "Redis has not been backuped for 24 hours\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: OutOfMemory
expr: redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: "Out of memory (instance {{ $labels.instance }})"
description: "Redis is running out of memory (> 90%)\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: ReplicationBroken
expr: delta(redis_connected_slaves[1m]) < 0
for: 5m
labels:
severity: error
annotations:
summary: "Replication broken (instance {{ $labels.instance }})"
description: "Redis instance lost a slave\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: TooManyConnections
expr: redis_connected_clients > 1000
for: 5m
labels:
severity: warning
annotations:
summary: "Too many connections (instance {{ $labels.instance }})"
description: "Redis instance has too many connections\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: NotEnoughConnections
expr: redis_connected_clients < 5
for: 5m
labels:
severity: warning
annotations:
summary: "Not enough connections (instance {{ $labels.instance }})"
description: "Redis instance should have more connections (> 5)\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- alert: RejectedConnections
expr: increase(redis_rejected_connections_total[1m]) > 0
for: 5m
labels:
severity: error
annotations:
summary: "Rejected connections (instance {{ $labels.instance }})"
description: "Some connections to Redis has been rejected\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
边栏推荐
- Word processing software
- [OpenGL learning notes 8] texture
- Outlook: always prompt for user password
- Restful Fast Request 2022.2.1发布,支持cURL导入
- Wechat applet; Gibberish generator
- RichView TRVStyle MainRVStyle
- He was laid off.. 39 year old Ali P9, saved 150million
- Binary tree traversal - middle order traversal (golang)
- Include rake tasks in Gems - including rake tasks in gems
- 流批一體在京東的探索與實踐
猜你喜欢

Restful fast request 2022.2.1 release, support curl import

Game 280 of leetcode week

The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety

Visual studio 2019 set transparent background (fool teaching)

Blue Bridge Cup Square filling (DFS backtracking)

Application and Optimization Practice of redis in vivo push platform

Exploration and Practice of Stream Batch Integration in JD

Binary tree traversal - middle order traversal (golang)

"2022" is a must know web security interview question for job hopping

JVM - when multiple threads initialize the same class, only one thread is allowed to initialize
随机推荐
What is the length of SHA512 hash string- What is the length of a hashed string with SHA512?
Phpstrom setting function annotation description
线上故障突突突?如何紧急诊断、排查与恢复
Classification of performance tests (learning summary)
Roads and routes -- dfs+topsort+dijkstra+ mapping
Go RPC call
I use these six code comparison tools
pytorch fine-tuning (funtune) : 镂空设计or 偷梁换柱
JVM's responsibility - load and run bytecode
[swagger]-swagger learning
Win:使用组策略启用和禁用 USB 驱动器
Lsblk command - check the disk of the system. I don't often use this command, but it's still very easy to use. Onion duck, like, collect, pay attention, wait for your arrival!
Luo Gu Pardon prisoners of war
Win:使用 PowerShell 检查无线信号的强弱
力扣剑指offer——二叉树篇
Win:将一般用户添加到 Local Admins 组中
. Net starts again happy 20th birthday
How to build a technical team that will bring down the company?
Abacus mental arithmetic test
如何搭建一支搞垮公司的技术团队?