clojure.lang.ArityException:传递给 client$batch 的参数 (3) 数量错误
clojure.lang.ArityException: Wrong number of args (3) passed to: client$batch
我不熟悉关闭并尝试设置 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.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 中提取了这个配置文件(几乎一字不差)。 The Art of Monitoring by James Turnbull 中的 93 个。所以我很困惑我可能做错了什么。有人可以帮我理解为什么这个配置文件会抛出错误数量的 args 错误吗?
谢谢
您安装的 Riemann 版本太旧,您需要 0.2.11+ 才能愉快地遵循该指南。
您可以在 http://riemann.io
获得转速
我看到你得到了答案,但在我看来,这本书的作者在这方面对 Clojure 有一些误解,也许这并不奇怪,因为这是本书的 v0.0.1 版本。
您使用的代码的解释是 "Our binding defines a symbol called downstream
. The value of this symbol is a series of streams. Our first stream is called batch
." 但从代码中可以清楚地看出 batch
应该是调用的函数(或宏)的名称片段。
然后它说 "The batch stream passed the events into our async-queue!
[...]" 但调用 async-queue!
的结果实际上是调用 batch
的参数。
我不熟悉关闭并尝试设置 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.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 中提取了这个配置文件(几乎一字不差)。 The Art of Monitoring by James Turnbull 中的 93 个。所以我很困惑我可能做错了什么。有人可以帮我理解为什么这个配置文件会抛出错误数量的 args 错误吗?
谢谢
您安装的 Riemann 版本太旧,您需要 0.2.11+ 才能愉快地遵循该指南。
您可以在 http://riemann.io
获得转速我看到你得到了答案,但在我看来,这本书的作者在这方面对 Clojure 有一些误解,也许这并不奇怪,因为这是本书的 v0.0.1 版本。
您使用的代码的解释是 "Our binding defines a symbol called downstream
. The value of this symbol is a series of streams. Our first stream is called batch
." 但从代码中可以清楚地看出 batch
应该是调用的函数(或宏)的名称片段。
然后它说 "The batch stream passed the events into our async-queue!
[...]" 但调用 async-queue!
的结果实际上是调用 batch
的参数。