Filebeat на модулях Kubernetes не работает - PullRequest
4 голосов
/ 29 июня 2019

Я использую это руководство для запуска filebeat в кластере Kubernetes.https://www.elastic.co/guide/en/beats/filebeat/master/running-on-kubernetes.html#_kubernetes_deploy_manifests

filebeat версия: 6.6.0

Я обновил файл конфигурации:

filebeat.yml: |-
filebeat.config:
  inputs:
    # Mounted `filebeat-inputs` configmap:
    path: ${path.config}/inputs.d/*.yml
    # Reload inputs configs as they change:
    reload.enabled: false
  modules:
    path: ${path.config}/modules.d/*.yml
    # Reload module configs as they change:
    reload.enabled: false
# To enable hints based autodiscover, remove `filebeat.config.inputs` configuration and uncomment this:
#filebeat.autodiscover:
#  providers:
#    - type: kubernetes
#      hints.enabled: true

filebeat.modules:
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
- module: apache2
  access:
    enabled: true
    var.paths: ["/var/log/apache2/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/apache2/error.log*"]

Но, логи из приложения PHP(/var/log/apache2/error.log) не выбирается с помощью filebeat.Я проверил exec в модуле filebeat и увидел, что модули apache2 и nginx не включены.

Как правильно настроить его в файле yaml.

ОБНОВЛЕНИЕ

Я обновил файл конфигурации filebeat с настройками ниже:

filebeat.autodiscover:
  providers:
    - type: kubernetes
      hints.enabled: true
      templates:
        - condition:
          config:
            - type: docker
              containers.ids:
                - "${data.kubernetes.container.id}"
              exclude_lines: ["^\\s+[\\-`('.|_]"]  # drop asciiart lines
        - condition:
            equals:
              kubernetes.labels.app: "my-apache-app"
          config:
            - module: apache2
              log:
                input:
                  type: docker
                  containers.ids:
                    - "${data.kubernetes.container.id}"

apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-modules
  namespace: default
  labels:
    k8s-app: filebeat
data:
  apache2.yml: |-
    - module: apache2
      access:
    enabled: true
      error:
    enabled: true
  nginx.yml: |-
    - module: nginx
      access:
    enabled: true

Теперь я регистрирую ошибки apache в /dev/stderr, чтобы я мог видеть его через kubectl logs.Журналы загружаются через приборную панель кибаны.Но модуль apache все еще не виден.

Я попытался проверить с помощью ./filebeat modules list:

Enabled:
apache2
nginx

Disabled:

Панель управления Kibana

enter image description here

...