如何设置NSClient ++以自动将指标发送到REST服务器

时间:2017-05-24 16:50:31

标签: python windows monitoring nagios graphite

我们希望在某些Windows服务器上部署NSClient ++,以收集指标并将其发送到我们的中央服务器。如果需要,这个中央服务器可以使用任何协议(例如,石墨/碳协议)进行通信,但我们真的希望将每个JSON格式的度量标准提交给运行REST接口的中央Web服务器,该接口可以接收它们并进行进一步处理

我们希望大多数性能指标每分钟流入一次。我们不关心非数字数据,但是如果它也进入,那就没关系,如果我们收到它,我们可以将它解析为警报控制台。

我知道我可以使用可下载的MSI安装程序安装nsclient ++。那么配置它是一件事,但是如何?我甚至已经知道我可以将性能数据发送到石墨服务器,但是如何拦截性能数据并通过REST接口自行发送?

我可以用Python编写任何代码,如果有办法获取我想要发送到我的python应用程序的数据,我可以使用urllib2(或请求)发送它。

如果有人在那里,或者可以解释这是如何组合在一起的,有人可以指点我这方面的方法吗?

1 个答案:

答案 0 :(得分:1)

安装NSClient++后,只需在C:\Program Files\NSClient++\nsclient.ini

中复制以下配置即可
[/modules]
CheckDisk = enabled
CheckExternalScripts = enabled
CheckHelpers = enabled
CheckNet = enabled
CheckSystem = enabled
GraphiteClient = enabled
Scheduler = enabled


[/settings/graphite/client]
channel = GRAPHITE
hostname=windows

[/settings/graphite/client/targets/default]
address = 192.168.202.128


[/settings/scheduler/schedules/default]
interval = 10s
report = all


[/settings/scheduler/schedules]
cpu=alias_cpu
mem=alias_mem
disk=alias_disk
service=alias_service
channel = GRAPHITE

使用NSclient ++,我们可以使用NSCA协议将指标发送到Nagios,或者发送到Graphite服务器。因此,在配置文件中,我们使用一些配置(如GRAPHITE)和address来定义scheduler个频道。 scheduler将收集指标并将其发送至Channel。根据以上配置,Graphite位于192.168.202.128

问题我正面临

但它没有选择hostname。根据{{​​3}},它应该像<machine_name>.<Metric_Name> <Value>这样的格式发送指标,但我看到的是<Metrics_name> <Value>。如果指标来自不同的机器,我们就无法区分。