[logstash-input-log4j]插件使用

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

最小化的配置

 

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

 

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

  此时,如果你的log4j向本地主机以SocketAppender的方式输出日志消息,Logstash就能捕获到,参考的log4j配置文件如下:

 

<?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{}
}

 

  java程序log4j日志配置文件如下:

 

<?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。

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

Client模式

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

  logstash的配置如下:

 

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

 

  java程序这端的log4j配置文件如下:

 

<?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> 

 

扩展

  其实从logstash源码的角度看,就比较好理解他们的不同工作了!

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

  对应来说,server模式对应log4j的SocketAppender模式,client模式对应log4j的SocketHubAppender模式。

  

  注意:

  1 如果是server模式,那么监听的主机地址应该是IP地址,写localhost会导致无法接收其他主机发送的信息。

  2 如果是client模式,监听的端口不能是4560

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logstash-input-redis插件使用详解

input {#redis {#host> "10.246.187.12"#redis地址#host> "10.246.152.116"#redis地址#port > "6379" #redis端口号#password > "123qwe" #如果有安全认证&#xff0c;此项为密码#key > "logstash:redis"#ty…

logstash-input-redis源码解析

首先是程序的自定义&#xff0c;这里设置了redis插件需要的参数&#xff0c;默认值&#xff0c;以及校验等。 然后注册Redis实例需要的信息&#xff0c;比如key的名字或者url等&#xff0c;可以看到默认的data_type是list模式。 程序运行的主要入口&#xff0c;根据不同的dat…

SSL双向认证和SSL单向认证的区别

双向认证 SSL 协议要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有CA证书&#xff0c;具体的过程相对于上面的步骤&#xff0c;只需将服务器端验证客户证书的过程去掉&#xff0c;以及在协商对称密码方案&#xff0c;对称通话密钥时&#xff0c;服务器发送给客…

双向认证SSL原理

文中首先解释了加密解密的一些基础知识和概念&#xff0c;然后通过一个加密通信过程的例子说明了加密算法的作用&#xff0c;以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释&#xff0c;并讨论一下windows中数字证书的管理&#xff0c;最后演示使用makecert生成…

Xtrabackup备份与恢复

一、Xtrabackup介绍 Percona-xtrabackup是 Percona公司开发的一个用于MySQL数据库物理热备的备份工具&#xff0c;支持MySQL、Percona server和MariaDB&#xff0c;开源免费&#xff0c;是目前较为受欢迎的主流备份工具。xtrabackup只能备份innoDB和xtraDB两种数据引擎的表&…

实时备份工具之inotify+rsync

1.inotify简介 inotify 是一个从 2.6.13 内核开始&#xff0c;对 Linux 文件系统进行高效率、细粒度、异步地监控机制&#xff0c; 用于通知用户空间程序的文件系统变化。可利用它对用户空间进行安全、性能、以及其他方面的监控。Inotify 反应灵敏&#xff0c;用法非常简单&…

mysql主从延迟

在实际的生产环境中&#xff0c;由单台MySQL作为独立的数据库是完全不能满足实际需求的&#xff0c;无论是在安全性&#xff0c;高可用性以及高并发等各个方面 因此&#xff0c;一般来说都是通过集群主从复制&#xff08;Master-Slave&#xff09;的方式来同步数据&#xff0c…

16张图带你吃透高性能 Redis 集群

现如今 Redis 变得越来越流行&#xff0c;几乎在很多项目中都要被用到&#xff0c;不知道你在使用 Redis 时&#xff0c;有没有思考过&#xff0c;Redis 到底是如何稳定、高性能地提供服务的&#xff1f; 你也可以尝试回答一下以下这些问题&#xff1a; 我使用 Redis 的场景很…

Redis与MySQL双写一致性如何保证

谈谈一致性 一致性就是数据保持一致&#xff0c;在分布式系统中&#xff0c;可以理解为多个节点中数据的值是一致的。 强一致性&#xff1a;这种一致性级别是最符合用户直觉的&#xff0c;它要求系统写入什么&#xff0c;读出来的也会是什么&#xff0c;用户体验好&#xff0c;…

weblogic忘记console密码

进入 cd /sotware/oracle_ldap/Middleware/user_projects/domains/base_domain/security/ 目录 执行 java -classpath /sotware/oracle_ldap/Middleware/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount weblogic(账号) weblogic123(密码) . …

Redis的AOF日志

如果 Redis 每执行一条写操作命令&#xff0c;就把该命令以追加的方式写入到一个文件里&#xff0c;然后重启 Redis 的时候&#xff0c;先去读取这个文件里的命令&#xff0c;并且执行它&#xff0c;这不就相当于恢复了缓存数据了吗&#xff1f; 这种保存写操作命令到日志的持久…

Redis 核心技术与实战

目录 开篇词 | 这样学 Redis&#xff0c;才能技高一筹 01 | 基本架构&#xff1a;一个键值数据库包含什么&#xff1f; 02 | 数据结构&#xff1a;快速的Redis有哪些慢操作&#xff1f; 键和值用什么结构组织&#xff1f; 为什么哈希表操作变慢了&#xff1f; 有哪些底层数…

plsql定时器

Oralce中的任务有2种&#xff1a;Job和Dbms_job&#xff0c;两者的区别有&#xff1a; 1&#xff0e; jobs是oracle数据库的对象&#xff0c; dbms_jobs只是jobs对象的一个实例&#xff0c; 就像对于tables&#xff0c; emp和dept都是表的实例。 2&#xff0e; 创建方式也有…

PL/SQL批处理语句:BULK COLLECT 和 FORALL

PL/SQL程序中运行SQL语句是存在开销的&#xff0c;因为SQL语句是要提交给SQL引擎处理&#xff0c;这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换&#xff0c;每次却换时&#xff0c;都有额外的开销 请看下图&#xff1a; 但是&#xff0c;FORALL和BULK COLLEC…

redis-full-check

https://github.com/alibaba/RedisFullCheck/releases redis-full-check是阿里云Redis&MongoDB团队开源的用于校验2个redis数据是否一致的工具。   redis-full-check通过全量对比源端和目的端的redis中的数据的方式来进行数据校验&#xff0c;其比较方式通过多轮次比较&a…

Docker目录挂载

Docker容器启动的时候&#xff0c;如果要挂载宿主机的一个目录&#xff0c;可以用-v参数指定。 譬如我要启动一个centos容器&#xff0c;宿主机的/test目录挂载到容器的/soft目录&#xff0c;可通过以下方式指定&#xff1a; # docker run -it -v /test:/soft centos /bin/ba…

Redis主从复制原理学习

Redis主从复制原理学习总结 - 运维笔记 和Mysql主从复制的原因一样&#xff0c;Redis虽然读取写入的速度都特别快&#xff0c;但是也会产生读压力特别大的情况。为了分担读压力&#xff0c;Redis支持主从复制&#xff0c;Redis的主从结构可以采用一主多从或者级联结构&#xff…

Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

Redis的集群方案大致有三种&#xff1a;1&#xff09;redis cluster集群方案&#xff1b;2&#xff09;master/slave主从方案&#xff1b;3&#xff09;哨兵模式来进行主从替换以及故障恢复。 一、sentinel哨兵模式介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具&…

Redis之Redis内存模型

Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff08;字符串、哈希、列表、集合、有序集合&…

Redis监控指标

监控指标 •性能指标&#xff1a;Performance•内存指标: Memory•基本活动指标&#xff1a;Basic activity•持久性指标: Persistence•错误指标&#xff1a;Error 性能指标&#xff1a;Performance NameDescriptionlatencyRedis响应一个请求的时间instantaneous_ops_per_s…