-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonitor-wordpress-ec2.sh
More file actions
executable file
·80 lines (70 loc) · 2.52 KB
/
monitor-wordpress-ec2.sh
File metadata and controls
executable file
·80 lines (70 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
###############################################################################
# This script monitors WordPress on an EC2 instance.
#
#
# Author: Adrian
# GitHub: https://github.com/madrian/install-wordpress-ec2
###############################################################################
# checks the urls connectivity with 15 sec timeout
health_check() {
http_code=`curl --max-time 15 $1 -w "%{http_code}" -o /dev/null -s -L`
if [ $http_code -eq 200 ]; then
health_check_status="UP"
return 0
else
health_check_status="DOWN"
return 1
fi
}
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` instanceId"
exit 1
fi
instance_id=$1
start_time=`date --iso-8601=seconds -d '1 hour ago'`
end_time=`date --iso-8601=seconds`
# check instance metrics
max_cpu=`aws cloudwatch get-metric-statistics \
--metric-name CPUUtilization --namespace AWS/EC2 \
--start-time $start_time --end-time $end_time \
--period 3600 --statistics Maximum \
--dimensions Name=InstanceId,Value=$instance_id \
--query 'Datapoints[0].Maximum' --output text`
# check instance statuses
response_status_json=`aws ec2 describe-instance-status \
--instance-id $instance_id`
instance_status=`echo $response_status_json | \
jq '.InstanceStatuses[0].InstanceStatus.Status'`
system_status=`echo $response_status_json | \
jq '.InstanceStatuses[0].SystemStatus.Status'`
instance_state=`echo $response_status_json | \
jq '.InstanceStatuses[0].InstanceState.Name'`
# check wordpress site health
instance_url=`aws ec2 describe-instances --instance-id $instance_id \
--query 'Reservations[0].Instances[0].PublicDnsName' --output text`
php_url=$instance_url/phpinfo.php
health_check $php_url
ret=$?
php_health=$health_check_status
blog_url=$instance_url/blog
if [ $ret -eq 0 ]; then
# check blog only if php is up
health_check $blog_url
fi
blog_health=$health_check_status
cat <<EOF
-------------------------------------------------------------------------------
Start time : $start_time
End time : $end_time
Max CPU : $max_cpu
-------------------------------------------------------------------------------
Instance status : $instance_status
System status : $system_status
Instance state : $instance_state
-------------------------------------------------------------------------------
Blog URL : http://$blog_url
PHP site status : $php_health
Blog site status : $blog_health
-------------------------------------------------------------------------------
EOF