Snmp 有没有办法以json/xml的形式获取Nagios中各种警报的历史性能数据?

Snmp 有没有办法以json/xml的形式获取Nagios中各种警报的历史性能数据?,snmp,nagios,nagiosxi,Snmp,Nagios,Nagiosxi,我希望在Nagios Core/XI中获得各种警报设置的性能数据。我认为它存储在RRDs中。有没有方法可以访问它? < p>如果你使用NigiS席,你可以用几种不同的方式得到这个数据。 如果你使用席5或更晚,那么最容易想到的就是API。登录到你的席服务器作为管理员,导航到“帮助”菜单,然后选择“对象引用”在左侧导航,并找到“获取对象/ RRXTestPoT”从对象参考导航框(或只是向下滚动到底部)。 卷曲示例可能如下所示: curl -XGET "http://nagiosxi/nagiosxi

我希望在Nagios Core/XI中获得各种警报设置的性能数据。我认为它存储在RRDs中。有没有方法可以访问它?

< p>如果你使用NigiS席,你可以用几种不同的方式得到这个数据。

如果你使用席5或更晚,那么最容易想到的就是API。登录到你的席服务器作为管理员,导航到“帮助”菜单,然后选择“对象引用”在左侧导航,并找到“获取对象/ RRXTestPoT”从对象参考导航框(或只是向下滚动到底部)。 卷曲示例可能如下所示:

curl -XGET "http://nagiosxi/nagiosxi/api/v1/objects/rrdexport?apikey=YOURAPIKEY&pretty=1&host_name=localhost"
您的回答应该如下所示:

{
    "meta": {
        "start": "1453838100",
        "step": "300",
        "end": "1453838400",
        "rows": "2",
        "columns": "4",
        "legend": {
            "entry": [
                "rta",
                "pl",
                "rtmax",
                "rtmin"
            ]
        }
    },
    "data": {
        "row": [
            {
                "t": "1453838100",
                "v": [
                    "6.0373333333e-03",
                    "0.0000000000e+00",
                    "1.7536000000e-02",
                    "3.0000000000e-03"
                ]
            },
            {
                "t": "1453838400",
                "v": [
                    "6.0000000000e-03",
                    "0.0000000000e+00",
                    "1.7037333333e-02",
                    "3.0000000000e-03"
                ]
            }
        ]
    }
}
但是等等,还有另一种方法

无论您使用的是哪个版本,这种方法都会起作用,如果您在核心系统上使用NPCD处理性能数据,这种方法也会起作用

通过ssh或控制台登录到服务器,并转到
/usr/local/nagios/share/perfdata
目录。从这里我们将使用localhost对象作为示例

$ cd /usr/local/nagios/share/perfdata/
$ ls
localhost
$ cd localhost/
$ ls
Current_Load.rrd   Current_Users.xml  HTTP.rrd  PING.xml            SSH.rrd         Swap_Usage.xml
Current_Load.xml   _HOST_.rrd         HTTP.xml  Root_Partition.rrd  SSH.xml         Total_Processes.rrd
Current_Users.rrd  _HOST_.xml         PING.rrd  Root_Partition.xml  Swap_Usage.rrd  Total_Processes.xml
$ rrdtool dump _HOST_.rrd
一旦您运行
rrdtool dump
命令,将会有大量的输出,因此我将此作为练习留给读者;)

如果您试图自动化某种类型的东西,那么应该注意,xml文件包含rrd文件的元数据,可能有助于首先解析

另外,如果你和我一样,你也喜欢阅读技术手册。下面是一个很好的例子:


希望这有帮助

谢谢你的回答。rrdtool dump有助于收集每个报警性能数据。我现在安装了NigiSXi22R2.9,可以后端API帮助这里,因为我想使用这个数据作为服务。不幸的是,没有。RRD出口端点直到席席5才可用。您必须通过
rrdtool export
的组合编写自己的代码,并将该数据提供给您的http客户端。谢谢。我想知道curl-XGET“”如何获取此API的文档。我想知道GET请求的所有参数。很难找到用于此的API。如果您像您所说的那样使用2012R2.9,那么我无法向您提供可在您的服务器上运行的API/v1 curl请求。但是,如果您已经更新到席的最新版本(<代码>https://assets.nagios.com/downloads/nagiosxi/xi-latest.tar.gz)那么API实际上在应用程序内部有很好的文档记录。历史报警数据无法通过rrd导出获得,为此,您需要类似以下内容:
curl-XGET"http://nagiosxi/nagiosxi/api/v1/objects/logentries?apikey=YOURAPIKEYHERE&pretty=1“
但搜索这些内容的能力相当有限。最好将它们全部提取出来,然后在获得它们后再进行解析。