从 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
如果我没理解错的话,这个参数负责的是最后一次检查的时间。
是的; 文档声明了
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
。