add support for ES mappings per module

This commit is contained in:
Dave Pedu 2015-12-05 01:21:40 -08:00
parent 5c693601a5
commit 3740e7943f
2 changed files with 46 additions and 7 deletions

View File

@ -28,11 +28,17 @@ class MonitorDaemon(Thread):
logger.info("path %s" % checkerPath)
# Create/start all monitoring threads
logger.info("starting monitor threads")
logger.info("creating monitor threads")
for instance in self.config["monitors"]:
monitor_thread = MonitorThread(instance, self.backend)
monitor_thread.start()
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
logger.info("joining monitor threads")
@ -54,14 +60,18 @@ class Backend:
"""
Init elasticsearch client
"""
self.es_url = es_url
self.mapping = {}
self.logger = logging.getLogger("monitordaemon.backend")
self.sysinfo = {}
self.update_sys_info()
logger.info("running on %(hostname)s (%(ipaddr)s)" % self.sysinfo)
self.logger.info("connecting to backend at %s" % es_url)
self.es = Elasticsearch([es_url])
def connect(self):
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.current_index = ""
self.check_before_entry()
@ -84,8 +94,20 @@ class Backend:
Check if current index exists, and if not, create it
"""
if not self.es.indices.exists(index=indexName):
self.logger.info("creating index %s" % indexName)
self.es.indices.create(index=indexName, ignore=400) # ignore already exists error
mapping = {
"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
def check_before_entry(self):
@ -126,6 +148,13 @@ class MonitorThread(Thread):
self.checker_func = getattr(__import__(self.config["type"]), self.config["type"])
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.delay = int(self.config["freq"])
self.lastRun = 0

View File

@ -2,5 +2,15 @@ def uptime():
with open("/proc/uptime", "r") as f:
return {"uptime":int(float(f.read().split(" ")[0]))}
mapping = {
"uptime": {
"properties": {
"uptime": {
"type": "integer"
}
}
}
}
if __name__ == '__main__':
print(uptime()["uptime"])