From b7041b3acbb263ea3839fdb5a4a48a7590a7fb15 Mon Sep 17 00:00:00 2001 From: genevera Date: Wed, 13 Mar 2019 04:50:48 -0400 Subject: [PATCH] use dynamic templating for values, clean up fields some more --- glances/exports/glances_elasticsearch.py | 43 +++++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/glances/exports/glances_elasticsearch.py b/glances/exports/glances_elasticsearch.py index 4309cc69..42730b48 100644 --- a/glances/exports/glances_elasticsearch.py +++ b/glances/exports/glances_elasticsearch.py @@ -57,7 +57,38 @@ class Export(GlancesExport): if not self.export_enable: 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: es = Elasticsearch(hosts=['{}:{}'.format(self.host, self.port)]) except Exception as e: @@ -71,7 +102,7 @@ class Export(GlancesExport): except Exception as e: # Index did not exist, it will be created at the first write # Create it... - es.indices.create(self.index) + es.indices.create(index=self.index,body=template_body) else: 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 actions = [] for c, p in zip(columns, points): + dtnow = datetime.utcnow() action = { "_index": self.index, "_id": c, "_type": "glances", "_source": { - "name": name, + "plugin": name, + "metric": c, "value": str(p), - "type": "keyword", - "timestamp": datetime.now() + "_timestamp": dtnow.timestamp(), + "timestamp": dtnow.isoformat() } } logger.debug("Exporting the following object to elasticsearch: {}".format(action))