2016-06-17 11 views
0

Zabbix의 system.run[] 요청/항목 내에 systemctl을 사용하여 원격으로 서비스를 중지/시작하려고하지만 작동하지 않는 것 같습니다. 내가 Zabbix 3.0 JSON-RPC API와 내 JSON을 사용하고Zabbix 3.0 JSON-RPC API로 system.run []을 실행할 수 있습니까?

은 다음과 같습니다

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

결과 :

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

하지만이 요청 때문에의 유효성에 대해 너무 확실하지 않다 지금까지 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" 
} 

결과 :

이 그래도, 데이터 수집을 위해 잘 작동

{ 
    "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 
} 

사람이 JSON-RPC API를 사용하여 system.run[]을 실행하기 위해 관리하는 경우, 솔루션을 공유하십시오. 감사합니다.

답변

2

아니요, 몇 가지 문제가있는 것 같습니다. 첫째, Zabbix API는 JSON-RPC (REST 아님)입니다. 둘째, item.get 메서드는 주로 서버에서 항목 구성을 가져 오는 데 사용됩니다. , 당신은 이미 zabbix_get 언급 사용할 수 있습니다

는 에이전트의 항목 값을 요청하려면 (그리고 이것은 system.run 항목 키를 사용하여 구현하는 방법 원격 명령입니다) :

$ 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