Zabbixを作っても組み込みのテンプレートは使わず、自分好みのテンプレートを作っていくことが多いので全部削除する方法をメモ。手でポチポチやっても良いが、面倒なのでPowerShellからZabbix APIを使って削除。
一応、後から必要になる可能性を考えて削除前にすべてエクスポートする。
# APIたたくやつ
function ExecZbxApi([string] $method, [object] $params, [string] $zabbixUri, [object] $token) {
$body = @{
jsonrpc = '2.0'
method = $method
id = 1
auth = $token
params = $params
}
$bodyJson = $body | ConvertTo-Json -Depth 100
$res = Invoke-RestMethod -Uri $zabbixUri -ContentType 'application/json-rpc' -Method Post -Body $bodyJson -ErrorAction:Stop
if ($null -ne ($res | Get-Member -Name 'error')) {
throw $res.error
}
return $res.result
}
# ログイン。Uriやユーザ名、パスワードは適宜変えること。
$zabbixUri = 'http://192.168.0.1/zabbix/api_jsonrpc.php'
$para = @{ user = 'Admin'; password = 'zabbix'}
$token = ExecZbxApi 'user.login' $para $zabbixUri $null
# テンプレートID取得
$para = @{ output = 'templateid' }
$templateIds = (ExecZbxApi 'template.get' $para $zabbixUri $token).templateid
# テンプレートエクスポート
$exportDir = 'C:\tmp'
$templateIds | ForEach-Object {
$para = @{ options = @{ templates = @( $_ )}; format = 'xml' }
$templateXml = [xml](ExecZbxApi 'configuration.export' $para $zabbixUri $token)
$exportPath = Join-Path $exportDir ($templateXml.zabbix_export.templates.template.name + '.xml')
$templateXml.Save($exportPath)
}
# テンプレート削除
$templateIds | ForEach-Object {
ExecZbxApi 'template.delete' @( $_ ) $zabbixUri $token
}
# ログアウト
ExecZbxApi 'user.logout' @() $zabbixUri $token