Add check_mk swift proxy diagnostic
Added a check_mk script that runs healthcheck to ensure that a proxy node is up and running with proxy services. This diag is also check_mk compliant (ie. the output matches check_mk desired format). Have not added thecheck_mk-agent element to element-deps file as even though it is required to install the file itself into the build image, it can be manually added to images that require diagnostics. Change-Id: If18acfa1b5c967481f59b9f2041d8d7c37db15ca
This commit is contained in:
parent
bc3d153121
commit
263cd80a16
65
elements/swift-proxy/check_mk_checks/swift_proxy_healthcheck.py
Executable file
65
elements/swift-proxy/check_mk_checks/swift_proxy_healthcheck.py
Executable file
@ -0,0 +1,65 @@
|
||||
#!/usr/bin/python
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Check_mk script that checks if swift-proxy-server is responding to
|
||||
# http requests.
|
||||
#
|
||||
# The healthcheck middleware in the swift-proxy-server pipeline normally
|
||||
# responds to a GET /healthcheck with 200 status and "OK" in response body.
|
||||
#
|
||||
# Output is in the check_mk format:
|
||||
#
|
||||
# status test_name perf_data output
|
||||
#
|
||||
# For example: (using - for perf_data)
|
||||
#
|
||||
# 0 swift_proxy_healthcheck - Connection Ok
|
||||
|
||||
|
||||
import ConfigParser
|
||||
import requests
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
# Read port value from conf file
|
||||
conf_parser = ConfigParser.ConfigParser()
|
||||
conf_parser.read("/etc/swift/proxy-server.conf")
|
||||
config = dict(conf_parser.items("DEFAULT"))
|
||||
port = config.get("bind_port", "8080")
|
||||
ip = config.get("bind_ip", "localhost")
|
||||
|
||||
status = 2 # Assume error
|
||||
try:
|
||||
url = "http://" + ip + ":" + port + "/healthcheck"
|
||||
resp = requests.get(url, timeout=5.0)
|
||||
if resp.status_code == 200 and resp.text == "OK":
|
||||
msg = "Ok"
|
||||
status = 0 # Good status
|
||||
elif resp.status_code == 503 and "DISABLED" in resp.text:
|
||||
msg = "disabled by file"
|
||||
status = 1 # Warning status
|
||||
else:
|
||||
msg = "unexpected response (status: {0}".format(resp.status_code)
|
||||
except requests.exceptions.Timeout:
|
||||
msg = "timeout ({0}:{1})".format(ip, port)
|
||||
except requests.exceptions.ConnectionError:
|
||||
msg = "connection error ({0}:{1})".format(ip, port)
|
||||
except Exception as error:
|
||||
msg = "{0} ({1}:{2})".format(str(error), ip, port)
|
||||
print("{0} swift_proxy_healthcheck - {1}".format(status, msg))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue
Block a user