|
239 | 239 | end |
240 | 240 | end)()). |
241 | 241 |
|
242 | | --ifdef(S2_USE_KIVRA_METRICS). |
243 | | - |
244 | | --define(do_increment(__Name), |
245 | | - (kivra_metrics:increase_counter([?APP | __Name]))). |
246 | | --define(do_increment(__Fun, __Ret), |
247 | | - ?do_increment([?MODULE, __Fun, __Ret])). |
248 | | --define(do_time(__Name, __Expr), |
249 | | - (kivra_metrics:time_mfa([?APP | __Name], ?thunk(__Expr)))). |
250 | | --define(do_time_diff(__Name, __Time), |
251 | | - (kivra_metrics:time_diff([?APP | __Name], __Time))). |
252 | | --define(do_histogram(__Name, __Value), |
253 | | - (kivra_metrics:histogram([?APP | __Name], __Value))). |
254 | | - |
255 | | --else. |
256 | | - |
257 | | --ifdef(S2_USE_FOLSOM). |
258 | | - |
259 | | --define(name(Xs), (s2_atoms:catenate(s2_lists:intersperse('_', Xs)))). |
260 | | - |
261 | | --define(do_increment(Name), |
262 | | - (catch folsom_metrics:notify({?name(Name), 1}))). |
263 | | --define(do_increment(Fun, Ret), |
264 | | - ?do_increment([?APP, ?MODULE, Fun, Ret])). |
265 | | --define(do_time(Name, Expr), |
266 | | - (try case is_list(Name) of |
267 | | - true -> |
268 | | - folsom_metrics:histogram_timed_update(?name(Name), |
269 | | - ?thunk(Expr)); |
270 | | - false -> |
271 | | - folsom_metrics:histogram_timed_update(?name([ ?MODULE |
272 | | - , ?APP |
273 | | - , Name]), |
274 | | - ?thunk(Expr)) |
275 | | - end catch _:_ -> Expr |
276 | | - end)). |
277 | | --define(do_time_diff(Name, Time), |
278 | | - (catch case is_list(Name) of |
279 | | - true -> |
280 | | - folsom_metrics:histogram_timed_notify({?name(Name), |
281 | | - Time}); |
282 | | - false -> |
283 | | - folsom_metrics:histogram_timed_notify({ ?name([ ?MODULE |
284 | | - , ?APP |
285 | | - , Name]) |
286 | | - , Time}) |
287 | | - end)). |
288 | | - |
289 | | --else. |
290 | | - |
291 | | --ifdef(S2_USE_ESTATSD). |
292 | | - |
293 | | --define(name(Xs), (s2_atoms:catenate(s2_lists:intersperse('.', Xs)))). |
294 | | - |
295 | | --define(do_increment(__Name), |
296 | | - (catch estatsd:increment(?name(__Name)))). |
297 | | --define(do_increment(__Fun, __Ret), |
298 | | - ?do_increment([?APP, ?MODULE, __Fun, __Ret])). |
299 | | --define(do_time(__Name, Expr), |
300 | | - (begin |
301 | | - {__T, __Val} = timer:tc(?thunk(Expr)), |
302 | | - case is_list(__Name) of |
303 | | - true -> estatsd:timing(?name(__Name), __T/1000); |
304 | | - false -> estatsd:timing(?name([?MODULE, ?APP, __Name]), __T/1000) |
305 | | - end, |
306 | | - __Val |
307 | | - end)). |
308 | | --define(do_time_diff(__Name, __Time), |
309 | | - (catch case is_list(__Name) of |
310 | | - true -> |
311 | | - estatsd:timing(?name(__Name), __Time); |
312 | | - false -> |
313 | | - estatsd:timing(?name([?MODULE, ?APP, __Name]), __Time) |
314 | | - end)). |
315 | | - |
316 | | --else. |
317 | | - |
318 | | --ifdef(S2_RIEMANN). |
319 | | - |
320 | | --ifdef(S2_RIEMANN_USE_POOL). |
321 | | --define(katja, katja_pool). |
322 | | --else. |
323 | | --define(katja, katja). |
324 | | --endif. |
325 | | - |
326 | | --define(name(Xs), (?a2l(s2_atoms:catenate(s2_lists:intersperse('/', Xs))))). |
327 | | - |
328 | | --define(do_increment(__Name), |
329 | | - (ok)). |
330 | | --define(do_increment(__Fun, __Ret), |
331 | | - ?do_increment([?APP, ?MODULE, __Fun, __Ret])). |
332 | | --define(do_time(__Name, Expr), |
333 | | - (begin |
334 | | - {__T, __Val} = timer:tc(?thunk(Expr)), |
335 | | - case is_list(__Name) of |
336 | | - true -> |
337 | | - ?katja:send_event_async([ {service, ?name(__Name)} |
338 | | - , {time, s2_time:unix_epoch()} |
339 | | - , {metric, round(__T/1000)}]); |
340 | | - false -> |
341 | | - ?katja:send_event_async([ {service, ?name([?APP, ?MODULE])} |
342 | | - , {time, s2_time:unix_epoch()} |
343 | | - , {metric, round(__T/1000)}]) |
344 | | - end, |
345 | | - __Val |
346 | | - end)). |
347 | | --define(do_time_diff(__Name, __Time), |
348 | | - (catch case is_list(__Name) of |
349 | | - true -> |
350 | | - ?katja:send_event_async( |
351 | | - [ {service, ?name(__Name)} |
352 | | - , {time, s2_time:unix_epoch()} |
353 | | - , {metric, timer:now_diff(os:timestamp(), __Time)/1000}] ); |
354 | | - false -> |
355 | | - ?katja:send_event_async( |
356 | | - [ {service, ?name([?APP, ?MODULE])} |
357 | | - , {time, s2_time:unix_epoch()} |
358 | | - , {metric, timer:now_diff(os:timestamp(), __Time)/1000}] ) |
359 | | - end)). |
360 | | - |
361 | | --else. %default |
362 | | - |
363 | | --define(name(Xs), (s2_atoms:catenate(s2_lists:intersperse('.', Xs)))). |
364 | | - |
365 | | --define(do_increment(Name), ok). |
366 | | --define(do_increment(Fun, Ret), Fun, ok). |
367 | 242 | -define(do_time(__Name, __Expr), |
368 | 243 | (begin |
369 | 244 | {__T, __Val} = timer:tc(?thunk(__Expr)), |
|
375 | 250 | end, |
376 | 251 | __Val |
377 | 252 | end)). |
378 | | --define(do_time_diff(__Name, __Time), |
379 | | - (catch case is_list(__Name) of |
380 | | - true -> |
381 | | - ?debug( "time(~s): ~wms ~p~n" |
382 | | - , [ ?MODULE |
383 | | - , timer:now_diff(os:timestamp(), __Time)/1000 |
384 | | - , ?name(__Name) ] ); |
385 | | - false -> |
386 | | - ?debug( "time(~s): ~wms ~p~n" |
387 | | - , [ ?MODULE |
388 | | - , timer:now_diff(os:timestamp(), __Time)/1000 |
389 | | - , __Name ] ) |
390 | | - end)). |
391 | | - |
392 | | --endif. %S2_USE_ESTATSD |
393 | | - |
394 | | --endif. %S2_RIEMANN |
395 | | - |
396 | | --endif. |
397 | | - |
398 | | --endif. |
399 | 253 |
|
400 | 254 | -define(increment(Name), ?do_increment(Name)). |
401 | 255 | -define(increment(Fun, Ret), ?do_increment(Fun, Ret)). |
402 | 256 | -define(time(Name, Expr), ?do_time(Name, Expr)). |
403 | | --define(time_diff(Name, Time), ?do_time_diff(Name, Time)). |
404 | 257 | -define(histogram(Name, Value), ?do_histogram(Name, Value)). |
405 | 258 |
|
406 | 259 | %%%_* Misc ============================================================= |
407 | 260 | -define(FUNCTION, |
408 | 261 | (element(2, element(2, process_info(self(), current_function))))). |
409 | 262 |
|
410 | | --define(UUID(), (s2_rand:int())). |
411 | | - |
412 | 263 | %%%_* Types ============================================================ |
413 | 264 | -type alist(A, B) :: [{A, B}]. |
414 | 265 | -type fd() :: file:io_device(). |
|
0 commit comments