У меня следующий запрос ES для вычисления среднего значения ЦП хоста за последние 30 дней.
es_query = {
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{"range": {"@timestamp": {"gte": "now-30d",}}},
{"query_string": {"query": 'hostname: myhost',"analyze_wildcard": True}}
],
"should": [
{"match": {"metricset.name": "cpu"}}
]
}
}
}
},
"aggs": {
"group_by_time_interval": {
"date_histogram": {
"field": "@timestamp",
"interval": "1h",
"time_zone": "PST8PDT",
"min_doc_count": 1
},
"aggs": {
"cpu_used_avg_pct": {"avg": {"field": "system.cpu.total.pct"}}
}
},
"avg_monthly_cpu_pct": {
"avg_bucket": {
"buckets_path": "group_by_time_interval>cpu_used_avg_pct"
}
}
}
}
После выполнения верните среднее значение ЦП последних 30 дней, как и ожидалось.
Вопрос в том, как я могу также вычислить среднее значение ЦП за последние 7 дней, просто расширив приведенный выше запрос?
В настоящее время мое тупое решение - скопировать другой запрос, заменить "gte: now-30d "by" gte: now-7d "затем запустите снова, что занимает очень много времени.
Спасибо.Alex