diff --git a/ansible/roles/monitoring/elasticsearch.yml.j2 b/ansible/roles/monitoring/elasticsearch.yml.j2 index 508bbc0..780acb9 100644 --- a/ansible/roles/monitoring/elasticsearch.yml.j2 +++ b/ansible/roles/monitoring/elasticsearch.yml.j2 @@ -7,7 +7,7 @@ datasources: access: proxy url: http://maestro.dmz:{{ elasticsearch_port }} jsonData: - index: 'fluentd.cpu' + index: 'fluentd.cpu.*' timeField: '@timestamp' - name: memory @@ -15,5 +15,5 @@ datasources: access: proxy url: http://maestro.dmz:{{ elasticsearch_port }} jsonData: - index: 'fluentd.memory' + index: 'fluentd.memory.*' timeField: '@timestamp' diff --git a/ansible/roles/monitoring/fluent.conf.j2 b/ansible/roles/monitoring/fluent.conf.j2 index f25f89e..2504554 100644 --- a/ansible/roles/monitoring/fluent.conf.j2 +++ b/ansible/roles/monitoring/fluent.conf.j2 @@ -11,7 +11,12 @@ host maestro.dmz port {{ elasticsearch_port }} include_timestamp true - index_name fluentd.${tag} + index_name fluentd.${tag}.%Y%m%d + + timekey 1d + flush_mode interval + flush_interval 1s + diff --git a/terraform/elasticsearch/main.tf b/terraform/elasticsearch/main.tf new file mode 100644 index 0000000..a1fbe06 --- /dev/null +++ b/terraform/elasticsearch/main.tf @@ -0,0 +1,40 @@ +terraform { + backend "pg" { + schema_name = "shoarma-elasticsearch" + } + + required_providers { + elasticstack = { + source = "elastic/elasticstack" + version = "0.6.2" + } + } +} + +provider "elasticstack" { + elasticsearch { + endpoints = ["http://maestro.dmz:14653"] + } +} + +resource "elasticstack_elasticsearch_index_lifecycle" "metrics_ilm" { + name = "metrics_ilm" + + delete { + min_age = "7d" + delete {} + } +} + +resource "elasticstack_elasticsearch_index_template" "metrics_template" { + name = "metrics_template" + + priority = 42 + index_patterns = ["fluentd.cpu*", "fluentd.memory*"] + + template { + settings = jsonencode({ + "index.lifecycle.name" = elasticstack_elasticsearch_index_lifecycle.metrics_ilm.name + }) + } +}