# 使用Filebeat创建新索引ILM的问题

**URL:** <https://discuss.elastic.co/t/filebeat-ilm/308777>\
**Category:** 中文提问与讨论\
**Created:** [July 4, 2022, 5:51am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777 "2022-07-04T05:51:20Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![busishe](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/busishe/32/107755_2.png) [@busishe](https://discuss.elastic.co/u/busishe)\
**Post date:** [July 4, 2022, 5:51am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/1 "2022-07-04T05:51:20Z")

</div>

我编辑了 filebeat.yml 中的配置项"setup.ilm.policy\_name"指定索引的ilm策略为我在kibana中自建的测试策略。  
filebeat日志启动的时候看到它做了相关的检测，这个配置是生效了的。  
{"log.level":"info","[@timestamp](https://github.com/timestamp)":"2022-07-04T02:51:11.473Z","log.logger":"index-management.ilm","log.origin":{"file.name":"ilm/std.go","file.line":118}, **"message":"ILM policy my-1day-test exists already."** ,"service.name":"filebeat","ecs.version":"1.6.0"}

但是在这个已存在的策略没有实际添加在索引上，我在kibana的索引管理功能中查看索引的详细信息json：  
`"lifecycle": { "name": "", "parse_origination_date": "false", "step": { "wait_time_threshold": "12h" }, "indexing_complete": "false", "rollover_alias": "", "origination_date": "-1" },`

另外还有一个问题，当我的策略涉及到rollover时，要求索引必须有一个别名"alias"，旧版本的filebeat里面有一个配置项"setup.ilm.rollover\_alias"，但是我使用的8.2版本中取消了，请问现在有什么办法能在filebeat创建索引时指定别名吗？es的api是可以的，但不是很方便，还是希望能在filebeat创建索引时就指定。

可以看到lifecycle中的name为空。同样的问题我在filebeat和es社区都提了，英文实在捉急，有没有大神了解呢？

---

<div class="post-metadata">

**Author:** ![hansc](https://avatars.discourse-cdn.com/v4/letter/h/a8b319/32.png) [@hansc](https://discuss.elastic.co/u/hansc)\
**Post date:** [July 5, 2022, 7:14pm UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/2 "2022-07-05T19:14:37Z")

</div>

不知道你的index是怎么创建的, 所以我猜一下, 你的两个问题的答案可能是一样的.

就是你需要用通过index template创建data stream, 而不是直接创建index.  
如果你使用的是filebeat自动创建的index template, 那么它创建出来的data stream会自动套用默认的filebeat ILM policy, 你可以直接修改这个policy.  
index template中也会指定alias.

---

<div class="post-metadata">

**Author:** ![busishe](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/busishe/32/107755_2.png) [@busishe](https://discuss.elastic.co/u/busishe)\
**Post date:** [July 6, 2022, 12:47am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/3 "2022-07-06T00:47:00Z")

</div>

非常感谢！是的， 我直接创建了index，我尝试一下用template。不过policy我确实需要自定义，因为我是在 云集群环境下把filebeat当做边车容器来使用，不同业务应用的ilm清理策略可能不一样，这些内容都是通过容器启动时环境变量传进来的。

```auto
filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

- type: filestream
  id: ${FS_ID}
  enabled: true
  paths:
    - ${YOUR_LOG_PATH}

setup.template.settings:
  index.number_of_shards: 1

setup.template.enabled: false
setup.ilm.enabled: true
setup.ilm.policy_name: "my-1day-test"

processors:
 # - add_cloud_metadata: ~
 # - add_docker_metadata: ~
 - drop_fields:
     fields: ["agent","cloud","log","ecs","log_type","input_type","offset","beat","source","type","input","host"]

output.elasticsearch:
  hosts: ${ES_CLUSTER}
  index: ${ES_INDEX}

```

---

<div class="post-metadata">

**Author:** ![busishe](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/busishe/32/107755_2.png) [@busishe](https://discuss.elastic.co/u/busishe)\
**Post date:** [July 6, 2022, 1:02am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/4 "2022-07-06T01:02:44Z")

</div>

方便的话，可以提供一个示例yml吗？我在filebeat文档中index template相关部分仍然没有找到alias配置的地方

---

<div class="post-metadata">

**Author:** ![hansc](https://avatars.discourse-cdn.com/v4/letter/h/a8b319/32.png) [@hansc](https://discuss.elastic.co/u/hansc)\
**Post date:** [July 6, 2022, 8:09am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/5 "2022-07-06T08:09:57Z")

</div>

index template不是通过filebeat.yml来管理的.

基于你的实际状况, 我建议的步骤是这样:

1. filebeat.yml里, 通过指定index来区分不同业务应用: index: "filebeat-%{[agent.version]}-xxx"

2. 指定filebeat的mapping. 如果你要用默认的, 那么就在elasticsearch服务器上装filebeat, 然后让它连接elasticsearch, 这样filebeat会自动创建默认的template. 如果你不想这么做, 那么就在你的filebeat上把mapping导出成json, 然后自己手动创建template.

3. 我猜你有用kibana, 那你通过kibana-Stack Management-Index Management-Index Templates, 可以找到filebeat自动创建的template, 或者你要在这里手动创建你自己的.

4. 修改template的index patterns来匹配你的不同业务的index. 最坏的情况无非是有多少种index, 就制造多少个template.

5. 在template中enable data stream, 自动创建的template大概已经enable了.

6. filebeat也会自动创建ilm policy, 在kibana里面你可以修改它. 第四步的template里面, index里面可以修改template 的 ilm policy

```auto
  "index": {
    "lifecycle": {
      "name": "packetbeat"
    },

```

大概就是这样, 应该可以用了. 不过在你创建好正确的template前, 不要让filebeat自行创建indices. 否则应该template不会创建同名index的data stream吧.

---

<div class="post-metadata">

**Author:** ![busishe](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/busishe/32/107755_2.png) [@busishe](https://discuss.elastic.co/u/busishe)\
**Post date:** [July 7, 2022, 1:16am UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/6 "2022-07-07T01:16:39Z")

</div>

谢谢你的回答，为我提供了很大的帮助！目前我的做法是每个应用对应一个index template。之前遇到的别名的设置问题，是因为rollover\_alias在filebeat8版本中取消了，退回至7.17版本后，策略、别名的设置都生效了。

---

<div class="post-metadata">

**Author:** ![hansc](https://avatars.discourse-cdn.com/v4/letter/h/a8b319/32.png) [@hansc](https://discuss.elastic.co/u/hansc)\
**Post date:** [July 8, 2022, 12:19pm UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/7 "2022-07-08T12:19:42Z")

</div>

不用谢! 麻烦你标注问题已解决.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 5, 2022, 12:19pm UTC](https://discuss.elastic.co/t/filebeat-ilm/308777/8 "2022-08-05T12:19:44Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
