Nastaveni metriky pomoci Zabbix trapu (data prichazi z klientu jako webhook pomoci zabbix_sender)
zabbix_sender -z <server IP address> -p 10051 -s “New host” -k trap -o “test value” … posilani dat pro zabbix_trap metriku
Zabbix API
Zabbix API priklad v Powershellu
if(!$credential){
$credential = Get-Credential
}
$baseurl = 'http://zabbix.server'
$params = @{
body = @{
"jsonrpc"= "2.0"
"method"= "user.login"
"params"= @{
"user"= $credential.UserName
"password"= $credential.GetNetworkCredential().Password
}
"id"= 1
"auth"= $null
} | ConvertTo-Json
uri = "$baseurl/api_jsonrpc.php"
headers = @{"Content-Type" = "application/json"}
method = "Post"
}
$result = Invoke-WebRequest @params
$auth = ($result.Content | ConvertFrom-Json).result
$params.body = @{
"jsonrpc"= "2.0"
"method"= "host.get"
"params"= @{
output = "extend"
selectFunctions = "extend"
selectLastEvent = "extend"
selectGroups = "extend"
selectHosts = "extend"
}
auth = $auth
id = 2
} | ConvertTo-Json
$result = Invoke-WebRequest @params
$result = $result.Content | ConvertFrom-Json
$filtred_nodes = ($result.Content | ConvertFrom-Json).result | where { $_.name -like "SERVERPATTERN*"} | select hostid,name
foreach ($filtred_node in $filtred_nodes) {
$params.body = @{
"jsonrpc"= "2.0"
"method"= "item.get"
"params"= @{
output = "extend"
hostids = "$($filtred_node.hostid)"
}
auth = $auth
id = 2
} | ConvertTo-Json
$result2 = Invoke-WebRequest @params
$status = ($result2.Content | ConvertFrom-Json).result | Where-Object { $_.name -like "*ITEMPATTERN*"}
Write-Output "$($filtred_node.name) $($status.status)"
if ($status.status -eq 0) {
$params.body = @{
"jsonrpc"= "2.0"
"method"= "item.update"
"params"= @{
itemid = "$($status.itemid)"
status = "1"
}
auth = $auth
id = 2
} | ConvertTo-Json
$result2 = Invoke-WebRequest @params
Write-Output "Item disabled"
}
}