O Fluent Bit é um processador e encaminhador de log rápido e leve que permite coletar dados e logs de aplicativos de diferentes origens, unificá-los e enviá-los para vários destinos. Implante a extensão TKG para o bit fluente para coletar e encaminhar Tanzu Kubernetes logs do cluster para o destino de sua escolha.
Pré-requisitos de extensão
- Provisione um cluster. Consulte o Fluxo de trabalho para clusters de Tanzu Kubernetes provisionamento.
- Conecte-se ao cluster. Consulte o Conectar-se a um Tanzu Kubernetes cluster como um vCenter Single Sign-On usuário.
- Baixe o pacote TKG Extensions v1.3.1 para o host do cliente no qual você executa o kubectl.
- Pré-requisitos de instalação das extensões TKG no cluster de destino.
Implantar a extensão de bits fluente
Container | Tipo de Recurso | Réplicas | Descrição |
---|---|---|---|
Bit fluente | DaemonSet | 6 | Coletor de log, agregador, encaminhador |
- Verifique se você concluiu cada um dos pré-requisitos de extensão. Consulte o Pré-requisitos de extensão.
- Altere o diretório para a extensão de bit fluente.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- Crie o namespace
tanzu-system-logging
e a conta de serviço e os objetos de função de bits fluentes.kubectl apply -f namespace-role.yaml
- Decida qual destino de log usar para o bit fluente. As saídas com suporte incluem Elasticsearch, HTTP, Kafka, Splunk e Syslog. Consulte https://docs.fluentbit.io/manual/pipeline/outputs para obter mais informações.
- Crie um arquivo de valores de dados de bits fluentes para o destino de log escolhido copiando um dos arquivos
<LOG_BACKEND>/fluent-bit-data-values.example.yaml
.Há um arquivo de valores de dados de exemplo para cada destino de log com suporte. O exemplo fornece a configuração mínima para esse destino de log.cp elasticsearch/fluent-bit-data-values.yaml.example elasticsearch/fluent-bit-data-values.yaml
cp http/fluent-bit-data-values.yaml.example http/fluent-bit-data-values.yaml
cp kafka/fluent-bit-data-values.yaml.example kafka/fluent-bit-data-values.yaml
cp splunk/fluent-bit-data-values.yaml.example splunk/fluent-bit-data-values.yaml
cp syslog/fluent-bit-data-values.yaml.example syslog/fluent-bit-data-values.yaml
- Configure a extensão de bits fluente preenchendo o
<LOG_BACKEND>/fluent-bit-data-values.yaml
. Consulte Configurar a extensão de bits fluente para obter uma descrição dos campos e opções.Por exemplo, a configuração do syslog de bits fluidos requer os seguintes valores:logging: image: repository: projects.registry.vmware.com/tkg # Public registry tkg: instance_name: "<TKG_INSTANCE_NAME>" #mandatory but arbitrary; appears in logs cluster_name: "<CLUSTER_NAME>" #name of the target tkgs cluster fluent_bit: output_plugin: "syslog" syslog: host: "<SYSLOG_HOST>" port: "<SYSLOG_PORT>" mode: "<SYSLOG_MODE>" format: "<SYSLOG_FORMAT>"
Um arquivo de valores de dados preenchido para o syslog de bits fluidos pode ter a seguinte configuração:logging: image: repository: projects.registry.vmware.com/tkg tkg: instance_name: "tkgs-cluster-1" cluster_name: "tkgs-cluster-1" fluent_bit: output_plugin: "syslog" syslog: host: "10.192.175.59" port: "514" mode: "tcp" format: "rfc5424"
- Crie um segredo de bit fluente com valores de dados para o destino do log.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=elasticsearch/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=kafka/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=splunk/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=http/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=syslog/fluent-bit-data-values.yaml -n tanzu-system-logging
Osecret/fluent-bit-data-values
é criado no namespacetanzu-system-logging
. Verifique usando o seguinte comando:kubectl get secrets -n tanzu-system-logging
- Implemente o aplicativo de bits fluente.
kubectl apply -f fluent-bit-extension.yaml
Se for bem-sucedido, você verá
app.kappctrl.k14s.io/fluent-bit created
. - Verifique o status do aplicativo de bits fluente.
kubectl get app fluent-bit -n tanzu-system-logging
Em caso de sucesso, o status deve mudar deReconciling
paraReconcile succeeded
. Se o status forReconcile failed
, consulte Solução de problemas de implantação de bits fluentes. - Visualize o status detalhado no aplicativo.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Verifique o DeamonSet de bits fluentes.
kubectl get daemonsets -n tanzu-system-logging
Em caso de sucesso, você deve ver o seguinte:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluent-bit 6 6 6 6 6 <none> 105s
Solução de problemas de implantação de bits fluentes
Se a implantação ou a reconciliação falhar, execute kubectl get pods -A
para exibir o status do pod. Os pods de fluent-bit
devem ser Running
. Se um status de pod for ImagePullBackOff
ou ImageCrashLoopBackOff
, a imagem do contêiner não poderá ser extraída. Verifique a URL do registro nos valores de dados e nos arquivos YAML de extensão e certifique-se de que eles sejam precisos.
name-XXXX
é o nome do pod exclusivo que você pode ver ao executar
kubectl get pods -A
:
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging
Atualizar a extensão de bits fluente
Atualize a extensão de bit fluente que é implantada em um cluster do Tanzu Kubernetes.
- Obtenha valores de dados de bits fluentes do segredo.
kubectl get secret fluent-bit-data-values -n tanzu-system-logging -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > fluent-bit-data-values.yaml
- Atualize os valores de dados de bits fluentes em
fluent-bit-data-values.yaml
. Consulte o Configurar a extensão de bits fluente. - Atualize o segredo dos valores de dados de bits fluentes.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=fluent-bit-data-values.yaml -n tanzu-system-logging -o yaml --dry-run | kubectl replace -f-
A extensão de bit fluente será reconciliada novamente com os valores de dados acima.Observação: Por padrão, o kapp-controller sincronizará os aplicativos a cada 5 minutos. A atualização deve entrar em vigor em 5 minutos ou menos. Se você quiser que a atualização entre em vigor imediatamente, alteresyncPeriod
emfluent-bit-extension.yaml
para um valor menor e aplique a extensão de bit fluente usandokubectl apply -f fluent-bit-extension.yaml
. - Verifique o status da extensão.
kubectl get app fluent-bit -n tanzu-system-logging
- Visualize o status detalhado e solucione problemas.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Solucione problemas, se necessário. Consulte o Solução de problemas de implantação de bits fluentes.
Excluir a extensão de bits fluente
- Altere o diretório para a extensão de bit fluente.
cd extensions/logging/fluent-bit/
- Exclua o aplicativo de bits fluentes.
kubectl delete app fluent-bit -n tanzu-system-logging
Resultado esperado:
app.kappctrl.k14s.io "fluent-bit" deleted
. - Verifique se o aplicativo de bits fluente foi excluído.
kubectl get app fluent-bit -n tanzu-system-logging
Resultado esperado:
apps.kappctrl.k14s.io "fluent-bit" not found
. - Exclua o namespace
tanzu-system-logging
e a conta de serviço e os objetos de função de extensão de bits fluentes.kubectl delete -f namespace-role.yaml
Atualizar a extensão de bits fluente
- Exporte o configmap de bits fluentes.
kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
- Exclua a implantação de bit fluente existente. Consulte o Excluir a extensão de bits fluente.
- Implante a extensão de bits mais recente. Consulte o Implantar a extensão de bits fluente.
Configurar a extensão de bits fluente
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
.
Parâmetro | Descrição | Tipo | Padrão |
---|---|---|---|
logging.namespace | Namespace onde o bit fluente será implantado | cadeia de caracteres | tanzu-system-logging |
logging.service_account_name | Nome da conta de serviço de bits fluentes | cadeia de caracteres | fluente-bit |
logging.cluster_role_name | Nome da função de cluster que concede permissões para obter, observar e listar o bit fluente | cadeia de caracteres | fluent-bit-read |
logging.image.name | Nome da imagem de bits fluentes | cadeia de caracteres | fluente-bit |
logging.image.tag | Tag de imagem de bit fluente. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | cadeia de caracteres | v1.6.9_vmware.1 |
logging.image.repository | Localização do repositório com a imagem de bits fluentes. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente isolado). | cadeia de caracteres | projects.registry.vmware.com/tkg |
logging.image.pullPolicy | Política de recebimento de imagem de bit fluente | cadeia de caracteres | IfNotPresent |
logging.update_strategy | Estratégia de atualização a ser usada ao atualizar o DaemonSet | cadeia de caracteres | RollingUpdate |
tkg.cluster_name | Nome do cluster Tanzu Kubernetes | cadeia de caracteres | Nulo (parâmetro obrigatório) |
tkg.instance_name | Nome definido pelo usuário da instância do TKG, compartilhado pelo Cluster Supervisor e todos os clusters Tanzu Kubernetes em uma implantação. Você pode usar qualquer nome relacionado à instalação. | cadeia de caracteres | Nulo (parâmetro obrigatório)
Observação: Este campo é obrigatório, mas arbitrário. É um nome que aparece nos logs.
|
fluent_bit.log_level | Nível de log a ser usado para o bit fluente | cadeia de caracteres | informação |
fluent_bit.output_plugin | Defina o back-end para o qual o bit fluente deve liberar as informações coletadas | cadeia de caracteres | Nulo (parâmetro obrigatório) |
fluent_bit.elasticsearch.host | Endereço IP ou nome do host da instância de destino do Elasticsearch | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é pesquisa elástica) |
fluent_bit.elasticsearch.port | Porta TCP da instância de destino do Elasticsearch | número inteiro | Nulo (parâmetro obrigatório quando output_plugin é pesquisa elástica) |
fluent_bit.elasticsearch.buffer_size | Especifique o tamanho do buffer usado para ler a resposta do serviço Elasticsearch. Define como ilimitado se False | cadeia de caracteres | Falso |
fluent_bit.elasticsearch.tls | Especifique a configuração padrão para TLS para Elasticsearch | cadeia de caracteres | Off |
fluent_bit.kafka.broker_service_name | Lista única de vários agentes Kafka, por exemplo, 192.168.1.3:9092 | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é kafka) |
fluent_bit.kafka.topic_name | Entrada única ou lista de tópicos separados por (,) que o bit fluente usará para enviar mensagens para o Kafka | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é kafka) |
fluent_bit.splunk.host | Endereço IP ou nome do host do servidor Splunk de destino | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é Splunk) |
fluent_bit.splunk.port | Porta TCP do servidor Splunk de destino | número inteiro | Nulo (parâmetro obrigatório quando output_plugin é Splunk) |
fluent_bit.splunk.token | Especificar o token de autenticação para a interface do coletor de eventos HTTP | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é Splunk) |
fluent_bit.http.host | Endereço IP ou nome do host do servidor HTTP de destino | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é http) |
fluent_bit.http.port | Porta TCP do servidor HTTP de destino | número inteiro | Nulo (parâmetro obrigatório quando output_plugin é http) |
fluent_bit.http.mode | Especifique um URI HTTP para o servidor Web de destino | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é http) |
fluent_bit.http.header_key_value | Par de chave / valor do cabeçalho HTTP. Vários cabeçalhos podem ser definidos | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é http) |
fluent_bit.http.format | Especifique o formato de dados a ser usado no corpo da solicitação HTTP | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é http) |
fluent_bit.syslog.host | Domínio ou endereço IP do servidor Syslog remoto | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é syslog) |
fluent_bit.syslog.port | Porta TCP ou UDP do servidor Syslog remoto | número inteiro | Nulo (parâmetro obrigatório quando output_plugin é syslog) |
fluent_bit.syslog.mode | Especifique o tipo de transporte de TCP, UDP e TLS | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é syslog) |
fluent_bit.syslog.format | Especifique o formato de dados a ser usado no corpo da solicitação HTTP | cadeia de caracteres | Nulo (parâmetro obrigatório quando output_plugin é syslog) |
host_path.volume_1 | Caminho do diretório do sistema de arquivos do nó do host para o pod, para o volume 1 | cadeia de caracteres | / var / log |
host_path.volume_2 | Caminho do diretório do sistema de arquivos do nó do host para o pod, para o volume 2 | cadeia de caracteres | / var / lib / docker / containers |
host_path.volume_3 | Caminho do diretório do sistema de arquivos do nó do host para o pod, para o volume 3 | cadeia de caracteres | / run / log |
systemd.path | Caminho para o diretório do diário Systemd | cadeia de caracteres | / var / log / journal |