Please share a complete sample message and your configuration as a plain text using the preformatted text option, the </> button, this way it is possible to try to replicate what you are trying to do.
Muito obrigado. Realmente o dissect me ajudou muito.
O campo apelido não é o ultimo do log e a configuração que me passou traz informação a mais que o campo apelido. Consegui resolver de um especifico, que procuro pelo valor soID. Como vem o valor soID=37748i3uu4| por exemplo. Coloquei a seguinte configuração de dissect:
Funcionou perfeitamente. Porém o apelido está pegando o inicio da string apos o sinal de = até o final do campo request. Estou procurando como faço para entender que apos a informação vem espaço. E ele tem que parar ali, por exemplo de log:
apelido=silas bundle=novobundle
tentei colocar %{}apelido=%{apelido}/bundle" e não funcionou.
Como nunca tinha utilizado dissect somente grok estou "apanhando" um pouco.
Estou vendo muitos erros de dissectfailure, porém fazendo uma analise entendi que sempre que passar o log pelo dissect e não tiver a informação para parsear ele dará um erro.
Vou testar um estrutura de if [request] == apelido para só entrar no dissect se tiver a informação que será parseada.
Agora única coisa que está acontecendo e um grande numero de dissectfailure. Acredito que o motivo seja que os logs nem sempre tem os campos coletados pelo dissect, então quando ele não encontra ele da esse erro. Pode ser isso ?
Se a mensagem não der match no padrão do dissect ele vai gerar um log e adicionar a tag _dissectfailure.
Dependendo do volume de mensagens isso vai gerar muito ruído no log e pode inclusive impactar na performance do logstash, o ideal é só passar pelo dissect quando a mensagem vai dar match no padrão configurado.
Nesse seu exemplo, você pode usar um condicional pra só mandar pro dissect se a mensagem tiver o campo que você precisa, algo assim:
if "apelido" in [campo] {
dissect {
mapping => {
"campo" => "padrão dissect"
}
}
}
Talvez o dissect não seja o ideal pro seu tipo de log, compartilha alguns exemplos dos valores que esse campo request pode ter, quanto vem com "apelido=", quando vem com "apelido= " e quando vem sem.
Com uma massa de dados dá pra ver qual o melhor filtro ou como manipular o valor pra parsear corretamente.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.