From 8c385c363339154c43af372a23825bfec66df88c Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Wed, 6 Jan 2021 15:46:53 +0000 Subject: [PATCH] Revert "Revert "Fix a couple of Swift healthchecks"" This reverts commit 750b562521b507aab555862f01b74e56f8119861. 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). Removes swift-*-replicator because it does not seem to be used anymore in any of the container build configurations. This change removes the renames from the previous commit because they are backwards incompatible depending on how the containers are built. We use healthcheck from the openstack-tripleo-common-containers-base which is a package. If this package does not have the new file names (or old filenames) and the containers are built with a different version of tripleo-common, the container builds fail. So let's skip renaming of files so that we can deal with that as a separate issue as a whole. Change-Id: I3e58de46835307d4332b34d22d2895e6382292dd (cherry picked from commit 21fd04f038e1a90223e156082f780501846fde3c) --- healthcheck/common.sh | 2 +- .../swift-fix-healthchecks-b3a02139230f4258.yaml | 6 ++++++ healthcheck/swift-account-replicator | 8 -------- healthcheck/swift-account-server | 4 +++- healthcheck/swift-container-replicator | 8 -------- healthcheck/swift-container-server | 4 +++- healthcheck/swift-object-replicator | 8 -------- healthcheck/swift-object-server | 15 ++++++++++++++- healthcheck/swift-proxy | 2 +- 9 files changed, 28 insertions(+), 29 deletions(-) create mode 100644 healthcheck/releasenotes/notes/swift-fix-healthchecks-b3a02139230f4258.yaml delete mode 100755 healthcheck/swift-account-replicator delete mode 100755 healthcheck/swift-container-replicator delete mode 100755 healthcheck/swift-object-replicator diff --git a/healthcheck/common.sh b/healthcheck/common.sh index 16b7eb62d..385aef494 100755 --- a/healthcheck/common.sh +++ b/healthcheck/common.sh @@ -144,7 +144,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` diff --git a/healthcheck/releasenotes/notes/swift-fix-healthchecks-b3a02139230f4258.yaml b/healthcheck/releasenotes/notes/swift-fix-healthchecks-b3a02139230f4258.yaml new file mode 100644 index 000000000..f91e2486a --- /dev/null +++ b/healthcheck/releasenotes/notes/swift-fix-healthchecks-b3a02139230f4258.yaml @@ -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. diff --git a/healthcheck/swift-account-replicator b/healthcheck/swift-account-replicator deleted file mode 100755 index 1e69cc1c8..000000000 --- a/healthcheck/swift-account-replicator +++ /dev/null @@ -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 diff --git a/healthcheck/swift-account-server b/healthcheck/swift-account-server index f89fd1dc7..5d3092d07 100755 --- a/healthcheck/swift-account-server +++ b/healthcheck/swift-account-server @@ -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 diff --git a/healthcheck/swift-container-replicator b/healthcheck/swift-container-replicator deleted file mode 100755 index 34ef269ee..000000000 --- a/healthcheck/swift-container-replicator +++ /dev/null @@ -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 diff --git a/healthcheck/swift-container-server b/healthcheck/swift-container-server index 903c3b905..fe77c2de1 100755 --- a/healthcheck/swift-container-server +++ b/healthcheck/swift-container-server @@ -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 diff --git a/healthcheck/swift-object-replicator b/healthcheck/swift-object-replicator deleted file mode 100755 index c165a373b..000000000 --- a/healthcheck/swift-object-replicator +++ /dev/null @@ -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 diff --git a/healthcheck/swift-object-server b/healthcheck/swift-object-server index 21b97991e..896aae672 100755 --- a/healthcheck/swift-object-server +++ b/healthcheck/swift-object-server @@ -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 diff --git a/healthcheck/swift-proxy b/healthcheck/swift-proxy index 7d03938ca..b7fbfdc9b 100755 --- a/healthcheck/swift-proxy +++ b/healthcheck/swift-proxy @@ -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