簡體   English   中英

Zabbix API 和 Powershell。如何使用主機名獲取事件

[英]Zabbix API with Powershell. How to get events with hostname

我正在嘗試使用 Zabbix API 和 PowerShell 獲取事件信息。不幸的是,結果給出了主機 ID 而不是它的名稱。 主機名及其 ID 由另一個 Zabbix API 查詢獲得。

如何在事件信息中獲取答案以獲取主機名而不是其 ID。 腳本如下:

#credentials
if(!$credential){
    $credential = Get-Credential
}


#zabbix adress
$baseurl = 'https://zabbix.sprawdzone.it'

#establish connection
$params = @{
    body =  @{
        "jsonrpc"= "2.0"
        "method"= "user.login"
        "params"= @{
            "user"= $credential.UserName
            "password"= $credential.GetNetworkCredential().Password
        }
        "id"= 2
        "auth"= $null
    } | ConvertTo-Json
    uri = "$baseurl/api_jsonrpc.php"
    headers = @{"Content-Type" = "application/json"}
    method = "Post"
}
$result = Invoke-WebRequest @params -UseBasicParsing

然后我使用主機本身的查詢:

#querying 4 host
$params.body = @{
    "jsonrpc" = "2.0"
    "method"= "host.get"
    "params"= @{
        output = @( "host", "hostid", "status" )
        selectInterfaces = @( "interfaceid", "ip", "dns", "useip" )
        groupids = @( "40")
    }
    auth = ($result.Content | ConvertFrom-Json).result
    id = 2
} | ConvertTo-Json

得到結果:

#results
$result = Invoke-WebRequest @params -UseBasicParsing
$result.Content

Zabbix-api 查詢事件:

#querying 4 events
$params.body = @{
    "jsonrpc" = "2.0"
    "method" = "event.get"
    "params" = @{
        "output" = "extend"
        "time_from" = "1638226800"
        "time_till" = "1638313200"
        "sortfield" = @("clock", "eventid")
        "sortorder" = "DESC"
    }
    auth = ($result.Content | ConvertFrom-Json).result
    id = 1
} | ConvertTo-Json

結果以相同的方式實現:

#results
$result = Invoke-WebRequest @params -UseBasicParsing
$result.Content

我想我快要在一個查詢中獲取主機名和事件了——但我無法處理 Zabbix-API。 或者也許有更簡單的方法?

結果不一定是 JSON,它可以是表格、字符串等。

提前感謝您的提示。

根據API 文檔,您可以使用selectHosts參數執行單個event.get調用:

返回包含創建事件的 object 的主機的 hosts 屬性。 僅支持由觸發器、項目或 LLD 規則生成的事件。

像這樣的東西:

$params.body = @{
    "jsonrpc" = "2.0"
    "method" = "event.get"
    "params" = @{
        "output" = "extend"
        "time_from" = "1638226800"
        "time_till" = "1638313200"
        "sortfield" = @("clock", "eventid")
        "sortorder" = "DESC"
        "selectHosts" = @("host", "hostid')
    }
    auth = ($result.Content | ConvertFrom-Json).result
    id = 1
} | ConvertTo-Json

THX 西蒙娜扎貝羅尼! 完美運行!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM