Uma configuração do Logtail define políticas de coleta de logs, como fonte de dados e modo de coleta. Este tópico descreve os parâmetros de API legados.
O CRD-AliyunLogConfig legado não recebe mais manutenção. Use AliyunPipelineConfig em seu lugar. CreateLogtailPipelineConfig - Create a Logtail pipeline configuration .
Parâmetros básicos
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
configName |
string |
Sim |
config-sample |
Nome da configuração do Logtail. Deve ser único no projeto e imutável após a criação. Regras de nomenclatura:
|
|
inputType |
string |
Sim |
file |
Tipo de fonte de dados. Valores válidos:
|
|
inputDetail |
Objeto JSON |
Sim |
Nenhum |
Configuração da fonte de dados. inputDetail parameters. |
|
outputType |
string |
Sim |
LogService |
Destino de saída. Somente o LogService é compatível. |
|
outputDetail |
Objeto JSON |
Sim |
Nenhum |
Configuração de saída de log. outputDetail parameters. |
|
logSample |
string |
Não |
Nenhum |
Log de amostra. Nota
O log de amostra deve ter menos de 1.500 bytes. |
Parâmetros de inputDetail
Parâmetros básicos
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
filterKey |
array |
Não |
["ip"] |
Campos de filtro de log. O sistema coleta apenas logs correspondentes aos padrões de filterRegex. Nota
Este parâmetro aplica-se apenas à coleta de logs de texto. |
|
filterRegex |
array |
Não |
["^10.*"] |
Padrões regex para filterKey. O tamanho do array filterRegex deve corresponder ao de filterKey. Nota
Este parâmetro aplica-se apenas à coleta de logs de texto. |
|
shardHashKey |
array |
Não |
["__source__"] |
Modo de gravação de dados. Padrão: balanceamento de carga.
Quando configurado, os dados são gravados no modo de shard. O campo __source__ é compatível. |
|
enableRawLog |
boolean |
Não |
false |
Indica se os logs brutos devem ser enviados.
|
|
sensitive_keys |
array |
Não |
Nenhum |
Configuração de mascaramento de dados. sensitive_keys parameters. |
|
mergeType |
string |
Não |
topic |
Método de agregação. Valores válidos:
|
|
delayAlarmBytes |
int |
Não |
209715200 |
Limiar de alerta para atraso na coleta. Padrão: 209715200 (200 MB). |
|
adjustTimezone |
boolean |
Não |
false |
Indica se os fusos horários dos logs devem ser ajustados. Aplica-se apenas quando a análise de tempo está configurada (por exemplo, quando timeFormat está definido). |
|
logTimezone |
string |
Não |
GMT+08:00 |
Deslocamento de fuso horário. Formato: GMT+HH:MM (leste) ou GMT-HH:MM (oeste). Exemplo: GMT+08:00 para UTC+8. |
|
advanced |
Objeto JSON |
Não |
Nenhum |
Configuração de recursos avançados. advanced parameters. |
Parâmetros de sensitive_keys
-
Parâmetros
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
key
string
Sim
content
Nome do campo de log.
type
string
Sim
const
Método de mascaramento de dados. Valores válidos:
-
const: Substitui o conteúdo sensível pelo valor do campo const.
-
md5: Substitui o conteúdo sensível pelo hash MD5 correspondente.
regex_begin
string
Sim
'password':'
Prefixo regex para localizar conteúdo sensível. Usa sintaxe RE2.
regex_content
string
Sim
[^']*
Regex para o conteúdo sensível. Usa sintaxe RE2.
all
boolean
Sim
true
Indica se todo o conteúdo sensível no campo deve ser substituído.
-
true (recomendado): Substitui todo o conteúdo sensível.
-
false: Substitui apenas a primeira ocorrência.
const
string
Não
"****"
Este parâmetro é obrigatório se você definir type como const.
-
-
Exemplo de configuração
Por exemplo, se o valor do campo content em um log for
[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}], substitua o valor do campopasswordpor **** definindo sensitive_keys da seguinte forma.sensitive_keys = [{"all": true, "const": "********", "regex_content": "[^']*", "regex_begin": "'password':'", "type": "const", "key": "content"}] -
Log de amostra
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]
Parâmetros avançados
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
enable_root_path_collection |
boolean |
Não |
false |
Indica se a coleta a partir de diretórios raiz do Windows é permitida (por exemplo, D:\log*).
Importante
|
|
exactly_once_concurrency |
int |
Não |
1 |
Ativa a gravação ExactlyOnce e defina o número de envios simultâneos por arquivo (0-512). Appendix: ExactlyOnce write feature.
Importante
|
|
enable_log_position_meta |
boolean |
Não |
true |
Indica se metadados do arquivo de log devem ser adicionados (campos __tag__:__inode__ e __file_offset__).
Nota
Este recurso é compatível apenas com o Logtail 1.0.21 e versões posteriores. |
|
specified_year |
uint |
Não |
0 |
Completa carimbos de data/hora de log sem o ano. Valores válidos:
Nota
Este recurso é compatível apenas com o Logtail 1.0.21 e versões posteriores. |
|
force_multiconfig |
boolean |
Não |
false |
Indica se esta configuração pode coletar arquivos já correspondidos por outras configurações. Padrão: false. Use para cenários de gravação múltipla em que duas configurações coletam um mesmo arquivo para Logstores diferentes. |
|
raw_log_tag |
string |
Não |
__raw__ |
Nome do campo para armazenar logs brutos. Padrão: __raw__. |
|
blacklist |
object |
Não |
Nenhum |
Configuração de lista de bloqueios de coleta. blacklist parameters. |
|
tail_size_kb |
int |
Não |
1024 |
Tamanho inicial de coleta para novos arquivos, determinando a posição inicial de leitura. Padrão: 1024 KB.
Intervalo: 0-10485760 KB. |
|
batch_send_interval |
int |
Não |
3 |
Intervalo de envio de agregação em segundos. Padrão: 3. |
|
max_rotate_queue_size |
int |
Não |
20 |
Comprimento da fila de rotação de arquivo único. Padrão: 20. |
|
enable_precise_timestamp |
boolean |
Não |
false |
Indica se o tempo de alta precisão deve ser extraído. Padrão: false. Quando ativado, o Logtail analisa o campo de tempo em um carimbo de data/hora no nível de milissegundos e o armazena no campo precise_timestamp_key. Nota
|
|
precise_timestamp_key |
string |
Não |
"precise_timestamp" |
Campo para armazenar o carimbo de data/hora de alta precisão. Padrão: precise_timestamp. |
|
precise_timestamp_unit |
string |
Não |
"ms" |
Unidade do carimbo de data/hora de alta precisão. Padrão: ms. Valores válidos: ms (milissegundo), us (microssegundo), ns (nanossegundo). |
A tabela a seguir descreve os parâmetros de blacklist.
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
dir_blacklist |
array |
Não |
["/home/admin/dir1", "/home/admin/dir2*"] |
Lista de bloqueios de diretórios (caminhos absolutos). Suporta curingas de asterisco (*). Por exemplo, se você configure o caminho como /home/admin/dir1, todo o conteúdo no diretório /home/admin/dir1 será ignorado durante a coleta. |
|
filename_blacklist |
array |
Não |
["app*.log", "password"] |
Lista de bloqueios de nomes de arquivo. Os arquivos correspondentes são excluídos de todos os diretórios. Suporta curingas de asterisco (*). |
|
filepath_blacklist |
array |
Não |
["/home/admin/private*.log"] |
Lista de bloqueios de caminhos de arquivo (caminhos absolutos). Suporta curingas de asterisco (*). Se você configure o caminho como /home/admin/private*.log, todos os arquivos no diretório /home/admin/ que começam com "private" e terminam com ".log" serão ignorados durante a coleta. |
Configurações específicas para logs de texto
Parâmetros básicos
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
logType |
string |
Sim |
common_reg_log |
Modo de coleta de logs. Valores válidos:
|
|
logPath |
string |
Sim |
/var/log/http/ |
Caminho do diretório do arquivo de log. |
|
filePattern |
string |
Sim |
access*.log |
Padrão de nome do arquivo de log. |
|
topicFormat |
string |
Sim |
none |
Método de geração de tópico. Valores válidos:
|
|
timeFormat |
string |
Não |
%Y/%m/%d %H:%M:%S |
Formato de tempo do log. Time formats. |
|
preserve |
boolean |
Não |
true |
Comportamento de tempo limite do arquivo de log. Valores válidos:
|
|
preserveDepth |
integer |
Não |
1 |
Profundidade máxima de diretório para tempo limite quando preserve é false. Intervalo: 1-3. |
|
fileEncoding |
string |
Não |
utf8 |
Codificação do arquivo de log. Valores válidos: utf8, gbk. |
|
discardUnmatch |
boolean |
Não |
true |
Indica se logs sem correspondência devem ser descartados. Valores válidos:
|
|
maxDepth |
int |
Não |
100 |
Profundidade máxima do diretório de log monitorado (0-1.000). Um valor de 0 monitora apenas o diretório atual. |
|
delaySkipBytes |
int |
Não |
0 |
Limiar para descarte de dados atrasados. Valores válidos:
|
|
dockerFile |
boolean |
Não |
false |
Indica se o arquivo alvo está dentro de um contêiner. Padrão: false. |
|
dockerIncludeLabel |
Objeto JSON |
Não |
Nenhum |
Lista de permissões de rótulos de contêiner. Vazia por padrão (coleta de todos os contêineres). LabelKey é obrigatório; LabelValue é opcional.
Nota
|
|
dockerExcludeLabel |
Objeto JSON |
Não |
Nenhum |
Lista de bloqueios de rótulos de contêiner. Vazia por padrão (nenhum contêiner excluído). LabelKey é obrigatório; LabelValue é opcional.
Nota
|
|
dockerIncludeEnv |
Objeto JSON |
Não |
Nenhum |
Lista de permissões de variáveis de ambiente. Vazia por padrão (coleta de todos os contêineres). EnvKey é obrigatório; EnvValue é opcional.
Nota
Várias entradas na lista de permissões têm uma relação OU. Um contêiner é correspondido se suas variáveis de ambiente satisfizerem qualquer uma das entradas da lista de permissões. |
|
dockerExcludeEnv |
Objeto JSON |
Não |
Nenhum |
Lista de bloqueios de variáveis de ambiente. Vazia por padrão (nenhum contêiner excluído). EnvKey é obrigatório; EnvValue é opcional.
Nota
Várias entradas na lista de bloqueios têm uma relação OU. Um contêiner é excluído se suas variáveis de ambiente satisfizerem qualquer um dos pares chave-valor. |
Parâmetros de modo regex completo e simples
-
Parâmetros
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
key
array
Sim
["content"]
Nomes de campos para o conteúdo bruto do log.
logBeginRegex
string
Não
.*
Regex para o início de uma entrada de log. Apenas uma única expressão regular é compatível. Para corresponder a vários formatos de início de linha, combine os padrões em uma única expressão regular usando o operador barra vertical (
).
regex
string
Não
(.*)
Regex para extração de campos.
-
Exemplo de configuração
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "file", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "common_reg_log", "topicFormat": "default", "discardUnmatch": false, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 10, "key": [ "content" ], "logBeginRegex": ".*", "regex": "(.*)" }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Parâmetros do modo JSON
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
timeKey |
string |
Não |
time |
Nome da chave do campo de tempo. |
Parâmetros do modo delimitador
-
Parâmetros
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
separator
string
Não
,
Escolha o separador correspondente ao formato do seu log. Collect logs in delimiter mode.
quote
string
Sim
\
Caractere de aspas para envolver campos que contenham o separador. O conteúdo entre aspas é analisado como um único campo. Collect logs in delimiter mode.
key
array
Sim
[ "ip", "time"]
Nomes de campos para o conteúdo bruto do log.
timeKey
string
Sim
time
Campo da lista key a ser usado como campo de tempo.
autoExtend
boolean
Não
true
Indica se o envio deve ocorrer quando os campos divididos forem menores que as chaves configuradas.
Por exemplo, um log é 11|22|33|44|55, o separador é uma barra vertical (|) e o conteúdo do log é analisado em 11, 22, 33, 44 e 55. As chaves são definidas como A, B, C, D e E, respectivamente.
-
true: Ao coletar o log 11|22|33|55, 55 é enviado ao Simple Log Service como o valor para a chave D.
-
false: Ao coletar o log 11|22|33|55, esta entrada de log é descartada porque o número de campos não corresponde ao número de chaves.
-
-
Exemplo de configuração
{ "configName": "logConfigName", "logSample": "testlog", "inputType": "file", "outputType": "LogService", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "delimiter_log", "topicFormat": "default", "discardUnmatch": true, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 999, "separator": ",", "quote": "\"", "key": [ "ip", "time" ], "autoExtend": true }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Parâmetros do modo plug-in
-
Parâmetros
Parâmetros para coleta de logs via plug-in do Logtail.
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
plugin
Objeto JSON
Sim
Nenhum
Obrigatório para coleta de logs baseada em plug-ins. Use Logtail plug-ins to collect data.
-
Exemplo de configuração
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "plugin", "inputDetail": { "plugin": { "inputs": [ { "detail": { "ExcludeEnv": null, "ExcludeLabel": null, "IncludeEnv": null, "IncludeLabel": null, "Stderr": true, "Stdout": true }, "type": "service_docker_stdout" } ] } }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Parâmetros de outputDetail
Parâmetros de projeto e Logstore de destino.
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
projectName |
string |
Sim |
my-project |
Nome do projeto. Deve corresponder ao projeto na solicitação. |
|
logstoreName |
string |
Sim |
my-logstore |
Nome do Logstore. |
Apêndice: Recurso de gravação ExactlyOnce
Quando ativado, o Logtail registra checkpoints no nível do arquivo em disco e usa números de sequência incrementais do SLS para evitar gravações duplicadas. Após erros de processo ou reinicializações, os checkpoints determinam o escopo de reprocessamento por arquivo. Isso aumenta a sobrecarga de gravação em disco. Limitações:
Os checkpoints são armazenados no disco local. Se o disco estiver cheio ou corrompido, a recuperação poderá falhar.
Os checkpoints registram apenas metadados do arquivo. Se o arquivo for excluído ou modificado, a recuperação poderá não ser possível.
-
O ExactlyOnce depende de números de sequência de gravação no SLS. Cada shard suporta no máximo 10.000 registros. Se esse limite for excedido, os registros mais antigos serão substituídos. Para garantir confiabilidade, mantenha
Número de arquivos ativos × Número de instâncias do Logtailpor Logstore abaixo de 9.500.Arquivos ativos: Arquivos sendo lidos e enviados. Arquivos rotacionados com o mesmo nome lógico contam como um único arquivo ativo.
Instâncias do Logtail: Número de processos do Logtail. Normalmente um por servidor.
O Logtail não chama sync para gravações de checkpoint por padrão. Se o servidor reiniciar antes que os dados em buffer cheguem ao disco, os checkpoints poderão ser perdidos. Para ativar gravações síncronas, adicione "enable_checkpoint_sync_write": true, ao arquivo de configuração de inicialização do Logtail (/usr/local/ilogtail/ilogtail_config.json). Set Logtail startup parameters.