2016-06-17 14 views
0

Zabbixのsystem.run[]リクエスト/アイテムの中でsystemctlを使用してリモートでサービスを停止/開始しようとしていますが、動作していないようです。Zabbix 3.0 JSON-RPC APIでsystem.run []を実行できますか?

私はZabbixの3.0 JSON-RPC APIを使用していて、私のJSONは次のようになりますので

{"jsonrpc":"2.0","result":[],"id":1} 

しかし、私はこの要求の妥当性についてあまりよく分からない:

{ 
    "jsonrpc": "2.0", 
    "method": "item.get", 
    "params": { 
    "filter": { 
     "host": "host-name", 
     "key_": "system.run[sudo systemctl stop nginx.service]" 
    } 
    }, 
    "id": 1, 
    "auth": "my-token" 
} 

結果これまでに私が見たすべての情報system.run[]はzabbix_getに関連していました。このようにsystem.run[]を実行することは可能ですか?私は間違って何をしていますか?

これは明らかに項目をフィルタリングするだけですが、Zabbix JSON-RPC APIを使用してzabbix_getがどのように複製するかはわかりません。これについて私が知る情報はありません。これは、データ収集に適しています

カントー、:

{ 
    "jsonrpc": "2.0", 
    "method": "item.get", 
    "params": { 
    "filter": { 
     "host": "host-name", 
     "key_": "vm.memory.size[used]" 
    } 
    }, 
    "id": 1, 
    "auth": "my-token" 
} 

結果:誰かがJSON-RPC APIを使用してsystem.run[]を実行するために管理

{ 
    "jsonrpc": "2.0", 
    "result": [ 
    { 
     "itemid": "455", 
     "type": "0", 
     "snmp_community": "", 
     "snmp_oid": "", 
     "hostid": "12241", 
     "name": "Used memory", 
     "key_": "vm.memory.size[used]", 
     "delay": "60", 
     "history": "90", 
     "trends": "365", 
     "status": "0", 
     "value_type": "3", 
     "trapper_hosts": "", 
     "units": "B", 
     "multiplier": "0", 
     "delta": "0", 
     "snmpv3_securityname": "", 
     "snmpv3_securitylevel": "0", 
     "snmpv3_authpassphrase": "", 
     "snmpv3_privpassphrase": "", 
     "formula": "1", 
     "error": "", 
     "lastlogsize": "0", 
     "logtimefmt": "", 
     "templateid": "106", 
     "valuemapid": "0", 
     "delay_flex": "", 
     "params": "", 
     "ipmi_sensor": "", 
     "data_type": "0", 
     "authtype": "0", 
     "username": "", 
     "password": "", 
     "publickey": "", 
     "privatekey": "", 
     "mtime": "0", 
     "flags": "0", 
     "interfaceid": "2", 
     "port": "", 
     "description": "", 
     "inventory_link": "0", 
     "lifetime": "30", 
     "snmpv3_authprotocol": "0", 
     "snmpv3_privprotocol": "0", 
     "state": "0", 
     "snmpv3_contextname": "", 
     "evaltype": "0", 
     "lastclock": "1466142275", 
     "lastns": "142277413", 
     "lastvalue": "3971121455", 
     "prevvalue": "39710" 
    } 
    ], 
    "id": 1 
} 

場合は、あなたのソリューションを共有してください。 ありがとうございます。

答えて

2

いいえ、いくつか間違っているようです。まず、Zabbix APIはJSON-RPC(RESTではない)です。次に、item.getメソッドが主にサーバーからアイテム設定を取得するために使用されます。

エージェントから項目値を要求する(これはsystem.run項目キーで実装されている方法をリモートコマンドである)ために、あなたはすでにzabbix_getを述べた使用することができます。

$ zabbix_get -s host-name -k "system.run[sudo systemctl stop nginx.service]" 

注意をあなたはこれが働く」と言うときことあなたがその時点でデータを収集するようZabbixに指示するのではなく、すでにデータベースにあるデータを返します。リモートコマンドの場合、このリモートコマンドがエージェントに正常に送信された最後の時刻を示す「1」が表示されます。

+0

ありがとうございました!これはいくつかの有用な情報です。しかし、私は私が従っているかどうかはわかりません - あなたはzabbix_senderを使ってエージェントからアイテムの値を要求できると言います(私はsystem.runも実行できますか?)しかし、zabbix_getを使って例を挙げます。遅くて申し訳ありませんが、私は心から混乱しています。 – IvanFaQerstein

+0

おっと、申し訳ありませんが、そこにユーティリティをミスタイプしました。どこでもzabbix_getでなければなりません。一定。 – Richlv

関連する問題