【发布时间】:2020-11-01 09:18:27
【问题描述】:
这就是我面临的问题:我有一个正在平衡的 Ceph 集群,但偶尔我会从 ceph -s 输出中收到一条缓慢的请求消息。我有两个终端对 ceph 集群开放。使用以下命令将一个终端设置为主动监视慢速请求:
watch "ceph -s | grep -i 'slow'"
因此,我看到了两种结果。 一个输出如下所示:
Every 2.0s: ceph -s | grep -i 'slow' Sun Jul 12 02:17:49 2020
107 slow requests are blocked > 32 sec. Implicated osds 17
,27,37,51,58,81,118,122,124,137,153,160,181,197,205,217,236,259,267,28
3,309,318,323,328,343
此时,如果我看到缓慢的请求弹出,我需要立即将集群设置为以下:
rbarrett@osd001:~$ sudo ceph osd set norecover
norecover is set
在此之后,缓慢的请求最终会消失,您必须设置集群以继续恢复。
Every 2.0s: ceph -s | grep -i 'slow' Sun Jul 12 02:20:07 2020
slow requests 消失后,我必须取消设置 norecover 选项
rbarrett@osd001:~$ sudo ceph osd unset norecover
norecover is unset
所以这是我的问题:如何在 bash 中编写脚本以作为进程或服务运行来为我执行此操作?
我的第一个想法是为该 watch 命令使用一个变量,但是我如何设置脚本以运行并密切关注集群?
我不介意使用 python,但更喜欢 bash 脚本。
我正在考虑使用这样的东西,但我不知道它是否会继续运行。
#!/bin/bash
check=$(ceph -s | grep -i "slow requests")
echo $check
if [[ -n $check ]];then
echo "setting norecover flag"
sudo ceph osd set norecover
else
echo "no slow requests"
sudo ceph osd unset norecover
fi
请有人确认这是否可行?
【问题讨论】:
标签: python bash shell automation ceph