使用 scollector 在 bosun 中定义新的外部收集器的程序是什么?
我们可以编写 python 或 shell 脚本来收集数据吗?
2 回答
与此相关的文档不是最新的。您可以按照http://godoc.org/bosun.org/cmd/scollector#hdr-External_Collectors中的说明进行操作,但我们也支持更好的 JSON 输出。
无论哪种方式,您都可以编写一些内容并将其放在外部收集器目录中,然后是频率目录,然后是可执行脚本或二进制文件。就像是:
<external_collectors_dir>/<freq_sec>/foo.sh
.
如果目录频率为零0
,则脚本预计会持续运行,并且您在代码中设置了睡眠(这是我对外部收集器的首选方法)。脚本将 telnet 格式或未记录的 JSON 格式输出到标准输出。Scollector 将其拾取,并将该信息排队等待发送。
不久前我创建了一个问题来记录这个问题https://github.com/bosun-monitor/bosun/issues/1225。直到我们中的一个人解决这个问题,这里是添加 JSON 的 PR https://github.com/bosun-monitor/bosun/commit/fced1642fd260bf6afa8cba169d84c60f2e23e92
除了 Kyle 所说的之外,您还可以查看一些现有的外部收集器以了解它们的输出。这是我们的一位同事编写的用于监控 jvm 内容的 java 编写的。它使用文本格式,很简单:
metricname timestamp value tag1=foo tag2=bar
如果您想使用 JSON 格式,以下是我们收集器之一的示例:
{"metric":"exceptional.exceptions.count","timestamp":1438788720,"value":0,"tags":{"application":"AdServer","machine":"ny-web03","source":"NY_Status"}}
您还可以发送元数据:
{"Metric":"exceptional.exceptions.count","Name":"rate","Value":"counter"}
{"Metric":"exceptional.exceptions.count","Name":"unit","Value":"errors"}
{"Metric":"exceptional.exceptions.count","Name":"desc","Value":"The number of exceptions thrown per second by applications and machines. Data is queried from multiple sources. See status instances for details on exceptions."}`
或将错误消息发送到 stderror:
2015/08/05 15:32:00 lookup OR-SQL03: no such host