APIを用いたWebシナリオのステップの内容変更について

いつもお世話になっております。

Zabbix-2.2.3を利用しており、Zabbixの色々な設定をAPIで
行いたいと考えております。

そこでタイトルにあるとおりですが、すでに登録されている
Webシナリオのステップの内容をAPIで変更したいと思い
メソッド httptest.update を使って試しましたが、うまくいきません。

そもそも利用するメソッドは合っているのでしょうか?

変更内容としては、すでに登録されているWebシナリオに対して、
1つのステップが設定されており、その中のURLの記載のみを
変更したいです。

お忙しいところ申し訳ありませんが、よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

利用するメソッドはあっているはずです。

「うまくいかない」だけではなく、具体的にどのようなリクエスト
を投げて、どのような状態なのでしょうか?

エラーが発生するのであれば、具体的にどのようなエラーが返却さ
れるのかお教えください。

TNKさま

お世話になっております。

まずはメソッドを確認させていただこうと思い、特に詳細は
記載しませんでした。失礼いたしました。

こちらで確認していた内容は以下の通りです。

====
①特定のホストのWebシナリオの設定内容確認
【API】
# curl -s -XGET -H "Content-Type: application/json-rpc" -d '{
"method": "httptest.get",
"params": {
"output": "extend",
"selectSteps": "extend",
"filter": {
"hostid": "10379",
"name": "URL"
}
},
"jsonrpc": "2.0","auth": "*****","id": "2"
}' http://127.0.0.1/zabbix/api_jsonrpc.php | jq -r '.result[]'

【出力結果】
{
"macros": "",
"agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
"variables": "",
"status": "1",
"delay": "60",
"nextcheck": "1413780456",
"applicationid": "2246",
"name": "URL",
"httptestid": "133",
"authentication": "0",
"http_user": "",
"http_password": "",
"hostid": "10379",
"templateid": "0",
"http_proxy": "",
"retries": "1",
"steps": [
{
"webstepid": "133",
"variables": "",
"status_codes": "100-199,200-299,300-399",
"httpstepid": "133",
"httptestid": "133",
"name": "Get",
"no": "1",
"url": "http://{IPADDRESS}/index.html",
"timeout": "15",
"posts": "",
"required": ""
}
]
}

②以下のAPIによりWebシナリオの設定変更を試みる
  ※変更するのは、★印の"status", "url", "timeout"のパラメータ3つ
【API】
curl -s -XGET -H "Content-Type: application/json-rpc" -d '{
"method": "httptest.update",
"params": {
"httptestid": "133",
"macros": "",
"status": 0, ←★1(無効)から0(有効)へ変更
"steps": [
{
"webstepid": "133",
"variables": "",
"status_codes": "100-199,200-299,300-399",
"httpstepid": "133",
"httptestid": "133",
"name": "Get",
"no": "1",
"Url": "https://{IPADDRESS}/index.html", ←★httpからhttpsへ変更
"timeout": "10", ←★15秒から10秒へ変更
"posts": "",
"required": ""
}
]
},
"jsonrpc": "2.0","auth": "*****","id": "2"
}' http://127.0.0.1/zabbix/api_jsonrpc.php \
| jq -r '.result[]'

【出力結果】
[
"133"
]

③再度①と同様に設定確認
  ※☆印が設定反映されなかった箇所、★が設定反映された箇所
【API】
# curl -s -XGET -H "Content-Type: application/json-rpc" -d '{
"method": "httptest.get",
"params": {
"output": "extend",
"selectSteps": "extend",
"filter": {
"hostid": "10379",
"name": "URL"
}
},
"jsonrpc": "2.0","auth": "*****","id": "2"
}' http://127.0.0.1/zabbix/api_jsonrpc.php | jq -r '.result[]'

【出力結果】
{
"macros": "",
"agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
"variables": "",
"status": "0", ←★正常に変更されている
"delay": "60",
"nextcheck": "1413781227",
"applicationid": "2246",
"name": "URL",
"httptestid": "133",
"authentication": "0",
"http_user": "",
"http_password": "",
"hostid": "10379",
"templateid": "0",
"http_proxy": "",
"retries": "1",
"steps": [
{
"webstepid": "133",
"variables": "",
"status_codes": "100-199,200-299,300-399",
"httpstepid": "133",
"httptestid": "133",
"name": "Get",
"no": "1",
"url": "http://{IPADDRESS}/index.html", ←☆変更されていない
"timeout": "10", ←★変更されている
"posts": "",
"required": ""
}
]
}
====

以上のように、いくつかのパラメータはAPIにより設定変更ができましたが、
ステップの中でもURLの箇所だけ変更されませんでした。

この場合、APIの記述に何か問題があるのでしょうか?

以上、よろしくお願いいたします。

ユーザー TNK の写真

urlを指定する際、「/」(スラッシュ)を「\」(バックスラッシュ)
でエスケープしてみてください。

例:
 http:\/\/{IPADDRESS}\/index.html

「/」(スラッシュ)をエスケープしてみましたが、
やはりURLのみ変更できませんでした。

先ほどと同様timeoutは変更できているのを
確認しております。

ユーザー TNK の写真

2.2.6であればurlも更新できていますので、2.2.3から2.2.6までの
間に修正された不具合が影響しているのかもしれません。

より新しいバージョンに更新されることをご検討ください。
※注:そろそろ2.2.7がリリースされるかもしれません。

TNK様

2.2.6でも試してみたところ、うまくいかず…
試していたAPIをよくよく見直したところ、
Propertyの記載を間違えておりました。。。

【誤】 "Url"
【正】 "url"

2.2.6と2.2.3の両方で正しく設定ができたことを
確認しました。

大変失礼いたしました。