截至几周前,我们在kubernetes集群上运行的dotnet核心应用程序中添加了filebeat,metricbeat和apm。
一切正常,最近我们发现filebeat和metricbeat能够根据多个规则编写不同的索引。
我们想对APM做同样的事情,但是searching the documentation我们找不到任何设置要写入的索引名称的选项。
这是否有可能,如果是,它是如何配置的?
我还尝试在代码库中找到当前名称apm-*,但在配置它时找不到任何匹配项。
我们要解决的问题是,kibana中的每个空间都可以查看每个应用程序的apm指标。某些应用程序不应该在这个空间内,因此我认为一个新的apm-application-*索引可以解决问题。
编辑
由于不应在代理上进行配置,而应在云服务控制台中进行配置。我很难按自己的喜好“覆盖用户”设置。
我想要的规则:

  • 当应用程序在kubernetes命名空间default 内不存在而不是时,或 kube-system写入名为apm-7.8.0-application-type-2020-07的索引
  • 其他 namespace 中的所有其他应用程序应保留在默认索引


  • 我看到您可以添加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
    
    
    然后我更新了示例,但得出了相同的结论,因为它也无效。

    最佳答案

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

    output.elasticsearch.index: "apm-application-%{[observer.version]}-{type}-%{+yyyy.MM.dd}"
    
    请注意,如果更改此设置,则还需要修改相应的索引模板以匹配新的索引名称。

    关于elasticsearch - 弹性APM不同的索引名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63116459/

    10-11 06:59