Zabbix APIで、ディスカバリルールで作成されたトリガーを無効にする方法
Zabbix APIを使って、ホストIDに紐付く全てのトリガーを無効にするようにしようとしています。
ディスカバリルールでないトリガーは、無効にできるのですが、
ディスカバリルールで作成されたトリガーは無効にできずエラーになってしまいます。
「API error -32500: Cannot update "hostid" for a discovered trigger.」
zabbixの画面から操作すればトリガーを無効にできるのですが、APIではどういった指定が必要なのでしょうか。
おわかりになるかたがいらっしゃいましたらご教授ください。
APIは以下から、PhpZabbixApiをダウンロードし、phpスクリプトにホスト名を引数に渡して、実行しています。
https://github.com/confirm/PhpZabbixApi
ZabbixApi.class.php
ZabbixApiAbstract.class.php
ーーー
スクリプト
<?php
require_once dirname(__FILE__) . "/ZabbixApi.class.php";
use ZabbixApi\ZabbixApi;
try {
$api = new ZabbixApi('http://localhost/zabbix/api_jsonrpc.php', 'Admin', 'zabbix');
$hostname1 = "$argv[1]";
$hosts = $api->HostGet( array('output' => 'extend',
'filter' => array('host' => "$hostname1") ) );
foreach ($hosts as $host) {
$hostid1 = $host->hostid;
}
$triggerids = $api->TriggerGet( array('output' => 'extend',
'filter' => array('hostid' => "$hostid1") ) );
foreach ($triggerids as $tri) {
$triid = $tri->triggerid;
$triggerupdate = $api->TriggerUpdate(
array(
"hostid" => "$hostid1",
"triggerid" => "$triid",
"status" => "1"
) );
}
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
?>
kasugai - 投稿数: 72
すみません。自己解決しました。
$triggerupdate = $api->TriggerUpdate( の中の、"hostid" => "$hostid1",が不要でした。
失礼いたしました。