2016-05-17 9 views
1

Ich bin neu zu schließen und versuchen, Riemann zur Überwachung von Serverressourcen und Anwendungsereignisse einzurichten. Ich habe ein Riemann-Server-Setup und versuche, einen Riemann-Client hinzuzufügen, der Ereignisse an den Riemann-Server weiterleitet.

Dies ist meine Riemann Client-Konfigurationsdatei:

; -*- mode: clojure; -*- 
; vim: filetype=clojure 

(logging/init :file "/var/log/riemann/riemann.log") 

(require 'riemann.client) 

; Listen on the local interface over TCP (5555), UDP (5555), and websockets (5556) 
(let [host "0.0.0.0"] 
    (tcp-server :host host) 
    (udp-server :host host) 
    (ws-server :host host)) 

; Expire old events from the index. 
(periodically-expire 10 {:keep-keys [:host, :service, :tags, :state, :description, :metric]}) 

(let [index (index) 
     downstream (batch 100 1/10 
     (async-queue! :agg { :queue-size 1e3 
          :core-pool-size 4 
          :max-pool-size 32} 
     (forward 
     (riemann.client/tcp-client :host "10.11.5.10"))))] 

    (streams ; Inbound events will be passed to these streams: 
    (default :ttl 60 ; Keep events in the index for 1 minute by default. 
     index 
     #(info %) 
     (where (service #"^riemann.*") ; Send any events with service starting with riemann downstream 
     downstream)))) 

Jedes Mal wenn ich versuche Riemann zu starten, ich die folgende Ausnahme in die Protokolle gedruckt werden:

ERROR [2016-05-17 14:58:58,118] main - riemann.bin - Couldn't start 
clojure.lang.ArityException: Wrong number of args (3) passed to: client$batch 
    at clojure.lang.AFn.throwArity(AFn.java:437) 
    at clojure.lang.AFn.invoke(AFn.java:47) 
    at riemann.config$eval36.invoke(riemann.config:23) 
    at clojure.lang.Compiler.eval(Compiler.java:6619) 
    at clojure.lang.Compiler.load(Compiler.java:7064) 
    at clojure.lang.Compiler.loadFile(Compiler.java:7020) 
    at clojure.lang.RT$3.invoke(RT.java:318) 
    at riemann.config$include.invoke(config.clj:285) 
    at riemann.bin$_main.doInvoke(bin.clj:61) 
    at clojure.lang.RestFn.applyTo(RestFn.java:137) 
    at riemann.bin.main(Unknown Source) 

ich diese Konfigurationsdatei angehoben (fast wörtlich) von pg. 93 von The Art of Monitoring by James Turnbull. Ich bin also verwirrt, was ich falsch gemacht haben könnte. Kann mir jemand helfen zu verstehen, warum diese Konfigurationsdatei eine falsche Anzahl von Argumenten ausgibt?

Dank

+0

Um es klar zu sagen, Sie sprechen über die Weiterleitung von Ereignissen von einem Riemann-Server zu einem anderen Riemann-Server, oder? –

+0

Ihr Code sieht gut aus, welche Version von Riemann benutzen Sie? –

+0

@ArthurUlfeldt _Just klar zu sein, Sie sprechen über die Ereignisse von einem Server auf einen anderen riemann riemann Server weiterzuleiten, nicht wahr? _ Ja, der andere Server ist riemann und gebunden an allen Schnittstellen laufen (0.0.0.0) _your Code sieht gut aus, welche Version von Riemann verwendest du? _ http://aphyr.com/riemann/riemann-0.2.4-1.noarch.rpm – FishinForIt

Antwort

1

Ihre installierte Version von Riemann ist sehr alt, müssen Sie 0.2.11+ diese Führung im Anschluss an eine gute Zeit haben.

können Sie die Umdrehungen pro Minute erhalten bei http://riemann.io

+0

Ehrfürchtig! Vielen Dank. – FishinForIt

0

Ich sehe Sie Ihre Antwort bekommen, aber es scheint mir, dass der Autor des Buches auf dieser ein paar Dinge über Clojure falsch verstanden, und vielleicht ist das nicht verwunderlich, denn dies ist Version v0.0.1 des Buches.

Die Erklärung für den Code, den Sie verwendet haben, sagt "Unsere Bindung definiert ein Symbol mit der Bezeichnung downstream. Der Wert dieses Symbols ist eine Reihe von Streams. Unser erster Stream heißt batch." Aus dem Code geht jedoch klar hervor, dass batch der Name einer Funktion (oder eines Makros) sein soll, die im Snippet aufgerufen wird.

Dann heißt es „Der Ansatz Strom, der die Ereignisse in unserem async-queue! bestanden [...]“, aber das Ergebnis async-queue! des Aufrufs ist eigentlich ein Argument, mit dem batch genannt wird.

+0

Rieman wertet die im Beispiel aufgeführten Funktionen aus, um andere Funktionen zu erzeugen. Diese zurückgegebenen Funktionen werden in der gesamten Dokumentation als Streams bezeichnet. In dem von Ihnen erwähnten Absatz bezieht er sich auf das Verhalten der Funktionen, die beim Ausführen des Codes im Snippet zurückgegeben werden. Was das System "macht", wenn es tatsächlich Ihre Events bearbeitet. Dieser Code Spinet ist korrekt und funktioniert. (vorausgesetzt, Sie verwenden die Version von Riemann, die die 'Batch'-Funktion mit 3-arity definiert) –

Verwandte Themen