Как я могу создать разные шаблоны индекса на основе разных приложений, используя logstash - PullRequest
0 голосов
/ 11 апреля 2019

У меня запущено Java-приложение, которое будет отправлять свои журналы в logstash, оно основано на этом уроке http://www.andrew -programming.com / 2018/09/18 / integrate-springboot-application-with-elk- и-filebeat /

У меня вопрос: если я хочу отделить свои журналы от разных приложений, я бы хотел использовать разные индексы для каждого приложения, а не объединять их все в одно и то же.

Вот мой файл конфигурации logstash, где index => "app -% {+ YYYY.MM.dd}" - это имя шаблона.

Я пробовал такие вещи, как% {type}% {tags} [tags] [type], но ни одна из них не печатает переменную, относящуюся к приложениям. Я могу использовать хост в шаблоне индекса, но не хочу использовать ip адреса в индексе, как они могут измениться

input {
  tcp {
  port => 4560
  codec => json_lines
  }
  beats {
    host => "127.0.0.1"
    port => "5044"
  }
}
output{
  stdout { codec => rubydebug }
  elasticsearch {
  hosts => ["localhost:9200"]
  index => "app-%{+YYYY.MM.dd}"  
  document_type => "%{[@metadata][type]}"
  }
}

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Я думаю, это будет полезно

Пример:

input {
 file {
    path => "C:/_Logs/*.log"
    start_position => "beginning"
    add_field => {
     "log_origin" => "XYZ" 
    }    
}
file {
    path => "C:/_Data/*.csv"
    start_position => "beginning"
    add_field => { 
     "log_origin" => "ABC" 
    }
}
output {
  if (  "XYZ" in [log_origin] ) {
   elasticsearch {
           hosts => "10.0.0.0:9200"
           index => "deploy-%{+yyyy.MM.dd}"
   }
 }
   else {
   elasticsearch {
           hosts => "10.0.0.0:9200"
           index => "validator-%{+yyyy.MM.dd}"
   }
 }
}
0 голосов
/ 11 апреля 2019

добавил следующее в logback.spring.xml

<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
  <customFields>{"appname":"auxiliary-service-application"}</customFields>
</encoder>

В файле logstash.conf использовался параметр.

output{
  stdout { codec => rubydebug }
  elasticsearch {
  hosts => ["localhost:9200"]
  index => "%{appname}-%{+YYYY.MM.dd}"   
  document_type => "%{[@metadata][type]}"
  }
}
...