Fluent Operator
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:
- É necessário criar recursos manualmente (
DaemonSet,StatefulSet). - Arquivos de configuração precisam ser preparados.
- É preciso considerar particularidades do runtime de contêiner.
- Segredos devem ser gerenciados para autenticação.
- Atualizações e compatibilidade precisam ser monitoradas.
O Fluent Operator simplifica esse processo ao:
- Automatizar a implantação do Fluent Bit e do Fluentd, criando os recursos necessários.
- Usar Custom Resource Definitions (CRDs) para configurar entradas, filtros, saídas e outros parâmetros via manifests YAML.
- Gerenciar atualizações e escalonamento do Fluent Bit/Fluentd conforme mudanças no cluster.
- Simplificar a integração com Elasticsearch, Loki, Kafka, Prometheus e outros.
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:
- Fluent Bit: agente leve de coleta de logs.
- Fluentd: agente mais robusto, que pode ser executado como DaemonSet ou StatefulSet para filtragem e buffering avançados.
- Fluent Operator: gerencia Fluent Bit e Fluentd por meio de CRDs.
Instalar o Fluent Operator Copiar link
Você pode instalar o Fluent Operator pelo painel de controle da Hostman:
- Vá para a seção Kubernetes e clique no cluster.
- Abra a aba Complementos e selecione Fluent Operator.
- Ative Instalação avançada e ajuste a configuração conforme suas necessidades.
- Clique em Instalar.
Parâmetros de instalação Copiar link
Operator Copiar link
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-bitefluentd. Por padrão, ambos são instalados.
Fluent Bit Copiar link
Seção input:
- tail:
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.
- systemd:
enable: true— ativa a coleta de logs dojournald.includeKubelet: true— inclui logs dokubeletnojournald.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.
- Elasticsearch
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
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
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
stdout:
enable: trueÚtil para testes, pois envia os logs para a saída padrão (stdout).
Seção filter:
- multiline:
enable: false— desativado por padrão. Você pode configurar parsers (go,python, java etc.) ou adicionar personalizados.
- kubernetes:
enable: true— ativa o filtro do Kubernetes para adicionar metadados do pod, comonamespace,pod,labelseannotations.labels: false,annotations: false— por padrão, esses campos não são adicionados.
- containerd:
enable: true— ativa o filtro para processar logs do Containerd.
- systemd:
enable: true— ativa o filtro para processar logs dojournald.
Fluentd Copiar link
- enable: se precisar usar o Fluentd (em vez do ou junto com o Fluent Bit), defina como true.
- mode:
collector— implanta como StatefulSet.agent— implanta como DaemonSet (como o Fluent Bit), ou seja, um agente por nó.
- forward:
port: 24224— entrada padrão do Fluentd para encaminhamento.
- output: semelhante ao Fluent Bit, inclui opções como
es,kafka,opensearchetc.
Remover o Fluent Operator Copiar link
A desinstalação do complemento pelo painel de gerenciamento não é suportada, mas pode ser feita manualmente. Siga estes passos:
- Excluir o objeto
fluent-bit:
kubectl delete -n fluent-operator fluentbit/fluent-bit- Remover o release Helm do
fluent-operator:
helm uninstall -n fluent-operator fluent-operator- Excluir todos os CRDs relacionados ao
fluent-operator:
kubectl delete crd $(kubectl get crd | grep fluent | awk '{print $1}')- Verificar se todos os recursos e namespaces relacionados foram removidos:
kubectl get namespacesApós concluir essas etapas, o Fluent Operator será completamente removido do seu cluster.