Skip to content

[Agent] Dynamic inputs fail to get validated #23685

@ChrsMark

Description

@ChrsMark

It was found during #23679. Dynamic inputs setup to automatically discover scheduler and controllermanager Pods does not work right now and we get the following error:

2021-01-25T15:36:29.224Z	DEBUG	application/periodic.go:40	Failed to read configuration, error: could not emit configuration: could not create the AST from the configuration: missing field accessing 'inputs' (source:'/etc/agent.yml')

Agent version:

Daemon: 7.11.0-SNAPSHOT (build: 5691b7c654663ee51f1d347ce02bda332fb300e7 at 2021-01-25 09:48:16 +0000 UTC)
Binary: 7.11.0-SNAPSHOT (build: 5691b7c654663ee51f1d347ce02bda332fb300e7 at 2021-01-25 09:48:16 +0000 UTC)

agent.yml:

    id: ef9cc740-5bf0-11eb-8b51-39775155c3f5
    revision: 2
    outputs:
      default:
        type: elasticsearch
        hosts:
          - >-
            ${ES_HOST}
        username: ${ES_USERNAME}
        password: ${ES_PASSWORD}
    agent:
      monitoring:
        enabled: true
        use_output: default
        logs: true
        metrics: true
    providers.kubernetes:
      node: ${NODE_NAME}
      scope: node
    inputs:
      - id: 934ef8aa-ed19-405b-8160-ebf62e3d32f8
        name: kubernetes-node-metrics
        revision: 1
        type: kubernetes/metrics
        use_output: default
        meta:
          package:
            name: kubernetes
            version: 0.2.8
        data_stream:
          namespace: default
        streams:
          - id: >-
              kubernetes/metrics-kubernetes.controllermanager-3d50c483-2327-40e7-b3e5-d877d4763fe1
            data_stream:
              dataset: kubernetes.controllermanager
              type: metrics
            metricsets:
              - controllermanager
            hosts:
              - '${kubernetes.pod.ip}:10252'
            period: 10s
            #condition: startsWith(${kubernetes.pod.name}, "kube-controller-manager")
            condition: ${kubernetes.pod.labels.component} == 'kube-controller-manager'
          - id: >-
              kubernetes/metrics-kubernetes.scheduler-3d50c483-2327-40e7-b3e5-d877d4763fe1
            data_stream:
              dataset: kubernetes.scheduler
              type: metrics
            metricsets:
              - scheduler
            hosts:
              - '${kubernetes.pod.ip}:10251'
            period: 10s
            #condition: startsWith(${kubernetes.pod.name}, "kube-scheduler")
            condition: ${kubernetes.pod.labels.component} == 'kube-scheduler'
          - id: >-
              kubernetes/metrics-kubernetes.proxy-3d50c483-2327-40e7-b3e5-d877d4763fe1
            data_stream:
              dataset: kubernetes.proxy
              type: metrics
            metricsets:
              - proxy
            hosts:
              - 'localhost:10249'
            period: 10s
          - id: >-
              kubernetes/metrics-kubernetes.container-934ef8aa-ed19-405b-8160-ebf62e3d32f8
            data_stream:
              dataset: kubernetes.container
              type: metrics
            metricsets:
              - container
            add_metadata: true
            bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
            hosts:
              - 'https://${env.NODE_NAME}:10250'
            period: 10s
            ssl.verification_mode: none

Converting ${NODE_NAME} placeholders to ${env.NODE_NAME} does not fix the problem and even if we remove all other datastream configs and leave only the dynamic one it still gives the error.

In addition, if we remove the dynamic inputs part and have ${env.NODE_NAME} we still get the same error.

Also a condition like condition: startsWith(${kubernetes.pod.name}, "kube-controller-manager") fails and the inspect command gives the following:

condition "startsWith(${kubernetes.pod.name}, "kube-controller-manager")" evaluation failed: startsWith: accepts exactly 2 string arguments; recieved *eql.null and string

Related to #23613

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions