Neste tutorial será mostrado como centralizar os logs do Kubernetes com Graylog + Fluentd.
Existem outras maneiras talvez mais elegantes, mas optamos em enviar os logs (stdout/stderr) dos pods para o Graylog utilizando o fluentd-kubernetes-daemonset. O fluentd(daemonset) irá utilizar as configurações passadas pelo configmap.
- Graylog >= 3.1
- fluentd >= 1.10
- Cluster kubernetes
- Servidor Graylog
Disponibilizamos dois manifestos de configmap.
fluent-configmap.yaml --> Responsável pelo arquivo de configuração do fluent.conf
fluent-kubernetes-configmap.yaml --> Responsável pelo arquivo de configuração do kubernetes.conf
Exemplo de como criar um configmap usando como base um arquivo.
kubectl create configmap fluent-kubernetes-configmap --from-file=kubernetes.conf --namespace=kube-system
kubectl create configmap fluent-configmap --from-file=fluent.conf --namespace=kube-system
- Execute os manifestos do configmap.
kubectl create -f fluent-kubernetes-configmap.yaml -f fluent-configmap.yaml
- Execute o manifesto do rbac.
kubectl create -f rbac.yaml
- Execute o manifesto do daemonset
kubectl create -f fluent-daemonset.yaml
- Configure um input gelf. (Protocolo (TCP/UDP) e porta de sua escolha)
- No Input gelf criado anteriormente, vá em Manager Extractors
- Adicione um extractor
- Load a mensagem e crie um json.
- Caso não queira realizar os passos anteriores (1-4) manualmente, disponibilizamos um content-pack na pasta
./files/
para criação do input+extractors. Necessário apenas importar o content pack e instalar! - Exemplo de mensagem