(三)Python呼び出しZabbix apiの入門から放棄へ——本節から放棄
プロジェクトを書くのに忙しいからです.だから往復する時間がない!そのため、技術ブログを書くのが嫌いになってきたので、本節から諦めて、入門したばかりで諦めてしまいました!私は分かち合うのが苦手な人かもしれないし、利己的な人かもしれません.牡羊座を認めざるを得ない人が仕事をするのは確かに3分の熱だ.昨日は一連の文章をしっかり書こうと思っていましたが、自分にまとめをする以外に、必要な友达を助けることができました.でも、確かに3分熱で、今日は冷やしています.
さて、以下はIP、HOSTS、HOSTID、GROUPID、ITEMIDのPythonコードを取得して、勝手に貼って、レンガを投げて玉を引く効果を望んでいます.もちろん、不完全です.
さて、以下はIP、HOSTS、HOSTID、GROUPID、ITEMIDのPythonコードを取得して、勝手に貼って、レンガを投げて玉を引く効果を望んでいます.もちろん、不完全です.
# -*- coding:utf-8 -*-
class Token:
"""Request zabbix server token"""
__REQ = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": ZBXUSER,
"password": ZBXPASS
},
"id": 0
}
@classmethod
def request(cls):
try:
try:
return ZBXHttp.request(Token.__REQ)['result']
except Exception:
raise MonAlarmException('Invalid username or password, unable to request zabbix token')
except MonAlarmException as e:
e.error()
return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_TOKEN)
class BasicData:
__REQ = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ['host'],
'selectInterfaces': ['ip'],
'selectGroups': ''
},
"auth": Token.request(),
"id": 1
}
@classmethod
def __request(cls):
result = ZBXHttp.request(BasicData.__REQ)
err = result.get('error', None)
if err:
try:
raise MonAlarmException('Unable to request basic data, Session terminated, re-login, please.')
except MonAlarmException as e:
e.error()
return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_BASICDATA)
else:
return result
@classmethod
def get_summary(cls):
ip = []
host = []
hostid = []
groupid = []
result = cls.__request()['result']
for item in result:
ip.append(item['interfaces'][0]['ip'])
host.append(item['host'])
hostid.append(item['hostid'])
groupid.append(item['groups'][0]['groupid'])
return [ip, host, hostid, groupid]
class ItemsID:
@classmethod
def request(cls,host_id, item_name):
__REQ = {
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "itemid",
"hostids": host_id,
"search": {"key_": item_name}
},
"auth": Token.request(),
"id": 2
}
try:
return ZBXHttp.request(__REQ)['result'][0]['itemid']
except Exception:
return 0
# -*- coding:utf-8 -*-
class Action:
@classmethod
def get_cpu_data(cls):
summary = BasicData.get_summary()
ip = summary[0]
host = summary[1]
hostid = summary[2]
groupid = summary[3]
count = len(summary[0])
for index in range(count):
itemid = ItemsID.request(hostid[index], CpuItem.item_cpu_used)
print({
'ip': ip[index],
'host': host[index],
'hostid': hostid[index],
'groupid': groupid[index],
'itemname': CpuItem.item_cpu_load,
'itemid': itemid
})
if __name__ == '__main__':
Action.get_cpu_data()