Fix a couple of Swift healthchecks

Depending on the used procps version, the output of "ps -e" is width
limited and thus not matching the quite long process names. Using
"ps -ef" fixes this, along with a small hack in the piped grep to filter
out grep itself (pgrep itself is not working for this).

Also merged server and replicator healthcheck scripts into single
scripts. Kolla doesn't use separate templates for these images, thus the
replicator images include the server scripts. This has been fixed using
conditional checks on the running processes in the container. Same for
the rsync container, which uses the obect image as well.

Change-Id: I58124fec226d5e765f752d306b411162666d4817
This commit is contained in:
Christian Schwede 2020-08-24 15:49:08 +02:00 committed by Francesco Pantano
parent 2b3c872da0
commit 4cd3bd8fdc
12 changed files with 31 additions and 32 deletions

View File

@ -1,6 +1,6 @@
tcib_actions:
- run: dnf -y install {{ tcib_packages['common'] | join(' ') }} && dnf clean all && rm -rf /var/cache/dnf
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-account-server /openstack/healthcheck && chmod a+rx /openstack/healthcheck
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-account /openstack/healthcheck && chmod a+rx /openstack/healthcheck
tcib_packages:
common:
- openstack-swift-account

View File

@ -1,6 +1,6 @@
tcib_actions:
- run: dnf -y install {{ tcib_packages['common'] | join(' ') }} && dnf clean all && rm -rf /var/cache/dnf
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-container-server /openstack/healthcheck && chmod a+rx /openstack/healthcheck
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-container /openstack/healthcheck && chmod a+rx /openstack/healthcheck
tcib_packages:
common:
- openstack-swift-container

View File

@ -1,6 +1,6 @@
tcib_actions:
- run: dnf -y install {{ tcib_packages['common'] | join(' ') }} && dnf clean all && rm -rf /var/cache/dnf
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-object-server /openstack/healthcheck && chmod a+rx /openstack/healthcheck
- run: ln -s /usr/share/openstack-tripleo-common/healthcheck/swift-object /openstack/healthcheck && chmod a+rx /openstack/healthcheck
tcib_packages:
common:
- openstack-swift-object

View File

@ -117,7 +117,7 @@ get_url_from_vhost () {
check_swift_interval () {
service=$1
if pgrep -f swift-${service} >&3 2>&1; then
if ps -ef | grep --quiet [s]wift-${service} >&3 2>&1; then
interval=$(get_config_val $conf $service interval 300)
last=`grep -o "\"replication_last\": [0-9]*" $cache | cut -f 2 -d " "`
now=`date +%s`

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixes a few Swift healthchecks by using correct procps output filters. Also
merged a few healthcheck scripts because some containers do use the same
base images.

View File

@ -5,7 +5,7 @@
conf=/etc/swift/account-server.conf
cache=/var/cache/swift/account.recon
if ps -e | grep --quiet swift-account-server; then
if ps -ef | grep --quiet [s]wift-account-server; then
if ! crudini --get $conf pipeline:main pipeline | grep -q healthcheck; then
echo "healthcheck is not available" >&2
exit 0
@ -15,4 +15,6 @@ if ps -e | grep --quiet swift-account-server; then
bind_host=$(wrap_ipv6 $(get_config_val $conf DEFAULT bind_ip 127.0.0.1))
bind_port=$(get_config_val $conf DEFAULT bind_port 6002)
healthcheck_curl http://${bind_host}:${bind_port}/healthcheck
elif ps -ef | grep --quiet [s]wift-account-replicator; then
check_swift_interval account-replicator
fi

View File

@ -1,8 +0,0 @@
#!/bin/bash
. ${HEALTHCHECK_SCRIPTS:-/usr/share/openstack-tripleo-common/healthcheck}/common.sh
conf=/etc/swift/account-server.conf
cache=/var/cache/swift/account.recon
check_swift_interval account-replicator

View File

@ -5,7 +5,7 @@
conf=/etc/swift/container-server.conf
cache=/var/cache/swift/container.recon
if ps -e | grep --quiet swift-container-server; then
if ps -ef | grep --quiet [s]wift-container-server; then
if ! crudini --get $conf pipeline:main pipeline | grep -q healthcheck; then
echo "healthcheck is not available" >&2
exit 0
@ -15,4 +15,6 @@ if ps -e | grep --quiet swift-container-server; then
bind_host=$(wrap_ipv6 $(get_config_val $conf DEFAULT bind_ip 127.0.0.1))
bind_port=$(get_config_val $conf DEFAULT bind_port 6001)
healthcheck_curl http://${bind_host}:${bind_port}/healthcheck
elif ps -ef | grep --quiet [s]wift-container-replicator; then
check_swift_interval container-replicator
fi

View File

@ -1,8 +0,0 @@
#!/bin/bash
. ${HEALTHCHECK_SCRIPTS:-/usr/share/openstack-tripleo-common/healthcheck}/common.sh
conf=/etc/swift/container-server.conf
cache=/var/cache/swift/container.recon
check_swift_interval container-replicator

View File

@ -5,7 +5,7 @@
conf=/etc/swift/object-server.conf
cache=/var/cache/swift/object.recon
if ps -e | grep --quiet swift-object-server; then
if ps -ef | grep --quiet [s]wift-object-server; then
if ! crudini --get $conf pipeline:main pipeline | grep -q healthcheck; then
echo "healthcheck is not available" >&2
exit 0
@ -15,4 +15,17 @@ if ps -e | grep --quiet swift-object-server; then
bind_host=$(wrap_ipv6 $(get_config_val $conf DEFAULT bind_ip 127.0.0.1))
bind_port=$(get_config_val $conf DEFAULT bind_port 6000)
healthcheck_curl http://${bind_host}:${bind_port}/healthcheck
elif ps -ef | grep --quiet [s]wift-object-replicator; then
check_swift_interval object-replicator
elif ps -ef | grep --quiet rsync; then
process='rsync'
args="${@:-873}"
if healthcheck_listen $process $args; then
exit 0
else
ports=${args// /,}
echo "There is no $process process, listening on port(s) $ports, running in the container."
exit 1
fi
fi

View File

@ -1,8 +0,0 @@
#!/bin/bash
. ${HEALTHCHECK_SCRIPTS:-/usr/share/openstack-tripleo-common/healthcheck}/common.sh
conf=/etc/swift/object-server.conf
cache=/var/cache/swift/object.recon
check_swift_interval object-replicator

View File

@ -2,7 +2,7 @@
. ${HEALTHCHECK_SCRIPTS:-/usr/share/openstack-tripleo-common/healthcheck}/common.sh
if pgrep -f swift-proxy-server; then
if ps -ef | grep --quiet [s]wift-proxy-server; then
conf=/etc/swift/proxy-server.conf
if ! crudini --get $conf pipeline:main pipeline | grep -q healthcheck; then