use dynamic templating for values, clean up fields some more

This commit is contained in:
genevera 2019-03-13 04:50:48 -04:00
parent 5bf7069053
commit b7041b3acb
No known key found for this signature in database
GPG Key ID: A6B66309BA6AB9A4

View File

@ -57,7 +57,38 @@ class Export(GlancesExport):
if not self.export_enable: if not self.export_enable:
return None return None
self.index='{}-{}'.format(self.index, datetime.today().strftime("%Y.%m.%d")) self.index='{}-{}'.format(self.index, datetime.utcnow().strftime("%Y.%m.%d"))
template_body = {
"mappings": {
"glances": {
"dynamic_templates": [
{
"integers": {
"match_mapping_type": "long",
"mapping": {
"type": "integer"
}
}
},
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"fields": {
"raw": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
]
}
}
}
try: try:
es = Elasticsearch(hosts=['{}:{}'.format(self.host, self.port)]) es = Elasticsearch(hosts=['{}:{}'.format(self.host, self.port)])
except Exception as e: except Exception as e:
@ -71,7 +102,7 @@ class Export(GlancesExport):
except Exception as e: except Exception as e:
# Index did not exist, it will be created at the first write # Index did not exist, it will be created at the first write
# Create it... # Create it...
es.indices.create(self.index) es.indices.create(index=self.index,body=template_body)
else: else:
logger.info("There is already %s entries in the ElasticSearch %s index" % (index_count, self.index)) logger.info("There is already %s entries in the ElasticSearch %s index" % (index_count, self.index))
@ -85,15 +116,17 @@ class Export(GlancesExport):
# https://elasticsearch-py.readthedocs.io/en/master/helpers.html # https://elasticsearch-py.readthedocs.io/en/master/helpers.html
actions = [] actions = []
for c, p in zip(columns, points): for c, p in zip(columns, points):
dtnow = datetime.utcnow()
action = { action = {
"_index": self.index, "_index": self.index,
"_id": c, "_id": c,
"_type": "glances", "_type": "glances",
"_source": { "_source": {
"name": name, "plugin": name,
"metric": c,
"value": str(p), "value": str(p),
"type": "keyword", "_timestamp": dtnow.timestamp(),
"timestamp": datetime.now() "timestamp": dtnow.isoformat()
} }
} }
logger.debug("Exporting the following object to elasticsearch: {}".format(action)) logger.debug("Exporting the following object to elasticsearch: {}".format(action))