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