Metricbeat Beat failed to connect es (xpack enabled)

Hello Experts,

Issue : Unable to connect to elasticsearch, deployed configmap does not contain username: and password input.

Background :

I have installed Elastic search (XPACK enabled ) and kibana, this combination works fine. I was able to connect to elasticsearch from kibana using es username and password. I wanted to try out metricbeat and installed the same

Installation method: Helm - https://github.com/elastic/helm-charts

I am able to login to kibana using same user without an issue.

helm install metricbeat elastic/metricbeat --set imageTag=7.6.2 --values metrics.yaml --namespace default

values

        daemonset:
          extraEnvs:
        - name: 'ES_USERNAME'
          valueFrom:
            secretKeyRef:
              name: elastic-credentials
              key: username
        - name: 'ES_PASSWORD'
          valueFrom:
            secretKeyRef:
              name: elastic-credentials
              key: password
          # Allows you to add any config files in /usr/share/metricbeat
          # such as metricbeat.yml for daemonset
          metricbeatConfig:
        metricbeat.yml: |
          metricbeat.modules:
          - module: kubernetes
            metricsets:
              - container
              - node
              - pod
              - system
              - volume
            period: 10s
            host: "${NODE_NAME}"
            hosts: ["${NODE_NAME}:10250"]
            # bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
            # ssl.verification_mode: "none"
            # If using Red Hat OpenShift remove ssl.verification_mode entry and
            # uncomment these settings:
            #ssl.certificate_authorities:
              #- /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
            processors:
            - add_kubernetes_metadata: ~
          - module: kubernetes
            enabled: true
            metricsets:
              - event
          - module: system
            period: 10s
            metricsets:
              - cpu
              - load
              - memory
              - network
              - process
              - process_summary
            processes: ['.*']
            process.include_top_n:
              by_cpu: 5
              by_memory: 5
          - module: system
            period: 1m
            metricsets:
              - filesystem
              - fsstat
            processors:
            - drop_event.when.regexp:
                system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
          output.elasticsearch:
            username: '${ES_USERNAME}'
            password: '${ES_PASSWORD}'
            hosts: ["elasticsearch-master:9200"]
        deployment:
          extraEnvs:
        - name: 'ES_USERNAME'
          valueFrom:
            secretKeyRef:
              name: elastic-credentials
              key: username
        - name: ES_PASSWORD'
          valueFrom:
            secretKeyRef:
              name: elastic-credentials
              key: password
          # Allows you to add any config files in /usr/share/metricbeat
          # such as metricbeat.yml for deployment
          metricbeatConfig:
        metricbeat.yml: |
          metricbeat.modules:
          - module: kubernetes
            enabled: true
            metricsets:
              - state_node
              - state_deployment
              - state_replicaset
              - state_pod
              - state_container
            period: 10s
            hosts: ["${KUBE_STATE_METRICS_HOSTS}"]
          output.elasticsearch:
            username: '${ES_USERNAME}'
            password: '${ES_PASSWORD}'
            hosts: ["elasticsearch-master:9200"]

ERROR pipeline/output.go:100 Failed to connect to backoff(elasticsearch(http://elasticsearch-master:9200)): 401 Unauthorized: {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

configmap :

    metricbeat.modules:
    - module: kubernetes
      metricsets:
        - container
        - node
        - pod
        - system
        - volume
      period: 10s
      host: "${NODE_NAME}"
      hosts: ["${NODE_NAME}:10255"]
      processors:
      - add_kubernetes_metadata:
          in_cluster: true
    - module: kubernetes
      enabled: true
      metricsets:
        - event
    - module: system
      period: 10s
      metricsets:
        - cpu
        - load
        - memory
        - network
        - process
        - process_summary
      processes: ['.*']
      process.include_top_n:
        by_cpu: 5
        by_memory: 5
    - module: system
      period: 1m
      metricsets:
        - filesystem
        - fsstat
      processors:
      - drop_event.when.regexp:
          system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
    output.elasticsearch:
      hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'

Hi @Paul_20,

Due to a recent refactoring, the values daemonset.xxx and deployment.xxx documented on Git repository master branch aren't compatible with the current released chart version.

If you want to install the current released version (7.6.2), you can find the values to use on the README from 7.6.2 release.

If you want to deploy the next version which should be released in a few days and will use daemonset.xxx and deployment.xxx values, you can clone the repo and use the installation instructions from 7.7 branch.

FYI 7.7.0 has been released wednesday.

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