Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
devops:deploy_elk_using_helm [2021/04/08 14:05] – [Kibana Ingress] admindevops:deploy_elk_using_helm [2021/10/24 12:06] (current) – [Filebeat] admin
Line 396: Line 396:
 output.logstash: output.logstash:
   hosts: ["logstash:5000"]</code>   hosts: ["logstash:5000"]</code>
 +  
 +===== Filebeat Autodiscover =====
 +У Filebeat есть отличный функцмонал - Autodiscover. Он позволяет по заданным правилам автоматически обнаруживать файлы с логами. Прмиер конфига для K8S:
 +<code>
 +filebeat:
 +  autodiscover:
 +    providers:
 +    - node: ${HOSTNAME}
 +      templates:
 +      - config:
 +        - containers:
 +            ids:
 +            - ${data.kubernetes.container.id}
 +          paths:
 +          - /var/log/containers/*-${data.kubernetes.container.id}.log
 +          type: container
 +      type: kubernetes
 +output:
 +  elasticsearch:
 +    hosts:
 +    - https://elk-es-http.elk.svc:9200
 +    password: 7hhjEqA6oH3049D1oTT9s4O2
 +    ssl:
 +      certificate_authorities:
 +      - /mnt/elastic-internal/elasticsearch-certs/ca.crt
 +    username: elk-elk-beat-user
 +processors:
 +- drop_fields:
 +    fields:
 +    - log
 +    - container.id
 +    - container.runtime
 +    - container.image.name
 +    - input.type
 +    - tags
 +    - kubernetes.labels
 +    - kubernetes.pod.uid
 +    - kubernetes.replicaset.name
 +    - kubernetes.node
 +    - kubernetes.namespace_labels
 +    - kubernetes.namespace_uid
 +    - ecs.version
 +    - agent
 +    ignore_missing: false
 +setup:
 +  dashboards:
 +    enabled: true
 +  kibana:
 +    host: http://elk-kb-http.elk.svc:5601
 +    password: 6l2IPFK8mBR88w6ek49ePI71
 +    username: elk-elk-beat-kb-user
 +</code>
 +Этот конфиг сформирован оператором **ECK 1.8**. \\
 +Что делать, если **Filebeat Kubernetes Autodiscover** не работает без видимых причин?? В моем случае - ошибок не было, но и логи контейнеров **Filebeat Autodiscover** не обнаруживал. Лог выглядел так:
 +<code>
 +...
 +2021-10-24T11:11:24.565Z        INFO    [autodiscover.pod]      kubernetes/util.go:122  kubernetes: Using node MCS-K8S-201 provided in the config
 +2021-10-24T11:11:24.565Z        DEBUG   [autodiscover.pod]      kubernetes/pod.go:80    Initializing a new Kubernetes watcher using node: MCS-K8S-201
 +2021-10-24T11:11:24.587Z        DEBUG   [autodiscover]  autodiscover/autodiscover.go:90 Configured autodiscover provider: kubernetes
 +2021-10-24T11:11:24.587Z        INFO    [autodiscover]  autodiscover/autodiscover.go:113        Starting autodiscover manager
 +2021-10-24T11:11:24.687Z        DEBUG   [kubernetes]    kubernetes/watcher.go:184       cache sync done
 +2021-10-24T11:11:24.788Z        DEBUG   [kubernetes]    kubernetes/watcher.go:184       cache sync done
 +2021-10-24T11:11:24.889Z        DEBUG   [kubernetes]    kubernetes/watcher.go:184       cache sync done
 +...
 +</code>
 +Однако, при нормальной работе - должно быть что-то такое:
 +<code>
 +...
 +2021-10-24T11:49:30.633Z        INFO    [autodiscover.pod]      kubernetes/util.go:122  kubernetes: Using node mcs-k8s-203 provided in the config
 +2021-10-24T11:49:30.642Z        INFO    [autodiscover]  autodiscover/autodiscover.go:113        Starting autodiscover manager
 +2021-10-24T11:49:31.048Z        INFO    [input] log/input.go:164        Configured paths: [/var/log/containers/*-70600db8d4371ebdacc300edd825c030e6698a6b75467ea8b280c7aef1faa366.log]  {"input_id": "f60ce837-5828-4125-afe5-5a40d70fc613"}
 +2021-10-24T11:49:31.048Z        INFO    [input] log/input.go:164        Configured paths: [/var/log/containers/*-70600db8d4371ebdacc300edd825c030e6698a6b75467ea8b280c7aef1faa366.log]  {"input_id": "ba234dcb-e0bd-4395-baa4-ba47dd1f1f6d"}
 +...
 +</code>Я потратил довольно много времени на выяснение причин такого поведения. дело оказалось в том, что HOSTNAME на ноде задан большими буквами (MCS-K8S-203), а в кластере нода имеет имя маленькими буквами (mcs-k8s-203). В итоге - всё вылечилось, когда я на хостах кластера выполнил:
 +    sudo hostnamectl set-hostname `echo "$HOSTNAME" | tr '[:upper:]' '[:lower:]'`
 +то есть переменовал хосты  кластера в нижнем регистре. 
 +  
  
 ====== Настройка безопасности ====== ====== Настройка безопасности ======
  • devops/deploy_elk_using_helm.txt
  • Last modified: 2021/10/24 12:06
  • by admin