Entendendo o arquivo de configuração do agente

O Agente de criação de log usa um arquivo de configuração baseado no Fluent Bit para determinar como os dados de entrada são processados antes de serem roteados.

Ao configurar o arquivo de configuração do agente, considere as seguintes informações:

  • O esquema é dividido em várias seções.
  • Você pode usar os comandos do Fluent Bit para simplificar o arquivo de configuração e torná-lo mais legível.
  • Você pode expor as variáveis de configuração definindo variáveis de ambiente do shell ou usando o comando @SET.

Seções

O esquema de uma configuração do Fluent Bit é dividido em várias seções.

  • Uma seção é definida por um nome entre colchetes.
  • Há quatro tipos de seções que podem ser configuradas: Service, Input, Filter e Output.
  • Uma seção pode conter uma ou mais entradas.
  • Uma entrada é definida por uma linha de texto que contém uma chave e um valor. A chave deve ser recuada e deve conter um valor que termine na linha de quebra. Considere usar um recuo de quatro espaços.

O diagrama a seguir mostra a ordem em que as seções são aplicadas:

Ordem de processamento das{: caption="do Fluent BitOrdem de processamento das seções do Fluent BitOrdem de processamento das seções do Fluent " caption-side="bottom"}

Seção SERVIÇO

É possível configurar a seção SERVICE para definir as propriedades globais do serviço.

A tabela a seguir lista algumas chaves que podem ser definidas em uma seção SERVICE:

Serviços de manutenção
Chave Descrição Valor padrão
flush Defina o tempo em seconds.nanoseconds para liberar os registros que são ingeridos pelos plug-ins de entrada por meio dos plug-ins de saída. 5
log_file O caminho absoluto para outros arquivos de registro. Por padrão, os registros são redirecionados para a interface de erro padrão (stderr).
log_level Defina o nível de verbosidade do registro. Os valores válidos são: off, error, warn, info, debug e trace. Observe que os valores são acumulativos. Por exemplo, se debug for definido, ele incluirá error, warning, info e debug. info
parsers_file Caminho para o arquivo de configuração de um analisador. Várias entradas Parsers_File podem ser definidas em uma seção.

Para obter mais informações sobre chaves adicionais compatíveis, consulte Propriedades da seção de serviço.

Por exemplo, um exemplo de seção do SERVICE pode ser o seguinte:

[SERVICE]
      Flush                   1
      Log_Level               info
      Daemon                  off
      Parsers_File            parsers.conf
      plug-ins_File           plug-ins.conf
      HTTP_Server             On
      HTTP_Listen             0.0.0.0
      HTTP_Port               8081
      Health_Check            On
      HC_Errors_Count         1
      HC_Retry_Failure_Count  1
      HC_Period               30
      storage.path            /fluent-bit/cache
      storage.max_chunks_up   192
      storage.metrics         On

Seção INPUT

Você pode configurar seções INPUT para definir as fontes de onde o Fluent Bit pode coletar dados.

A tabela a seguir descreve as chaves que podem ser configuradas para uma seção INPUT:

Teclas de entrada
Chave Descrição Status
Name Nome do plug-in de entrada. Determina qual plug-in de entrada deve ser carregado pelo Fluent Bit. Obrigatório
Tag Tag que está associada a todos os registros provenientes desse plug-in. Necessário para todos os plug-ins, exceto para o plug-in de encaminhamento de entrada, que fornece tags dinâmicas.
Log_Level Defina o nível de verbosidade do registro. Os valores válidos são: off, error, warn, info, debug e trace. Observe que os valores são acumulativos. Por exemplo, se debug for definido, ele incluirá error, warning, info e debug. Se não for definido, o valor padrão será o valor SERVICE da seção Log_Level. Opcional
Path Defina o local onde os registros de logs são lidos.

Para os logs do Kubernetes, por padrão o IBM Cloud Logs Agente de criação de log coleta logs somente do diretório /var/log/containers/*.log. Se quiser coletar logs de todos os subdiretórios em /var/log, será necessário adicionar /var/log/**/*.log ao parâmetro Path.

Opcional

Para obter mais informações sobre os INPUT plug-ins, consulte Plug-ins de entrada.

Cada INPUT plug-in tem suas próprias chaves de configuração, além das descritas na tabela.

Por exemplo, um exemplo de seção INPUT poderia ser o seguinte:

[INPUT]
    # Comment
    Name tail
    Tag  kube.*
    log_level info

Seção FILTRO

Você pode configurar seções FILTER para transformar os dados relacionados a um plug-in FILTER antes de enviá-los ao seu destino.

A tabela a seguir descreve as teclas que podem ser configuradas para uma seção FILTER:

Chaves de filtro
Chave Descrição Status
Name Nome do plug-in de filtro. Determina qual plug-in de filtro deve ser carregado pelo Fluent Bit. Obrigatório
Match Um padrão que é usado para comparar com as tags definidas nos registros de entrada. Match diferencia maiúsculas de minúsculas. Você pode usar o caractere asterisco * como um curinga. Necessário [*]
Match_Regex Uma expressão regular usada para fazer a correspondência com as tags definidas nos registros de entrada. Use essa opção para usar a sintaxe completa de regex. Necessário [*]
Log_Level Defina o nível de verbosidade do registro. Os valores válidos são: off, error, warn, info, debug e trace. Observe que os valores são acumulativos. Por exemplo, se debug for definido, ele incluirá error, warning, info e debug. Se não for definido, o valor padrão será o valor SERVICE da seção Log_Level. Opcional

[*] Você pode configurar a tecla Match, a tecla Match_Regex ou ambas. Você deve sempre configurar um. Se você configurar ambos, Match_Regex terá precedência.

Por exemplo, um exemplo de seção FILTER pode ser o seguinte:

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

