11defmodule DogStatsd.Statsd do
2-
32 defmacro __using__ ( _opts ) do
43 quote do
54 require Logger
65
76 def gauge ( dogstatsd , stat , value , opts \\ % { } ) do
8- send_stats dogstatsd , stat , value , :g , opts
7+ send_stats ( dogstatsd , stat , value , :g , opts )
98 end
109
1110 def event ( dogstatsd , title , text , opts \\ % { } ) do
1211 event_string = format_event ( title , text , opts )
1312
1413 if byte_size ( event_string ) > 8 * 1024 do
15- Logger . warn "Event #{ title } payload is too big (more that 8KB), event discarded"
14+ Logger . warn ( "Event #{ title } payload is too big (more that 8KB), event discarded" )
1615 end
1716
18- send_to_socket dogstatsd , event_string
17+ send_to_socket ( dogstatsd , event_string )
1918 end
2019
2120 def format_event ( title , text , opts \\ % { } ) do
2221 title = escape_event_content ( title )
23- text = escape_event_content ( text )
22+ text = escape_event_content ( text )
2423
2524 add_opts ( "_e{#{ String . length ( title ) } ,#{ String . length ( text ) } }:#{ title } |#{ text } " , opts )
2625 end
2726
28- def add_opts ( event , % { :date_happened => opt } = opts ) , do: add_opts ( "#{ event } |d:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :date_happened ) )
29- def add_opts ( event , % { :hostname => opt } = opts ) , do: add_opts ( "#{ event } |h:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :hostname ) )
30- def add_opts ( event , % { :aggregation_key => opt } = opts ) , do: add_opts ( "#{ event } |k:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :aggregation_key ) )
31- def add_opts ( event , % { :priority => opt } = opts ) , do: add_opts ( "#{ event } |p:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :priority ) )
32- def add_opts ( event , % { :source_type_name => opt } = opts ) , do: add_opts ( "#{ event } |s:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :source_type_name ) )
33- def add_opts ( event , % { :alert_type => opt } = opts ) , do: add_opts ( "#{ event } |t:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :alert_type ) )
27+ def add_opts ( event , % { :date_happened => opt } = opts ) ,
28+ do: add_opts ( "#{ event } |d:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :date_happened ) )
29+
30+ def add_opts ( event , % { :hostname => opt } = opts ) ,
31+ do: add_opts ( "#{ event } |h:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :hostname ) )
32+
33+ def add_opts ( event , % { :aggregation_key => opt } = opts ) ,
34+ do: add_opts ( "#{ event } |k:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :aggregation_key ) )
35+
36+ def add_opts ( event , % { :priority => opt } = opts ) ,
37+ do: add_opts ( "#{ event } |p:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :priority ) )
38+
39+ def add_opts ( event , % { :source_type_name => opt } = opts ) ,
40+ do: add_opts ( "#{ event } |s:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :source_type_name ) )
41+
42+ def add_opts ( event , % { :alert_type => opt } = opts ) ,
43+ do: add_opts ( "#{ event } |t:#{ rm_pipes ( opt ) } " , Map . delete ( opts , :alert_type ) )
44+
3445 def add_opts ( event , % { } = opts ) , do: add_tags ( event , opts [ :tags ] )
3546
3647 def add_tags ( event , nil ) , do: event
37- def add_tags ( event , [ ] ) , do: event
48+ def add_tags ( event , [ ] ) , do: event
49+
3850 def add_tags ( event , tags ) do
39- tags = tags
40- |> Enum . map ( & rm_pipes / 1 )
41- |> Enum . join ( "," )
51+ tags =
52+ tags
53+ |> Enum . map ( & rm_pipes / 1 )
54+ |> Enum . join ( "," )
4255
4356 "#{ event } |##{ tags } "
4457 end
4558
4659 def increment ( dogstatsd , stat , opts \\ % { } ) do
47- count dogstatsd , stat , 1 , opts
60+ count ( dogstatsd , stat , 1 , opts )
4861 end
4962
5063 def decrement ( dogstatsd , stat , opts \\ % { } ) do
51- count dogstatsd , stat , - 1 , opts
64+ count ( dogstatsd , stat , - 1 , opts )
5265 end
5366
5467 def count ( dogstatsd , stat , count , opts \\ % { } ) do
55- send_stats dogstatsd , stat , count , :c , opts
68+ send_stats ( dogstatsd , stat , count , :c , opts )
5669 end
5770
5871 def histogram ( dogstatsd , stat , value , opts \\ % { } ) do
59- send_stats dogstatsd , stat , value , :h , opts
72+ send_stats ( dogstatsd , stat , value , :h , opts )
6073 end
6174
6275 def timing ( dogstatsd , stat , ms , opts \\ % { } ) do
63- send_stats dogstatsd , stat , ms , :ms , opts
76+ send_stats ( dogstatsd , stat , ms , :ms , opts )
6477 end
6578
6679 defmacro time ( dogstatsd , stat , opts \\ Macro . escape ( % { } ) , do_block ) do
6780 quote do
68- function = fn -> unquote do_block [ :do ] end
81+ function = fn -> unquote ( do_block [ :do ] ) end
6982
7083 { elapsed , result } = :timer . tc ( DogStatsd , :_time_apply , [ function ] )
71- DogStatsd . timing ( unquote ( dogstatsd ) , unquote ( stat ) , trunc ( elapsed / 1000 ) , unquote ( opts ) )
84+
85+ DogStatsd . timing (
86+ unquote ( dogstatsd ) ,
87+ unquote ( stat ) ,
88+ trunc ( elapsed / 1000 ) ,
89+ unquote ( opts )
90+ )
91+
7292 result
7393 end
7494 end
7595
7696 def _time_apply ( function ) , do: function . ( )
7797
7898 def set ( dogstatsd , stat , value , opts \\ % { } ) do
79- send_stats dogstatsd , stat , value , :s , opts
99+ send_stats ( dogstatsd , stat , value , :s , opts )
80100 end
81101
82102 def batch ( dogstatsd , function ) do
@@ -85,45 +105,65 @@ defmodule DogStatsd.Statsd do
85105 end
86106
87107 def send_stats ( dogstatsd , stat , delta , type , opts \\ % { } )
108+
88109 def send_stats ( dogstatsd , stat , delta , type , % { :sample_rate => _sample_rate } = opts ) do
89- opts = Map . put ( opts , :sample , :rand . uniform )
90- send_to_socket dogstatsd , get_global_tags_and_format_stats ( dogstatsd , stat , delta , type , opts )
110+ opts = Map . put ( opts , :sample , :rand . uniform ( ) )
111+
112+ send_to_socket (
113+ dogstatsd ,
114+ get_global_tags_and_format_stats ( dogstatsd , stat , delta , type , opts )
115+ )
91116 end
117+
92118 def send_stats ( dogstatsd , stat , delta , type , opts ) do
93- send_to_socket dogstatsd , get_global_tags_and_format_stats ( dogstatsd , stat , delta , type , opts )
119+ send_to_socket (
120+ dogstatsd ,
121+ get_global_tags_and_format_stats ( dogstatsd , stat , delta , type , opts )
122+ )
94123 end
95124
96125 def get_global_tags_and_format_stats ( dogstatsd , stat , delta , type , opts ) do
97- opts = update_in opts , [ :tags ] , & ( ( DogStatsd . tags ( dogstatsd ) ++ ( & 1 || [ ] ) ) |> Enum . uniq )
126+ opts =
127+ update_in ( opts , [ :tags ] , & ( ( DogStatsd . tags ( dogstatsd ) ++ ( & 1 || [ ] ) ) |> Enum . uniq ( ) ) )
128+
98129 format_stats ( dogstatsd , stat , delta , type , opts )
99130 end
100131
101- def format_stats ( _dogstatsd , _stat , _delta , _type , % { :sample_rate => sr , :sample => s } ) when s > sr , do: nil
102- def format_stats ( dogstatsd , stat , delta , type , % { :sample => s } = opts ) , do: format_stats ( dogstatsd , stat , delta , type , Map . delete ( opts , :sample ) )
132+ def format_stats ( _dogstatsd , _stat , _delta , _type , % { :sample_rate => sr , :sample => s } )
133+ when s > sr ,
134+ do: nil
135+
136+ def format_stats ( dogstatsd , stat , delta , type , % { :sample => s } = opts ) ,
137+ do: format_stats ( dogstatsd , stat , delta , type , Map . delete ( opts , :sample ) )
138+
103139 def format_stats ( dogstatsd , stat , delta , type , % { :sample_rate => sr } = opts ) do
104140 "#{ DogStatsd . prefix ( dogstatsd ) } #{ format_stat ( stat ) } :#{ delta } |#{ type } |@#{ sr } "
105141 |> add_tags ( opts [ :tags ] )
106142 end
143+
107144 def format_stats ( dogstatsd , stat , delta , type , opts ) do
108145 "#{ DogStatsd . prefix ( dogstatsd ) } #{ format_stat ( stat ) } :#{ delta } |#{ type } "
109146 |> add_tags ( opts [ :tags ] )
110147 end
111148
112149 def format_stat ( stat ) do
113- String . replace stat , ~r/ [:|@]/ , "_"
150+ String . replace ( stat , ~r/ [:|@]/ , "_" )
114151 end
115152
116153 def send_to_socket ( _dogstatsd , nil ) , do: nil
117154 def send_to_socket ( _dogstatsd , [ ] ) , do: nil
118155 def send_to_socket ( _dogstatsd , message ) when byte_size ( message ) > 8 * 1024 , do: nil
119- def send_to_socket ( dogstatsd , message ) do
120- Logger . debug "DogStatsd: #{ message } "
121156
157+ def send_to_socket ( dogstatsd , message ) do
122158 { :ok , socket } = :gen_udp . open ( 0 )
123- :gen_udp . send ( socket ,
124- host ( dogstatsd ) |> String . to_char_list ,
125- port ( dogstatsd ) ,
126- message |> String . to_char_list )
159+
160+ :gen_udp . send (
161+ socket ,
162+ host ( dogstatsd ) |> String . to_charlist ( ) ,
163+ port ( dogstatsd ) ,
164+ message |> String . to_char_list ( )
165+ )
166+
127167 :gen_udp . close ( socket )
128168 end
129169
@@ -135,9 +175,7 @@ defmodule DogStatsd.Statsd do
135175 String . replace ( msg , "|" , "" )
136176 end
137177
138- defoverridable [ send_to_socket: 2 ]
139-
178+ defoverridable send_to_socket: 2
140179 end
141180 end
142-
143- end
181+ end
0 commit comments