Auto status change to "Under Review"
Show More
@@ -239,7 +239,7 b' def add_reports(resource_id, request_params, dataset, **kwargs):' | |||||
239 | @celery.task(queue="es", default_retry_delay=600, max_retries=144) |
|
239 | @celery.task(queue="es", default_retry_delay=600, max_retries=144) | |
240 | def add_reports_es(report_group_docs, report_docs): |
|
240 | def add_reports_es(report_group_docs, report_docs): | |
241 | for k, v in report_group_docs.items(): |
|
241 | for k, v in report_group_docs.items(): | |
242 |
to_update = {"_index": k, "_type": "report |
|
242 | to_update = {"_index": k, "_type": "report"} | |
243 | [i.update(to_update) for i in v] |
|
243 | [i.update(to_update) for i in v] | |
244 | elasticsearch.helpers.bulk(Datastores.es, v) |
|
244 | elasticsearch.helpers.bulk(Datastores.es, v) | |
245 | for k, v in report_docs.items(): |
|
245 | for k, v in report_docs.items(): | |
@@ -259,7 +259,7 b' def add_reports_slow_calls_es(es_docs):' | |||||
259 | @celery.task(queue="es", default_retry_delay=600, max_retries=144) |
|
259 | @celery.task(queue="es", default_retry_delay=600, max_retries=144) | |
260 | def add_reports_stats_rows_es(es_docs): |
|
260 | def add_reports_stats_rows_es(es_docs): | |
261 | for k, v in es_docs.items(): |
|
261 | for k, v in es_docs.items(): | |
262 |
to_update = {"_index": k, "_type": " |
|
262 | to_update = {"_index": k, "_type": "report"} | |
263 | [i.update(to_update) for i in v] |
|
263 | [i.update(to_update) for i in v] | |
264 | elasticsearch.helpers.bulk(Datastores.es, v) |
|
264 | elasticsearch.helpers.bulk(Datastores.es, v) | |
265 |
|
265 | |||
@@ -287,7 +287,7 b' def add_logs(resource_id, request_params, dataset, **kwargs):' | |||||
287 | if entry["primary_key"] is None: |
|
287 | if entry["primary_key"] is None: | |
288 | es_docs[log_entry.partition_id].append(log_entry.es_doc()) |
|
288 | es_docs[log_entry.partition_id].append(log_entry.es_doc()) | |
289 |
|
289 | |||
290 |
# 2nd pass to delete all log entries from db fo |
|
290 | # 2nd pass to delete all log entries from db for same pk/ns pair | |
291 | if ns_pairs: |
|
291 | if ns_pairs: | |
292 | ids_to_delete = [] |
|
292 | ids_to_delete = [] | |
293 | es_docs = collections.defaultdict(list) |
|
293 | es_docs = collections.defaultdict(list) |
@@ -112,7 +112,7 b' class Log(Base, BaseModel):' | |||||
112 | else None, |
|
112 | else None, | |
113 | } |
|
113 | } | |
114 | return { |
|
114 | return { | |
115 |
" |
|
115 | "log_id": str(self.log_id), | |
116 | "delete_hash": self.delete_hash, |
|
116 | "delete_hash": self.delete_hash, | |
117 | "resource_id": self.resource_id, |
|
117 | "resource_id": self.resource_id, | |
118 | "request_id": self.request_id, |
|
118 | "request_id": self.request_id, |
@@ -60,6 +60,7 b' class Metric(Base, BaseModel):' | |||||
60 | } |
|
60 | } | |
61 |
|
61 | |||
62 | return { |
|
62 | return { | |
|
63 | "metric_id": self.pkey, | |||
63 | "resource_id": self.resource_id, |
|
64 | "resource_id": self.resource_id, | |
64 | "timestamp": self.timestamp, |
|
65 | "timestamp": self.timestamp, | |
65 | "namespace": self.namespace, |
|
66 | "namespace": self.namespace, |
@@ -314,7 +314,7 b' class Report(Base, BaseModel):' | |||||
314 | "bool": { |
|
314 | "bool": { | |
315 | "filter": [ |
|
315 | "filter": [ | |
316 | {"term": {"group_id": self.group_id}}, |
|
316 | {"term": {"group_id": self.group_id}}, | |
317 |
{"range": {" |
|
317 | {"range": {"report_id": {"lt": self.id}}}, | |
318 | ] |
|
318 | ] | |
319 | } |
|
319 | } | |
320 | }, |
|
320 | }, | |
@@ -324,7 +324,7 b' class Report(Base, BaseModel):' | |||||
324 | body=query, index=self.partition_id, doc_type="report" |
|
324 | body=query, index=self.partition_id, doc_type="report" | |
325 | ) |
|
325 | ) | |
326 | if result["hits"]["total"]: |
|
326 | if result["hits"]["total"]: | |
327 |
return result["hits"]["hits"][0]["_source"][" |
|
327 | return result["hits"]["hits"][0]["_source"]["report_id"] | |
328 |
|
328 | |||
329 | def get_next_in_group(self, request): |
|
329 | def get_next_in_group(self, request): | |
330 | query = { |
|
330 | query = { | |
@@ -333,7 +333,7 b' class Report(Base, BaseModel):' | |||||
333 | "bool": { |
|
333 | "bool": { | |
334 | "filter": [ |
|
334 | "filter": [ | |
335 | {"term": {"group_id": self.group_id}}, |
|
335 | {"term": {"group_id": self.group_id}}, | |
336 |
{"range": {" |
|
336 | {"range": {"report_id": {"gt": self.id}}}, | |
337 | ] |
|
337 | ] | |
338 | } |
|
338 | } | |
339 | }, |
|
339 | }, | |
@@ -343,7 +343,7 b' class Report(Base, BaseModel):' | |||||
343 | body=query, index=self.partition_id, doc_type="report" |
|
343 | body=query, index=self.partition_id, doc_type="report" | |
344 | ) |
|
344 | ) | |
345 | if result["hits"]["total"]: |
|
345 | if result["hits"]["total"]: | |
346 |
return result["hits"]["hits"][0]["_source"][" |
|
346 | return result["hits"]["hits"][0]["_source"]["report_id"] | |
347 |
|
347 | |||
348 | def get_public_url(self, request=None, report_group=None, _app_url=None): |
|
348 | def get_public_url(self, request=None, report_group=None, _app_url=None): | |
349 | """ |
|
349 | """ | |
@@ -469,7 +469,7 b' class Report(Base, BaseModel):' | |||||
469 | tags["user_name"] = {"value": [self.username], "numeric_value": None} |
|
469 | tags["user_name"] = {"value": [self.username], "numeric_value": None} | |
470 | return { |
|
470 | return { | |
471 | "_id": str(self.id), |
|
471 | "_id": str(self.id), | |
472 |
" |
|
472 | "report_id": str(self.id), | |
473 | "resource_id": self.resource_id, |
|
473 | "resource_id": self.resource_id, | |
474 | "http_status": self.http_status or "", |
|
474 | "http_status": self.http_status or "", | |
475 | "start_time": self.start_time, |
|
475 | "start_time": self.start_time, | |
@@ -482,9 +482,14 b' class Report(Base, BaseModel):' | |||||
482 | "request_id": self.request_id, |
|
482 | "request_id": self.request_id, | |
483 | "ip": self.ip, |
|
483 | "ip": self.ip, | |
484 | "group_id": str(self.group_id), |
|
484 | "group_id": str(self.group_id), | |
485 | "_parent": str(self.group_id), |
|
485 | "type": "report", | |
|
486 | "join_field": { | |||
|
487 | "name": "report", | |||
|
488 | "parent": str(self.group_id) | |||
|
489 | }, | |||
486 | "tags": tags, |
|
490 | "tags": tags, | |
487 | "tag_list": tag_list, |
|
491 | "tag_list": tag_list, | |
|
492 | "_routing": str(self.group_id) | |||
488 | } |
|
493 | } | |
489 |
|
494 | |||
490 | @property |
|
495 | @property | |
@@ -518,7 +523,7 b' def after_update(mapper, connection, target):' | |||||
518 |
|
523 | |||
519 | def after_delete(mapper, connection, target): |
|
524 | def after_delete(mapper, connection, target): | |
520 | if not hasattr(target, "_skip_ft_index"): |
|
525 | if not hasattr(target, "_skip_ft_index"): | |
521 |
query = {"query": {"term": {" |
|
526 | query = {"query": {"term": {"report_id": target.id}}} | |
522 | Datastores.es.delete_by_query( |
|
527 | Datastores.es.delete_by_query( | |
523 | index=target.partition_id, doc_type="report", body=query, conflicts="proceed" |
|
528 | index=target.partition_id, doc_type="report", body=query, conflicts="proceed" | |
524 | ) |
|
529 | ) |
@@ -178,7 +178,7 b' class ReportGroup(Base, BaseModel):' | |||||
178 | def es_doc(self): |
|
178 | def es_doc(self): | |
179 | return { |
|
179 | return { | |
180 | "_id": str(self.id), |
|
180 | "_id": str(self.id), | |
181 |
"p |
|
181 | "group_id": str(self.id), | |
182 | "resource_id": self.resource_id, |
|
182 | "resource_id": self.resource_id, | |
183 | "error": self.error, |
|
183 | "error": self.error, | |
184 | "fixed": self.fixed, |
|
184 | "fixed": self.fixed, | |
@@ -190,6 +190,10 b' class ReportGroup(Base, BaseModel):' | |||||
190 | "summed_duration": self.summed_duration, |
|
190 | "summed_duration": self.summed_duration, | |
191 | "first_timestamp": self.first_timestamp, |
|
191 | "first_timestamp": self.first_timestamp, | |
192 | "last_timestamp": self.last_timestamp, |
|
192 | "last_timestamp": self.last_timestamp, | |
|
193 | "type": "report_group", | |||
|
194 | "join_field": { | |||
|
195 | "name": "report_group" | |||
|
196 | }, | |||
193 | } |
|
197 | } | |
194 |
|
198 | |||
195 | def set_notification_info(self, notify_10=False, notify_100=False): |
|
199 | def set_notification_info(self, notify_10=False, notify_100=False): | |
@@ -258,14 +262,14 b' def after_insert(mapper, connection, target):' | |||||
258 | if not hasattr(target, "_skip_ft_index"): |
|
262 | if not hasattr(target, "_skip_ft_index"): | |
259 | data = target.es_doc() |
|
263 | data = target.es_doc() | |
260 | data.pop("_id", None) |
|
264 | data.pop("_id", None) | |
261 |
Datastores.es.index(target.partition_id, "report |
|
265 | Datastores.es.index(target.partition_id, "report", data, id=target.id) | |
262 |
|
266 | |||
263 |
|
267 | |||
264 | def after_update(mapper, connection, target): |
|
268 | def after_update(mapper, connection, target): | |
265 | if not hasattr(target, "_skip_ft_index"): |
|
269 | if not hasattr(target, "_skip_ft_index"): | |
266 | data = target.es_doc() |
|
270 | data = target.es_doc() | |
267 | data.pop("_id", None) |
|
271 | data.pop("_id", None) | |
268 |
Datastores.es.index(target.partition_id, "report |
|
272 | Datastores.es.index(target.partition_id, "report", data, id=target.id) | |
269 |
|
273 | |||
270 |
|
274 | |||
271 | def after_delete(mapper, connection, target): |
|
275 | def after_delete(mapper, connection, target): | |
@@ -274,10 +278,6 b' def after_delete(mapper, connection, target):' | |||||
274 | Datastores.es.delete_by_query( |
|
278 | Datastores.es.delete_by_query( | |
275 | index=target.partition_id, doc_type="report", body=query, conflicts="proceed" |
|
279 | index=target.partition_id, doc_type="report", body=query, conflicts="proceed" | |
276 | ) |
|
280 | ) | |
277 | query = {"query": {"term": {"pg_id": target.id}}} |
|
|||
278 | Datastores.es.delete_by_query( |
|
|||
279 | index=target.partition_id, doc_type="report_group", body=query, conflicts="proceed" |
|
|||
280 | ) |
|
|||
281 |
|
281 | |||
282 |
|
282 | |||
283 | sa.event.listen(ReportGroup, "after_insert", after_insert) |
|
283 | sa.event.listen(ReportGroup, "after_insert", after_insert) |
@@ -48,12 +48,13 b' class ReportStat(Base, BaseModel):' | |||||
48 | return { |
|
48 | return { | |
49 | "resource_id": self.resource_id, |
|
49 | "resource_id": self.resource_id, | |
50 | "timestamp": self.start_interval, |
|
50 | "timestamp": self.start_interval, | |
51 |
" |
|
51 | "report_stat_id": str(self.id), | |
52 | "permanent": True, |
|
52 | "permanent": True, | |
53 | "request_id": None, |
|
53 | "request_id": None, | |
54 | "log_level": "ERROR", |
|
54 | "log_level": "ERROR", | |
55 | "message": None, |
|
55 | "message": None, | |
56 | "namespace": "appenlight.error", |
|
56 | "namespace": "appenlight.error", | |
|
57 | "group_id": str(self.group_id), | |||
57 | "tags": { |
|
58 | "tags": { | |
58 | "duration": {"values": self.duration, "numeric_values": self.duration}, |
|
59 | "duration": {"values": self.duration, "numeric_values": self.duration}, | |
59 | "occurences": { |
|
60 | "occurences": { | |
@@ -76,4 +77,5 b' class ReportStat(Base, BaseModel):' | |||||
76 | "server_name", |
|
77 | "server_name", | |
77 | "view_name", |
|
78 | "view_name", | |
78 | ], |
|
79 | ], | |
|
80 | "type": "report_stat", | |||
79 | } |
|
81 | } |
@@ -190,7 +190,7 b' class LogService(BaseService):' | |||||
190 | [], item_count=item_count, items_per_page=items_per_page, **filter_settings |
|
190 | [], item_count=item_count, items_per_page=items_per_page, **filter_settings | |
191 | ) |
|
191 | ) | |
192 | ordered_ids = tuple( |
|
192 | ordered_ids = tuple( | |
193 |
item["_source"][" |
|
193 | item["_source"]["log_id"] for item in results.get("hits", []) | |
194 | ) |
|
194 | ) | |
195 |
|
195 | |||
196 | sorted_instance_list = [] |
|
196 | sorted_instance_list = [] |
@@ -97,7 +97,7 b' class ReportGroupService(BaseService):' | |||||
97 | es_query["query"]["bool"]["filter"].extend(tags) |
|
97 | es_query["query"]["bool"]["filter"].extend(tags) | |
98 |
|
98 | |||
99 | result = Datastores.es.search( |
|
99 | result = Datastores.es.search( | |
100 |
body=es_query, index=index_names, doc_type=" |
|
100 | body=es_query, index=index_names, doc_type="report", size=0 | |
101 | ) |
|
101 | ) | |
102 | series = [] |
|
102 | series = [] | |
103 | for bucket in result["aggregations"]["parent_agg"]["buckets"]: |
|
103 | for bucket in result["aggregations"]["parent_agg"]["buckets"]: | |
@@ -143,7 +143,7 b' class ReportGroupService(BaseService):' | |||||
143 | "top_groups": { |
|
143 | "top_groups": { | |
144 | "terms": { |
|
144 | "terms": { | |
145 | "size": 5000, |
|
145 | "size": 5000, | |
146 |
"field": " |
|
146 | "field": "join_field#report_group", | |
147 | "order": {"newest": "desc"}, |
|
147 | "order": {"newest": "desc"}, | |
148 | }, |
|
148 | }, | |
149 | "aggs": { |
|
149 | "aggs": { | |
@@ -315,7 +315,7 b' class ReportGroupService(BaseService):' | |||||
315 | ordered_ids = [] |
|
315 | ordered_ids = [] | |
316 | if results: |
|
316 | if results: | |
317 | for item in results["top_groups"]["buckets"]: |
|
317 | for item in results["top_groups"]["buckets"]: | |
318 |
pg_id = item["top_reports_hits"]["hits"]["hits"][0]["_source"][" |
|
318 | pg_id = item["top_reports_hits"]["hits"]["hits"][0]["_source"]["report_id"] | |
319 | ordered_ids.append(pg_id) |
|
319 | ordered_ids.append(pg_id) | |
320 | log.info(filter_settings) |
|
320 | log.info(filter_settings) | |
321 | paginator = paginate.Page( |
|
321 | paginator = paginate.Page( |
@@ -340,7 +340,7 b' class RequestMetricService(BaseService):' | |||||
340 | for hit in bucket["top_calls_hits"]["hits"]["hits"]: |
|
340 | for hit in bucket["top_calls_hits"]["hits"]["hits"]: | |
341 | details[bucket["key"]].append( |
|
341 | details[bucket["key"]].append( | |
342 | { |
|
342 | { | |
343 |
"report_id": hit["_source"][" |
|
343 | "report_id": hit["_source"]["request_metric_id"], | |
344 | "group_id": hit["_source"]["group_id"], |
|
344 | "group_id": hit["_source"]["group_id"], | |
345 | } |
|
345 | } | |
346 | ) |
|
346 | ) |
@@ -88,7 +88,7 b' class SlowCall(Base, BaseModel):' | |||||
88 | doc = { |
|
88 | doc = { | |
89 | "resource_id": self.resource_id, |
|
89 | "resource_id": self.resource_id, | |
90 | "timestamp": self.timestamp, |
|
90 | "timestamp": self.timestamp, | |
91 |
" |
|
91 | "slow_call_id": str(self.id), | |
92 | "permanent": False, |
|
92 | "permanent": False, | |
93 | "request_id": None, |
|
93 | "request_id": None, | |
94 | "log_level": "UNKNOWN", |
|
94 | "log_level": "UNKNOWN", |
@@ -17,6 +17,7 b'' | |||||
17 | import argparse |
|
17 | import argparse | |
18 | import datetime |
|
18 | import datetime | |
19 | import logging |
|
19 | import logging | |
|
20 | import copy | |||
20 |
|
21 | |||
21 | import sqlalchemy as sa |
|
22 | import sqlalchemy as sa | |
22 | import elasticsearch.exceptions |
|
23 | import elasticsearch.exceptions | |
@@ -34,7 +35,6 b' from appenlight.models.log import Log' | |||||
34 | from appenlight.models.slow_call import SlowCall |
|
35 | from appenlight.models.slow_call import SlowCall | |
35 | from appenlight.models.metric import Metric |
|
36 | from appenlight.models.metric import Metric | |
36 |
|
37 | |||
37 |
|
||||
38 | log = logging.getLogger(__name__) |
|
38 | log = logging.getLogger(__name__) | |
39 |
|
39 | |||
40 | tables = { |
|
40 | tables = { | |
@@ -128,7 +128,20 b' def main():' | |||||
128 |
|
128 | |||
129 | def update_template(): |
|
129 | def update_template(): | |
130 | try: |
|
130 | try: | |
131 | Datastores.es.indices.delete_template("rcae") |
|
131 | Datastores.es.indices.delete_template("rcae_reports") | |
|
132 | except elasticsearch.exceptions.NotFoundError as e: | |||
|
133 | log.error(e) | |||
|
134 | ||||
|
135 | try: | |||
|
136 | Datastores.es.indices.delete_template("rcae_logs") | |||
|
137 | except elasticsearch.exceptions.NotFoundError as e: | |||
|
138 | log.error(e) | |||
|
139 | try: | |||
|
140 | Datastores.es.indices.delete_template("rcae_slow_calls") | |||
|
141 | except elasticsearch.exceptions.NotFoundError as e: | |||
|
142 | log.error(e) | |||
|
143 | try: | |||
|
144 | Datastores.es.indices.delete_template("rcae_metrics") | |||
132 | except elasticsearch.exceptions.NotFoundError as e: |
|
145 | except elasticsearch.exceptions.NotFoundError as e: | |
133 | log.error(e) |
|
146 | log.error(e) | |
134 | log.info("updating elasticsearch template") |
|
147 | log.info("updating elasticsearch template") | |
@@ -153,15 +166,7 b' def update_template():' | |||||
153 | } |
|
166 | } | |
154 | ] |
|
167 | ] | |
155 |
|
168 | |||
156 | template_schema = { |
|
169 | shared_analysis = { | |
157 | "template": "rcae_*", |
|
|||
158 | "settings": { |
|
|||
159 | "index": { |
|
|||
160 | "refresh_interval": "5s", |
|
|||
161 | "translog": {"sync_interval": "5s", "durability": "async"}, |
|
|||
162 | }, |
|
|||
163 | "number_of_shards": 5, |
|
|||
164 | "analysis": { |
|
|||
165 |
|
|
170 | "analyzer": { | |
166 |
|
|
171 | "url_path": { | |
167 |
|
|
172 | "type": "custom", | |
@@ -176,14 +181,54 b' def update_template():' | |||||
176 |
|
|
181 | "filter": ["lowercase"], | |
177 |
|
|
182 | }, | |
178 |
|
|
183 | } | |
|
184 | } | |||
|
185 | ||||
|
186 | shared_log_mapping = { | |||
|
187 | "_all": {"enabled": False}, | |||
|
188 | "dynamic_templates": tag_templates, | |||
|
189 | "properties": { | |||
|
190 | "pg_id": {"type": "keyword", "index": True}, | |||
|
191 | "delete_hash": {"type": "keyword", "index": True}, | |||
|
192 | "resource_id": {"type": "integer"}, | |||
|
193 | "timestamp": {"type": "date"}, | |||
|
194 | "permanent": {"type": "boolean"}, | |||
|
195 | "request_id": {"type": "keyword", "index": True}, | |||
|
196 | "log_level": {"type": "text", "analyzer": "simple"}, | |||
|
197 | "message": {"type": "text", "analyzer": "simple"}, | |||
|
198 | "namespace": { | |||
|
199 | "type": "text", | |||
|
200 | "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}, | |||
179 | }, |
|
201 | }, | |
|
202 | "tags": {"type": "object"}, | |||
|
203 | "tag_list": {"type": "text", "analyzer": "tag_value", | |||
|
204 | "fields": { | |||
|
205 | "keyword": { | |||
|
206 | "type": "keyword", | |||
|
207 | "ignore_above": 256 | |||
|
208 | } | |||
|
209 | }}, | |||
|
210 | }, | |||
|
211 | } | |||
|
212 | ||||
|
213 | report_schema = { | |||
|
214 | "template": "rcae_r_*", | |||
|
215 | "settings": { | |||
|
216 | "index": { | |||
|
217 | "refresh_interval": "5s", | |||
|
218 | "translog": {"sync_interval": "5s", "durability": "async"}, | |||
|
219 | "mapping": {"single_type": True} | |||
|
220 | }, | |||
|
221 | "number_of_shards": 5, | |||
|
222 | "analysis": shared_analysis, | |||
180 | }, |
|
223 | }, | |
181 | "mappings": { |
|
224 | "mappings": { | |
182 |
"report |
|
225 | "report": { | |
183 | "_all": {"enabled": False}, |
|
226 | "_all": {"enabled": False}, | |
184 | "dynamic_templates": tag_templates, |
|
227 | "dynamic_templates": tag_templates, | |
185 | "properties": { |
|
228 | "properties": { | |
186 |
" |
|
229 | "type": {"type": "keyword", "index": True}, | |
|
230 | # report group | |||
|
231 | "group_id": {"type": "keyword", "index": True}, | |||
187 | "resource_id": {"type": "integer"}, |
|
232 | "resource_id": {"type": "integer"}, | |
188 | "priority": {"type": "integer"}, |
|
233 | "priority": {"type": "integer"}, | |
189 | "error": {"type": "text", "analyzer": "simple"}, |
|
234 | "error": {"type": "text", "analyzer": "simple"}, | |
@@ -195,20 +240,13 b' def update_template():' | |||||
195 | "average_duration": {"type": "float"}, |
|
240 | "average_duration": {"type": "float"}, | |
196 | "summed_duration": {"type": "float"}, |
|
241 | "summed_duration": {"type": "float"}, | |
197 | "public": {"type": "boolean"}, |
|
242 | "public": {"type": "boolean"}, | |
198 |
|
|
243 | # report | |
199 | }, |
|
244 | ||
200 | "report": { |
|
245 | "report_id": {"type": "keyword", "index": True}, | |
201 | "_all": {"enabled": False}, |
|
|||
202 | "dynamic_templates": tag_templates, |
|
|||
203 | "properties": { |
|
|||
204 | "pg_id": {"type": "keyword", "index": True}, |
|
|||
205 | "resource_id": {"type": "integer"}, |
|
|||
206 | "group_id": {"type": "keyword"}, |
|
|||
207 | "http_status": {"type": "integer"}, |
|
246 | "http_status": {"type": "integer"}, | |
208 | "ip": {"type": "keyword", "index": True}, |
|
247 | "ip": {"type": "keyword", "index": True}, | |
209 | "url_domain": {"type": "text", "analyzer": "simple"}, |
|
248 | "url_domain": {"type": "text", "analyzer": "simple"}, | |
210 | "url_path": {"type": "text", "analyzer": "url_path"}, |
|
249 | "url_path": {"type": "text", "analyzer": "url_path"}, | |
211 | "error": {"type": "text", "analyzer": "simple"}, |
|
|||
212 | "report_type": {"type": "integer"}, |
|
250 | "report_type": {"type": "integer"}, | |
213 | "start_time": {"type": "date"}, |
|
251 | "start_time": {"type": "date"}, | |
214 | "request_id": {"type": "keyword", "index": True}, |
|
252 | "request_id": {"type": "keyword", "index": True}, | |
@@ -223,45 +261,126 b' def update_template():' | |||||
223 | } |
|
261 | } | |
224 | }}, |
|
262 | }}, | |
225 | "extra": {"type": "object"}, |
|
263 | "extra": {"type": "object"}, | |
226 | }, |
|
264 | ||
227 | "_parent": {"type": "report_group"}, |
|
265 | # report stats | |
228 | }, |
|
266 | ||
229 | "log": { |
|
267 | "report_stat_id": {"type": "keyword", "index": True}, | |
230 | "_all": {"enabled": False}, |
|
|||
231 | "dynamic_templates": tag_templates, |
|
|||
232 | "properties": { |
|
|||
233 | "pg_id": {"type": "keyword", "index": True}, |
|
|||
234 | "delete_hash": {"type": "keyword", "index": True}, |
|
|||
235 | "resource_id": {"type": "integer"}, |
|
|||
236 | "timestamp": {"type": "date"}, |
|
268 | "timestamp": {"type": "date"}, | |
237 | "permanent": {"type": "boolean"}, |
|
269 | "permanent": {"type": "boolean"}, | |
238 | "request_id": {"type": "keyword", "index": True}, |
|
|||
239 | "log_level": {"type": "text", "analyzer": "simple"}, |
|
270 | "log_level": {"type": "text", "analyzer": "simple"}, | |
240 | "message": {"type": "text", "analyzer": "simple"}, |
|
271 | "message": {"type": "text", "analyzer": "simple"}, | |
241 | "namespace": { |
|
272 | "namespace": { | |
242 | "type": "text", |
|
273 | "type": "text", | |
243 | "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}, |
|
274 | "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}, | |
244 | }, |
|
275 | }, | |
245 | "tags": {"type": "object"}, |
|
276 | ||
246 | "tag_list": {"type": "text", "analyzer": "tag_value", |
|
277 | "join_field": { | |
247 |
|
|
278 | "type": "join", | |
248 |
|
|
279 | "relations": { | |
249 |
|
|
280 | "report_group": ["report", "report_stat"] | |
250 | "ignore_above": 256 |
|
|||
251 |
|
|
281 | } | |
252 |
|
|
282 | } | |
|
283 | ||||
253 | }, |
|
284 | }, | |
|
285 | } | |||
|
286 | } | |||
|
287 | } | |||
|
288 | ||||
|
289 | Datastores.es.indices.put_template("rcae_reports", body=report_schema) | |||
|
290 | ||||
|
291 | logs_mapping = copy.deepcopy(shared_log_mapping) | |||
|
292 | logs_mapping["properties"]["log_id"] = logs_mapping["properties"]["pg_id"] | |||
|
293 | del logs_mapping["properties"]["pg_id"] | |||
|
294 | ||||
|
295 | log_template = { | |||
|
296 | "template": "rcae_l_*", | |||
|
297 | "settings": { | |||
|
298 | "index": { | |||
|
299 | "refresh_interval": "5s", | |||
|
300 | "translog": {"sync_interval": "5s", "durability": "async"}, | |||
|
301 | "mapping": {"single_type": True} | |||
|
302 | }, | |||
|
303 | "number_of_shards": 5, | |||
|
304 | "analysis": shared_analysis, | |||
254 |
|
|
305 | }, | |
|
306 | "mappings": { | |||
|
307 | "log": logs_mapping, | |||
255 | }, |
|
308 | }, | |
256 | } |
|
309 | } | |
257 |
|
310 | |||
258 |
Datastores.es.indices.put_template("rcae", body=template |
|
311 | Datastores.es.indices.put_template("rcae_logs", body=log_template) | |
|
312 | ||||
|
313 | slow_call_mapping = copy.deepcopy(shared_log_mapping) | |||
|
314 | slow_call_mapping["properties"]["slow_call_id"] = slow_call_mapping["properties"]["pg_id"] | |||
|
315 | del slow_call_mapping["properties"]["pg_id"] | |||
|
316 | ||||
|
317 | slow_call_template = { | |||
|
318 | "template": "rcae_sc_*", | |||
|
319 | "settings": { | |||
|
320 | "index": { | |||
|
321 | "refresh_interval": "5s", | |||
|
322 | "translog": {"sync_interval": "5s", "durability": "async"}, | |||
|
323 | "mapping": {"single_type": True} | |||
|
324 | }, | |||
|
325 | "number_of_shards": 5, | |||
|
326 | "analysis": shared_analysis, | |||
|
327 | }, | |||
|
328 | "mappings": { | |||
|
329 | "log": slow_call_mapping, | |||
|
330 | }, | |||
|
331 | } | |||
|
332 | ||||
|
333 | Datastores.es.indices.put_template("rcae_slow_calls", body=slow_call_template) | |||
|
334 | ||||
|
335 | metric_mapping = copy.deepcopy(shared_log_mapping) | |||
|
336 | metric_mapping["properties"]["metric_id"] = metric_mapping["properties"]["pg_id"] | |||
|
337 | del metric_mapping["properties"]["pg_id"] | |||
|
338 | ||||
|
339 | metrics_template = { | |||
|
340 | "template": "rcae_m_*", | |||
|
341 | "settings": { | |||
|
342 | "index": { | |||
|
343 | "refresh_interval": "5s", | |||
|
344 | "translog": {"sync_interval": "5s", "durability": "async"}, | |||
|
345 | "mapping": {"single_type": True} | |||
|
346 | }, | |||
|
347 | "number_of_shards": 5, | |||
|
348 | "analysis": shared_analysis, | |||
|
349 | }, | |||
|
350 | "mappings": { | |||
|
351 | "log": metric_mapping, | |||
|
352 | }, | |||
|
353 | } | |||
|
354 | ||||
|
355 | Datastores.es.indices.put_template("rcae_metrics", body=metrics_template) | |||
|
356 | ||||
|
357 | uptime_metric_mapping = copy.deepcopy(shared_log_mapping) | |||
|
358 | uptime_metric_mapping["properties"]["uptime_id"] = uptime_metric_mapping["properties"]["pg_id"] | |||
|
359 | del uptime_metric_mapping["properties"]["pg_id"] | |||
|
360 | ||||
|
361 | uptime_metrics_template = { | |||
|
362 | "template": "rcae_uptime_ce_*", | |||
|
363 | "settings": { | |||
|
364 | "index": { | |||
|
365 | "refresh_interval": "5s", | |||
|
366 | "translog": {"sync_interval": "5s", "durability": "async"}, | |||
|
367 | "mapping": {"single_type": True} | |||
|
368 | }, | |||
|
369 | "number_of_shards": 5, | |||
|
370 | "analysis": shared_analysis, | |||
|
371 | }, | |||
|
372 | "mappings": { | |||
|
373 | "log": shared_log_mapping, | |||
|
374 | }, | |||
|
375 | } | |||
|
376 | ||||
|
377 | Datastores.es.indices.put_template("rcae_uptime_metrics", body=uptime_metrics_template) | |||
259 |
|
378 | |||
260 |
|
379 | |||
261 | def reindex_reports(): |
|
380 | def reindex_reports(): | |
262 | reports_groups_tables = detect_tables("reports_groups_p_") |
|
381 | reports_groups_tables = detect_tables("reports_groups_p_") | |
263 | try: |
|
382 | try: | |
264 | Datastores.es.indices.delete("rcae_r*") |
|
383 | Datastores.es.indices.delete("`rcae_r_*") | |
265 | except elasticsearch.exceptions.NotFoundError as e: |
|
384 | except elasticsearch.exceptions.NotFoundError as e: | |
266 | log.error(e) |
|
385 | log.error(e) | |
267 |
|
386 | |||
@@ -285,7 +404,7 b' def reindex_reports():' | |||||
285 | name = partition_table.name |
|
404 | name = partition_table.name | |
286 | log.info("round {}, {}".format(i, name)) |
|
405 | log.info("round {}, {}".format(i, name)) | |
287 | for k, v in es_docs.items(): |
|
406 | for k, v in es_docs.items(): | |
288 |
to_update = {"_index": k, "_type": "report |
|
407 | to_update = {"_index": k, "_type": "report"} | |
289 | [i.update(to_update) for i in v] |
|
408 | [i.update(to_update) for i in v] | |
290 | elasticsearch.helpers.bulk(Datastores.es, v) |
|
409 | elasticsearch.helpers.bulk(Datastores.es, v) | |
291 |
|
410 | |||
@@ -343,7 +462,7 b' def reindex_reports():' | |||||
343 | name = partition_table.name |
|
462 | name = partition_table.name | |
344 | log.info("round {}, {}".format(i, name)) |
|
463 | log.info("round {}, {}".format(i, name)) | |
345 | for k, v in es_docs.items(): |
|
464 | for k, v in es_docs.items(): | |
346 |
to_update = {"_index": k, "_type": " |
|
465 | to_update = {"_index": k, "_type": "report"} | |
347 | [i.update(to_update) for i in v] |
|
466 | [i.update(to_update) for i in v] | |
348 | elasticsearch.helpers.bulk(Datastores.es, v) |
|
467 | elasticsearch.helpers.bulk(Datastores.es, v) | |
349 |
|
468 | |||
@@ -352,7 +471,7 b' def reindex_reports():' | |||||
352 |
|
471 | |||
353 | def reindex_logs(): |
|
472 | def reindex_logs(): | |
354 | try: |
|
473 | try: | |
355 | Datastores.es.indices.delete("rcae_l*") |
|
474 | Datastores.es.indices.delete("rcae_l_*") | |
356 | except elasticsearch.exceptions.NotFoundError as e: |
|
475 | except elasticsearch.exceptions.NotFoundError as e: | |
357 | log.error(e) |
|
476 | log.error(e) | |
358 |
|
477 | |||
@@ -388,7 +507,7 b' def reindex_logs():' | |||||
388 |
|
507 | |||
389 | def reindex_metrics(): |
|
508 | def reindex_metrics(): | |
390 | try: |
|
509 | try: | |
391 | Datastores.es.indices.delete("rcae_m*") |
|
510 | Datastores.es.indices.delete("rcae_m_*") | |
392 | except elasticsearch.exceptions.NotFoundError as e: |
|
511 | except elasticsearch.exceptions.NotFoundError as e: | |
393 | log.error(e) |
|
512 | log.error(e) | |
394 |
|
513 | |||
@@ -422,7 +541,7 b' def reindex_metrics():' | |||||
422 |
|
541 | |||
423 | def reindex_slow_calls(): |
|
542 | def reindex_slow_calls(): | |
424 | try: |
|
543 | try: | |
425 | Datastores.es.indices.delete("rcae_sc*") |
|
544 | Datastores.es.indices.delete("rcae_sc_*") | |
426 | except elasticsearch.exceptions.NotFoundError as e: |
|
545 | except elasticsearch.exceptions.NotFoundError as e: | |
427 | log.error(e) |
|
546 | log.error(e) | |
428 |
|
547 |
General Comments 4
Auto status change to "Under Review"
You need to be logged in to leave comments.
Login now