我是靠谱客的博主 陶醉绿茶,最近开发中收集的这篇文章主要介绍logstash-input-log4j 插件使用简介Server模式Client模式总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Log4j 插件可以通过 log4j.jar 获取Java日志,搭配 Log4j 的SocketAppender和SocketHubAppender使用,常用于简单的集群日志汇总。

Logstash 插件的最简单配置

input {
    log4j {
        host=>"localhost"
        port=>4560
    }
}

output {
    stdout {}
}

log4j 插件配置host以及port就能监听localhost上的4560端口的log4j消息。

此时,如果你的log4j向本地主机以SocketAppender的方式输出日志消息,Logstash就能捕获到。

log4j配置

log4j.xml

<?xml version="1.0" encoding= "UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" > 
       <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" > 
             <layout class="org.apache.log4j.PatternLayout" > 
                   <param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" /> 
             </layout> 
       </appender> 

     <appender name="socketAppender" class="org.apache.log4j.net.SocketAppender"> 
        <param name="remoteHost" value="localhost" /> 
        <param name="port" value="4560" /> 
        <param name="Threshold" value="INFO" /> 
        <param name="ReconnectionDelay" value="1000" /> 
        <param name="LocationInfo" value="true" /> 
      </appender>

       <root> 
             <priority value="info" /> 
             <appender-ref ref="ConsoleAppender" />
             <appender-ref ref="sockethubAppender" /> 
       </root> 
</log4j:configuration> 

重要参数详解

mode:logstash工作模式,可选”server”或者”client”,默认是”server”。

  • server就是把logstash看做是日志的服务器,接收log4j主机端生成的日志消息。
  • client则是把logstash看做是tcp的发起者,请求log4j主机返回日志消息。

host:主机地址,字符串类型,如”localhost”或者”192.168.0.1”。

  • 如果是server模式,就是监听的主机地址
  • 如果是client模式,就是连接的目标地址

port:端口号,数字类型,如 4567 或者 12345。

  • 如果是server模式,就是监听的端口号
  • 如果是client模式,就是连接的目标端口号

data_timeout:超时时间,秒为单位。如果设置-1,则永不超时,默认是5。

如果某个tcp连接闲置了,则超过该时间限制,就断开或者关闭连接。

Server模式

server模式就是把logstash作为服务器,输出日志消息的java程序所在的主机作为客户机,大致类似如下:

Logstash 的插件配置

input{
    log4j {
        mode => "server"
        host => "localhost" #注意这里,这里是Logstash服务器的地址或者主机名
        port => 4560
    }
}
output{
    stdout{}
}

log4j 配置

log4j.xml

<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >
       <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" >
             <layout class="org.apache.log4j.PatternLayout" >
                   <param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" />
             </layout>
       </appender>
      <appender name="socketAppender" class="org.apache.log4j.net.SocketAppender">
        <param name="remoteHost" value="localhost" /><!-- 远程主机地址 -->
        <param name="port" value="4560" /><!-- 远程主机端口 -->
        <param name="Threshold" value="DEBUG" />
        <param name="ReconnectionDelay" value="60000" />
        <param name="LocationInfo" value="true" />
      </appender>
       <root>
             <priority value="debug" />
                        <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="socketAppender" />
       </root>
</log4j:configuration>

另外需要注意的是,如果使用server模式,监听的ip地址只能是本机地址,否则无法绑定socket。

例如,我本身的服务器地址是 192.168.235.32,那么我要绑定一个远端机器,192.168.235.22,就会报错误.

Client模式

client模式就是把Logstash当做客户端,去请求返回java程序所在的主机输出的日志。

Logstash的配置

input{
    log4j {
        mode => "client"
        host => "182.168.235.32"
        port => 9999
    }
}
output{
    stdout{}
}

log4j配置

log4j.xml

<?xml version="1.0" encoding= "UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" > 
       <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" > 
             <layout class="org.apache.log4j.PatternLayout" > 
                   <param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" /> 
             </layout> 
       </appender> 

    <appender name="sockethubAppender" class="org.apache.log4j.net.SocketHubAppender"> 
          <param name="port" value="9999" /> 
      <param name="Threshold" value="INFO" /> 
      <param name="LocationInfo" value="true" /> 
      </appender> 

       <root> 
            <priority value="info" /> 
            <appender-ref ref="ConsoleAppender" />
        <appender-ref ref="sockethubAppender" /> 
       </root> 
</log4j:configuration>

总结

  • 如果是server模式,logstash会创建一个新的线程,持续的监听目标主机和端口;
  • 如果是client模式,则是创建了一个tcp连接。

对应来说:

  • server模式对应log4j的SocketAppender模式;
  • client模式对应log4j的SocketHubAppender模式。

最后

以上就是陶醉绿茶为你收集整理的logstash-input-log4j 插件使用简介Server模式Client模式总结的全部内容,希望文章能够帮你解决logstash-input-log4j 插件使用简介Server模式Client模式总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部