logstash服务日志收集并按照服务创建es索引问题

问题 :logstash服务日志收集并按照服务创建es索引问题
背景:现在采集方式使用tcp方式请求logstash. 统一输出到同一索引。

input {
 tcp {
  mode => "server"
  host => "0.0.0.0"
  port => 4560
  codec => json_lines
 }
}
output {
 elasticsearch {
  hosts => "**.**.**.**:9200"
  index => "springboot-logstash-%{+YYYY.MM.dd}"
  user => ""
  password => ""
 }
}

外部服务使用springboot通过logback向服务发送日志。

我想通过配置logback 定义日志结构,在conf中按照不同服务的服务名创建不同的es索引,现在对于conf的配置参数,还不太清楚。

不建议不同的服务使用不同的索引,这样你不好管理,而且你从Kibana去看日志也不方便。我建议你还是用一个索引,在日志源中加一个appname字段来区分服务,这样你在kibana界面不用切换索引,可以根据appname字段来查找日志。这个logstash的配置也不用修改。

简单的解决方案已经找到了
配置logback-spring.xml

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>****</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        <!--服务名称-->
                        "appName": "${APP_NAME}",
                        <!--打印时间-->
                        "time": "%date{yyyy-MM-dd HH:mm:ss.SSS}",
                        <!--日志级别-->
                        "level": "%level",
                        <!--进程ID-->
                        "pid": "${PID:-}",
                        <!--线程名-->
                        "thread": "%thread",
                        <!--全限定类名-->
                        "class": "%logger",
                        <!--类中的哪个方法-->
                        "method": "%method",
                        <!--类中的第几行-->
                        "line": "%line",
                        <!--日志打印的信息-->
                        "message": "%message",
                        <!--堆栈异常信息-->
                        "stack_trace":"%xEx"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

需要使用这个LoggingEventCompositeJsonEncoder
logstash.conf修改output

output {
 elasticsearch {
  hosts => "****"
  index => "%{[appName]}-%{+YYYY.MM.dd}"
  user => ""
  password => ""
 }
}

比较简单的配置方式,新建服务需要新建dataview。
不知道应该采用一个索引,通过添加筛选项去获取各个服务的日志合理,还是直接拆开比较好