-2

所以,我试图在 NagiosXI 中设置 check_json.pl 来监控一些统计数据。https://github.com/c-kr/check_json

我正在使用带有我在拉取请求 #32 中提交的修改的代码,因此行号反映了该代码。

json 查询返回如下内容:

[
    {
        "total_bytes": 123456,
        "customer_name": "customer1",
        "customer_id": "1",
        "indices": [
            {
                "total_bytes": 12345,
                "index": "filename1"
            },
            {
                "total_bytes": 45678,
                "index": "filename2"
            },

        ],
        "total": "765.43gb"
    },
   {
        "total_bytes": 123456,
        "customer_name": "customer2",
        "customer_id": "2",
        "indices": [
            {
                "total_bytes": 12345,
                "index": "filename1"
            },
            {
                "total_bytes": 45678,
                "index": "filename2"
            },

        ],
        "total": "765.43gb"
    }
]

我正在尝试监视特定文件的大小。所以检查应该是这样的:

/path/to/check_json.pl -u https://path/to/my/json -a "SOMETHING" -p "SOMETHING"

...我试图找出一些东西,以便我可以监控 customer2 中 filename1 的 total_bytes,我知道 customer_id 和索引,但不知道它们在各自数组中的位置。

我可以通过使用字符串“”来监控 customer1 的总字节数,[0]->{'total_bytes'}但我需要能够指定哪个客户并深入挖掘文件名(已知)和文件大小(要监控的统计信息)并且工作查询只给我状态(好的、警告或严重)。添加 -p 我得到的只是错误....

-p 的错误,无论我如何表达它总是:

Not a HASH reference at ./check_json.pl line 235.

即使我可以从示例“ [0]->{'total_bytes'}”中获得有效的 OK,在 -p 中使用它仍然会给出相同的错误。

指向有关使用格式的文档的链接将非常有帮助。脚本的自述文件或 -h 输出中的示例在这里失败了。有任何想法吗?

4

1 回答 1

0

我真的不知道你的问题是什么。我确定我并不孤单,因此投反对票。

一旦你有解码的 json,如果你有一个 customer_id 要搜索,你可以这样做:

my ($customer_info) = grep {$_->{customer_id} eq $customer_id} @$json_response;

关于第 235 行的错误,这看起来很奇怪:

foreach my $key ($np->opts->perfvars eq '*' ? map { "{$_}"} sort keys %$json_response : split(',', $np->opts->perfvars)) {
    # ....................................... ^^^^^^^^^^^^^
    $perf_value = $json_response->{$key};

如果 perfvars eq "*",您似乎正在寻找$json_reponse->{"{total}"}例如。您可能想要验证用户的输入:

    die "no such key in json data: '$key'\n" unless exists $json_response->{$key};

将哈希引用查找字符串化的整个业务闻起来很糟糕。

一个更好的问题看起来像:

我有这个 JSON 数据。如何获得 id 为 1 的客户的总字节数?

请参阅https://stackoverflow.com/help/mcve

于 2017-09-22T19:58:41.997 回答