PowerShell 和 Zabbix API

问题描述 投票:0回答:1

从 ZPI Zabbix 获取数据元素。输出参数之一是“lastclock”。

如果我理解正确的话,这个参数负责最后一次检查的时间。如果不是,请解释一下这个参数是做什么用的?

第二个问题是:如何将这个参数的值转换为时间格式?

我可以在哪里获得以下所有参数的描述?

代码和输出如下:

$GetValue = @{
    "jsonrpc"= "2.0";
    "method"= "item.get";
    "params"= @{
        "output"= "extend";
        "selectMappings" = "extend";
        "hostids" = "11130"
        "search" = @{
            "name" = "Interface Vlan25(): Operational status"
        }
    }
    "id"= 2;
    "auth" = $token
}
$HostValue = Invoke-RestMethod -Method 'Post' -Uri "http://$ZabbixIP/zabbix/api_jsonrpc.php" -Body ($GetValue | ConvertTo-Json) -ContentType "application/json"

输出:

itemid           : 161511
type             : 20
snmp_oid         : 1.3.6.1.2.1.2.2.1.8.11025
hostid           : 11130
name             : Interface Vlan25(): Operational status
key_             : net.if.status[ifOperStatus.11025]
delay            : 30
history          : 7d
trends           : 365d
status           : 0
value_type       : 3
trapper_hosts    : 
units            : 
formula          : 
logtimefmt       : 
templateid       : 0
valuemapid       : 1035
params           : 
ipmi_sensor      : 
authtype         : 0
username         : 
password         : 
publickey        : 
privatekey       : 
flags            : 4
interfaceid      : 583
description      : 
inventory_link   : 0
lifetime         : 30d
evaltype         : 0
jmx_endpoint     : 
master_itemid    : 0
timeout          : 3s
url              : 
query_fields     : {}
posts            : 
status_codes     : 200
follow_redirects : 1
post_type        : 0
http_proxy       : 
headers          : {}
retrieve_mode    : 0
request_method   : 0
output_format    : 0
ssl_cert_file    : 
ssl_key_file     : 
ssl_key_password : 
verify_peer      : 0
verify_host      : 0
allow_traps      : 0
uuid             : 
state            : 0
error            : 
parameters       : {}
lastclock        : 1724923393
lastns           : 412969585
lastvalue        : 1
prevvalue        : 1
powershell api scripting timestamp zabbix
1个回答
0
投票

如果我没理解错的话,这个参数负责的是最后一次检查的时间。

是的; 文档声明了

lastclock
,其类型为
timestamp
(见下文):

项目值最后一次更新的时间。

默认情况下,仅显示过去 24 小时内的值。您可以通过更改“管理”→“常规”菜单部分中的“最大历史显示周期”参数的值来延长此时间段。

作为补充,

lastns
(其类型为
integer
)提供了额外的准确性:

上次更新项目值的纳秒时间。

Zabbix API 上下文中的

timestamp
表示时间点以 Unix 时间 表示,即“自 1 月 1 日 00:00:00 UTC 以来经过的非闰秒数” 1970 年,Unix 时代。

您可以将此类值转换为 .NET

[datetimeoffset]
/
[datetime]
实例,如下所示:

$dto = 
  [datetimeoffset]::FromUnixTimeSecond($HostValue.lastclock)
# Use $dto.LocalDateTime / $dto.UtcDateTime to get a local / UTC [datetime] instance.

如果您需要

lastns
值提供的额外准确性:

$dto = 
  [datetimeoffset]::FromUnixTimeSecond($HostValue.lastclock) + $HostValue.lastns / 100

注意:

[datetimeoffset]
[datetime]
实例具有所谓的ticks的粒度,即100纳秒单位;因此,存储在
.lastns
中的纳秒值除以上面的
100
,这意味着精度略有损失。

要从上面获取本地/UTC

[datetime]
实例,请使用
$dto.LocalTime
/
$dto.UtcDateTime

© www.soinside.com 2019 - 2024. All rights reserved.