Em clusters Kubernetes, aplicações e serviços do sistema geram um grande volume de logs. Para facilitar a análise e o armazenamento desses logs, eles podem ser coletados em sistemas como Elasticsearch, Loki, Kafka, Prometheus, entre outros.
Fluent Bit e Fluentd são ferramentas para coleta e processamento de logs. No entanto, configurá-las no Kubernetes pode ser complexo:
DaemonSet, StatefulSet).O Fluent Operator simplifica esse processo ao:
Em vez de configurar manualmente o Fluent Bit e o Fluentd, você instala o Fluent Operator e apenas descreve as configurações. O operador ajusta o cluster para o estado desejado e atualiza automaticamente os agentes quando a configuração muda.
Componentes principais:
Você pode instalar o Fluent Operator pelo painel de controle da Hostman:
Seção operator:
containerRuntime: define o runtime de contêiner utilizado. No Kubernetes gerenciado da Hostman é usado containerd. Esse valor não precisa ser alterado.logPath: caminho dos arquivos de log. Para containerd, é /var/log.disableComponentControllers: lista de componentes do Fluent Operator a serem desativados. Valores possíveis: fluent-bit e fluentd. Por padrão, ambos são instalados.Seção input:
enable: true — ativa a coleta de logs de arquivos em /var/log/containers/*.log.path: "/var/log/containers/*.log" — define o caminho dos logs de contêiner.refreshIntervalSeconds: 10 — frequência (em segundos) para atualizar a lista de arquivos.memBufLimit: 100MB — limite de memória para buffer.storageType: memory — tipo de armazenamento do buffer. Alternativamente, pode ser filesystem, mas é necessário preparar um volume previamente.readFromHead: false — inicia a leitura a partir do final do arquivo.skipLongLines: true — ignora linhas excessivamente longas.enable: true — ativa a coleta de logs do journald.includeKubelet: true — inclui logs do kubelet no journald.storageType: memory — define o tipo de armazenamento do buffer.Seção output:
Lista as principais opções de saída. Para ativar cada uma, defina enable: true e especifique os parâmetros.
es:
enable: false
host: "<Elasticsearch url>"
port: 9200
logstashPrefix: ks-logstash-log
bufferSize: 20MB
traceError: true
httpUser: "<username>"
httpPassword: "<password>"
Configuração para enviar logs ao Elasticsearch. Informe a URL do serviço, a porta e as credenciais de autenticação.
kafka:
enable: false
brokers: "<kafka broker list>"
topics: ks-log
bufferSize: 20MB
retryLimit: "10"
Configuração para enviar logs ao Kafka. Informe a lista de brokers separada por vírgulas e o tópico para os logs.
loki:
enable: false
retryLimit: "no_limits"
host: 127.0.0.1
port: 3100
httpUser: myuser
httpPassword: mypass
tenantId: "<tenant>"
Permite enviar logs ao Loki. Informe host, porta, credenciais e tenant ID.
stdout:
enable: true
Útil para testes, pois envia os logs para a saída padrão (stdout).
Seção filter:
enable: false — desativado por padrão. Você pode configurar parsers (go, python, java etc.) ou adicionar personalizados.enable: true — ativa o filtro do Kubernetes para adicionar metadados do pod, como namespace, pod, labels e annotations.labels: false, annotations: false — por padrão, esses campos não são adicionados.enable: true — ativa o filtro para processar logs do Containerd.enable: true — ativa o filtro para processar logs do journald.collector — implanta como StatefulSet.agent — implanta como DaemonSet (como o Fluent Bit), ou seja, um agente por nó.port: 24224 — entrada padrão do Fluentd para encaminhamento.es, kafka, opensearch etc.A desinstalação do complemento pelo painel de gerenciamento não é suportada, mas pode ser feita manualmente. Siga estes passos:
fluent-bit:kubectl delete -n fluent-operator fluentbit/fluent-bit
fluent-operator:helm uninstall -n fluent-operator fluent-operator
fluent-operator:kubectl delete crd $(kubectl get crd | grep fluent | awk '{print $1}')
kubectl get namespaces
Após concluir essas etapas, o Fluent Operator será completamente removido do seu cluster.