Um arquivo de configuração de pipeline do Logstash define o fluxo de dados no pipeline. Cada arquivo se divide em três seções — input, filter e output — correspondentes aos três tipos de plug-in que controlam a origem dos dados, a transformação e o destino final.
Para consultar o formato de configuração do Logstash open source, acesse Structure of a Config File.
Estrutura do arquivo de configuração
Cada seção contém uma ou mais definições de plug-in:
# Use comments to describe parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
As seções input e output são obrigatórias. A seção filter é opcional — inclua-a apenas para transformar ou pré-processar dados antes da saída.
Ordem de execução dos plug-ins: Se você definir vários plug-ins de filtro, o Logstash os aplicará na ordem em que aparecem no arquivo de configuração.
Se a configuração incluir um parâmetro como last_run_metadata_path, defina-o com um caminho no Alibaba Cloud Logstash. O backend fornece um caminho no formato /ssd/1/<Logstash cluster ID>/logstash/data/ para testes. O sistema não exclui dados nesse caminho; portanto, verifique se o disco tem espaço suficiente. Após especificar o caminho, o Logstash gera automaticamente um arquivo no local, mas não é possível visualizar seu conteúdo.
Ao configurar um pipeline com driver JDBC, adicione allowLoadLocalInfile=false&autoDeserialize=false ao parâmetro jdbc_connection_string por motivos de segurança. Sem esses parâmetros, o sistema retorna um erro de falha na verificação ao adicionar o arquivo de configuração.
jdbc_connection_string => "jdbc:mysql://xxx.drds.aliyuncs.com:3306/<Database name>?allowLoadLocalInfile=false&autoDeserialize=false"
Para usar esse arquivo de configuração em um pipeline, referencie-o na página de gerenciamento de pipelines do console. Para obter mais informações, consulte Use configuration files to manage pipelines.
Configuração de plug-ins
Cada definição de plug-in consiste no nome do plug-in seguido por suas propriedades. O exemplo abaixo define dois plug-ins beats na seção input, cada um escutando em uma porta e host diferentes:
input {
beats {
port => 8000
host => "118.11.xx.xx"
}
beats {
port => 8001
host => "192.168.xx.xx"
}
}
As propriedades disponíveis variam conforme o tipo de plug-in. Consulte a documentação do Elastic para visualizar a lista completa:
Tipos de valor
As propriedades dos plug-ins aceitam os seguintes tipos de valor.
Array
Não recomendado. Prefira o tipo String ou use :list => true para ativar a verificação de tipo em listas. Arrays são úteis apenas para manipular tabelas hash ou listas de tipos mistos sem validação de tipo.
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
List
List não é um tipo independente, mas um atributo de propriedade. Declare um parâmetro com :list => true para permitir múltiplos valores com verificação de tipo. Se algum valor da lista for inválido (por exemplo, uma URL incorreta), o processamento do evento falhará.
path => [ "/var/log/messages", "/var/log/*.log" ]
uris => [ "http://elastic.co", "http://example.net" ]
Boolean
Valores booleanos devem ser true ou false, sem aspas.
ssl_enable => true
Byte
Um valor Byte é uma string que representa uma quantidade de bytes. Há suporte tanto para unidades decimais (k M G T P E Z Y, base 1000) quanto binárias (Ki Mi Gi Ti Pi Ei Zi Yi, base 1024). O valor não diferencia maiúsculas de minúsculas e permite um espaço entre o número e a unidade. Se você omitir a unidade, o inteiro será tratado como bytes.
my_bytes => "1113" # 1113 bytes
my_bytes => "10MiB" # 10485760 bytes
my_bytes => "100kib" # 102400 bytes
my_bytes => "180 mb" # 180000000 bytes
Codec
Codec é um plug-in que codifica ou decodifica dados. Os codecs funcionam tanto em plug-ins de entrada quanto de saída:
Um codec de entrada decodifica os dados antes de entrarem no pipeline.
Um codec de saída codifica os dados antes de saírem do pipeline.
O uso de um codec elimina a necessidade de um plug-in de filtro separado. Para visualizar os codecs disponíveis, consulte Codec plug-ins.
codec => "json"
Hash
Um valor Hash é uma coleção de pares chave-valor no formato "field1" => "value1".
match => {
"field1" => "value1"
"field2" => "value2"
...
}
# Or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }
Numeric
Valores numéricos devem ser números de ponto flutuante ou inteiros.
port => 33
Password
Password é uma string de valor único que nunca é registrada em log ou exibida.
my_password => "password"
URI
Uma URI pode variar de uma URL completa a um identificador simples, como foobar. Se a URI contiver uma senha — por exemplo, http://user:paas@example.net — essa senha nunca será registrada em log ou exibida.
my_uri => "http://foo:bar@example.net"
Path
Um valor Path é uma string que representa um caminho de arquivo válido no sistema operacional.
my_path => "/tmp/logstash"
String
Um valor String é uma sequência única de caracteres delimitada por aspas duplas (") ou aspas simples (').
Sequências de escape
Por padrão, as sequências de escape ficam desativadas. Para ativá-las, adicione o seguinte trecho ao logstash.yml:
config.support_escapes: true
Com as sequências de escape ativadas, strings entre aspas (simples ou duplas) passam a aceitar os seguintes caracteres de escape:
|
Caractere de escape |
Descrição |
Valor ASCII (decimal) |
|
|
Retorno de carro |
013 |
|
|
Quebra de linha |
010 |
|
|
Tabulação |
009 |
|
|
Barra invertida |
092 |
|
|
Aspas duplas |
034 |
|
|
Aspas simples |
039 |
Exemplo:
name => 'It\'s a beautiful day'
Comentários
Um comentário começa com # e pode aparecer em qualquer posição da linha, não apenas no início.
# This is a full-line comment.
input { # This is an inline comment.
# ...
}