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,FiltereOutput. - 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:
{: 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:
| 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:
| 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 |
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:
| 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:
| 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:
| 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
@INCLUDEno nível superior esquerdo da linha de configuração. - Não é possível incluir o comando
@INCLUDEdentro 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
@SETno nível da raiz de cada linha. - Não é possível usar o comando
@SETdentro 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}