Skip to content

Instantly share code, notes, and snippets.

@havlan
Last active December 10, 2018 10:41
Show Gist options
  • Select an option

  • Save havlan/3b17ac346d9883ec584205827abdb9d9 to your computer and use it in GitHub Desktop.

Select an option

Save havlan/3b17ac346d9883ec584205827abdb9d9 to your computer and use it in GitHub Desktop.
Filebeat 6.5.2 autodiscover with hints example
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
namespace: kube-system
labels:
app: filebeat
data:
filebeat.yml: |-
logging.level: info
filebeat.autodiscover:
providers:
- type: kubernetes
hints.enabled: true
include_annotations:
- "*"
- "exampledomain.com/service"
processors:
- add_kubernetes_metadata:
in_cluster: true
#- drop_fields:
# fields: ["host"] # for logstash compability, logstash adds its own host field in 6.3 (?)
# This ensures that every log that passes has required fields
- drop_event:
when:
not.has_fields: ['kubernetes.annotations.exampledomain.com/service']
output.logstash:
hosts: ['${LOGSTASH_HOSTS}']
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-inputs
namespace: kube-system
labels:
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:
app: filebeat
spec:
template:
metadata:
labels:
app: filebeat
annotations:
exampledomain.com/service: testservice55
spec:
serviceAccountName: filebeat
terminationGracePeriodSeconds: 30
containers:
- name: filebeat
image: docker.elastic.co/beats/filebeat:6.5.2
args: [
"-e",
#"-v",
#"-d",
#"autodiscover,docker",
"-c",
"/etc/filebeat.yml",
]
env:
- name: LOGSTASH_HOSTS
value: "10.0.2.2:5044" # minikube 10.0.2.2
- name: ELASTICSEARCH_HOST
value: 10.0.2.2
- name: ELASTICSEARCH_PORT
value: "9200"
- name: LOG_LEVEL
value: debug
- name: CLUSTER_NAME
value: my_cluster
- name: FILEBEAT_HOST
valueFrom:
fieldRef:
fieldPath: spec.nodeName
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
- name: dockersock
mountPath: /var/run/docker.sock
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
# We set an `emptyDir` here to ensure the manifest will deploy correctly.
# It's recommended to change this to a `hostPath` folder, to ensure internal data
# files survive pod changes (ie: version upgrade)
- name: data
emptyDir: {}
- name: dockersock
hostPath:
path: /var/run/docker.sock
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: filebeat
subjects:
- kind: ServiceAccount
name: filebeat
namespace: kube-system
roleRef:
kind: ClusterRole
name: filebeat
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: filebeat
labels:
app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
resources:
- namespaces
- pods
verbs:
- get
- watch
- list
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: filebeat
namespace: kube-system
labels:
app: filebeat
---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment