Beats:使用 Elastic Agent 来摄入数据并迁移定制的仪表盘
2022年4月12日 | by mebius
在我之前的文章 “Observability:使用 Elastic Agent 来摄入日志及指标 – Elastic Stack 8.0” 我详述了如何使用 Elastic Agent 来摄入数据。事实上,在之前的最新的几版 7.14里,Elastic Agent 已经是正式版发布了。
我们知道在之前我们使用 Filebeat 进行数据采集时,在 Elasticsearch 中,我们看到的索引名称是 filebeat-* 这样的索引,而且 filebeat-* 也被当做 index pattern 来方式所有的数据集。我们的很多定制的仪表盘或者可视化图是依据 filebeat-* 来进行绘制的。这种情况也适合 Metricbeat 的数据采集。我tgcode们最终的所有数据都是以 metricbeat-* 来进行绘制的。
随着 Fleet 及 Elastic Agent 的引入,我们的数据采集的索引名称也发生了变化。详细阅读,请参阅我之前的文章 “Elastic data stream 命名方案介绍”。 比如针对日志来说,我们的索引名称的命名是这样的:
Elastic data stream 的命名方案是由时间序列数据,由数据集分割成不同的数据。它使用以下命名约定。
- type(类型):通用类型描述数据,比如 logs, metrics, traces …
- dataset(数据集):描述摄入的数据和它的结构,比如 nginx.access
- namespace(命名空间):用户可配置的任意分组,比如 production, testing
各个部分由 “–” 结合在一起,这样就会导致像logs-nginx.access-production 这样名称的数据流。在所有三个部分中,“–” 字符是不允许的。这意味着所有的数据流通过以下方式命名:
{type}-{dataset}-{namespace}
从上面,我们可以看出来索引的命名完全是不同的。我们可能有很多不同的小的索引,而不是都是以 filebeat-* 这样的形式出现的。
Elastic integration 包提供了许多资产,例如预构建的仪表板,让你更轻松地可视化数据。 但是,在某些情况下,你可能需要迁移自定义仪表板。
由于 Elastic Agent 使用不同的数据流,因此 Elastic Agent 导出的字段与导出的 Beats 略有不同。 你为 Beats 创建的任何自定义仪表板都tgcode需要修改或重新创建才能使用新字段。
你有几个用于迁移自定义仪表板的选项:
- 根据新数据流重新创建自定义仪表板 – 这是推荐的方法。
- 创建索引别名以指向新数据流并继续使用自定义仪表板。
在下面,我们来介绍一下如何使用别名来指向 data sttgcodeream。这样做的好处是,我们不需要修改以前定制的仪表盘。为此,请使用索引别名将数据流馈送到你现有的自定义仪表板中。
例如,指向 filebeat- 或 metricbeat- 的自定义仪表板可以使用别名来使用等效的数据流、日志和指标。
要使用别名:
1)将 filebeat 别名添加到日志数据流。 例如:
POST _aliases
{
"actions": [
{
"add": {
"index": "logs-*",
"alias": "filebeat-"
}
}
]
}
2)将 metribeat 别名添加到 metrics- 数据流。
POST _aliases
{
"actions": [
{
"add": {
"index": "metrics-*",
"alias": "metricbeat-"
}
}
]
}
重要:这些别名必须添加到索引模板和现有索引中。
在我们做完上面的配置后,请停用你的 Beats,并仅使用 Elastic Agent 来采集数据,否则你的仪表盘中将会有重复的数据。