Advertisements
Here I describe a bash script to extract only the health status of a Spring Boot application.
As an example I used an adaptor application that interfaces between two external systems.
Note that there several components of the adaptor that need to be monitored:
- control queues
- a database connection
- disk space
- input queues
- output queues
- IP address
#curl -s -X GET http://localhost:8083/actuator/health -H 'cache-control: no-cache' | python -m json.tool 2> /dev/null
{
"components": {
"controlPoints": {
"details": {
"ADAPTER": "UP"
},
"status": "UP"
},
"dataBase": {
"details": {
"Entity Manager(0)": "UP"
},
"status": "UP"
},
"diskSpace": {
"details": {
"exists": true,
"free": 8830365696,
"threshold": 10485760,
"total": 21003583488
},
"status": "UP"
},
"inputPoints": {
"details": {
"SWIFT": "UP"
},
"status": "UP"
},
"outputPoints": {
"details": {
"SWIFT": "UP"
},
"status": "UP"
},
"ping": {
"status": "UP"
}
},
"status": "UP"
}
The status returned by the following bash script has the values UP/DOWN/DEGRADED.
#!/bin/bash
LIST=$(curl -s -X GET http://localhost:8083/actuator/health -H 'cache-control: no-cache' \
| python -m json.tool 2> /dev/null \
| grep '\"status\"' \
| cut -d ':' -f 2 \
| sed 's/"/\"/g')
if [ -z "$LIST" ]; then
echo "DOWN"
else
UP="true"
for value in $LIST
do
if [ $value != "\"UP\"" ] && [ $value != "\"UP\"," ]; then
UP="false"
fi
done
if [ $UP == "true" ]; then
echo "UP"
else
echo "DEGRADED"
fi
fi
Notes:
- python json module is used to interpret the json result
- note that all the status reporting tags are looked at to distinguish between UP or DEGRADED state