elk及springboot项目日志接入elk

ELK部署和配置:

1.elasticsearch:

解压缩

 

配置config/elasticsearch.yml:

配置network.host地址为0.0.0.0

 

启动:

执行elasticsearch.bat;

 

2.kibana:

解压缩,修改绑定server.host为0.0.0.0,以方便配置通用,主机IP地址修改过后,无需修改该配置文件都可以访问,同时也可以通过127.0.0.1访问。

 

配置config/ kibana.yml:

配置elasticsearch信息

 

启动:

kibana.bat

 

对于elasticsearch中自定义的索引,需要通过kibana中的management--->Kibana index patterns,创建index pattern,在创建时,系统会自动提示能匹配到的elasticserch的索引。创建完之后,就可以在KibanaDiscover中根据该索引匹配查询elasticsearch的索引项了(Logs页面无法查询自定义索引内容)

 

3.filebeat

启用filebeat支持的模块:

filebeat.exe modules enable mysql, elasticsearch

 

配置模块的日志路径:

elasticsearchaudit日志,则在module\elasticsearch\audit目录下的manifest.yml中配置

 

重建索引:

重建索引时, 需要filebeat直连elasticsearchkibana才行,所以需要如下启动参数`-E output.logstash.enabled=false` `-E output.elasticsearch.hosts=['192.168.1.131:9200']`  -E setup.kibana.host=192.168.1.131:5601

如:

filebeat.exe setup -e  -E output.logstash.enabled=false  -E output.elasticsearch.hosts=['192.168.1.131:9200']   -E setup.kibana.host=192.168.1.131:5601

 

 

yml中已经配置了elasticsearch,kibana,则直接filebeat.exe setup -e即可

 

启动:

filebeat.exe -c config/filebeat.yml -e

 

安装为服务:

通过powershell,执行install-service-*-server.ps1即可,如果报安全策略的错误时,执行set-ExecutionPolicy RemoteSigned即可。

 

4.springboot应用程序通过logstash存储日志到elasticsearch

logback-spring.xml中配置logstashappender,如下:

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
     <destination>192.168.1.131:8888</destination>
     <!-- 日志输出编码 -->
       <!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">-->
   <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
           <providers>
               <timestamp>
                   <timeZone>UTC</timeZone>
               </timestamp>
          </providers>
      <!--<customFields>{"appname":"${applicationName}"}</customFields>-->
       </encoder>
</appender>

<root level="info">

   <appender-ref ref="console" />

   <appender-ref ref="rollingFile" />

   <appender-ref ref="logstash" />

</root>

 

 

logstash配置,支持tcp的日志收集,输出到elasticsearch,并根据日志的applicationName值,创建applicationName值的自定义索引,便于检索

input {

       beats {

       port => 5044         #通过5044端口接收filebeat等beats应用转发的日志信息

       type => "beats_log"  #自定义type,以方便output时根据该type做区分输出,以不同的索引名模板创建索引

       }

       tcp {

       port => 8888    #通过8888端口接收logback发送过来的日志信息

       codec => json_lines

       mode => "server"

       type => "application_direct_log" #自定义type,以方便output时根据该type做区分输出,以不同的索引名模板创建索引

       }

}



output {

       if [type] == "application_direct_log" {      #写入application_direct_log日志到 es

         elasticsearch {

              hosts => ["192.168.1.131:9200"]

              index => "%{[applicationName]}-%{+YYYY.MM.dd}"

             

              #user => "elastic"

              #password => "changeme"

         }

       }

       if [type] == "beats_log" {      #写入beats_log日志到 es

         elasticsearch {

              hosts => ["192.168.1.131:9200"]

              index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

             

              #user => "elastic"

              #password => "changeme"

         }

       }

       stdout { codec => rubydebug }  #若不需要在控制台中输出,此行可以删除

}

 

logstash控制台输出、elasticsearch存储时间,在logstashelasticsearch后台会统一使用UTC时区,所以会造成时间需要+8的现象,通过kibana显示时,kibana会根据本地时区自动调整时间的值。

 

elasticsearch中索引状态为yellow时,一般是由于只有一台elasticsearch机器,但是number_of_replicas为1所致

number_of_replicas 是数据备份数,如果只有一台机器,设置为0,索引创建时,默认值为1.通过如下命令修改:

curl -X PUT "192.168.1.131:9200/filebeat*/_settings" -H 'Content-Type: application/json' -d'{"index" : {"number_of_replicas" : 0}}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值