【问题标题】:Elastic APM different index nameElastic APM 不同的索引名称
【发布时间】:2020-07-28 17:49:15
【问题描述】:

几周前,我们将 filebeat、metricbeat 和 apm 添加到了运行在 kubernetes 集群上的 dotnet 核心应用程序中。 它工作得很好,最近我们发现 filebeat 和 metricbeat 能够根据多个规则编写不同的索引。

我们想为 APM 做同样的事情,但是 searching the documentation 我们找不到任何选项来设置要写入的索引的名称。

这是否可能,如果可以,如何配置?

我还尝试在代码库中查找当前名称 apm-*,但在配置时找不到任何匹配项。

我们想要解决的问题是 kibana 中的每个空间都可以看到每个应用程序的 apm 指标。某些应用程序不应该在这个空间内,因此我认为一个新的apm-application-* 索引可以解决问题......

编辑

因为它不应该在代理上配置,而是在云服务控制台中配置。我无法根据自己的喜好“用户覆盖”设置。

我想要的规则:

  1. 当应用程序存在于 kubernetes 命名空间内时 default kube-system 写入名为 apm-7.8.0-application-type-2020-07 的索引
  2. 其他命名空间中的所有其他应用程序应保留在默认索引中

我知道你可以添加 output.elasticsearch.indices 来实现这一点:Array of index selector rules supporting conditionals and formatted string.

我通过复制与 metricbeat 相同的内容进行了尝试,并将其更新为使用 apm 语法,并得到以下“用户覆盖”

output.elasticsearch.indices:
- index: 'apm-%{[observer.version]}-%{[kubernetes.labels.app]}-%{[processor.event]}-%{+yyyy.MM}'
  when:
    not:
      or:
        - equals:
            kubernetes.namespace: default
        - equals:
            kubernetes.namespace: kube-system

但是当我使用这个设置时它告诉我:

Your changes cannot be applied
'output.elasticsearch.indices.when': is not allowed

Set output.elasticsearch.indices.0.index to apm-%{[observer.version]}-%{[kubernetes.labels.app]}-%{[processor.event]}-%{+yyyy.MM}
Set output.elasticsearch.indices.0.when.not.or.0.equals.kubernetes.namespace to default
Set output.elasticsearch.indices.0.when.not.or.1.equals.kubernetes.namespace to kube-system

然后我更新了示例,但得出了相同的结论,因为它也无效..

【问题讨论】:

  • 您的 APM 服务器是否直接输出到 elasticsearch?索引名称在APM Server中定义。
  • 是的,@leandrojmp 是对的,.NET 代理本身不控制索引名称,这是在 APM 服务器中完成的,链接的文档对此进行了解释。 ps:我在.NET Agent上工作。
  • 啊,我明白了!我们正在使用弹性云解决方案。所以我们还没有设置 APM-server 本身的配置。无论如何要更新此配置?
  • 用我想要的更具体的输出更新了问题

标签: elasticsearch .net-core kibana elastic-stack elastic-apm


【解决方案1】:

在您的 ES Cloud 控制台中,您需要编辑集群配置,滚动到 APM 部分,然后单击“用户覆盖设置”。在那里,您可以通过添加以下属性来覆盖目标索引:

output.elasticsearch.index: "apm-application-%{[observer.version]}-{type}-%{+yyyy.MM.dd}"

注意,如果更改此设置,还需要修改相应的索引模板以匹配新的索引名称。

【讨论】:

  • 通过这个解决方案我还可以添加When 条件规则吗?我希望我的应用程序使用特定的模板:apm-%{[observer.version]}-application-%{+yyyy.MM} 而系统组件(位于不同的 kubernetes 命名空间中)使用系统默认的 apm-%{[observer.version]}-%{+yyyy.MM.dd}
  • 我已经用我想要的更具体的输出更新了我的问题 :)
  • @Baklap4 找到任何解决方案?我们有一个 APM 服务器并希望有多个应用程序(apm 代理)将指标发送到同一个 APM 服务器。我们希望每个应用程序将数据输出到不同的 ElasticSearch 索引。
  • @KalmeshSam 目前没有解决方案。在弹性侧打开一张内部票。一旦事情解决了,他们应该会回来找我的,但我现在还没有听到任何消息。新的 Cloud Console 用户界面看起来很有前景
  • 我们有什么解决办法吗?我们现在正在采用 APM,并且非常希望了解如何使用相同的 APM 服务器将单独的索引用于不同的应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 2021-01-27
  • 2018-09-08
相关资源
最近更新 更多