UNPKG

1.34 kBPlain TextView Raw
1(ns statsd-client
2 "a simple StatsD client written in Clojure
3
4 Usage:
5 statsd-client/increment 'foo
6 statsd-client/decrement 'foo
7 statsd-client/increment 'foo 1
8 statsd-client/decrement 'foo 1
9 statsd-client/gauge 'foo 1
10 statsd-client/timing 'foo 1
11 "
12 (:import (java.net InetAddress DatagramPacket DatagramSocket)))
13
14(def server-address "127.0.0.1")
15(def server-port 8125)
16
17; UDP helper functions
18(defn make-socket
19 ([] (new DatagramSocket))
20 ([port] (new DatagramSocket port)))
21
22(defn send-data [send-socket ip port data]
23 (let [ipaddress (InetAddress/getByName ip),
24 send-packet (new DatagramPacket (.getBytes data) (.length data) ipaddress port)]
25 (.send send-socket send-packet)))
26
27(defn make-send [ip port]
28 (let [send-socket (make-socket)]
29 (fn [data] (send-data send-socket ip port data))))
30
31(def send-msg (make-send server-address server-port))
32
33; statsd client functions
34(defn increment
35 ([metric] (increment metric 1))
36 ([metric value]
37 (send-msg (str metric ":" value "|c"))))
38
39(defn decrement
40 ([metric] (increment metric -1))
41 ([metric value]
42 (send-msg (str metric ":" value "|c"))))
43
44(defn timing [metric value]
45 (send-msg (str metric ":" value "|ms")))
46
47(defn gauge [metric value]
48 (send-msg (str metric ":" value "|g")))
49