Seção OUTPUT

Você pode configurar seções OUTPUT para definir os destinos para os quais o Fluent Bit deve enviar os dados após uma correspondência de tag.

O Fluent Bit pode rotear até 256 OUTPUT plug-ins.

A tabela a seguir descreve as teclas que podem ser configuradas para uma seção OUTPUT:

Chaves de saída
Chave Descrição Status
Name Nome do plug-in de saída. Determina qual plug-in de saída deve ser carregado pelo Fluent Bit. Obrigatório
Match Um padrão que é usado para fazer a correspondência com as tags definidas nos registros de entrada. Match diferencia maiúsculas de minúsculas. Você pode usar o caractere asterisco * como um curinga. Necessário [*]
Match_Regex Uma expressão regular usada para fazer a correspondência com as tags definidas nos registros de entrada. Use essa opção para usar a sintaxe completa de regex. Necessário [*]
Log_Level Defina o nível de verbosidade do registro. Os valores válidos são: off, error, warn, info, debug e trace. Observe que os valores são acumulativos. Por exemplo, se debug for definido, ele incluirá error, warning, info e debug. Se não for definido, o valor padrão será o valor SERVICE da seção Log_Level. Opcional

[*] Você pode configurar a tecla Match, a tecla Match_Regex ou ambas. Você deve sempre configurar um. Se você configurar ambos, Match_Regex terá precedência.

Por exemplo, a seção OUTPUT do logger-icl-output-plugin é semelhante à seguinte:

    [OUTPUT]
        Name logger-icl-output-plugin
        Id icl-output-plugin
        Match *
        Retry_Limit 8

        # Connection
        Target_Host REPLACE_INGESTER_HOST
        Target_Port REPLACE_INGESTER_PORT
        Target_Path /logs/v1/singles

        # Authentication
        Authentication_Mode REPLACE_IAM_AUTH_MODE
        IAM_Environment REPLACE_IAM_ENVIRONMENT
        REPLACE_TRUSTED_PROFILE_ID
        CR_Token_Mount_Path /var/run/secrets/tokens/vault-token

        # Logging
        Logging_Level info

        # Buffer storage
        storage.total_limit_size 5G

O logger-icl-output-plugin usa o Fluent Bit integrado na verificação de integridade. O pod é considerado insalubre quando o plug-in gera pelo menos um erro ou quando os limites de tentativas são esgotados em um período de 30 segundos.

Variáveis

No Fluent Bit, você pode usar variáveis de ambiente para definir o valor de uma chave que é definida no arquivo de configuração do Fluent Bit.

As variáveis diferenciam maiúsculas de minúsculas.

Use o seguinte formato para representar variáveis:

${MY_VARIABLE}

Para definir uma variável de ambiente, você pode usar a sintaxe do bash.

Para definir variáveis de ambiente, você pode escolher uma das seguintes opções:

  • Abra um terminal e defina as variáveis de ambiente usando o comando export.

    Por exemplo, você pode definir um da seguinte forma: $ export MY_VARIABLE=stdout.

    Quando o Fluent Bit for iniciado, o leitor de configuração procurará uma variável de ambiente com o nome MY_VARIABLE.

  • Quando o Fluent Bit for executado no systemd usando os pacotes oficiais, defina as variáveis de ambiente em qualquer um dos seguintes arquivos: /etc/default/fluent-bit (sistema baseado em Debian) ou /etc/sysconfig/fluent-bit (outros sistemas).

Por exemplo, abra um terminal e defina a variável de ambiente: $ export MY_OUTPUT=stderr Em seguida, crie o seguinte arquivo de configuração:

[INPUT]
    Name              tail
    Tag               kube.*

[OUTPUT]
    Name  ${MY_OUTPUT}
    Match kube.*

A chave Name definida para ser configurada com a variável de ambiente ${MY_OUTPUT} é definida como stderr.

Comandos

Você pode usar os comandos do Fluent Bit para simplificar o arquivo de configuração e torná-lo mais legível.

A tabela a seguir descreve os comandos que você pode usar:

Comandos suportados
Comando Descrição Exemplo
@INCLUDE Incluir um arquivo de configuração. @INCLUDE <FILE>
@SET Definir uma variável de configuração. @SET KEY=VAL

Comando INCLUDE

Para evitar arquivos de configuração longos e complicados, você pode dividir o arquivo de configuração principal do Fluent Bit em vários arquivos usando o comando @INCLUDE. O comando @INCLUDE permite incluir arquivos externos.

Você pode incluir arquivos de configuração adicionais adicionando entradas que estejam de acordo com o seguinte formato:

@INCLUDE <FILE>

Considere as seguintes informações ao usar o comando @INCLUDE:

  • Você pode usar o comando @INCLUDE no nível superior esquerdo da linha de configuração.
  • Não é possível incluir o comando @INCLUDE dentro de uma seção.
  • Você pode usar o caractere curinga (*) para incluir vários arquivos. Por exemplo, você pode usar: @INCLUDE input_*.conf.
  • Quando você inclui vários arquivos usando o caractere curinga (*), os arquivos que correspondem ao caractere curinga são incluídos sem classificação. Se você precisar preservar a ordem entre os arquivos, eles deverão ser explicitamente incluídos na ordem desejada.
  • Todos os caminhos que você define são lidos como relativos a partir do arquivo de configuração raiz.

Por exemplo,

@INCLUDE somefile.conf

Comando SET

Você pode usar o comando @SET para injetar variáveis de configuração na configuração do Fluent Bit.

  • Você pode usar o comando @SET no nível da raiz de cada linha.
  • Não é possível usar o comando @SET dentro de uma seção.

Por exemplo, você pode definir as seguintes variáveis e usá-las para configurar chaves diferentes:

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}