Update mon-check with latest monmap outputs
This PS updates the mon-check reap-zombies python script to consider the more recent Ceph changes, including the fact that there is now a v1 and v2 backend. In addition, it executes the reap-zombies script with the python3 binary, as the basic 'python' binary does not exist in the container. Change-Id: Id079671f03cc5ddbe694f2aa8c9d2480dc573983
This commit is contained in:
parent
9797d1b034
commit
f26d4db145
@ -15,6 +15,6 @@ apiVersion: v1
|
|||||||
appVersion: v1.0.0
|
appVersion: v1.0.0
|
||||||
description: OpenStack-Helm Ceph Mon
|
description: OpenStack-Helm Ceph Mon
|
||||||
name: ceph-mon
|
name: ceph-mon
|
||||||
version: 0.1.10
|
version: 0.1.11
|
||||||
home: https://github.com/ceph/ceph
|
home: https://github.com/ceph/ceph
|
||||||
...
|
...
|
||||||
|
@ -4,7 +4,7 @@ import os
|
|||||||
import subprocess # nosec
|
import subprocess # nosec
|
||||||
import json
|
import json
|
||||||
|
|
||||||
MON_REGEX = r"^\d: ([0-9\.]*):\d+/\d* mon.([^ ]*)$"
|
MON_REGEX = r"^\d: \[((v\d+:([0-9\.]*):\d+\/\d+,*)+)] mon.([^ ]*)$"
|
||||||
# kubctl_command = 'kubectl get pods --namespace=${NAMESPACE} -l component=mon,application=ceph -o template --template="{ {{"}}"}}range .items{{"}}"}} \\"{{"}}"}}.metadata.name{{"}}"}}\\": \\"{{"}}"}}.status.podIP{{"}}"}}\\" , {{"}}"}}end{{"}}"}} }"'
|
# kubctl_command = 'kubectl get pods --namespace=${NAMESPACE} -l component=mon,application=ceph -o template --template="{ {{"}}"}}range .items{{"}}"}} \\"{{"}}"}}.metadata.name{{"}}"}}\\": \\"{{"}}"}}.status.podIP{{"}}"}}\\" , {{"}}"}}end{{"}}"}} }"'
|
||||||
if int(os.getenv('K8S_HOST_NETWORK', 0)) > 0:
|
if int(os.getenv('K8S_HOST_NETWORK', 0)) > 0:
|
||||||
kubectl_command = 'kubectl get pods --namespace=${NAMESPACE} -l component=mon,application=ceph -o template --template="{ {{"{{"}}range \$i, \$v := .items{{"}}"}} {{"{{"}} if \$i{{"}}"}} , {{"{{"}} end {{"}}"}} \\"{{"{{"}}\$v.spec.nodeName{{"}}"}}\\": \\"{{"{{"}}\$v.status.podIP{{"}}"}}\\" {{"{{"}}end{{"}}"}} }"'
|
kubectl_command = 'kubectl get pods --namespace=${NAMESPACE} -l component=mon,application=ceph -o template --template="{ {{"{{"}}range \$i, \$v := .items{{"}}"}} {{"{{"}} if \$i{{"}}"}} , {{"{{"}} end {{"}}"}} \\"{{"{{"}}\$v.spec.nodeName{{"}}"}}\\": \\"{{"{{"}}\$v.status.podIP{{"}}"}}\\" {{"{{"}}end{{"}}"}} }"'
|
||||||
@ -15,16 +15,16 @@ monmap_command = "ceph --cluster=${CLUSTER} mon getmap > /tmp/monmap && monmapto
|
|||||||
|
|
||||||
|
|
||||||
def extract_mons_from_monmap():
|
def extract_mons_from_monmap():
|
||||||
monmap = subprocess.check_output(monmap_command, shell=True) # nosec
|
monmap = subprocess.check_output(monmap_command, shell=True).decode('utf-8') # nosec
|
||||||
mons = {}
|
mons = {}
|
||||||
for line in monmap.split("\n"):
|
for line in monmap.split("\n"):
|
||||||
m = re.match(MON_REGEX, line)
|
m = re.match(MON_REGEX, line)
|
||||||
if m is not None:
|
if m is not None:
|
||||||
mons[m.group(2)] = m.group(1)
|
mons[m.group(4)] = m.group(3)
|
||||||
return mons
|
return mons
|
||||||
|
|
||||||
def extract_mons_from_kubeapi():
|
def extract_mons_from_kubeapi():
|
||||||
kubemap = subprocess.check_output(kubectl_command, shell=True) # nosec
|
kubemap = subprocess.check_output(kubectl_command, shell=True).decode('utf-8') # nosec
|
||||||
return json.loads(kubemap)
|
return json.loads(kubemap)
|
||||||
|
|
||||||
current_mons = extract_mons_from_monmap()
|
current_mons = extract_mons_from_monmap()
|
||||||
|
@ -28,7 +28,7 @@ function check_mon_msgr2 {
|
|||||||
function watch_mon_health {
|
function watch_mon_health {
|
||||||
while [ true ]; do
|
while [ true ]; do
|
||||||
echo "checking for zombie mons"
|
echo "checking for zombie mons"
|
||||||
/tmp/moncheck-reap-zombies.py || true
|
python3 /tmp/moncheck-reap-zombies.py || true
|
||||||
echo "checking for ceph-mon msgr v2"
|
echo "checking for ceph-mon msgr v2"
|
||||||
check_mon_msgr2
|
check_mon_msgr2
|
||||||
echo "sleep 30 sec"
|
echo "sleep 30 sec"
|
||||||
|
@ -11,4 +11,5 @@ ceph-mon:
|
|||||||
- 0.1.8 Use full image ref for docker official images
|
- 0.1.8 Use full image ref for docker official images
|
||||||
- 0.1.9 Remove unnecessary parameters for ceph-mon
|
- 0.1.9 Remove unnecessary parameters for ceph-mon
|
||||||
- 0.1.10 Export crash dumps when Ceph daemons crash
|
- 0.1.10 Export crash dumps when Ceph daemons crash
|
||||||
|
- 0.1.11 Correct mon-check executing binary and logic
|
||||||
...
|
...
|
||||||
|
Loading…
Reference in New Issue
Block a user