ELK 日志保留三天

发布时间 2023-12-07 14:04:45作者: 不会游泳的鱼丶

如果你希望只保留3天的日志数据,你可以通过使用Elasticsearch的索引生命周期管理(ILM)功能来实现。ILM允许你定义自动化的索引生命周期策略,包括日志数据的保留时间。

以下是一个示例,演示如何配置针对每个项目的3天日志保留策略:

1. 首先,确保你的Elasticsearch版本支持索引生命周期管理(5.x及以上版本)。

2. 创建索引模板:在Kibana Dev Tools或通过Elasticsearch API中,执行以下请求来创建一个索引模板,用于自动应用日志索引的生命周期策略:

```json
PUT _template/log_template
{
"index_patterns": ["filebeat-*"],
"settings": {
"index.lifecycle.name": "log_policy",
"index.lifecycle.rollover_alias": "{project}-logs"
}
}
```

上述请求将创建一个名为`log_template`的索引模板,它适用于所有以`filebeat-`开头的索引。该模板定义了一个名为`log_policy`的生命周期策略,并使用`{project}-logs`作为滚动别名。

3. 创建生命周期策略:执行以下请求来创建生命周期策略,定义3天的保留期:

```json
PUT _ilm/policy/log_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "1d",
"max_size": "50gb"
}
}
},
"delete": {
"min_age": "3d",
"actions": {
"delete": {}
}
}
}
}
}
```

上述请求将创建一个名为`log_policy`的生命周期策略,其中定义了`hot`阶段和`delete`阶段。在`hot`阶段,当索引达到1天(`max_age`)或50GB(`max_size`)时,将进行滚动。在`delete`阶段,索引在过去3天(`min_age`)后将被删除。

4. 应用生命周期策略:执行以下请求来应用生命周期策略到相应的索引别名(`{project}-logs`):

```json
POST {project}-logs/_ilm/retry
```

使用上述请求时,将`{project}`替换为你的项目名称(例如`assistant-logs`、`qfzs-shop-logs`等),以应用相应的生命周期策略。

配置完成后,Elasticsearch会根据生命周期策略自动管理索引,并根据保留期限定滚动和删除日志数据。

请注意,以上示例仅供参考,你可以根据具体需求进行调整,例如调整保留期限、大小限制等。

希望这可以帮助你配置日志数据的保留时间。如有要配置只保留3天的日志数据,你可以使用Elasticsearch的索引生命周期管理(ILM)功能。ILM允许你定义自动化的索引生命周期策略,包括索引的保留期限。

以下是一个示例的索引生命周期策略配置,将日志保留3天并自动删除过期的索引:

1. 创建索引模板

首先,我们需要创建一个索引模板,用于应用索引生命周期策略。在Kibana Dev Tools或使用Elasticsearch API执行以下请求来创建一个索引模板(假设索引名称以"filebeat-"开头):

```json
PUT _template/filebeat-ilm-template
{
"index_patterns": ["filebeat-*"],
"settings": {
"index.lifecycle.name": "filebeat-ilm-policy",
"index.lifecycle.rollover_alias": "filebeat"
}
}
```

在上面的请求中,我们将索引模板与`filebeat-*`匹配样式关联,并为该模板配置了一个名称为`filebeat-ilm-policy`的索引生命周期策略。

2. 创建索引生命周期策略

接下来,我们创建一个索引生命周期策略,设置保留期限为3天。

```json
PUT _ilm/policy/filebeat-ilm-policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {}
},
"delete": {
"min_age": "3d",
"actions": {
"delete": {}
}
}
}
}
}
```

在上面的请求中,我们定义了两个阶段的索引生命周期策略:

- `hot`阶段:此阶段没有最小年龄限制,因此索引立即进入此阶段。我们没有定义任何操作,因为我们希望索引保持活动状态("hot")。

- `delete`阶段:我们设置了一个最小年龄为3天,在3天之后,索引将进入此阶段。我们定义了一个"delete"操作,用于删除满足条件的索引。

3. 关联索引生命周期策略

接下来,我们将索引生命周期策略与索引模板关联起来。执行以下请求:

```json
PUT filebeat/_settings
{
"index": {
"lifecycle": {
"name": "filebeat-ilm-policy",
"rollover_alias": "filebeat"
}
}
}
```

以上请求将索引`filebeat`与之前定义的索引生命周期策略和别名关联起来。这意味着新创建的索引将自动应用索引生命周期策略,并使用`filebeat`作为rollover别名。

