]> arthur.barton.de Git - netdata.git/blob - charts.d/opensips.chart.sh
updated opensips to prevent reusing variables
[netdata.git] / charts.d / opensips.chart.sh
1 #!/bin/sh
2
3 opensips_opts="fifo get_statistics all"
4 opensips_cmd="opensipsctl"
5 opensips_update_every=5
6 opensips_timeout=2
7
8 opensips_get_stats() {
9         timeout $opensips_timeout "$opensips_cmd" $opensips_opts |\
10                 grep "^\(core\|dialog\|net\|registrar\|shmem\|siptrace\|sl\|tm\|uri\|usrloc\):[a-zA-Z0-9_ -]\+[[:space:]]*=[[:space:]]*[0-9]\+[[:space:]]*$" |\
11                 sed     -e "s|-|_|g" \
12                         -e "s|:|_|g" \
13                         -e "s|[[:space:]]\+=[[:space:]]\+|=|g" \
14                         -e "s|[[:space:]]\+$||" \
15                         -e "s|^[[:space:]]\+||" \
16                         -e "s|[[:space:]]\+|_|" \
17                         -e "s|^|opensips_|g"
18
19         local ret=$?
20         [ $ret -ne 0 ] && echo "opensips_command_failed=1"
21         return $ret
22 }
23
24 opensips_check() {
25         require_cmd timeout || return 1
26
27         # check once if the url works
28         local x="$(opensips_get_stats | grep "^opensips_core_")"
29         if [ ! $? -eq 0 -o -z "$x" ]
30         then
31                 echo >&2 "opensips: cannot get global status. Please set opensips_opts='options' whatever needed to get connected to opensips server, in $confd/opensips.conf"
32                 return 1
33         fi
34
35         return 0
36 }
37
38 opensips_create() {
39         # create the charts
40         cat <<EOF
41 CHART opensips.dialogs_active '' "OpenSIPS Active Dialogs" "dialogs" opensips '' area 20001 $opensips_update_every
42 DIMENSION dialog_active_dialogs active absolute 1 1
43 DIMENSION dialog_early_dialogs early absolute -1 1
44
45 CHART opensips.users '' "OpenSIPS Users" "users" opensips '' line 20002 $opensips_update_every
46 DIMENSION usrloc_registered_users registered absolute 1 1
47 DIMENSION usrloc_location_users location absolute 1 1
48 DIMENSION usrloc_location_contacts contacts absolute 1 1
49 DIMENSION usrloc_location_expires expires incremental -1 $((1 * opensips_update_every))
50
51 CHART opensips.registrar '' "OpenSIPS Registrar" "registrations / sec" opensips '' line 20003 $opensips_update_every
52 DIMENSION registrar_accepted_regs accepted incremental 1 $((1 * opensips_update_every))
53 DIMENSION registrar_rejected_regs rejected incremental -1 $((1 * opensips_update_every))
54
55 CHART opensips.transactions '' "OpenSIPS Transactions" "transactions / sec" opensips '' line 20004 $opensips_update_every
56 DIMENSION tm_UAS_transactions UAS incremental 1 $((1 * opensips_update_every))
57 DIMENSION tm_UAC_transactions UAC incremental -1 $((1 * opensips_update_every))
58
59 CHART opensips.core_rcv '' "OpenSIPS Core Receives" "queries / sec" opensips '' line 20005 $opensips_update_every
60 DIMENSION core_rcv_requests requests incremental 1 $((1 * opensips_update_every))
61 DIMENSION core_rcv_replies replies incremental -1 $((1 * opensips_update_every))
62
63 CHART opensips.core_fwd '' "OpenSIPS Core Forwards" "queries / sec" opensips '' line 20006 $opensips_update_every
64 DIMENSION core_fwd_requests requests incremental 1 $((1 * opensips_update_every))
65 DIMENSION core_fwd_replies replies incremental -1 $((1 * opensips_update_every))
66
67 CHART opensips.core_drop '' "OpenSIPS Core Drops" "queries / sec" opensips '' line 20007 $opensips_update_every
68 DIMENSION core_drop_requests requests incremental 1 $((1 * opensips_update_every))
69 DIMENSION core_drop_replies replies incremental -1 $((1 * opensips_update_every))
70
71 CHART opensips.core_err '' "OpenSIPS Core Errors" "queries / sec" opensips '' line 20008 $opensips_update_every
72 DIMENSION core_err_requests requests incremental 1 $((1 * opensips_update_every))
73 DIMENSION core_err_replies replies incremental -1 $((1 * opensips_update_every))
74
75 CHART opensips.core_bad '' "OpenSIPS Core Bad" "queries / sec" opensips '' line 20009 $opensips_update_every
76 DIMENSION core_bad_URIs_rcvd bad_URIs_rcvd incremental 1 $((1 * opensips_update_every))
77 DIMENSION core_unsupported_methods unsupported_methods incremental 1 $((1 * opensips_update_every))
78 DIMENSION core_bad_msg_hdr bad_msg_hdr incremental 1 $((1 * opensips_update_every))
79
80 CHART opensips.tm_replies '' "OpenSIPS TM Replies" "replies / sec" opensips '' line 20010 $opensips_update_every
81 DIMENSION tm_received_replies received incremental 1 $((1 * opensips_update_every))
82 DIMENSION tm_relayed_replies relayed incremental 1 $((1 * opensips_update_every))
83 DIMENSION tm_local_replies local incremental 1 $((1 * opensips_update_every))
84
85 CHART opensips.transactions_status '' "OpenSIPS Transactions Status" "transactions / sec" opensips '' line 20011 $opensips_update_every
86 DIMENSION tm_2xx_transactions 2xx incremental 1 $((1 * opensips_update_every))
87 DIMENSION tm_3xx_transactions 3xx incremental 1 $((1 * opensips_update_every))
88 DIMENSION tm_4xx_transactions 4xx incremental 1 $((1 * opensips_update_every))
89 DIMENSION tm_5xx_transactions 5xx incremental 1 $((1 * opensips_update_every))
90 DIMENSION tm_6xx_transactions 6xx incremental 1 $((1 * opensips_update_every))
91
92 CHART opensips.transactions_inuse '' "OpenSIPS InUse Transactions" "transactions" opensips '' line 20012 $opensips_update_every
93 DIMENSION tm_inuse_transactions inuse absolute 1 1
94
95 CHART opensips.sl_replies '' "OpenSIPS SL Replies" "replies / sec" opensips '' line 20013 $opensips_update_every
96 DIMENSION sl_1xx_replies 1xx incremental 1 $((1 * opensips_update_every))
97 DIMENSION sl_2xx_replies 2xx incremental 1 $((1 * opensips_update_every))
98 DIMENSION sl_3xx_replies 3xx incremental 1 $((1 * opensips_update_every))
99 DIMENSION sl_4xx_replies 4xx incremental 1 $((1 * opensips_update_every))
100 DIMENSION sl_5xx_replies 5xx incremental 1 $((1 * opensips_update_every))
101 DIMENSION sl_6xx_replies 6xx incremental 1 $((1 * opensips_update_every))
102 DIMENSION sl_sent_replies sent incremental 1 $((1 * opensips_update_every))
103 DIMENSION sl_sent_err_replies error incremental 1 $((1 * opensips_update_every))
104 DIMENSION sl_received_ACKs ACKed incremental 1 $((1 * opensips_update_every))
105
106 CHART opensips.dialogs '' "OpenSIPS Dialogs" "dialogs / sec" opensips '' line 20014 $opensips_update_every
107 DIMENSION dialog_processed_dialogs processed incremental 1 $((1 * opensips_update_every))
108 DIMENSION dialog_expired_dialogs expired incremental 1 $((1 * opensips_update_every))
109 DIMENSION dialog_failed_dialogs failed incremental -1 $((1 * opensips_update_every))
110
111 CHART opensips.net_waiting '' "OpenSIPS Network Waiting" "kilobytes" opensips '' line 20015 $opensips_update_every
112 DIMENSION net_waiting_udp UDP absolute 1 1024
113 DIMENSION net_waiting_tcp TCP absolute 1 1024
114
115 CHART opensips.uri_checks '' "OpenSIPS URI Checks" "checks / sec" opensips '' line 20016 $opensips_update_every
116 DIMENSION uri_positive_checks positive incremental 1 $((1 * opensips_update_every))
117 DIMENSION uri_negative_checks negative incremental -1 $((1 * opensips_update_every))
118
119 CHART opensips.traces '' "OpenSIPS Traces" "traces / sec" opensips '' line 20017 $opensips_update_every
120 DIMENSION siptrace_traced_requests requests incremental 1 $((1 * opensips_update_every))
121 DIMENSION siptrace_traced_replies replies incremental -1 $((1 * opensips_update_every))
122
123 CHART opensips.shmem '' "OpenSIPS Shared Memory" "kilobytes" opensips '' line 20018 $opensips_update_every
124 DIMENSION shmem_total_size total absolute 1 1024
125 DIMENSION shmem_used_size used absolute 1 1024
126 DIMENSION shmem_real_used_size real_used absolute 1 1024
127 DIMENSION shmem_max_used_size max_used absolute 1 1024
128 DIMENSION shmem_free_size free absolute 1 1024
129
130 CHART opensips.shmem_fragments '' "OpenSIPS Shared Memory Fragmentation" "fragments" opensips '' line 20019 $opensips_update_every
131 DIMENSION shmem_fragments fragments absolute 1 1
132 EOF
133         
134         return 0
135 }
136
137
138 opensips_update() {
139         # the first argument to this function is the microseconds since last update
140         # pass this parameter to the BEGIN statement (see bellow).
141
142         # do all the work to collect / calculate the values
143         # for each dimension
144         # remember: KEEP IT SIMPLE AND SHORT
145
146         # 1. get the counters page from opensips
147         # 2. sed to remove spaces; replace . with _; remove spaces around =; prepend each line with: local opensips_
148         # 3. egrep lines starting with:
149         #    local opensips_client_http_ then one or more of these a-z 0-9 _ then = and one of more of 0-9
150         #    local opensips_server_all_ then one or more of these a-z 0-9 _ then = and one of more of 0-9
151         # 4. then execute this as a script with the eval
152         #
153         # be very carefull with eval:
154         # prepare the script and always grep at the end the lines that are usefull, so that
155         # even if something goes wrong, no other code can be executed
156
157         unset \
158                 opensips_dialog_active_dialogs \
159                 opensips_dialog_early_dialogs \
160                 opensips_usrloc_registered_users \
161                 opensips_usrloc_location_users \
162                 opensips_usrloc_location_contacts \
163                 opensips_usrloc_location_expires \
164                 opensips_registrar_accepted_regs \
165                 opensips_registrar_rejected_regs \
166                 opensips_tm_UAS_transactions \
167                 opensips_tm_UAC_transactions \
168                 opensips_core_rcv_requests \
169                 opensips_core_rcv_replies \
170                 opensips_core_fwd_requests \
171                 opensips_core_fwd_replies \
172                 opensips_core_drop_requests \
173                 opensips_core_drop_replies \
174                 opensips_core_err_requests \
175                 opensips_core_err_replies \
176                 opensips_core_bad_URIs_rcvd \
177                 opensips_core_unsupported_methods \
178                 opensips_core_bad_msg_hdr \
179                 opensips_tm_received_replies \
180                 opensips_tm_relayed_replies \
181                 opensips_tm_local_replies \
182                 opensips_tm_2xx_transactions \
183                 opensips_tm_3xx_transactions \
184                 opensips_tm_4xx_transactions \
185                 opensips_tm_5xx_transactions \
186                 opensips_tm_6xx_transactions \
187                 opensips_tm_inuse_transactions \
188                 opensips_sl_1xx_replies \
189                 opensips_sl_2xx_replies \
190                 opensips_sl_3xx_replies \
191                 opensips_sl_4xx_replies \
192                 opensips_sl_5xx_replies \
193                 opensips_sl_6xx_replies \
194                 opensips_sl_sent_replies \
195                 opensips_sl_sent_err_replies \
196                 opensips_sl_received_ACKs \
197                 opensips_dialog_processed_dialogs \
198                 opensips_dialog_expired_dialogs \
199                 opensips_dialog_failed_dialogs \
200                 opensips_net_waiting_udp \
201                 opensips_net_waiting_tcp \
202                 opensips_uri_positive_checks \
203                 opensips_uri_negative_checks \
204                 opensips_siptrace_traced_requests \
205                 opensips_siptrace_traced_replies \
206                 opensips_shmem_total_size \
207                 opensips_shmem_used_size \
208                 opensips_shmem_real_used_size \
209                 opensips_shmem_max_used_size \
210                 opensips_shmem_free_size \
211                 opensips_shmem_fragments
212
213         opensips_command_failed=0
214         eval "local $(opensips_get_stats)"
215         [ $? -ne 0 ] && return 1
216
217         [ $opensips_command_failed -eq 1 ] && echo >&2 "opensips: failed to get values, disabling." && return 1
218
219         # write the result of the work.
220         cat <<VALUESEOF
221
222 BEGIN opensips.dialogs_active $1
223 SET dialog_active_dialogs = $opensips_dialog_active_dialogs
224 SET dialog_early_dialogs = $opensips_dialog_early_dialogs
225 END
226
227 BEGIN opensips.users $1
228 SET usrloc_registered_users = $opensips_usrloc_registered_users
229 SET usrloc_location_users = $opensips_usrloc_location_users
230 SET usrloc_location_contacts = $opensips_usrloc_location_contacts
231 SET usrloc_location_expires = $opensips_usrloc_location_expires
232 END
233
234 BEGIN opensips.registrar $1
235 SET registrar_accepted_regs = $opensips_registrar_accepted_regs
236 SET registrar_rejected_regs = $opensips_registrar_rejected_regs
237 END
238
239 BEGIN opensips.transactions $1
240 SET tm_UAS_transactions = $opensips_tm_UAS_transactions
241 SET tm_UAC_transactions = $opensips_tm_UAC_transactions
242 END
243
244 BEGIN opensips.core_rcv $1
245 SET core_rcv_requests = $opensips_core_rcv_requests
246 SET core_rcv_replies = $opensips_core_rcv_replies
247 END
248
249 BEGIN opensips.core_fwd $1
250 SET core_fwd_requests = $opensips_core_fwd_requests
251 SET core_fwd_replies = $opensips_core_fwd_replies
252 END
253
254 BEGIN opensips.core_drop $1
255 SET core_drop_requests = $opensips_core_drop_requests
256 SET core_drop_replies = $opensips_core_drop_replies
257 END
258
259 BEGIN opensips.core_err $1
260 SET core_err_requests = $opensips_core_err_requests
261 SET core_err_replies = $opensips_core_err_replies
262 END
263
264 BEGIN opensips.core_bad $1
265 SET core_bad_URIs_rcvd = $opensips_core_bad_URIs_rcvd
266 SET core_unsupported_methods = $opensips_core_unsupported_methods
267 SET core_bad_msg_hdr = $opensips_core_bad_msg_hdr
268 END
269
270 BEGIN opensips.tm_replies $1
271 SET tm_received_replies = $opensips_tm_received_replies
272 SET tm_relayed_replies = $opensips_tm_relayed_replies
273 SET tm_local_replies = $opensips_tm_local_replies
274 END
275
276 BEGIN opensips.transactions_status $1
277 SET tm_2xx_transactions = $opensips_tm_2xx_transactions
278 SET tm_3xx_transactions = $opensips_tm_3xx_transactions
279 SET tm_4xx_transactions = $opensips_tm_4xx_transactions
280 SET tm_5xx_transactions = $opensips_tm_5xx_transactions
281 SET tm_6xx_transactions = $opensips_tm_6xx_transactions
282 END
283
284 BEGIN opensips.transactions_inuse $1
285 SET tm_inuse_transactions = $opensips_tm_inuse_transactions
286 END
287
288 BEGIN opensips.sl_replies $1
289 SET sl_1xx_replies = $opensips_sl_1xx_replies
290 SET sl_2xx_replies = $opensips_sl_2xx_replies
291 SET sl_3xx_replies = $opensips_sl_3xx_replies
292 SET sl_4xx_replies = $opensips_sl_4xx_replies
293 SET sl_5xx_replies = $opensips_sl_5xx_replies
294 SET sl_6xx_replies = $opensips_sl_6xx_replies
295 SET sl_sent_replies = $opensips_sl_sent_replies
296 SET sl_sent_err_replies = $opensips_sl_sent_err_replies
297 SET sl_received_ACKs = $opensips_sl_received_ACKs
298 END
299
300 BEGIN opensips.dialogs $1
301 SET dialog_processed_dialogs = $opensips_dialog_processed_dialogs
302 SET dialog_expired_dialogs = $opensips_dialog_expired_dialogs
303 SET dialog_failed_dialogs = $opensips_dialog_failed_dialogs
304 END
305
306 BEGIN opensips.net_waiting $1
307 SET net_waiting_udp = $opensips_net_waiting_udp
308 SET net_waiting_tcp = $opensips_net_waiting_tcp
309 END
310
311 BEGIN opensips.uri_checks $1
312 SET uri_positive_checks = $opensips_uri_positive_checks
313 SET uri_negative_checks = $opensips_uri_negative_checks
314 END
315
316 BEGIN opensips.traces $1
317 SET siptrace_traced_requests = $opensips_siptrace_traced_requests
318 SET siptrace_traced_replies = $opensips_siptrace_traced_replies
319 END
320
321 BEGIN opensips.shmem $1
322 SET shmem_total_size = $opensips_shmem_total_size
323 SET shmem_used_size = $opensips_shmem_used_size
324 SET shmem_real_used_size = $opensips_shmem_real_used_size
325 SET shmem_max_used_size = $opensips_shmem_max_used_size
326 SET shmem_free_size = $opensips_shmem_free_size
327 END
328
329 BEGIN opensips.shmem_fragments $1
330 SET shmem_fragments = $opensips_shmem_fragments
331 END
332 VALUESEOF
333
334         return 0
335 }
336