未正确执行index.lifecycle.rollover_alias

问题描述 投票:0回答:1

这是我的问题 我已经配置了 filebit、logstash 来为系统和程序创建单独的索引 但是我遇到了一个问题,索引已创建,日志分离很好,生命策略有效,但我有一个问题,日志写入第一个索引,然后根据生命策略创建新日志,但它们为空,则删除第一个并将日志写入其中

# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
  fields:
    log_type: system

  - type: log
  paths:
    - /var/lib/pgsql/13/data/log/*.log 
  fields:
    log_type: pgsql

- type: log
  paths:
     - /var/log/postgresql/*.log #Логи містять інформацію про події та стан PostgreSQL-сервера
  fields:
     log_type: postgresql
# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # The Logstash hosts
    hosts: ["**********:****"]
# ================================= Processors =================================
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

# ============================= Filebeat Logging metrics =======================
logging.metrics.enabled: true
logging.metrics.period: 30s

-------------
File Logstash
-------------
input {
  beats {
    port => 5044
  }
}

filter {
  if [fields][log_type] == "system" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
    }
    mutate {
      add_field => { '[@metadata][index]' => 'system_logs-%{+YYYY.MM.dd}-000001' }
    }
  } else if [fields][log_type] == "pgsql" {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:log_level} %{GREEDYDATA:log_message}" }
    }
    mutate {
      add_field => { '[@metadata][index]' => 'pgsql_logs-%{+YYYY.MM.dd}-000001' }
    }
  } else if [fields][log_type] == "postgresql" {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:log_level} %{GREEDYDATA:log_message}" }
    }
    mutate {
      add_field => { '[@metadata][index]' => 'postgresql_logs-%{+YYYY.MM.dd}-000001' }
    }

    mutate {
      add_field => { "[@metadata][index]" => "%{[@metadata][index]}-000001" }
    }
  }
}

output {
  stdout { codec => rubydebug }
  elasticsearch {
    hosts => ["https://***********:9000"]
    user => "*********"
    password => "***************"
    ssl => true
    cacert => '/etc*************'
    index => "%{[@metadata][index]}"
    manage_template => false
    ilm_enabled => true

    ilm_policy => "%{[@metadata][index]}-ilm"
    ilm_pattern => "000001"
  }
}



PUT _index_template/pgsql-template
{
  "index_patterns": ["pgsql-*"],
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "index.lifecycle.name": "pgsql-ilm",
      "index.lifecycle.rollover_alias": "pgsql_logs_alias"
    }
  }
}

PUT _index_template/system-template
{
  "index_patterns": ["system-*"],
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "index.lifecycle.name": "system-ilm",
      "index.lifecycle.rollover_alias": "system_logs_alias"
    }
  }
}
elasticsearch logstash alias filebeat rollover
1个回答
0
投票

在本文档中,我阅读了 ilm-pattern:

Elasticsearch ilm 模式

该模式必须以破折号和一个数字结束,当索引翻转时,该数字将自动递增。

此外,这部分可能会有所帮助:

翻转索引API路径参数

滚动索引别名时,您可以为新索引指定名称。如果您未指定名称,并且当前索引以 - 和数字结尾,例如 my-index-000001 或 my-index-3,则新索引名称会增加该数字。例如,如果您滚动当前索引为 my-index-000001 的别名,滚动将创建一个名为 my-index-000002 的新索引。无论之前的索引名称如何,该数字始终为 6 个字符且以零填充。

如果您对时间序列数据使用索引别名,则可以在索引名称中使用日期数学来跟踪滚动日期。例如,您可以创建一个指向名为 的索引的别名。如果您在2099年5月6日创建索引,则索引名称为my-index-2099.05.06-000001。如果您在 2099 年 5 月 7 日滚动更新别名,则新索引的名称为 my-index-2099.05.07-000002。有关示例,请参阅使用写入索引滚动索引别名。

我希望它有效。

© www.soinside.com 2019 - 2024. All rights reserved.