1

私は閉鎖に不慣れで、Riemannをセットアップしてサーバー リソースとアプリケーション イベントを監視しようとしています。Riemann サーバーのセットアップがあり、Riemann クライアントを追加しようとしています。これにより、イベントが Riemann サーバーに転送されます。

これは私の Riemann クライアント構成ファイルです。

; -*- 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))))

Riemann を起動しようとするたびに、次の例外がログに出力されます。

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)

この構成ファイル (ほぼそのまま) を pg. James Turnbull による The Art of Monitoring の93 。だから私は何が間違っていたのか混乱しています。この構成ファイルが間違った数の引数エラーをスローしている理由を誰かが理解するのを手伝ってくれますか?

ありがとう

4

2 に答える 2

1

インストールされている Riemann のバージョンは古く、そのガイドに従うには 0.2.11+ が必要です。

rpm はhttp://riemann.ioで取得できます。

于 2016-05-18T15:32:56.120 に答える
0

回答を得たようですが、この本の著者は Clojure についていくつか間違っているように思えます。これは本のバージョン v0.0.1 であるため、おそらく驚くべきことではありません。

使用したコードの説明には、「バインディングでは というシンボルが定義されていますdownstream。このシンボルの値は一連のストリームです。最初のストリームは と呼ばれてbatchいます。」とあります。batchしかし、スニペットで呼び出される関数 (またはマクロ) の名前であるはずのコードから明らかです。

次に、「バッチストリームがイベントをasync-queue![...] に渡しました」と表示されますが、呼び出しの結果async-queue!は実際には呼び出される引数batchです。

于 2016-05-18T16:02:08.897 に答える