add support for ES mappings per module
This commit is contained in:
parent
5c693601a5
commit
3740e7943f
|
@ -28,11 +28,17 @@ class MonitorDaemon(Thread):
|
||||||
logger.info("path %s" % checkerPath)
|
logger.info("path %s" % checkerPath)
|
||||||
|
|
||||||
# Create/start all monitoring threads
|
# Create/start all monitoring threads
|
||||||
logger.info("starting monitor threads")
|
logger.info("creating monitor threads")
|
||||||
for instance in self.config["monitors"]:
|
for instance in self.config["monitors"]:
|
||||||
monitor_thread = MonitorThread(instance, self.backend)
|
monitor_thread = MonitorThread(instance, self.backend)
|
||||||
monitor_thread.start()
|
|
||||||
self.threads.append(monitor_thread)
|
self.threads.append(monitor_thread)
|
||||||
|
self.backend.mapping.update(monitor_thread.mapping)
|
||||||
|
|
||||||
|
self.backend.connect()
|
||||||
|
|
||||||
|
logger.info("starting monitor threads")
|
||||||
|
for monitor_thread in self.threads:
|
||||||
|
monitor_thread.start()
|
||||||
|
|
||||||
# Tear down all threads
|
# Tear down all threads
|
||||||
logger.info("joining monitor threads")
|
logger.info("joining monitor threads")
|
||||||
|
@ -54,14 +60,18 @@ class Backend:
|
||||||
"""
|
"""
|
||||||
Init elasticsearch client
|
Init elasticsearch client
|
||||||
"""
|
"""
|
||||||
|
self.es_url = es_url
|
||||||
|
self.mapping = {}
|
||||||
self.logger = logging.getLogger("monitordaemon.backend")
|
self.logger = logging.getLogger("monitordaemon.backend")
|
||||||
|
|
||||||
self.sysinfo = {}
|
self.sysinfo = {}
|
||||||
self.update_sys_info()
|
self.update_sys_info()
|
||||||
logger.info("running on %(hostname)s (%(ipaddr)s)" % self.sysinfo)
|
logger.info("running on %(hostname)s (%(ipaddr)s)" % self.sysinfo)
|
||||||
|
|
||||||
self.logger.info("connecting to backend at %s" % es_url)
|
def connect(self):
|
||||||
self.es = Elasticsearch([es_url])
|
self.logger.info("final mapping %s" % self.mapping)
|
||||||
|
self.logger.info("connecting to backend at %s" % self.es_url)
|
||||||
|
self.es = Elasticsearch([self.es_url])
|
||||||
self.logger.info("connected to backend")
|
self.logger.info("connected to backend")
|
||||||
self.current_index = ""
|
self.current_index = ""
|
||||||
self.check_before_entry()
|
self.check_before_entry()
|
||||||
|
@ -84,8 +94,20 @@ class Backend:
|
||||||
Check if current index exists, and if not, create it
|
Check if current index exists, and if not, create it
|
||||||
"""
|
"""
|
||||||
if not self.es.indices.exists(index=indexName):
|
if not self.es.indices.exists(index=indexName):
|
||||||
self.logger.info("creating index %s" % indexName)
|
mapping = {
|
||||||
self.es.indices.create(index=indexName, ignore=400) # ignore already exists error
|
"mappings": {
|
||||||
|
"_default_":{
|
||||||
|
"properties": {
|
||||||
|
"ipaddr": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mapping["mappings"].update(self.mapping)
|
||||||
|
self.logger.info("creating index %s with mapping %s" % (indexName, mapping))
|
||||||
|
self.es.indices.create(index=indexName, ignore=400, body=mapping)# ignore already exists error
|
||||||
self.current_index = indexName
|
self.current_index = indexName
|
||||||
|
|
||||||
def check_before_entry(self):
|
def check_before_entry(self):
|
||||||
|
@ -126,6 +148,13 @@ class MonitorThread(Thread):
|
||||||
self.checker_func = getattr(__import__(self.config["type"]), self.config["type"])
|
self.checker_func = getattr(__import__(self.config["type"]), self.config["type"])
|
||||||
self.logger.info("checker func %s" % self.checker_func)
|
self.logger.info("checker func %s" % self.checker_func)
|
||||||
|
|
||||||
|
self.mapping = {}
|
||||||
|
#try:
|
||||||
|
self.mapping.update(__import__(self.config["type"]).mapping)
|
||||||
|
#except:
|
||||||
|
# pass
|
||||||
|
self.logger.info("mapping %s" % self.mapping)
|
||||||
|
|
||||||
self.alive = True
|
self.alive = True
|
||||||
self.delay = int(self.config["freq"])
|
self.delay = int(self.config["freq"])
|
||||||
self.lastRun = 0
|
self.lastRun = 0
|
||||||
|
|
|
@ -2,5 +2,15 @@ def uptime():
|
||||||
with open("/proc/uptime", "r") as f:
|
with open("/proc/uptime", "r") as f:
|
||||||
return {"uptime":int(float(f.read().split(" ")[0]))}
|
return {"uptime":int(float(f.read().split(" ")[0]))}
|
||||||
|
|
||||||
|
mapping = {
|
||||||
|
"uptime": {
|
||||||
|
"properties": {
|
||||||
|
"uptime": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(uptime()["uptime"])
|
print(uptime()["uptime"])
|
||||||
|
|
Loading…
Reference in New Issue