现在,Elasticsearch会根据索引生命周期策略管理每个项目的索引,并在满足保留期限(3天)后自动删除已过期的索引。

请注意,如果你已经在配置中手动创建了要配置Elasticsearch中索引的数据保留时间,你可以使用索引生命周期管理(ILM)功能。下面是一个示例,展示如何配置索引生命周期来保留最近3天的日志数据:

1. 首先,你需要创建一个索引模板,定义索引的设置和映射。使用以下命令创建一个索引模板:

```json
PUT _index_template/filebeat_template
{
"index_patterns": ["filebeat-*"],
"template": {
"settings": {
"index.lifecycle.name": "3days",
"index.lifecycle.rollover_alias": "filebeat"
},
"mappings": {
"properties": {
"timestamp": {
"type": "date"
}
}
}
},
"version": 1
}
```

在上面的示例中,我们创建了一个名为`filebeat_template`的索引模板,并将其应用于所有以"filebeat-"开头的索引。我们设置了一个生命周期名称为"3days",并将rollover别名设置为"filebeat"。

2. 接下来,你需要创建一个索引生命周期策略。使用以下命令创建一个策略:

```json
PUT _ilm/policy/3days_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "1d"
}
}
},
"delete": {
"min_age": "3d",
"actions": {
"delete": {}
}
}
}
}
}
```

在上面的示例中,我们创建了一个名为"3days_policy"的策略。在"hot"阶段,我们配置了一个"max_age"为1天的rollover操作。在"delete"阶段,我们配置了一个"min_age"为3天的删除操作。

3. 最后,将策略应用于索引模板。使用以下命令将策略应用于模板:

```json
PUT _index_template/filebeat_template/_meta
{
"index.lifecycle.name": "3days_policy"
}
```

这将为模板配置索引生命周期策略。

通过上述配置,新创建的索引将在1天后进行rollover,并根据策略在3天后自动删除。

请注意,在配置完成后,只有新创建的索引才会受到索引生命周期策略的影响。对于现有的索引,你需要手动将其重新索引到满足新策略的索引别名。

希望这个示例可以帮助你配置索引生命周期管理来保留最近3天的日志数据。如有任何进一步的问题,请随时提问。

 

 

 

 


为了保留最近三天的数据并删除超过三天的数据,你可以调整索引生命周期策略的配置。以下是一个示例配置,实现这个需求:

1. 创建索引模板:
首先,你需要创建一个索引模板,定义索引的设置和映射,并与索引生命周期策略关联。使用以下命令创建一个索引模板:

```json
PUT _index_template/filebeat_template
{
"index_patterns": ["filebeat-*"],
"template": {
"settings": {
"index.lifecycle.name": "3days",
"index.lifecycle.rollover_alias": "filebeat"
},
"mappings": {
"properties": {
"timestamp": {
"type": "date"
}
}
}
},
"version": 1
}
```

在上述示例中,我们创建了一个名为`filebeat_template`的索引模板,并将其应用于以"filebeat-"开头的所有索引。我们设置了一个生命周期名称为"3days",并将rollover别名设置为"filebeat"。

2. 创建索引生命周期策略:
接下来,你需要创建一个索引生命周期策略,具体定义在3天之后删除索引的操作。使用以下命令创建策略:

```json
PUT _ilm/policy/3days_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "1d"
}
}
},
"delete": {
"min_age": "3d",
"actions": {
"delete": {}
}
}
}
}
}
```

在上述示例中,我们创建了一个名为"3days_policy"的策略。在"hot"阶段,我们配置了一个"max_age"为1天的rollover操作。在"delete"阶段,我们配置了一个"min_age"为3天的删除操作,意味着超过3天的索引将被删除。

3. 将策略应用于索引模板:
最后,将策略应用于索引模板。使用以下命令来应用策略:

```json
PUT _index_template/filebeat_template/_meta
{
"index.lifecycle.name": "3days_policy"
}
```

这将为模板配置索引生命周期策略。

通过上述配置,新创建的索引将在1天后进行rollover,并根据策略在3天后自动删除。这样,只有最近三天的数据会被保留下来。

需要注意的是,对于现有的索引,这个策略不会自动应用。你需要手动将这些索引重新索引到满足新策略的索引别名,或者使用Curator等工具进行批量删除操作。

希望这个示例可以帮助你配置索引生命周期管理,实现保留最近三天数据并删除超过三天的索引。如果有进一步的问题,请随时提问。