After reading this post, I've created a simple Zabbix sender in Python. This sender works perfectly with Zabbix 3.0.
Code is following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class ZabbixReporter: def __init__(self, server, max_err_count=10): self.max_err_count = max_err_count self.socket_err_threshold = max_err_count self.server = server def report_to_zabbix(self, zhost, key, value): data = "<req><host>{host}</host><key>{key}</key><data>{value}</data>".format(host=b64encode(zhost), key=b64encode(key), value=b64encode(value)) try: s = socket.socket( socket.AF_INET, socket.SOCK_STREAM) s.connect((self.server, 10051)) s.send(data) s.close() self.reset_err_count() except Exception as e: print e self.register_error() def reset_err_count(self): self.socket_err_threshold = self.max_err_count def register_error(self): self.socket_err_threshold -= 1 if self.socket_err_threshold <= 0: raise Exception("Failed to send data!") else: print "{} attempts left".format(self.socket_err_threshold) |