Не удается получить FileBeat для публикации в Elastic Search
У меня есть кластер kuberenetes, и я пытаюсь собрать журналы из контейнеров в моем кластере. Я использую Filebeat, чтобы собрать журналы и отправить их в эластичный поиск, а затем отобразить его в Кибане. Я развернул Kibana и упругий поиск, и он отлично работает. Я использую DaemonSet для развертывания FileBeat. Вот файл YAML, на который я ссылаюсь для развертывания Filebeat. Я использовал файл манифеста для его развертывания и немного изменил его.
https://www.elastic.co/guide/en/beats/filebeat/master/running-on-kubernetes.html
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
namespace: kube-system
labels:
k8s-app: filebeat
data:
filebeat.yml: |-
filebeat.config:
inputs:
- type: log
# Mounted `filebeat-inputs` configmap:
paths: /var/lib/docker/containers/*/*.log
# Reload inputs configs as they change:
reload.enabled: false
json.message_key: log
json.keys_under_root: true
output.elasticsearch:
hosts: ['x.x.x.x:9200']
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-inputs
namespace: kube-system
labels:
k8s-app: filebeat
data:
kubernetes.yml: |-
- type: docker
containers.ids:
- "*"
processors:
- add_kubernetes_metadata:
in_cluster: true
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: filebeat
namespace: kube-system
labels:
k8s-app: filebeat
spec:
template:
metadata:
labels:
k8s-app: filebeat
spec:
serviceAccountName: filebeat
terminationGracePeriodSeconds: 30
containers:
- name: filebeat
image: docker.elastic.co/beats/filebeat:6.3.1
args: [
"-c", "/etc/filebeat.yml",
"-e",
]
env:
- name: ELASTICSEARCH_HOST
value: X.x.x.x
- name: ELASTICSEARCH_PORT
value: "9200"
value:
securityContext:
runAsUser: 0
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
volumeMounts:
- name: config
mountPath: /etc/filebeat.yml
readOnly: true
subPath: filebeat.yml
- name: inputs
mountPath: /usr/share/filebeat/inputs.d
readOnly: true
- name: data
mountPath: /usr/share/filebeat/data
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: config
configMap:
defaultMode: 0600
name: filebeat-config
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
- name: inputs
configMap:
defaultMode: 0600
name: filebeat-inputs
# data folder stores a registry of read status for all files, so we don't send everything again on a Filebeat pod restart
- name: data
hostPath:
path: /var/lib/filebeat-data
type: DirectoryOrCreate
---
Я проверил модули, работающие с Filebeat, и он хранит логи. Но так или иначе это не отправляет это упругому поиску. Какова должна быть моя точная конфигурация, чтобы сделать это отправкой в asticsearch. Я застрял на этом пару дней, и у меня нет выбора. Любая помощь будет принята с благодарностью.
1 ответ
Ваша конфигурация filebeat не принимает какие-либо типы ввода.
Путь к файлу filebeat.yaml должен указывать на файл filebeats-input.yaml, а не на местоположение логов. Который в свою очередь делегирует тип ввода Docker. Стандартным контейнером.path является / var / lib / docker / Containers.
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-docker.html