--- apiVersion: v1 kind: ConfigMap metadata: name: filebeat-config namespace: logging data: filebeat.yml: |- http.enabled: true filebeat.inputs: - type: container paths: - /var/log/containers/*.log processors: - add_kubernetes_metadata: in_cluster: true host: ${NODE_NAME} matchers: - logs_path: logs_path: "/var/log/containers/" filebeat.autodiscover: providers: - type: kubernetes host: ${NODE_NAME} hints.enabled: true hints.default_config: type: container paths: - /var/log/containers/*${data.kubernetes.container.id}.log processors: - add_host_metadata: - drop_fields: fields: - stream ignore_missing: true - rename: fields: - from: "kubernetes.node.name" to: "source" - from: "kubernetes.pod.name" to: "pod" - from: "stream" to: "stream" - from: "kubernetes.labels.app" to: "app" - from: "kubernetes.namespace" to: "namespace" ignore_missing: true - drop_fields: fields: - agent - container - ecs - host - kubernetes - log - "@metadata" ignore_missing: true output.logstash: hosts: ["graylog-logstash:5044"] #output.console: # pretty: true --- apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat namespace: logging spec: updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 100% selector: matchLabels: app: filebeat template: metadata: labels: app: filebeat spec: serviceAccountName: filebeat containers: - name: filebeat image: docker.elastic.co/beats/filebeat:7.17.6 args: - -c - /etc/filebeat.yml - -e securityContext: runAsUser: 0 env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName ports: - containerPort: 5066 resources: limits: memory: 200Mi requests: cpu: 100m memory: 100Mi volumeMounts: - name: filebeat-config mountPath: /etc/filebeat.yml readOnly: true subPath: filebeat.yml - name: data mountPath: /usr/share/filebeat/data - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true - name: varlog mountPath: /var/log readOnly: true volumes: - name: filebeat-config configMap: defaultMode: 0600 name: filebeat-config - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers - name: varlog hostPath: path: /var/log - name: data hostPath: path: /var/lib/filebeat-data type: DirectoryOrCreate tolerations: - operator: "Exists" effect: "NoExecute" - operator: "Exists" effect: "NoSchedule" --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: logging-filebeat subjects: - kind: ServiceAccount name: filebeat namespace: logging roleRef: kind: ClusterRole name: filebeat apiGroup: rbac.authorization.k8s.io --- apiVersion: v1 kind: ServiceAccount metadata: name: filebeat namespace: logging labels: app: filebeat --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: filebeat spec: podSelector: matchLabels: app: filebeat policyTypes: - Ingress - Egress egress: - to: - podSelector: matchLabels: app: graylog ports: - protocol: TCP port: 5044