]> arthur.barton.de Git - netdata.git/blob - charts.d/crsproxy.chart.sh
added support for different update frequency per chart in charts.d.plugin
[netdata.git] / charts.d / crsproxy.chart.sh
1 #!/bin/sh
2
3 crsproxy_url="http://127.0.0.1:7999/counters?"
4 crsproxy_cmds=""
5 crsproxy_update_every=60
6
7 crsproxy_check() {
8         # check once if the url works
9         wget 2>/dev/null -O /dev/null "$crsproxy_url"
10         if [ ! $? -eq 0 ]
11         then
12                 echo >&2 "crsproxy: cannot fetch the url: $crsproxy_url. Please set crsproxy_url='url' in $confd/crsproxy.conf"
13                 return 1
14         fi
15
16         if [ -z "$crsproxy_cmds" ]
17         then
18                 crsproxy_cmds="`wget 2>/dev/null -O - "$crsproxy_url" | egrep "^cmd_[a-zA-Z][a-zA-Z0-9]_[a-z_]+ *= *[0-9]+$" | cut -d '_' -f 2 | sort -u`"
19                 echo
20         fi
21         if [ -z "$crsproxy_cmds" ]
22         then
23                 echo >&2 "crsproxy: cannot find command list automatically. Please set crsproxy_cmds='...' in $confd/crsproxy.conf"
24                 return 1
25         fi
26         return 0
27 }
28
29 crsproxy_create() {
30         # create the charts
31         cat <<EOF
32 CHART crsproxy.connected '' "CRS Proxy Connected Clients" "clients" crsproxy '' line 20000 $crsproxy_update_every
33 DIMENSION web '' absolute 1 1
34 DIMENSION native '' absolute 1 1
35 DIMENSION virtual '' absolute 1 1
36 CHART crsproxy.requests '' "CRS Proxy Requests Rate" "requests / $crsproxy_update_every sec" crsproxy '' area 20001 $crsproxy_update_every
37 DIMENSION web '' incremental 1 1
38 DIMENSION native '' incremental -1 1
39 CHART crsproxy.clients '' "CRS Proxy Clients Rate" "clients / $crsproxy_update_every sec" crsproxy '' area 20010 $crsproxy_update_every
40 DIMENSION web '' incremental 1 1
41 DIMENSION native '' incremental -1 1
42 DIMENSION virtual '' incremental 1 1
43 CHART crsproxy.replies '' "CRS Replies Rate" "replies / $crsproxy_update_every sec" crsproxy '' area 20020 $crsproxy_update_every
44 DIMENSION ok '' incremental 1 1
45 DIMENSION failed '' incremental -1 1
46 CHART crsproxy.bconnections '' "Back-End Connections Rate" "connections / $crsproxy_update_every sec" crsproxy '' area 20030 $crsproxy_update_every
47 DIMENSION ok '' incremental 1 1
48 DIMENSION failed '' incremental -1 1
49 EOF
50
51         local x=
52         echo "CHART crsproxy.commands '' 'CRS Commands Requests' 'requests / $crsproxy_update_every sec' crsproxy '' stacked 20100 $crsproxy_update_every"
53         for x in $crsproxy_cmds
54         do
55                 echo "DIMENSION $x '' incremental 1 1"
56         done
57
58         echo "CHART crsproxy.commands_failed '' 'CRS Failed Commands' 'replies / $crsproxy_update_every sec' crsproxy '' stacked 20110 $crsproxy_update_every"
59         for x in $crsproxy_cmds
60         do
61                 echo "DIMENSION $x '' incremental 1 1"
62         done
63
64         return 0
65 }
66
67
68 crsproxy_update() {
69         # the first argument to this function is the microseconds since last update
70         # pass this parameter to the BEGIN statement (see bellow).
71
72         # do all the work to collect / calculate the values
73         # for each dimension
74         # remember: KEEP IT SIMPLE AND SHORT
75
76         # get the values from crsproxy
77         eval "`wget 2>/dev/null -O - "$crsproxy_url" |\
78                 sed -e "s/ \+/ /g" -e "s/\./_/g" -e "s/ = /=/g" -e "s/^/crsproxy_/g" |\
79                 egrep "^crsproxy_[a-zA-Z][a-zA-Z0-9_]*=[0-9]+$"`"
80
81
82         # write the result of the work.
83         cat <<VALUESEOF
84 BEGIN crsproxy.connected $1
85 SET web = $((crsproxy_web_clients_opened - crsproxy_web_clients_closed))
86 SET native = $((crsproxy_crs_clients_opened - crsproxy_crs_clients_closed))
87 SET virtual = $((crsproxy_virtual_clients_opened - crsproxy_virtual_clients_closed))
88 END
89 BEGIN crsproxy.requests $1
90 SET web = $crsproxy_web_requests
91 SET native = $crsproxy_native_requests
92 END
93 BEGIN crsproxy.clients $1
94 SET web = $crsproxy_web_clients_opened
95 SET native = $crsproxy_crs_clients_opened
96 SET virtual = $crsproxy_virtual_clients_opened
97 END
98 BEGIN crsproxy.replies $1
99 SET ok = $crsproxy_replies_success
100 SET failed = $crsproxy_replies_error
101 END
102 BEGIN crsproxy.bconnections $1
103 SET ok = $crsproxy_connections_nonblocking_established
104 SET failed = $crsproxy_connections_nonblocking_failed
105 END
106 VALUESEOF
107
108         local native_requests="_native_requests"
109         local web_requests="_web_requests"
110         local replies_error="_replies_error"
111         local x=
112
113         echo "BEGIN crsproxy.commands $1"
114         for x in $crsproxy_cmds
115         do
116                 eval "v=\$(( crsproxy_cmd_$x$native_requests + crsproxy_cmd_$x$web_requests ))"
117                 echo "SET $x = $v"
118         done
119         echo "END"
120
121         echo "BEGIN crsproxy.commands_failed $1"
122         for x in $crsproxy_cmds
123         do
124                 eval "v=\$crsproxy_cmd_$x$replies_error"
125                 echo "SET $x = $v"
126         done
127         echo "END"
128
129         return 0
130 }