adaptation of supporting apache 2.2 and 2.4
Costa Tsaousis (ktsaou) committed
Jan 23, 2016 at 05:39 UTC
63aed58633cb183c4769898c4b1c625ad5e0fde6
1 file changed
+76
-70
charts.d/apache.chart.sh
+76
-70
@@ -7,10 +7,6 @@ apache_url="http://127.0.0.1:80/server-status?auto"
7
# between the calls of the _update() function
8
apache_update_every=
9
10
-# let netdata calculate averages (0)
11
-# or use apache calculated averages (1)
12
-apache_averages=0
13
-
10
# convert apache floating point values
11
# to integer using this multiplier
12
# this only affects precision - the values
@@ -20,71 +16,95 @@ apache_decimal_detail=1000000
16
declare -a apache_response=()
17
apache_accesses=0
18
apache_kbytes=0
23
-apache_cpuload=0
24
-apache_uptime=0
19
apache_reqpersec=0
20
apache_bytespersec=0
21
apache_bytesperreq=0
22
apache_busyworkers=0
23
apache_idleworkers=0
30
-apache_scoreboard=
24
+
25
+apache_keys_detected=0
26
+apache_key_accesses=
27
+apache_key_kbytes=
28
+apache_key_reqpersec=
29
+apache_key_bytespersec=
30
+apache_key_bytesperreq=
31
+apache_key_busyworkers=
32
+apache_key_idleworkers=
33
+apache_key_connstotal=
34
+apache_key_connsasyncwriting=
35
+apache_key_connsasynckeepalive=
36
+apache_key_connsasyncclosing=
37
+apache_detect() {
38
+ local i=0
39
+ for x in "${@}"
40
+ do
41
+ case "${x}" in
42
+ 'Accesses:') apache_key_accesses=$[i + 1] ;;
43
+ 'kBytes:') apache_key_kbytes=$[i + 1] ;;
44
+ 'ReqPerSec:') apache_key_reqpersec=$[i + 1] ;;
45
+ 'BytesPerSec:') apache_key_bytespersec=$[i + 1] ;;
46
+ 'BytesPerReq:') apache_key_bytesperreq=$[i + 1] ;;
47
+ 'BusyWorkers:') apache_key_busyworkers=$[i + 1] ;;
48
+ 'IdleWorkers:') apache_key_idleworkers=$[i + 1] ;;
49
+ 'ConnsTotal:') apache_key_connstotal=$[i + 1] ;;
50
+ 'ConnsAsyncWriting:') apache_key_connsasyncwriting=$[i + 1] ;;
51
+ 'ConnsAsyncKeepAlive:') apache_key_connsasynckeepalive=$[i + 1] ;;
52
+ 'ConnsAsyncClosing:') apache_key_connsasyncclosing=$[i + 1] ;;
53
+ esac
54
+
55
+ i=$[i + 1]
56
+ done
57
+
58
+ # we will not check of the Conns*
59
+ # keys, since these are apache 2.4 specific
60
+ if [ -z "${apache_key_accesses}" \
61
+ -o -z "${apache_key_kbytes}" \
62
+ -o -z "${apache_key_reqpersec}" \
63
+ -o -z "${apache_key_bytespersec}" \
64
+ -o -z "${apache_key_bytesperreq}" \
65
+ -o -z "${apache_key_busyworkers}" \
66
+ -o -z "${apache_key_idleworkers}" \
67
+ ]
68
+ then
69
+ echo >&2 "apache: Invalid response or missing keys from apache server: ${*}"
70
+ return 1
71
+ fi
72
+
73
+ return 0
74
+}
75
76
apache_get() {
77
apache_response=($(curl -s "${apache_url}"))
78
[ $? -ne 0 -o "${#apache_response[@]}" -eq 0 ] && return 1
79
36
- if [ "${apache_response[0]}" != "Total" \
37
- -o "${apache_response[1]}" != "Accesses:" \
38
- -o "${apache_response[3]}" != "Total" \
39
- -o "${apache_response[4]}" != "kBytes:" \
40
- -o "${apache_response[6]}" != "CPULoad:" \
41
- -o "${apache_response[8]}" != "Uptime:" \
42
- -o "${apache_response[10]}" != "ReqPerSec:" \
43
- -o "${apache_response[12]}" != "BytesPerSec:" \
44
- -o "${apache_response[14]}" != "BytesPerReq:" \
45
- -o "${apache_response[16]}" != "BusyWorkers:" \
46
- -o "${apache_response[18]}" != "IdleWorkers:" \
47
- -o "${apache_response[20]}" != "Scoreboard:" \
48
- ]
80
+ if [ ${apache_keys_detected} -eq 0 ]
81
then
50
- echo >&2 "apache: Invalid response from apache server: ${apache_response[*]}"
51
- return 1
82
+ apache_detect "${apache_response[@]}" || return 1
83
+ apache_keys_detected=1
84
fi
85
54
- apache_accesses="${apache_response[2]}"
55
- apache_kbytes="${apache_response[5]}"
86
+ apache_accesses="${apache_response[${apache_key_accesses}]}"
87
+ apache_kbytes="${apache_response[${apache_key_kbytes}]}"
88
57
- # float2int "${apache_response[7]}" ${apache_decimal_detail}
58
- # apache_cpuload=${FLOAT2INT_RESULT}
59
-
60
- # apache_uptime="${apache_response[9]}"
61
-
62
- if [ ${apache_averages} -eq 1 ]
63
- then
64
- float2int "${apache_response[11]}" ${apache_decimal_detail}
65
- apache_reqpersec=${FLOAT2INT_RESULT}
89
+ float2int "${apache_response[${apache_key_reqpersec}]}" ${apache_decimal_detail}
90
+ apache_reqpersec=${FLOAT2INT_RESULT}
91
67
- float2int "${apache_response[13]}" ${apache_decimal_detail}
68
- apache_bytespersec=${FLOAT2INT_RESULT}
69
- fi
92
+ float2int "${apache_response[${apache_key_bytespersec}]}" ${apache_decimal_detail}
93
+ apache_bytespersec=${FLOAT2INT_RESULT}
94
71
- float2int "${apache_response[15]}" ${apache_decimal_detail}
95
+ float2int "${apache_response[${apache_key_bytesperreq}]}" ${apache_decimal_detail}
96
apache_bytesperreq=${FLOAT2INT_RESULT}
97
74
- apache_busyworkers="${apache_response[17]}"
75
- apache_idleworkers="${apache_response[19]}"
76
- apache_scoreboard="${apache_response[21]}"
98
+ apache_busyworkers="${apache_response[${apache_key_busyworkers}]}"
99
+ apache_idleworkers="${apache_response[${apache_key_idleworkers}]}"
100
101
if [ -z "${apache_accesses}" \
102
-o -z "${apache_kbytes}" \
80
- -o -z "${apache_cpuload}" \
81
- -o -z "${apache_uptime}" \
103
-o -z "${apache_reqpersec}" \
104
-o -z "${apache_bytespersec}" \
105
-o -z "${apache_bytesperreq}" \
106
-o -z "${apache_busyworkers}" \
107
-o -z "${apache_idleworkers}" \
87
- -o -z "${apache_scoreboard}" \
108
]
109
then
110
echo >&2 "apache: empty values got from apache server: ${apache_response[*]}"
@@ -114,31 +134,20 @@ apache_check() {
134
# _create is called once, to create the charts
135
apache_create() {
136
cat <<EOF
117
-CHART apache.bytesperreq '' "apache Average Response Size (lifetime)" "bytes/request" apache apache area 16005 $apache_update_every
137
+CHART apache.bytesperreq '' "apache Lifetime Avg. Response Size" "bytes/request" apache apache area 16008 $apache_update_every
138
DIMENSION size '' absolute 1 ${apache_decimal_detail}
119
-CHART apache.workers '' "apache Workers" "workers" apache apache stacked 16006 $apache_update_every
139
+CHART apache.workers '' "apache Workers" "workers" apache apache stacked 16005 $apache_update_every
140
DIMENSION idle '' absolute 1 1
141
DIMENSION busy '' absolute 1 1
122
-EOF
123
-
124
- if [ ${apache_averages} -eq 1 ]
125
- then
126
- # apache calculated averages
127
- cat <<EOF2
128
-CHART apache.requests '' "apache Requests" "requests/s" apache apache line 16001 $apache_update_every
142
+CHART apache.reqpersec '' "apache Lifetime Avg. Requests/s" "requests/s" apache apache line 16006 $apache_update_every
143
DIMENSION requests '' absolute 1 ${apache_decimal_detail}
130
-CHART apache.net '' "apache Bandwidth" "kilobits/s" apache apache area 16002 $apache_update_every
144
+CHART apache.bytespersec '' "apache Lifetime Avg. Bandwidth/s" "kilobits/s" apache apache area 16007 $apache_update_every
145
DIMENSION sent '' absolute 8 $[apache_decimal_detail * 1000]
132
-EOF2
133
- else
134
- # netdata calculated averages
135
- cat <<EOF3
146
CHART apache.requests '' "apache Requests" "requests/s" apache apache line 16001 $apache_update_every
147
DIMENSION requests '' incremental 1 1
148
CHART apache.net '' "apache Bandwidth" "kilobits/s" apache apache area 16002 $apache_update_every
149
DIMENSION sent '' incremental 8 1
140
-EOF3
141
- fi
150
+EOF
151
152
return 0
153
}
@@ -155,22 +164,19 @@ apache_update() {
164
165
apache_get || return 1
166
158
- if [ ${apache_averages} -eq 1 ]
159
- then
160
- reqs=${apache_reqpersec}
161
- net=${apache_bytespersec}
162
- else
163
- reqs=${apache_accesses}
164
- net=${apache_kbytes}
165
- fi
166
-
167
# write the result of the work.
168
cat <<VALUESEOF
169
BEGIN apache.requests $1
170
-SET requests = $[reqs]
170
+SET requests = $[apache_accesses]
171
END
172
BEGIN apache.net $1
173
-SET sent = $[net]
173
+SET sent = $[apache_kbytes]
174
+END
175
+BEGIN apache.reqpersec $1
176
+SET requests = $[apache_reqpersec]
177
+END
178
+BEGIN apache.bytespersec $1
179
+SET sent = $[apache_bytespersec]
180
END
181
BEGIN apache.bytesperreq $1
182
SET size = $[apache_bytesperreq]