зеркало из https://github.com/microsoft/statsd.git
50 строки
1.3 KiB
Clojure
50 строки
1.3 KiB
Clojure
(ns statsd-client
|
|
"a simple StatsD client written in Clojure
|
|
|
|
Usage:
|
|
statsd-client/increment 'foo
|
|
statsd-client/decrement 'foo
|
|
statsd-client/increment 'foo 1
|
|
statsd-client/decrement 'foo 1
|
|
statsd-client/gauge 'foo 1
|
|
statsd-client/timing 'foo 1
|
|
"
|
|
(:import (java.net InetAddress DatagramPacket DatagramSocket)))
|
|
|
|
(def server-address "127.0.0.1")
|
|
(def server-port 8125)
|
|
|
|
; UDP helper functions
|
|
(defn make-socket
|
|
([] (new DatagramSocket))
|
|
([port] (new DatagramSocket port)))
|
|
|
|
(defn send-data [send-socket ip port data]
|
|
(let [ipaddress (InetAddress/getByName ip),
|
|
send-packet (new DatagramPacket (.getBytes data) (.length data) ipaddress port)]
|
|
(.send send-socket send-packet)))
|
|
|
|
(defn make-send [ip port]
|
|
(let [send-socket (make-socket)]
|
|
(fn [data] (send-data send-socket ip port data))))
|
|
|
|
(def send-msg (make-send server-address server-port))
|
|
|
|
; statsd client functions
|
|
(defn increment
|
|
([metric] (increment metric 1))
|
|
([metric value]
|
|
(send-msg (str metric ":" value "|c"))))
|
|
|
|
(defn decrement
|
|
([metric] (increment metric -1))
|
|
([metric value]
|
|
(send-msg (str metric ":" value "|c"))))
|
|
|
|
(defn timing [metric value]
|
|
(send-msg (str metric ":" value "|ms")))
|
|
|
|
(defn gauge [metric value]
|
|
(send-msg (str metric ":" value "|g")))
|
|
|